Mercurial > hg > audio_effects_textbook_code
changeset 0:e32fe563e124
First commit
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LICENSE.txt Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + 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 <http://www.gnu.org/licenses/>. + +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: + + <program> Copyright (C) <year> <name of author> + 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 +<http://www.gnu.org/licenses/>. + + 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 +<http://www.gnu.org/philosophy/why-not-lgpl.html>.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.txt Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,24 @@ +*** About *** + +This repository contains code for AudioUnit and VST plugins using the Juce framework (www.rawmaterialsoftware.com). In addition to the effect source itself, Juce and the VST SDK (2.4) are included to minimise setup time. + +This code accompanies the textbook "Audio Effects: Theory, Implementation and Application" by Joshua D. Reiss and Andrew P. McPherson (CRC Press, 2014). + +*** Compiling *** + +Juce automates the creation of projects/makefiles in various development environments. The file "[name].jucer" in each effect folder contains all the required information to generate a project. These files should be opened in the Introjucer program included in your Juce folder (extras/Introjucer/). Build the Introjucer first and then use it to generate a project in your local development environment. Note that you will need to set the "module path" to your Juce folder within each Introjucer project in order for the projects to compile correctly. + +Platform- and environment-specific files (anything in the Builds directory of an effect) should not be included in the repository since Juce automatically regenerates this with every run of the Introjucer. + +Mac-specific note: Starting with XCode 4.3, the location of the CoreAudio/AudioUnit files moved from its previous location in /Developer/Extras to a location within the Xcode application bundle (/Applications/Xcode.app/). The Xcode projects Juce creates will not be able to find the required files. The easiest solution for anyone who has installed a previous version of Xcode previously is to create a symbolic link from the files in /Developer/Extras inside the Xcode bundle: + +cd /Applications/Xcode.app/Contents/Developer +sudo ln -s /Developer/Extras Extras + +On the first compile, a couple errors related to static casting will appear in Apple's AudioUnit files. Add the suggested static_cast fixes and everything should compile normally. (This only has to be done once since the changes are to Apple's Developer/Extras files.) + +On a machine where Xcode 4.2 or prior has never been installed, another solution will need to be found. + +*** Running *** + +By default, the resulting plug-ins will be created as VST on all platforms and additionally AudioUnits on Mac. Any environment that hosts these plugins (e.g. AU Lab on Mac OS X) can be used to test them. \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/autowah/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,432 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +#include "PluginProcessor.h" +//[/Headers] + +#include "PluginEditor.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... + +//LookAndFeelCustom* AutoWahAudioProcessorEditor::customLookAndFeel = NULL; + +//[/MiscUserDefs] + +//============================================================================== +AutoWahAudioProcessorEditor::AutoWahAudioProcessorEditor (AutoWahAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter) +{ + addAndMakeVisible (baseFrequencySlider_ = new Slider ("new slider")); + baseFrequencySlider_->setRange (200, 1000, 0.1); + baseFrequencySlider_->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + baseFrequencySlider_->setTextBoxStyle (Slider::TextBoxBelow, false, 60, 20); + baseFrequencySlider_->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + baseFrequencySlider_->setColour (Slider::textBoxTextColourId, Colours::white); + baseFrequencySlider_->setColour (Slider::textBoxBackgroundColourId, Colour (0x00000000)); + baseFrequencySlider_->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + baseFrequencySlider_->addListener (this); + + addAndMakeVisible (qSlider_ = new Slider ("new slider")); + qSlider_->setRange (2, 20, 0.1); + qSlider_->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + qSlider_->setTextBoxStyle (Slider::TextBoxBelow, false, 60, 20); + qSlider_->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + qSlider_->setColour (Slider::textBoxTextColourId, Colours::white); + qSlider_->setColour (Slider::textBoxBackgroundColourId, Colour (0x00000000)); + qSlider_->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + qSlider_->addListener (this); + + addAndMakeVisible (lfoFrequencySlider_ = new Slider ("new slider")); + lfoFrequencySlider_->setRange (0.2, 20, 0.1); + lfoFrequencySlider_->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + lfoFrequencySlider_->setTextBoxStyle (Slider::TextBoxBelow, false, 60, 20); + lfoFrequencySlider_->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + lfoFrequencySlider_->setColour (Slider::textBoxTextColourId, Colours::white); + lfoFrequencySlider_->setColour (Slider::textBoxBackgroundColourId, Colour (0x00000000)); + lfoFrequencySlider_->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + lfoFrequencySlider_->addListener (this); + + addAndMakeVisible (lfoWidthSlider_ = new Slider ("new slider")); + lfoWidthSlider_->setRange (0, 2000, 0.1); + lfoWidthSlider_->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + lfoWidthSlider_->setTextBoxStyle (Slider::TextBoxBelow, false, 60, 20); + lfoWidthSlider_->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + lfoWidthSlider_->setColour (Slider::textBoxTextColourId, Colours::white); + lfoWidthSlider_->setColour (Slider::textBoxBackgroundColourId, Colour (0x00000000)); + lfoWidthSlider_->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + lfoWidthSlider_->addListener (this); + + addAndMakeVisible (envelopeWidthSlider_ = new Slider ("new slider")); + envelopeWidthSlider_->setRange (0, 4000, 0.1); + envelopeWidthSlider_->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + envelopeWidthSlider_->setTextBoxStyle (Slider::TextBoxBelow, false, 60, 20); + envelopeWidthSlider_->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + envelopeWidthSlider_->setColour (Slider::textBoxTextColourId, Colours::white); + envelopeWidthSlider_->setColour (Slider::textBoxBackgroundColourId, Colour (0x00000000)); + envelopeWidthSlider_->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + envelopeWidthSlider_->addListener (this); + + addAndMakeVisible (envelopeAttackSlider_ = new Slider ("new slider")); + envelopeAttackSlider_->setRange (0, 0.1, 0.0001); + envelopeAttackSlider_->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + envelopeAttackSlider_->setTextBoxStyle (Slider::TextBoxBelow, false, 60, 20); + envelopeAttackSlider_->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + envelopeAttackSlider_->setColour (Slider::textBoxTextColourId, Colours::white); + envelopeAttackSlider_->setColour (Slider::textBoxBackgroundColourId, Colour (0x00000000)); + envelopeAttackSlider_->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + envelopeAttackSlider_->addListener (this); + envelopeAttackSlider_->setSkewFactor (0.02); + + addAndMakeVisible (envelopeDecaySlider_ = new Slider ("new slider")); + envelopeDecaySlider_->setRange (0, 2, 0.001); + envelopeDecaySlider_->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + envelopeDecaySlider_->setTextBoxStyle (Slider::TextBoxBelow, false, 60, 20); + envelopeDecaySlider_->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + envelopeDecaySlider_->setColour (Slider::textBoxTextColourId, Colours::white); + envelopeDecaySlider_->setColour (Slider::textBoxBackgroundColourId, Colour (0x00000000)); + envelopeDecaySlider_->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + envelopeDecaySlider_->addListener (this); + envelopeDecaySlider_->setSkewFactor (0.4); + + + //[UserPreSize] + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(550, 200, 550, 200); + //[/UserPreSize] + + setSize (354, 380); + + + //[Constructor] You can add your own custom stuff here.. + //AutoWahAudioProcessor* ourProcessor = getProcessor(); // UNUSED (include when necessary) + + UpdateInterfaceValues(); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + //************************************ SET LOOKANDFEEL ********************************** + // if( customLookAndFeel == NULL ) + // { + // customLookAndFeel = new LookAndFeelCustom(); + // LookAndFeel::setDefaultLookAndFeel (/*&*/customLookAndFeel); + // } + + //*************************************************************************************** + + + startTimer(50); + + //[/Constructor] +} + +AutoWahAudioProcessorEditor::~AutoWahAudioProcessorEditor() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + //[/Destructor_pre] + + baseFrequencySlider_ = nullptr; + qSlider_ = nullptr; + lfoFrequencySlider_ = nullptr; + lfoWidthSlider_ = nullptr; + envelopeWidthSlider_ = nullptr; + envelopeAttackSlider_ = nullptr; + envelopeDecaySlider_ = nullptr; + + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void AutoWahAudioProcessorEditor::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colour (0xffa7998c)); + + g.setColour (Colour (0xff9e8365)); + g.fillRoundedRectangle (11.0f, 12.0f, 333.0f, 94.0f, 10.000f); + + g.setColour (Colour (0xff9e8365)); + g.fillRoundedRectangle (11.0f, 115.0f, 333.0f, 94.0f, 10.000f); + + g.setColour (Colour (0xff9e8365)); + g.fillRoundedRectangle (11.0f, 217.0f, 333.0f, 152.0f, 10.000f); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("Q"), + 190, 32, 72, 30, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("Depth"), + 190, 138, 72, 30, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("Attack"), + 190, 233, 72, 30, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("Release"), + 192, 304, 72, 30, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("Frequency"), + 12, 32, 72, 30, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("Frequency"), + 3, 138, 89, 30, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("Depth"), + 0, 233, 95, 30, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (28.00f, Font::bold)); + g.drawText (TRANS("AutoWah"), + 2, -2, 111, 28, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (24.00f, Font::plain)); + g.drawText (TRANS("LFO"), + 1, 176, 69, 34, + Justification::centred, true); + + g.setColour (Colour (0xff992b13)); + g.setFont (Font (24.00f, Font::plain)); + g.drawText (TRANS("ENVELOPE"), + 10, 334, 112, 34, + Justification::centred, true); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void AutoWahAudioProcessorEditor::resized() +{ + baseFrequencySlider_->setBounds (86, 20, 80, 80); + qSlider_->setBounds (261, 20, 80, 80); + lfoFrequencySlider_->setBounds (86, 126, 80, 80); + lfoWidthSlider_->setBounds (261, 126, 80, 80); + envelopeWidthSlider_->setBounds (86, 223, 80, 80); + envelopeAttackSlider_->setBounds (269, 223, 66, 66); + envelopeDecaySlider_->setBounds (270, 299, 66, 66); + //[UserResized] Add your own custom resize handling here.. + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); + //[/UserResized] +} + +void AutoWahAudioProcessorEditor::sliderValueChanged (Slider* sliderThatWasMoved) +{ + //[UsersliderValueChanged_Pre] + AutoWahAudioProcessor* ourProcessor = getProcessor(); + //[/UsersliderValueChanged_Pre] + + if (sliderThatWasMoved == baseFrequencySlider_) + { + //[UserSliderCode_baseFrequencySlider_] -- add your slider handling code here.. + ourProcessor->setParameterNotifyingHost (AutoWahAudioProcessor::kBaseFrequencyParam, + (float)baseFrequencySlider_->getValue()); + //[/UserSliderCode_baseFrequencySlider_] + } + else if (sliderThatWasMoved == qSlider_) + { + //[UserSliderCode_qSlider_] -- add your slider handling code here.. + ourProcessor->setParameterNotifyingHost (AutoWahAudioProcessor::kQParam, + (float)qSlider_->getValue()); + //[/UserSliderCode_qSlider_] + } + else if (sliderThatWasMoved == lfoFrequencySlider_) + { + //[UserSliderCode_lfoFrequencySlider_] -- add your slider handling code here.. + ourProcessor->setParameterNotifyingHost (AutoWahAudioProcessor::kLFOFrequencyParam, + (float)lfoFrequencySlider_->getValue()); + //[/UserSliderCode_lfoFrequencySlider_] + } + else if (sliderThatWasMoved == lfoWidthSlider_) + { + //[UserSliderCode_lfoWidthSlider_] -- add your slider handling code here.. + ourProcessor->setParameterNotifyingHost (AutoWahAudioProcessor::kLFOWidthParam, + (float)lfoWidthSlider_->getValue()); + //[/UserSliderCode_lfoWidthSlider_] + } + else if (sliderThatWasMoved == envelopeWidthSlider_) + { + //[UserSliderCode_envelopeWidthSlider_] -- add your slider handling code here.. + ourProcessor->setParameterNotifyingHost (AutoWahAudioProcessor::kEnvelopeWidthParam, + (float)envelopeWidthSlider_->getValue()); + //[/UserSliderCode_envelopeWidthSlider_] + } + else if (sliderThatWasMoved == envelopeAttackSlider_) + { + //[UserSliderCode_envelopeAttackSlider_] -- add your slider handling code here.. + ourProcessor->setParameterNotifyingHost (AutoWahAudioProcessor::kEnvelopeAttackParam, + (float)envelopeAttackSlider_->getValue()); + //[/UserSliderCode_envelopeAttackSlider_] + } + else if (sliderThatWasMoved == envelopeDecaySlider_) + { + //[UserSliderCode_envelopeDecaySlider_] -- add your slider handling code here.. + ourProcessor->setParameterNotifyingHost (AutoWahAudioProcessor::kEnvelopeDecayParam, + (float)envelopeDecaySlider_->getValue()); + //[/UserSliderCode_envelopeDecaySlider_] + } + + //[UsersliderValueChanged_Post] + //[/UsersliderValueChanged_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +void AutoWahAudioProcessorEditor::UpdateInterfaceValues() +{ + AutoWahAudioProcessor* ourProcessor = getProcessor(); + + // Update Sliders + baseFrequencySlider_ ->setValue(ourProcessor->baseFrequency_, dontSendNotification); + qSlider_ ->setValue(ourProcessor->q_, dontSendNotification); + lfoFrequencySlider_ ->setValue(ourProcessor->lfoFrequency_); + lfoWidthSlider_ ->setValue(ourProcessor->lfoWidth_); + envelopeWidthSlider_ ->setValue(ourProcessor->envelopeWidth_); + envelopeAttackSlider_ ->setValue(ourProcessor->envelopeAttack_); + envelopeDecaySlider_ ->setValue(ourProcessor->envelopeDecay_); + +} + +// This timer periodically checks whether any of the filter's parameters have changed... +void AutoWahAudioProcessorEditor::timerCallback() +{ + // AutoWahAudioProcessor* ourProcessor = getProcessor(); +} + +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Introjucer information section -- + + This is where the Introjucer stores the metadata that describe this GUI layout, so + make changes in here at your peril! + +BEGIN_JUCER_METADATA + +<JUCER_COMPONENT documentType="Component" className="AutoWahAudioProcessorEditor" + componentName="" parentClasses="public AudioProcessorEditor, public Timer" + constructorParams="AutoWahAudioProcessor* ownerFilter" variableInitialisers="AudioProcessorEditor (ownerFilter)" + snapPixels="8" snapActive="0" snapShown="1" overlayOpacity="0.330" + fixedSize="1" initialWidth="354" initialHeight="380"> + <BACKGROUND backgroundColour="ffa7998c"> + <ROUNDRECT pos="11 12 333 94" cornerSize="10" fill="solid: ff9e8365" hasStroke="0"/> + <ROUNDRECT pos="11 115 333 94" cornerSize="10" fill="solid: ff9e8365" hasStroke="0"/> + <ROUNDRECT pos="11 217 333 152" cornerSize="10" fill="solid: ff9e8365" hasStroke="0"/> + <TEXT pos="190 32 72 30" fill="solid: ff992b13" hasStroke="0" text="Q" + fontname="Default font" fontsize="15" bold="0" italic="0" justification="36"/> + <TEXT pos="190 138 72 30" fill="solid: ff992b13" hasStroke="0" text="Depth" + fontname="Default font" fontsize="15" bold="0" italic="0" justification="36"/> + <TEXT pos="190 233 72 30" fill="solid: ff992b13" hasStroke="0" text="Attack" + fontname="Default font" fontsize="15" bold="0" italic="0" justification="36"/> + <TEXT pos="192 304 72 30" fill="solid: ff992b13" hasStroke="0" text="Release" + fontname="Default font" fontsize="15" bold="0" italic="0" justification="36"/> + <TEXT pos="12 32 72 30" fill="solid: ff992b13" hasStroke="0" text="Frequency" + fontname="Default font" fontsize="15" bold="0" italic="0" justification="36"/> + <TEXT pos="3 138 89 30" fill="solid: ff992b13" hasStroke="0" text="Frequency" + fontname="Default font" fontsize="15" bold="0" italic="0" justification="36"/> + <TEXT pos="0 233 95 30" fill="solid: ff992b13" hasStroke="0" text="Depth" + fontname="Default font" fontsize="15" bold="0" italic="0" justification="36"/> + <TEXT pos="2 -2 111 28" fill="solid: ff992b13" hasStroke="0" text="AutoWah" + fontname="Default font" fontsize="28" bold="1" italic="0" justification="36"/> + <TEXT pos="1 176 69 34" fill="solid: ff992b13" hasStroke="0" text="LFO" + fontname="Default font" fontsize="24" bold="0" italic="0" justification="36"/> + <TEXT pos="10 334 112 34" fill="solid: ff992b13" hasStroke="0" text="ENVELOPE" + fontname="Default font" fontsize="24" bold="0" italic="0" justification="36"/> + </BACKGROUND> + <SLIDER name="new slider" id="b7cd5ae6d0a3bfc6" memberName="baseFrequencySlider_" + virtualName="" explicitFocusOrder="0" pos="86 20 80 80" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="0" textboxoutline="808080" + min="200" max="1000" int="0.10000000000000000555" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="60" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="d914eb36766034b1" memberName="qSlider_" + virtualName="" explicitFocusOrder="0" pos="261 20 80 80" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="0" textboxoutline="808080" + min="2" max="20" int="0.10000000000000000555" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="60" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="d914eb36766034b2" memberName="lfoFrequencySlider_" + virtualName="" explicitFocusOrder="0" pos="86 126 80 80" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="0" textboxoutline="808080" + min="0.2000000000000000111" max="20" int="0.10000000000000000555" + style="RotaryHorizontalVerticalDrag" textBoxPos="TextBoxBelow" + textBoxEditable="1" textBoxWidth="60" textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="d914eb36766034b3" memberName="lfoWidthSlider_" + virtualName="" explicitFocusOrder="0" pos="261 126 80 80" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="0" textboxoutline="808080" + min="0" max="2000" int="0.10000000000000000555" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="60" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="d914eb36766034b4" memberName="envelopeWidthSlider_" + virtualName="" explicitFocusOrder="0" pos="86 223 80 80" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="0" textboxoutline="808080" + min="0" max="4000" int="0.10000000000000000555" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="60" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="d914eb36766034b5" memberName="envelopeAttackSlider_" + virtualName="" explicitFocusOrder="0" pos="269 223 66 66" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="0" textboxoutline="808080" + min="0" max="0.10000000000000000555" int="0.00010000000000000000479" + style="RotaryHorizontalVerticalDrag" textBoxPos="TextBoxBelow" + textBoxEditable="1" textBoxWidth="60" textBoxHeight="20" skewFactor="0.020000000000000000416"/> + <SLIDER name="new slider" id="d914eb36766034b6" memberName="envelopeDecaySlider_" + virtualName="" explicitFocusOrder="0" pos="270 299 66 66" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="0" textboxoutline="808080" + min="0" max="2" int="0.0010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="60" + textBoxHeight="20" skewFactor="0.4000000000000000222"/> +</JUCER_COMPONENT> + +END_JUCER_METADATA +*/ +#endif + + +//[EndFile] You can add extra defines here... +//[/EndFile]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/autowah/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,99 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +#ifndef __JUCE_HEADER_FEB21157F431A7A8__ +#define __JUCE_HEADER_FEB21157F431A7A8__ + +//[Headers] -- You can add your own extra header files here -- + +//#include "../../Shared/LookAndFeelCustom.h" //used to be _nographics +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class AutoWahAudioProcessorEditor : public AudioProcessorEditor, + public Timer, + public SliderListener +{ +public: + //============================================================================== + AutoWahAudioProcessorEditor (AutoWahAudioProcessor* ownerFilter); + ~AutoWahAudioProcessorEditor(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + void timerCallback(); + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider* sliderThatWasMoved); + + + +private: + //[UserVariables] -- You can add your own custom variables in this section. + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + //static LookAndFeelCustom* customLookAndFeel; + + AudioPlayHead::CurrentPositionInfo lastDisplayedPosition; + + AutoWahAudioProcessor* getProcessor() const + { + return static_cast <AutoWahAudioProcessor*> (getAudioProcessor()); + } + + void displayPositionInfo (const AudioPlayHead::CurrentPositionInfo& pos); + + void UpdateInterfaceValues(); + + void SetComboBoxActivity(ComboBox * comboBox, bool active); + void SetSliderActivity(Slider * slider, bool active); + + + //[/UserVariables] + + //============================================================================== + ScopedPointer<Slider> baseFrequencySlider_; + ScopedPointer<Slider> qSlider_; + ScopedPointer<Slider> lfoFrequencySlider_; + ScopedPointer<Slider> lfoWidthSlider_; + ScopedPointer<Slider> envelopeWidthSlider_; + ScopedPointer<Slider> envelopeAttackSlider_; + ScopedPointer<Slider> envelopeDecaySlider_; + + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AutoWahAudioProcessorEditor) +}; + +//[EndFile] You can add extra defines here... +//[/EndFile] + +#endif // __JUCE_HEADER_FEB21157F431A7A8__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/autowah/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,459 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Auto-Wah: LFO or envelope-operated wah effect + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +// The filter will produce a resonant peak of amplitude Q; bring everything +// down somewhat to compensate, though try to maintain some perceptual balance +// of being similar loudness. (This factor has been chosen somewhat arbitrarily.) +const double kWahwahFilterGain = 0.5; + +//============================================================================== +AutoWahAudioProcessor::AutoWahAudioProcessor() +{ + // Set default values: + baseFrequency_ = 350.0; + q_ = 5.0; + lfoFrequency_ = 2.0; + lfoWidth_ = 1000.0; + envelopeWidth_ = 0.0; + envelopeAttack_ = 0.005; + envelopeDecay_ = 0.1; + + // Initialise the filters later when we know how many channels + wahFilters_ = 0; + numWahFilters_ = 0; + envelopes_ = 0; + numEnvelopes_ = 0; + attackMultiplier_ = 1.0; + decayMultiplier_ = 0.0; + + inverseSampleRate_ = 1.0/44100.0; // start with a sensible default + + lastUIWidth_ = 550; + lastUIHeight_ = 200; +} + +AutoWahAudioProcessor::~AutoWahAudioProcessor() +{ + deallocateFilters(); +} + +//============================================================================== +const String AutoWahAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int AutoWahAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float AutoWahAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kBaseFrequencyParam: return baseFrequency_; + case kQParam: return q_; + case kLFOFrequencyParam: return lfoFrequency_; + case kLFOWidthParam: return lfoWidth_; + case kEnvelopeWidthParam: return envelopeWidth_; + case kEnvelopeAttackParam: return envelopeAttack_; + case kEnvelopeDecayParam: return envelopeDecay_; + default: return 0.0f; + } +} + +void AutoWahAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + + switch (index) + { + case kBaseFrequencyParam: + baseFrequency_ = newValue; + break; + case kQParam: + q_ = newValue; + break; + case kLFOFrequencyParam: + lfoFrequency_ = newValue; + break; + case kLFOWidthParam: + lfoWidth_ = newValue; + break; + case kEnvelopeWidthParam: + envelopeWidth_ = newValue; + break; + case kEnvelopeAttackParam: + envelopeAttack_ = newValue; + // See comment below for justification + if(envelopeAttack_ == 0.0) + attackMultiplier_ = 0.0; + else + attackMultiplier_ = pow(1.0 / M_E, inverseSampleRate_ / envelopeAttack_); + break; + case kEnvelopeDecayParam: + envelopeDecay_ = newValue; + // envelopeDecay_ sets the time constant tau. The decay is + // given as e^-(t/tau) so after tau seconds, it will have + // decayed to 1/e of its original value. tau*sampleRate samples + // will have passed by then, each of which multiplies the signal + // by decayMultiplier_. + if(envelopeDecay_ == 0.0) + decayMultiplier_ = 0.0; + else + decayMultiplier_ = pow(1.0 / M_E, inverseSampleRate_ / envelopeDecay_); + break; + default: + break; + } +} + +const String AutoWahAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kBaseFrequencyParam: return "base frequency"; + case kQParam: return "Q"; + case kLFOFrequencyParam: return "LFO frequency"; + case kLFOWidthParam: return "LFO width"; + case kEnvelopeWidthParam: return "envelope width"; + case kEnvelopeAttackParam: return "envelope attack"; + case kEnvelopeDecayParam: return "envelope decay"; + default: break; + } + + return String::empty; +} + +const String AutoWahAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String AutoWahAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String AutoWahAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool AutoWahAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool AutoWahAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool AutoWahAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double AutoWahAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool AutoWahAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool AutoWahAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int AutoWahAudioProcessor::getNumPrograms() +{ + return 0; +} + +int AutoWahAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void AutoWahAudioProcessor::setCurrentProgram (int index) +{ +} + +const String AutoWahAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void AutoWahAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void AutoWahAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. + + allocateFilters(); + inverseSampleRate_ = 1.0 / sampleRate; + if(envelopeDecay_ == 0.0) + decayMultiplier_ = 0.0; + else + decayMultiplier_ = pow(1.0 / M_E, inverseSampleRate_ / envelopeDecay_); + if(envelopeAttack_ == 0.0) + attackMultiplier_ = 0.0; + else + attackMultiplier_ = pow(1.0 / M_E, inverseSampleRate_ / envelopeAttack_); +} + +void AutoWahAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + deallocateFilters(); +} + +void AutoWahAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + int channel; + float ph; + + // Go through each channel and put it through the resonant lowpass filter, updating + // the coefficients as we go along. Each channel is processed identically in this effect. + + for(channel = 0; channel < jmin(numInputChannels, numWahFilters_); ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + ph = lfoPhase_; + + for (int sample = 0; sample < numSamples; ++sample) + { + const float in = channelData[sample]; + float centreFrequency = baseFrequency_; + + // Calculate the envelope of the signal. Do this even if we're not currently + // changing the frequeny based on it, since it involves maintaining a history + // of the signal's behaviour. + + if(channel < numEnvelopes_) { // Safety check + if(fabs(in) > envelopes_[channel]) { + envelopes_[channel] += (1.0 - attackMultiplier_) * (fabs(in) - (double)envelopes_[channel]); + } + else + envelopes_[channel] *= decayMultiplier_; + } + + // Calculate the centre frequency of the filter based on the LFO and the + // signal envelope + if(lfoWidth_ > 0.0) { + centreFrequency += lfoWidth_ * (0.5f + 0.5f*sinf(2.0 * M_PI * ph)); + } + if(envelopeWidth_ > 0.0 && channel < numEnvelopes_) { + centreFrequency += envelopeWidth_ * envelopes_[channel]; + } + + // Update filter coefficients (see ResonantLowpassFilter.cpp for calculation) + wahFilters_[channel]->makeResonantLowpass(inverseSampleRate_, + centreFrequency, + q_, + kWahwahFilterGain); + + // Process one sample and store it back in place. See juce_IIRFilter.cpp for the + // application of the IIR filter. + channelData[sample] = wahFilters_[channel]->processSingleSampleRaw(in); + + // Update the LFO phase, keeping it in the range 0-1 + ph += lfoFrequency_*inverseSampleRate_; + if(ph >= 1.0) + ph -= 1.0; + } + } + + lfoPhase_ = ph; + + // Go through the remaining channels. In case we have more outputs + // than inputs, or there aren't enough filters, we'll clear any + // remaining output channels (which could otherwise contain garbage) + while(channel < numOutputChannels) + { + buffer.clear (channel++, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool AutoWahAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* AutoWahAudioProcessor::createEditor() +{ + return new AutoWahAudioProcessorEditor (this); +} + +//============================================================================== +void AutoWahAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("baseFrequency", baseFrequency_); + xml.setAttribute("q", q_); + xml.setAttribute("lfoFrequency", lfoFrequency_); + xml.setAttribute("lfoWidth", lfoWidth_); + xml.setAttribute("envelopeWidth", envelopeWidth_); + xml.setAttribute("envelopeAttack", envelopeAttack_); + xml.setAttribute("envelopeDecay", envelopeDecay_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void AutoWahAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + q_ = (float)xmlState->getDoubleAttribute("q", q_); + baseFrequency_ = (float)xmlState->getDoubleAttribute("baseFrequency", baseFrequency_); + lfoFrequency_ = (float)xmlState->getDoubleAttribute("lfoFrequency", lfoFrequency_); + lfoWidth_ = (float)xmlState->getDoubleAttribute("lfoWidth", lfoWidth_); + envelopeWidth_ = (float)xmlState->getDoubleAttribute("envelopeWidth", envelopeWidth_); + envelopeAttack_ = (float)xmlState->getDoubleAttribute("envelopeAttack", envelopeAttack_); + envelopeDecay_ = (float)xmlState->getDoubleAttribute("envelopeDecay", envelopeDecay_); + inverseSampleRate_ = 1.0 / getSampleRate(); + if(envelopeDecay_ == 0.0) + decayMultiplier_ = 0.0; + else + decayMultiplier_ = pow(1.0 / M_E, inverseSampleRate_ / envelopeDecay_); + if(envelopeAttack_ == 0.0) + attackMultiplier_ = 0.0; + else + attackMultiplier_ = pow(1.0 / M_E, inverseSampleRate_ / envelopeAttack_); + } + } +} + +void AutoWahAudioProcessor::allocateFilters() +{ + // Prevent leaks from reallocation + if(wahFilters_ != 0 || envelopes_ != 0) + deallocateFilters(); + + // Create as many filters as we have input channels + numWahFilters_ = getNumInputChannels(); + wahFilters_ = (ResonantLowpassFilter**)malloc(numWahFilters_ * sizeof(ResonantLowpassFilter*)); + if(wahFilters_ == 0) + numWahFilters_ = 0; + else { + for(int i = 0; i < numWahFilters_; i++) + wahFilters_[i] = new ResonantLowpassFilter; + } + + numEnvelopes_ = getNumInputChannels(); + envelopes_ = (double *)malloc(numEnvelopes_ * sizeof(double)); + if(envelopes_ == 0) + numEnvelopes_ = 0; + else { + for(int i = 0; i < numEnvelopes_; i++) + envelopes_[i] = 0.0; + } +} + +void AutoWahAudioProcessor::deallocateFilters() +{ + for(int i = 0; i < numWahFilters_; i++) + delete wahFilters_[i]; + if(numWahFilters_ != 0) + free(wahFilters_); + numWahFilters_ = 0; + wahFilters_ = 0; + if(envelopes_ != 0) + free(envelopes_); + envelopes_ = 0; + numEnvelopes_ = 0; +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new AutoWahAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/autowah/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,133 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Auto-Wah: LFO or envelope-operated wah effect + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" +#include "ResonantLowpassFilter.h" + +//============================================================================== +/** +*/ +class AutoWahAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + AutoWahAudioProcessor(); + ~AutoWahAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kBaseFrequencyParam = 0, /* Centre frequency in Hz */ + kQParam, /* Q of the resonant filter */ + kLFOFrequencyParam, + kLFOWidthParam, + kEnvelopeWidthParam, + kEnvelopeAttackParam, + kEnvelopeDecayParam, + kNumParameters + }; + + float baseFrequency_, q_; + float lfoFrequency_, lfoWidth_; + float envelopeWidth_, envelopeAttack_, envelopeDecay_; +private: + // Methods for creating and releasing memory associated with filters + void allocateFilters(); + void deallocateFilters(); + + float lfoPhase_; // Phase of the low-frequency oscillator + + double *envelopes_; // Values of signal envelopes for each channel + int numEnvelopes_; + + // Convert the attack and decay time constants to a multiplier for + // a first-order lowpass filter + double attackMultiplier_, decayMultiplier_; + + ResonantLowpassFilter **wahFilters_; + int numWahFilters_; + double inverseSampleRate_; // Save the inverse of the sample rate for faster calculation + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AutoWahAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/autowah/Source/ResonantLowpassFilter.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,65 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Auto-Wah: LFO or envelope-operated wah effect + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "ResonantLowpassFilter.h" + +/* The actual audio processing is handled by the Juce IIRFilter parent + * class. This subclass is used to define the coefficients for our + * implementation of a parametric equaliser. + */ + +void ResonantLowpassFilter::makeResonantLowpass(const double inverseSampleRate, + const double centreFrequency, + const double Q, + const double gain) noexcept +{ + jassert (Q > 0); + + // Use inverse sample rate since multiplication is more efficient than + // division, and the sample rate is unlikely to change each call. + const double discreteFrequency = 2.0 * M_PI * centreFrequency * inverseSampleRate; + const double alpha = sin(discreteFrequency) / (2.0 * Q); + const double cos_w0 = cos(discreteFrequency); + + /* setCoefficients() takes arguments: b0, b1, b2, a0, a1, a2 + * It will normalise the filter according to the value of a0 + * to allow standard time-domain implementations + */ + coefficients = IIRCoefficients(0.5*(1.0 - cos_w0)*gain, (1.0 - cos_w0)*gain, 0.5*(1.0 - cos_w0)*gain, 1.0 + alpha, -2.0 * cos_w0, 1.0 - alpha ); + + setCoefficients(coefficients); +} + +/* Copy coefficients from another object of the same class */ + +void ResonantLowpassFilter::copyCoefficientsFrom (const ResonantLowpassFilter& other) noexcept +{ + setCoefficients(other.coefficients); + active = other.active; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/autowah/Source/ResonantLowpassFilter.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Auto-Wah: LFO or envelope-operated wah effect + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#ifndef __ResonantLowpassFilter_H_6E48F605__ +#define __ResonantLowpassFilter_H_6E48F605__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + +//============================================================================== +/** + * This class implements a resonant lowpass filter used in the wah-wah + * effect and its variants + */ + +class ResonantLowpassFilter : public IIRFilter +{ +public: + //============================================================================== + + /* Sets the filter coefficients to produce a resonant lowpass with a given + * centre frequency and Q. Also include a gain term to offset resonant peak. + */ + void makeResonantLowpass(const double inverseSampleRate, + const double centreFrequency, + const double Q, + const double gain) noexcept; + + /** Makes this filter duplicate the set-up of another one. + */ + void copyCoefficientsFrom (const ResonantLowpassFilter& other) noexcept; + +private: + //============================================================================== + JUCE_LEAK_DETECTOR (ResonantLowpassFilter); +}; + + +#endif // __ResonantLowpassFilter_H_6E48F605__ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/autowah/autowah.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="zpecIc" name="autowah" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.autowaheffect" buildVST="0" + buildRTAS="0" buildAU="1" pluginName="Auto Wah" pluginDesc="Automatic LFO or envelope-controlled wah-wah" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="auwa" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="autowahAU" + pluginAUViewClass="autowahAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" aaxIdentifier="com.yourcompany.autowah" + pluginAAXCategory="AAX_ePlugInCategory_Dynamics" includeBinaryInAppConfig="1" + buildVST3="0" buildAAX="0"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="aOvqDD" vstFolder="~/SDKs/vstsdk2.4" + postbuildCommand=" # This script takes the build product and copies it to the AU, VST, and RTAS folders, depending on # which plugin types you've built original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME # this looks inside the binary to detect which platforms are needed.. copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l` copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l` copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l` copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l` if [ $copyAU -gt 0 ]; then echo "Copying to AudioUnit folder..." AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component if [ -d "$AU" ]; then rm -r "$AU" fi cp -r "$original" "$AU" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE" # Fix info.plist for AUs built with Xcode 3 if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then echo else echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU" /usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist" fi fi if [ $copyVST -gt 0 ]; then echo "Copying to VST folder..." VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst if [ -d "$VST" ]; then rm -r "$VST" fi cp -r "$original" "$VST" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE" fi if [ $copyRTAS -gt 0 ]; then echo "Copying to RTAS folder..." RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm if [ -d "$RTAS" ]; then rm -r "$RTAS" fi cp -r "$original" "$RTAS" fi if [ $copyAAX -gt 0 ]; then echo "Copying to AAX folder..." if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX1" ]; then rm -r "$AAX1" fi cp -r "$original" "$AAX1" fi if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX2" ]; then rm -r "$AAX2" fi cp -r "$original" "$AAX2" fi fi "> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="autowah" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="autowah" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="lu67tC" name="autowah"> + <GROUP id="{53A84118-0AED-DFC5-A7C8-A649E8610450}" name="Source"> + <FILE id="fFIiX7" name="ResonantLowpassFilter.cpp" compile="1" resource="0" + file="Source/ResonantLowpassFilter.cpp"/> + <FILE id="bjeg12" name="ResonantLowpassFilter.h" compile="0" resource="0" + file="Source/ResonantLowpassFilter.h"/> + <FILE id="GCNfS4" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="eIYIB6" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="nF3mDW" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="PBXZ7e" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/chorus/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,246 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Chorus: chorus effect based on time-varying delays + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +ChorusAudioProcessorEditor::ChorusAudioProcessorEditor (ChorusAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + delayLabel_("", "Min. Delay (sec):"), + sweepWidthLabel_("", "Sweep Width (sec.):"), + depthLabel_("", "Depth:"), + frequencyLabel_("", "LFO Frequency:"), + waveformLabel_("", "LFO Waveform:"), + interpolationLabel_("", "Interpolation Type:"), + numVoicesLabel_("", "Number of Voices:") +{ + + // Set up the sliders + addAndMakeVisible (&delaySlider_); + delaySlider_.setSliderStyle (Slider::Rotary); + delaySlider_.addListener (this); + delaySlider_.setRange (.01, ChorusAudioProcessor::kMaximumDelay, 0.001); + + addAndMakeVisible (&sweepWidthSlider_); + sweepWidthSlider_.setSliderStyle (Slider::Rotary); + sweepWidthSlider_.addListener (this); + sweepWidthSlider_.setRange (.01, ChorusAudioProcessor::kMaximumSweepWidth, 0.001); + + addAndMakeVisible (&depthSlider_); + depthSlider_.setSliderStyle (Slider::Rotary); + depthSlider_.addListener (this); + depthSlider_.setRange (0.0, 1.0, 0.01); + + addAndMakeVisible (&frequencySlider_); + frequencySlider_.setSliderStyle (Slider::Rotary); + frequencySlider_.addListener (this); + frequencySlider_.setRange (0.05, 2.0, 0.025); + + addAndMakeVisible(&waveformComboBox_); + waveformComboBox_.setEditableText(false); + waveformComboBox_.setJustificationType(Justification::left); + waveformComboBox_.addItem("Sine", ChorusAudioProcessor::kWaveformSine); + waveformComboBox_.addItem("Triangle", ChorusAudioProcessor::kWaveformTriangle); + waveformComboBox_.addItem("Square", ChorusAudioProcessor::kWaveformSquare); + waveformComboBox_.addItem("Sawtooth", ChorusAudioProcessor::kWaveformSawtooth); + waveformComboBox_.addListener(this); + + addAndMakeVisible(&interpolationComboBox_); + interpolationComboBox_.setEditableText(false); + interpolationComboBox_.setJustificationType(Justification::left); + interpolationComboBox_.addItem("None", ChorusAudioProcessor::kInterpolationNearestNeighbour); + interpolationComboBox_.addItem("Linear", ChorusAudioProcessor::kInterpolationLinear); + interpolationComboBox_.addItem("Cubic", ChorusAudioProcessor::kInterpolationCubic); + interpolationComboBox_.addListener(this); + + addAndMakeVisible(&numVoicesComboBox_); + numVoicesComboBox_.setEditableText(false); + numVoicesComboBox_.setJustificationType(Justification::left); + numVoicesComboBox_.addItem("2", 2); + numVoicesComboBox_.addItem("3", 3); + numVoicesComboBox_.addItem("4", 4); + numVoicesComboBox_.addItem("5", 5); + numVoicesComboBox_.addListener(this); + + addAndMakeVisible(&stereoToggleButton_); + stereoToggleButton_.setName("Stereo"); + stereoToggleButton_.setButtonText("Stereo"); + stereoToggleButton_.addListener(this); + + delayLabel_.attachToComponent(&delaySlider_, false); + delayLabel_.setFont(Font (11.0f)); + + sweepWidthLabel_.attachToComponent(&sweepWidthSlider_, false); + sweepWidthLabel_.setFont(Font (11.0f)); + + depthLabel_.attachToComponent(&depthSlider_, false); + depthLabel_.setFont(Font (11.0f)); + + frequencyLabel_.attachToComponent(&frequencySlider_, false); + frequencyLabel_.setFont(Font (11.0f)); + + waveformLabel_.attachToComponent(&waveformComboBox_, false); + waveformLabel_.setFont(Font (11.0f)); + + interpolationLabel_.attachToComponent(&interpolationComboBox_, false); + interpolationLabel_.setFont(Font (11.0f)); + + numVoicesLabel_.attachToComponent(&numVoicesComboBox_, false); + numVoicesLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(550, 200, 600, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +ChorusAudioProcessorEditor::~ChorusAudioProcessorEditor() +{ +} + +//============================================================================== +void ChorusAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void ChorusAudioProcessorEditor::resized() +{ + delaySlider_.setBounds (20, 20, 150, 40); + sweepWidthSlider_.setBounds (200, 20, 150, 40); + depthSlider_.setBounds(380, 20, 150, 40); + frequencySlider_.setBounds(20, 80, 150, 40); + numVoicesComboBox_.setBounds(200, 80, 150, 30); + waveformComboBox_.setBounds(20, 140, 200, 30); + interpolationComboBox_.setBounds(250, 140, 200, 30); + stereoToggleButton_.setBounds(380, 80, 150, 40); + stereoToggleButton_.changeWidthToFitText(); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void ChorusAudioProcessorEditor::timerCallback() +{ + ChorusAudioProcessor* ourProcessor = getProcessor(); + + delaySlider_.setValue(ourProcessor->delay_, dontSendNotification); + sweepWidthSlider_.setValue(ourProcessor->sweepWidth_, dontSendNotification); + depthSlider_.setValue(ourProcessor->depth_, dontSendNotification); + frequencySlider_.setValue(ourProcessor->frequency_, dontSendNotification); + waveformComboBox_.setSelectedId(ourProcessor->waveform_, false); + interpolationComboBox_.setSelectedId(ourProcessor->interpolation_, false); + numVoicesComboBox_.setSelectedId(ourProcessor->numVoices_, false); + stereoToggleButton_.setToggleState((ourProcessor->stereo_ != 0), false); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void ChorusAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &delaySlider_) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kDelayParam, + (float)delaySlider_.getValue()); + } + else if (slider == &sweepWidthSlider_) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kSweepWidthParam, + (float)sweepWidthSlider_.getValue()); + } + else if (slider == &depthSlider_) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kDepthParam, + (float)depthSlider_.getValue()); + } + else if (slider == &frequencySlider_) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kFrequencyParam, + (float)frequencySlider_.getValue()); + } +} + +// Similar callback to sliderValueChanged for ComboBox updates +void ChorusAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &waveformComboBox_) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kWaveformParam, + (float)waveformComboBox_.getSelectedId()); + } + else if(comboBox == &interpolationComboBox_) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kInterpolationParam, + (float)interpolationComboBox_.getSelectedId()); + } + else if(comboBox == &numVoicesComboBox_) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kNumVoicesParam, + (float)numVoicesComboBox_.getSelectedId()); + } +} + +// Callback for toggle button +void ChorusAudioProcessorEditor::buttonClicked (Button *button) +{ + if(button == &stereoToggleButton_) + { + if(button->getToggleState()) + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kStereoParam, 1.0); + + // Stereo chorus only makes sense with 3 or more voices (1 input, 2 delayed voices) + if(numVoicesComboBox_.getSelectedId() == 2) + { + numVoicesComboBox_.setSelectedId(3); + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kNumVoicesParam, 3); + } + numVoicesComboBox_.setItemEnabled(2, false); + } + else + { + getProcessor()->setParameterNotifyingHost (ChorusAudioProcessor::kStereoParam, 0.0); + numVoicesComboBox_.setItemEnabled(2, true); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/chorus/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,78 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Chorus: chorus effect based on time-varying delays + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class ChorusAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Button::Listener, + public Timer +{ +public: + ChorusAudioProcessorEditor (ChorusAudioProcessor* ownerFilter); + ~ChorusAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + void buttonClicked (Button *); + +private: + Label delayLabel_, sweepWidthLabel_, depthLabel_; + Label frequencyLabel_, waveformLabel_; + Label interpolationLabel_, numVoicesLabel_; + Slider delaySlider_, sweepWidthSlider_, depthSlider_; + Slider frequencySlider_; + ComboBox waveformComboBox_, numVoicesComboBox_; + ComboBox interpolationComboBox_; + ToggleButton stereoToggleButton_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + ChorusAudioProcessor* getProcessor() const + { + return static_cast <ChorusAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/chorus/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,526 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Chorus: chorus effect based on time-varying delays + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <math.h> + +const float ChorusAudioProcessor::kMaximumDelay = 0.05; +const float ChorusAudioProcessor::kMaximumSweepWidth = 0.05; + +//============================================================================== +ChorusAudioProcessor::ChorusAudioProcessor() : delayBuffer_ (2, 1) +{ + // Set default values: + delay_ = .03; + sweepWidth_ = .02; + depth_ = 1.0; + frequency_ = 0.2; + waveform_ = kWaveformSine; + interpolation_ = kInterpolationLinear; + numVoices_ = 2; + stereo_ = 0; + + delayBufferLength_ = 1; + lfoPhase_ = 0.0; + inverseSampleRate_ = 1.0/44100.0; + + // Start the circular buffer pointer at the beginning + delayWritePosition_ = 0; + + lastUIWidth_ = 550; + lastUIHeight_ = 200; +} + +ChorusAudioProcessor::~ChorusAudioProcessor() +{ +} + +//============================================================================== +const String ChorusAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int ChorusAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float ChorusAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kDelayParam: return delay_; + case kSweepWidthParam: return sweepWidth_; + case kDepthParam: return depth_; + case kFrequencyParam: return frequency_; + case kWaveformParam: return (float)waveform_; + case kInterpolationParam: return (float)interpolation_; + case kNumVoicesParam: return (float)numVoices_; + case kStereoParam: return (float)stereo_; + default: return 0.0f; + } +} + +void ChorusAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + + switch (index) + { + case kDelayParam: + delay_ = newValue; + break; + case kSweepWidthParam: + sweepWidth_ = newValue; + break; + case kDepthParam: + depth_ = newValue; + break; + case kFrequencyParam: + frequency_ = newValue; + break; + case kWaveformParam: + waveform_ = (int)newValue; + break; + case kInterpolationParam: + interpolation_ = (int)newValue; + break; + case kNumVoicesParam: + numVoices_ = (int)newValue; + break; + case kStereoParam: + stereo_ = (int)newValue; + break; + default: + break; + } +} + +const String ChorusAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kDelayParam: return "delay"; + case kSweepWidthParam: return "sweep width"; + case kDepthParam: return "depth"; + case kFrequencyParam: return "frequency"; + case kWaveformParam: return "waveform"; + case kInterpolationParam: return "interpolation"; + case kNumVoicesParam: return "number of voices"; + case kStereoParam: return "stereo"; + default: break; + } + + return String::empty; +} + +const String ChorusAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String ChorusAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String ChorusAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool ChorusAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool ChorusAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool ChorusAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double ChorusAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool ChorusAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool ChorusAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int ChorusAudioProcessor::getNumPrograms() +{ + return 0; +} + +int ChorusAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void ChorusAudioProcessor::setCurrentProgram (int index) +{ +} + +const String ChorusAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void ChorusAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void ChorusAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Allocate and zero the delay buffer (size will depend on current sample rate) + // Add 3 extra samples to allow cubic interpolation even at maximum delay + delayBufferLength_ = (int)((kMaximumDelay + kMaximumSweepWidth)*sampleRate) + 3; + delayBuffer_.setSize(2, delayBufferLength_); + delayBuffer_.clear(); + lfoPhase_ = 0.0; + + inverseSampleRate_ = 1.0/sampleRate; +} + +void ChorusAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + // The delay buffer will stay in memory until the effect is unloaded. +} + +void ChorusAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + delayBuffer_.clear(); +} + + +void ChorusAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel, dpw; // dpr = delay read pointer; dpw = delay write pointer + float dpr, currentDelay, ph; + + // Go through each channel of audio that's passed in. In this example we apply identical + // effects to each channel, regardless of how many input channels there are. For some effects, like + // a stereo chorus or panner, you might do something different for each channel. + + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // delayData is the circular buffer for implementing delay on this channel + float* delayData = delayBuffer_.getSampleData (jmin (channel, delayBuffer_.getNumChannels() - 1)); + + // Make a temporary copy of any state variables declared in PluginProcessor.h which need to be + // maintained between calls to processBlock(). Each channel needs to be processed identically + // which means that the activity of processing one channel can't affect the state variable for + // the next channel. + + dpw = delayWritePosition_; + ph = lfoPhase_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + float interpolatedSample = 0.0; + float phaseOffset = 0.0; + float weight; + + // Chorus can have more than 2 voices (where the original, undelayed signal counts as a voice). + // In this implementation, all voices use the same LFO, but with different phase offsets. It + // is also possible to use different waveforms and different frequencies for each voice. + + for(int j = 0; j < numVoices_ - 1; ++j) + { + if(stereo_ != 0 && numVoices_ > 2) + { + // A stereo chorus pans each voice to a different location in the stereo field. + // How this is done depends on the number of voices: + // -- 2 voices: N/A (need at least 2 delayed voices for stereo chorus) + // -- 3 voices: 1 voice left, 1 voice right (0, 1) + // -- 4 voices: 1 voice left, 1 voice centre, 1 voice right (0, 0.5, 1) + // -- 5 voices: 1 voice left, 1 voice left-centre, + // 1 voice right-centre, 1 voice right (0, 0.33, 0.66, 1) + + weight = (float)j/(float)(numVoices_ - 2); + + // Left and right channels are mirrors of each other in weight + if(channel != 0) + weight = 1.0 - weight; + } + else + weight = 1.0; + + // Add the voice to the mix if it has nonzero weight + if(weight != 0.0) + { + // Recalculate the read pointer position with respect to the write pointer. A more efficient + // implementation might increment the read pointer based on the derivative of the LFO without + // running the whole equation again, but this format makes the operation clearer. + + currentDelay = delay_ + sweepWidth_*lfo(fmodf(ph + phaseOffset, 1.0f), waveform_); + dpr = fmodf((float)dpw - (float)(currentDelay * getSampleRate()) + (float)delayBufferLength_, + (float)delayBufferLength_); + + // In this example, the output is the input plus the contents of the delay buffer (weighted by delayMix) + // The last term implements a tremolo (variable amplitude) on the whole thing. + + if(interpolation_ == kInterpolationLinear) + { + // Find the fraction by which the read pointer sits between two + // samples and use this to adjust weights of the samples + float fraction = dpr - floorf(dpr); + int previousSample = (int)floorf(dpr); + int nextSample = (previousSample + 1) % delayBufferLength_; + interpolatedSample = fraction*delayData[nextSample] + + (1.0f-fraction)*delayData[previousSample]; + } + else if(interpolation_ == kInterpolationCubic) + { + // Cubic interpolation will produce cleaner results at the expense + // of more computation. This code uses the Catmull-Rom variant of + // cubic interpolation. To reduce the load, calculate a few quantities + // in advance that will be used several times in the equation: + + int sample1 = (int)floorf(dpr); + int sample2 = (sample1 + 1) % delayBufferLength_; + int sample3 = (sample2 + 1) % delayBufferLength_; + int sample0 = (sample1 - 1 + delayBufferLength_) % delayBufferLength_; + + float fraction = dpr - floorf(dpr); + float frsq = fraction*fraction; + + float a0 = -0.5f*delayData[sample0] + 1.5f*delayData[sample1] + - 1.5f*delayData[sample2] + 0.5f*delayData[sample3]; + float a1 = delayData[sample0] - 2.5f*delayData[sample1] + + 2.0f*delayData[sample2] - 0.5f*delayData[sample3]; + float a2 = -0.5f*delayData[sample0] + 0.5f*delayData[sample2]; + float a3 = delayData[sample1]; + + interpolatedSample = a0*fraction*frsq + a1*frsq + a2*fraction + a3; + } + else // Nearest neighbour interpolation + { + // Find the nearest input sample by rounding the fractional index to the + // nearest integer. It's possible this will round it to the end of the buffer, + // in which case we need to roll it back to the beginning. + int closestSample = (int)floorf(dpr + 0.5f); + if(closestSample == delayBufferLength_) + closestSample = 0; + interpolatedSample = delayData[closestSample]; + } + + // Store the output sample in the buffer, which starts by containing the input sample + channelData[i] += depth_ * weight * interpolatedSample; + } + + // 3-voice chorus uses two voices in quadrature phase (90 degrees apart). Otherwise, + // spread the voice phases evenly around the unit circle. (For 2-voice chorus, this + // code doesn't matter since the loop only runs once.) + if(numVoices_ < 3) + phaseOffset += 0.25f; + else + phaseOffset += 1.0f / (float)(numVoices_ - 1); + } + + // Store the current input in the delay buffer (no feedback in a chorus, unlike a flanger). + delayData[dpw] = in; + + // Increment the write pointer at a constant rate. The read pointer will move at different + // rates depending on the settings of the LFO, the delay and the sweep width. + + if (++dpw >= delayBufferLength_) + dpw = 0; + + // Update the LFO phase, keeping it in the range 0-1 + ph += frequency_*inverseSampleRate_; + if(ph >= 1.0) + ph -= 1.0; + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + + delayWritePosition_ = dpw; + lfoPhase_ = ph; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool ChorusAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* ChorusAudioProcessor::createEditor() +{ + return new ChorusAudioProcessorEditor (this); +} + +//============================================================================== +void ChorusAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("delay", delay_); + xml.setAttribute("sweepWidth", sweepWidth_); + xml.setAttribute("depth", depth_); + xml.setAttribute("frequency", frequency_); + xml.setAttribute("waveform", waveform_); + xml.setAttribute("interpolation", interpolation_); + xml.setAttribute("numVoices", numVoices_); + xml.setAttribute("stereo", stereo_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void ChorusAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + delay_ = (float)xmlState->getDoubleAttribute("delay", delay_); + sweepWidth_ = (float)xmlState->getDoubleAttribute("sweepWidth", sweepWidth_); + depth_ = (float)xmlState->getDoubleAttribute("depth", depth_); + frequency_ = (float)xmlState->getDoubleAttribute("frequency", frequency_); + waveform_ = xmlState->getIntAttribute("waveform", waveform_); + interpolation_ = xmlState->getIntAttribute("interpolation", interpolation_); + numVoices_ = xmlState->getIntAttribute("numVoices", numVoices_); + stereo_ = xmlState->getIntAttribute("stereo", stereo_); + } + } +} + +//============================================================================== +// Function for calculating LFO waveforms. Phase runs from 0-1, output is scaled +// from 0 to 1 (note: not -1 to 1 as would be typical of sine). +float ChorusAudioProcessor::lfo(float phase, int waveform) +{ + switch(waveform) + { + case kWaveformTriangle: + if(phase < 0.25f) + return 0.5f + 2.0f*phase; + else if(phase < 0.75f) + return 1.0f - 2.0f*(phase - 0.25f); + else + return 2.0f*(phase-0.75f); + case kWaveformSquare: + if(phase < 0.5f) + return 1.0f; + else + return 0.0f; + case kWaveformSawtooth: + if(phase < 0.5f) + return 0.5f + phase; + else + return phase - 0.5f; + case kWaveformSine: + default: + return 0.5f + 0.5f*sinf(2.0 * M_PI * phase); + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new ChorusAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/chorus/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,156 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Chorus: chorus effect based on time-varying delays + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class ChorusAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + ChorusAudioProcessor(); + ~ChorusAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kDelayParam = 0, + kSweepWidthParam, + kDepthParam, + kFrequencyParam, + kWaveformParam, + kInterpolationParam, + kNumVoicesParam, + kStereoParam, + kNumParameters + }; + + enum Waveforms + { + kWaveformSine = 1, + kWaveformTriangle, + kWaveformSquare, + kWaveformSawtooth, + kNumWaveforms + }; + + enum Interpolation + { + kInterpolationNearestNeighbour = 1, + kInterpolationLinear, + kInterpolationCubic, + kNumInterpolations + }; + + static const float kMaximumDelay; + static const float kMaximumSweepWidth; + + // Adjustable parameters: + float delay_; // Minimum length of delay line in seconds + float sweepWidth_; // Amount of change from min to max delay + float depth_; // Mix level of delayed signal (0-1) + float frequency_; // LFO frequency (Hz) + int waveform_; // What shape should be used for the LFO + int interpolation_; // What type of interpolation to use + int numVoices_; // How many voices to use in the chorus (2-5) + int stereo_; // Whether to use stereo (quadrature-phase) chorus + +private: + float lfo(float phase, int waveform); + + // Circular buffer variables for implementing delay + AudioSampleBuffer delayBuffer_; + int delayBufferLength_; + int delayWritePosition_; + + float lfoPhase_; // Phase of the low-frequency oscillator + double inverseSampleRate_; // It's more efficient to multiply than divide, so + // cache the inverse of the sample rate + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChorusAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/chorus/chorus.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="jqUTfu" name="chorus" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.choruseffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Chorus" pluginDesc="Chorus effect" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="chor" pluginChannelConfigs="{2,2}, {1,1}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="0" + pluginTailLength="1" pluginEditorRequiresKeys="0" pluginAUExportPrefix="chorusAU" + pluginAUViewClass="chorusAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.chorus" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="WedtX3" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="chorus" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="chorus" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="bPEiPc" name="chorus"> + <GROUP id="{846CFF56-22A7-417C-3A8F-BC186E0C003D}" name="Source"> + <FILE id="B2Uqlt" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="gStcm8" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="Fab6uq" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="Ii1WBn" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/compressor/Compressor.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="MBaMzn" name="compressor" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.compressor" buildVST="1" buildRTAS="0" + buildAU="1" pluginName="Compressor" pluginDesc="Compressor" pluginManufacturer="Reiss and McPherson" + pluginManufacturerCode="JRAM" pluginCode="comp" pluginChannelConfigs="{2, 2}, {1, 1}" + pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0" + pluginSilenceInIsSilenceOut="1" pluginTailLength="0" pluginEditorRequiresKeys="0" + pluginAUExportPrefix="CompressorAU" pluginAUViewClass="CompressorAU_V1" + pluginRTASCategory="" jucerVersion="3.1.0" aaxIdentifier="uk.ac.qmul.eecs.compressor" + buildVST3="0" buildAAX="0" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1" companyName="Reiss and McPherson"> + <EXPORTFORMATS> + <VS2010 targetFolder="Builds/VisualStudio2010" libraryType="1" vstFolder="..\..\vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" + isDebug="0" optimisation="2" targetName="Compressor"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_video" path="../../juce/modules"/> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_cryptography" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </VS2010> + <XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="../../vstsdk2.4" postbuildCommand=" # This script takes the build product and copies it to the AU, VST, VST3, RTAS and AAX folders, depending on # which plugin types you've built original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME # this looks inside the binary to detect which platforms are needed.. copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l` copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l` copyVST3=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'GetPluginFactory' | wc -l` copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l` copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l` if [ $copyAU -gt 0 ]; then echo "Copying to AudioUnit folder..." AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component if [ -d "$AU" ]; then rm -r "$AU" fi cp -r "$original" "$AU" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE" # Fix info.plist for AUs built with Xcode 3 if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then echo else echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU" /usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist" fi fi if [ $copyVST -gt 0 ]; then echo "Copying to VST folder..." VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst if [ -d "$VST" ]; then rm -r "$VST" fi cp -r "$original" "$VST" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE" fi if [ $copyVST3 -gt 0 ]; then echo "Copying to VST3 folder..." VST3=~/Library/Audio/Plug-Ins/VST3/$PRODUCT_NAME.vst3 if [ -d "$VST3" ]; then rm -r "$VST3" fi cp -r "$original" "$VST3" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST3/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST3/Contents/$INFOPLIST_FILE" fi if [ $copyRTAS -gt 0 ]; then echo "Copying to RTAS folder..." RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm if [ -d "$RTAS" ]; then rm -r "$RTAS" fi cp -r "$original" "$RTAS" fi if [ $copyAAX -gt 0 ]; then echo "Copying to AAX folder..." if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX1" ]; then rm -r "$AAX1" fi cp -r "$original" "$AAX1" fi if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX2" ]; then rm -r "$AAX2" fi cp -r "$original" "$AAX2" fi fi "> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + isDebug="1" optimisation="1" targetName="compressor"/> + <CONFIGURATION name="Release" osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + isDebug="0" optimisation="2" targetName="compressor"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_video" path="../../juce/modules"/> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_cryptography" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="R56iUz" name="compressor"> + <GROUP id="{839367BB-53A9-7137-E15E-D2DD800BA26D}" name="Source"> + <FILE id="RUKlAk" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="uEbtTW" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="vo9R27" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="IiR9iQ" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_cryptography" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_video" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/compressor/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,12269 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Compressor: dynamic range compression effect + See textbook Chapter 6: Dynamics Processing + + Code by Joshua Reiss, Brecht de Man and Andrew McPherson + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +//[Headers] You can add your own extra header files here... +#include "PluginProcessor.h" +//[/Headers] + +#include "PluginEditor.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... + + + +//[/MiscUserDefs] + +//============================================================================== +CompressorAudioProcessorEditor::CompressorAudioProcessorEditor (CompressorAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + buttonONOFF (0), + label (0), + sliderThreshold (0), + label2 (0), + sliderRatio (0), + label3 (0), + sliderGain (0), + label7 (0), + sliderAttack (0), + label5 (0), + sliderRelease (0), + label6 (0), + cachedImage_brushedMetalDark_jpg (0) +{ + addAndMakeVisible (buttonONOFF = new TextButton (L"on off button")); + buttonONOFF->setButtonText (L"ON / OFF"); + buttonONOFF->addListener (this); + buttonONOFF->setColour (TextButton::buttonColourId, Colour (0xff615a5a)); + buttonONOFF->setColour (TextButton::buttonOnColourId, Colours::chartreuse); + + addAndMakeVisible (label = new Label (String::empty, + L"Compressor")); + label->setFont (Font (22.0000f, Font::bold)); + label->setJustificationType (Justification::centred); + label->setEditable (false, false, false); + label->setColour (TextEditor::textColourId, Colours::black); + label->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (sliderThreshold = new Slider (L"new slider")); + sliderThreshold->setRange (-60, 0, -60); + sliderThreshold->setSliderStyle (Slider::RotaryVerticalDrag); + sliderThreshold->setTextBoxStyle (Slider::TextBoxBelow, false, 80, 20); + sliderThreshold->addListener (this); + + addAndMakeVisible (label2 = new Label (L"new label", + L"Threshold")); + label2->setFont (Font (15.0000f, Font::plain)); + label2->setJustificationType (Justification::centredLeft); + label2->setEditable (false, false, false); + label2->setColour (TextEditor::textColourId, Colours::black); + label2->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (sliderRatio = new Slider (L"new slider")); + sliderRatio->setRange (1, 100, 0.1); + sliderRatio->setSliderStyle (Slider::RotaryVerticalDrag); + sliderRatio->setTextBoxStyle (Slider::TextBoxBelow, false, 80, 20); + sliderRatio->addListener (this); + + addAndMakeVisible (label3 = new Label (L"new label", + L"Ratio")); + label3->setFont (Font (15.0000f, Font::plain)); + label3->setJustificationType (Justification::centredLeft); + label3->setEditable (false, false, false); + label3->setColour (TextEditor::textColourId, Colours::black); + label3->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (sliderGain = new Slider (L"new slider")); + sliderGain->setRange (0, 40, 1); + sliderGain->setSliderStyle (Slider::RotaryVerticalDrag); + sliderGain->setTextBoxStyle (Slider::TextBoxBelow, false, 80, 20); + sliderGain->addListener (this); + + addAndMakeVisible (label7 = new Label (L"new label", + L"Gain")); + label7->setFont (Font (15.0000f, Font::plain)); + label7->setJustificationType (Justification::centredLeft); + label7->setEditable (false, false, false); + label7->setColour (TextEditor::textColourId, Colours::black); + label7->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (sliderAttack = new Slider (L"new slider")); + sliderAttack->setRange (0.1, 80, 0.1); + sliderAttack->setSliderStyle (Slider::RotaryVerticalDrag); + sliderAttack->setTextBoxStyle (Slider::TextBoxBelow, false, 80, 20); + sliderAttack->addListener (this); + + addAndMakeVisible (label5 = new Label (L"new label", + L"Attack Time (ms)")); + label5->setFont (Font (15.0000f, Font::plain)); + label5->setJustificationType (Justification::centredLeft); + label5->setEditable (false, false, false); + label5->setColour (TextEditor::textColourId, Colours::black); + label5->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (sliderRelease = new Slider (L"new slider")); + sliderRelease->setRange (0.1, 1000, 0.1); + sliderRelease->setSliderStyle (Slider::RotaryVerticalDrag); + sliderRelease->setTextBoxStyle (Slider::TextBoxBelow, false, 80, 20); + sliderRelease->addListener (this); + + addAndMakeVisible (label6 = new Label (L"new label", + L"Release Time (ms)")); + label6->setFont (Font (15.0000f, Font::plain)); + label6->setJustificationType (Justification::centredLeft); + label6->setEditable (false, false, false); + label6->setColour (TextEditor::textColourId, Colours::black); + label6->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + cachedImage_brushedMetalDark_jpg = ImageCache::getFromMemory (brushedMetalDark_jpg, brushedMetalDark_jpgSize); + + //[UserPreSize] + addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits)); + resizeLimits.setSizeLimits (150, 150, 850, 290); + //[/UserPreSize] + + setSize (700, 310); + + + //[Constructor] You can add your own custom stuff here.. + buttonONOFF->setClickingTogglesState(true); + + startTimer (50); + + //[/Constructor] +} + +CompressorAudioProcessorEditor::~CompressorAudioProcessorEditor() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + //[/Destructor_pre] + + deleteAndZero (buttonONOFF); + deleteAndZero (label); + deleteAndZero (sliderThreshold); + deleteAndZero (label2); + deleteAndZero (sliderRatio); + deleteAndZero (label3); + deleteAndZero (sliderGain); + deleteAndZero (label7); + deleteAndZero (sliderAttack); + deleteAndZero (label5); + deleteAndZero (sliderRelease); + deleteAndZero (label6); + + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void CompressorAudioProcessorEditor::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colour (0xff3e3a3a)); + + g.setColour (Colours::white); + g.fillRoundedRectangle (4.0f, (float) (-1), 700.0f, 60.0f, 10.0000f); + + g.setColour (Colours::black); + g.drawImage (cachedImage_brushedMetalDark_jpg, + 0, 50, 700, 260, + 0, 0, cachedImage_brushedMetalDark_jpg.getWidth(), cachedImage_brushedMetalDark_jpg.getHeight()); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void CompressorAudioProcessorEditor::resized() +{ + buttonONOFF->setBounds (17, 55, 125, 25); + label->setBounds (-3, 0, 500, 49); + sliderThreshold->setBounds (533, 182, 175, 98); + label2->setBounds (588, 152, 91, 24); + sliderRatio->setBounds (5, 182, 175, 98); + label3->setBounds (132, 152, 50, 24); + sliderGain->setBounds (595, 77, 56, 70); + label7->setBounds (604, 52, 52, 24); + sliderAttack->setBounds (196, 182, 175, 98); + label5->setBounds (229, 152, 120, 24); + sliderRelease->setBounds (365, 182, 175, 98); + label6->setBounds (391, 152, 120, 24); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + +void CompressorAudioProcessorEditor::buttonClicked (Button* buttonThatWasClicked) +{ + //[UserbuttonClicked_Pre] + //[/UserbuttonClicked_Pre] + + if (buttonThatWasClicked == buttonONOFF) + { + //[UserButtonCode_buttonONOFF] -- add your button handler code here.. + getProcessor()->compressorONOFF = buttonONOFF->getToggleState(); + //[/UserButtonCode_buttonONOFF] + } + + //[UserbuttonClicked_Post] + //[/UserbuttonClicked_Post] +} + +void CompressorAudioProcessorEditor::sliderValueChanged (Slider* sliderThatWasMoved) +{ + //[UsersliderValueChanged_Pre] + //[/UsersliderValueChanged_Pre] + + if (sliderThatWasMoved == sliderThreshold) + { + //[UserSliderCode_sliderThreshold] -- add your slider handling code here.. + getProcessor()->setThreshold(sliderThreshold->getValue()); + //[/UserSliderCode_sliderThreshold] + } + else if (sliderThatWasMoved == sliderRatio) + { + //[UserSliderCode_sliderRatio] -- add your slider handling code here.. + getProcessor()->setRatio(sliderRatio->getValue()); + //[/UserSliderCode_sliderRatio] + } + else if (sliderThatWasMoved == sliderGain) + { + //[UserSliderCode_sliderGain] -- add your slider handling code here.. + getProcessor()->setGain(sliderGain->getValue()); + //[/UserSliderCode_sliderGain] + } + else if (sliderThatWasMoved == sliderAttack) + { + //[UserSliderCode_sliderAttack] -- add your slider handling code here.. + getProcessor()->setAttackTime(sliderAttack->getValue()); + //[/UserSliderCode_sliderAttack] + } + else if (sliderThatWasMoved == sliderRelease) + { + //[UserSliderCode_sliderRelease] -- add your slider handling code here.. + getProcessor()->setReleaseTime(sliderRelease->getValue()); + //[/UserSliderCode_sliderRelease] + } + + //[UsersliderValueChanged_Post] + //[/UsersliderValueChanged_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... + + +// This timer periodically checks whether any of the filter's parameters have changed... + +void CompressorAudioProcessorEditor::timerCallback() +{ + + // Display the ON/OFF button in its correct state + if (buttonONOFF->getToggleState()) buttonONOFF->setToggleState(true, false); + else buttonONOFF->setToggleState(false, false); +} + + +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Jucer information section -- + + This is where the Jucer puts all of its metadata, so don't change anything in here! + +BEGIN_JUCER_METADATA + +<JUCER_COMPONENT documentType="Component" className="CompressorAudioProcessorEditor" + componentName="" parentClasses="public AudioProcessorEditor, public Timer" + constructorParams="CompressorAudioProcessor* ownerFilter" variableInitialisers="AudioProcessorEditor (ownerFilter)" + snapPixels="8" snapActive="0" snapShown="1" overlayOpacity="0.330000013" + fixedSize="0" initialWidth="700" initialHeight="310"> + <BACKGROUND backgroundColour="ff3e3a3a"> + <ROUNDRECT pos="4 -1 700 60" cornerSize="10" fill="solid: ffffffff" hasStroke="0"/> + <IMAGE pos="0 50 700 260" resource="brushedMetalDark_jpg" opacity="1" + mode="0"/> + </BACKGROUND> + <TEXTBUTTON name="on off button" id="74cbf2a91094eddb" memberName="buttonONOFF" + virtualName="" explicitFocusOrder="0" pos="17 55 125 25" bgColOff="ff615a5a" + bgColOn="ff7fff00" buttonText="ON / OFF" connectedEdges="0" needsCallback="1" + radioGroupId="0"/> + <LABEL name="" id="eb547386eded429d" memberName="label" virtualName="" + explicitFocusOrder="0" pos="-3 0 500 49" edTextCol="ff000000" + edBkgCol="0" labelText="Compressor" editableSingleClick="0" editableDoubleClick="0" + focusDiscardsChanges="0" fontname="Default font" fontsize="22" + bold="1" italic="0" justification="36"/> + <SLIDER name="new slider" id="eab20a7ec2124789" memberName="sliderThreshold" + virtualName="" explicitFocusOrder="0" pos="533 182 175 98" min="-60" + max="0" int="-60" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow" + textBoxEditable="1" textBoxWidth="80" textBoxHeight="20" skewFactor="1"/> + <LABEL name="new label" id="a68032c64d515cea" memberName="label2" virtualName="" + explicitFocusOrder="0" pos="588 152 91 24" edTextCol="ff000000" + edBkgCol="0" labelText="Threshold" editableSingleClick="0" editableDoubleClick="0" + focusDiscardsChanges="0" fontname="Default font" fontsize="15" + bold="0" italic="0" justification="33"/> + <SLIDER name="new slider" id="2707ee7701d502c1" memberName="sliderRatio" + virtualName="" explicitFocusOrder="0" pos="5 182 175 98" min="1" + max="100" int="0.1" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow" + textBoxEditable="1" textBoxWidth="80" textBoxHeight="20" skewFactor="1"/> + <LABEL name="new label" id="3e752a04cae9a566" memberName="label3" virtualName="" + explicitFocusOrder="0" pos="132 152 50 24" edTextCol="ff000000" + edBkgCol="0" labelText="Ratio" editableSingleClick="0" editableDoubleClick="0" + focusDiscardsChanges="0" fontname="Default font" fontsize="15" + bold="0" italic="0" justification="33"/> + <SLIDER name="new slider" id="c28d5a8c02343352" memberName="sliderGain" + virtualName="" explicitFocusOrder="0" pos="595 77 56 70" min="0" + max="40" int="1" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow" + textBoxEditable="1" textBoxWidth="80" textBoxHeight="20" skewFactor="1"/> + <LABEL name="new label" id="e3bb48b03347cb15" memberName="label7" virtualName="" + explicitFocusOrder="0" pos="604 52 52 24" edTextCol="ff000000" + edBkgCol="0" labelText="Gain" editableSingleClick="0" editableDoubleClick="0" + focusDiscardsChanges="0" fontname="Default font" fontsize="15" + bold="0" italic="0" justification="33"/> + <SLIDER name="new slider" id="153b41a7187b4d90" memberName="sliderAttack" + virtualName="" explicitFocusOrder="0" pos="196 182 175 98" min="0.1" + max="80" int="0.1" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow" + textBoxEditable="1" textBoxWidth="80" textBoxHeight="20" skewFactor="1"/> + <LABEL name="new label" id="ada7a829c3c54075" memberName="label5" virtualName="" + explicitFocusOrder="0" pos="229 152 120 24" edTextCol="ff000000" + edBkgCol="0" labelText="Attack Time (ms)" editableSingleClick="0" + editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font" + fontsize="15" bold="0" italic="0" justification="33"/> + <SLIDER name="new slider" id="147aff9502a416d7" memberName="sliderRelease" + virtualName="" explicitFocusOrder="0" pos="365 182 175 98" min="0.1" + max="1000" int="0.1" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow" + textBoxEditable="1" textBoxWidth="80" textBoxHeight="20" skewFactor="1"/> + <LABEL name="new label" id="a04b8eaf5c6b5440" memberName="label6" virtualName="" + explicitFocusOrder="0" pos="391 152 120 24" edTextCol="ff000000" + edBkgCol="0" labelText="Release Time (ms)" editableSingleClick="0" + editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font" + fontsize="15" bold="0" italic="0" justification="33"/> +</JUCER_COMPONENT> + +END_JUCER_METADATA +*/ +#endif + +//============================================================================== +// Binary resources - be careful not to edit any of these sections! + +// JUCER_RESOURCE: brushedMetalDark_jpg, 462527, "../../../../../Users/Antoine/Desktop/SAVE window choice and tests/Assets/BrushedMetal - dark.jpg" +static const unsigned char resource_CompressorAudioProcessorEditor_brushedMetalDark_jpg[] = { 255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,72,0,72,0,0,255,225,0,74,69,120,105,102,0,0,73,73,42,0,8,0,0,0, +1,0,105,135,4,0,1,0,0,0,26,0,0,0,0,0,0,0,1,0,134,146,2,0,22,0,0,0,44,0,0,0,0,0,0,0,67,114,101,97,116,101,100,32,119,105,116,104,32,84,104,101,32,71,73,77,80,0,255,219,0,67,0,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255,219,0,67,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255,192,0,17,8,4,26,5,120,3,1,34,0,2,17,1,3,17,1,255,196,0,31,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,255,196,0,181,16,0,2,1,3,3,2,4,3,5, +5,4,4,0,0,1,125,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71, +72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170, +178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250,255,196,0,31, +1,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,255,196,0,181,17,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82, +240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130, +131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215, +216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250,255,218,0,12,3,1,0,2,17,3,17,0,63,0,252,215,251,67,177,25,179,99,143,250,97,25,200,224,99,45,62,115,192,0,113,215,223, +53,50,202,122,255,0,103,147,144,7,250,152,191,146,204,51,248,159,108,230,176,132,138,64,253,236,153,61,130,1,250,241,234,112,57,245,25,231,18,7,112,65,23,19,103,142,170,167,240,255,0,90,160,140,103,175, +235,210,128,58,21,152,128,63,208,37,92,116,43,28,35,0,231,214,98,125,125,122,96,142,13,74,151,46,56,91,73,186,255,0,17,132,126,3,247,128,99,3,24,236,79,21,134,147,76,7,252,124,75,142,152,17,70,220,114, +112,9,148,131,144,114,126,132,251,84,201,44,253,68,211,54,57,57,183,135,143,108,249,191,159,183,126,184,0,232,22,226,83,143,244,23,28,100,147,229,30,185,231,253,119,56,252,184,205,76,179,17,247,236,206, +58,28,249,96,245,228,113,33,29,51,223,36,250,86,42,61,193,192,87,112,15,28,197,10,147,146,57,249,100,200,199,25,193,207,30,248,54,21,174,201,234,79,3,168,129,122,103,131,186,108,244,192,36,3,237,158,5, +0,108,165,194,18,9,178,135,31,237,180,71,244,50,99,244,207,161,205,89,87,83,140,91,64,131,160,199,144,72,233,220,187,31,111,199,7,177,172,85,55,156,16,34,28,243,150,128,146,59,240,103,24,237,208,156,122, +102,172,161,188,192,253,228,10,120,227,100,100,254,36,93,142,126,156,246,201,231,32,27,40,128,224,144,136,51,216,91,103,168,245,35,240,199,92,117,61,106,194,197,8,229,157,71,166,90,207,36,231,147,157, +217,60,250,140,15,83,89,40,215,140,0,18,192,78,7,252,187,196,57,247,63,111,7,249,130,51,245,171,35,237,61,194,55,178,172,92,158,57,37,181,62,131,147,208,116,201,199,74,0,214,69,183,4,109,149,71,95,152, +125,140,156,228,116,3,57,201,200,3,7,57,244,201,19,132,64,63,227,225,190,158,85,169,245,57,27,57,250,142,158,158,149,151,28,179,3,243,65,25,126,132,226,28,145,237,141,68,146,73,228,140,99,211,3,53,109, +102,110,246,202,113,255,0,76,163,228,96,231,159,183,182,15,127,166,113,211,128,13,4,69,61,39,124,30,50,109,247,115,159,103,3,167,29,190,185,53,97,97,132,144,13,195,41,244,251,42,142,135,190,92,251,116, +245,198,49,156,208,89,195,12,125,150,51,128,58,172,64,140,250,147,121,245,245,207,225,138,157,74,183,34,214,46,167,42,171,9,96,58,227,38,112,58,158,153,57,61,78,40,2,248,182,182,200,255,0,75,244,198,45, +212,103,61,56,32,112,61,61,207,175,22,22,218,30,171,118,231,216,90,68,113,232,78,75,16,122,144,121,207,62,132,28,208,169,140,253,154,53,246,217,111,158,189,120,153,142,79,111,65,222,164,2,62,63,113,131, +254,204,118,228,227,35,167,207,143,161,199,227,142,104,3,72,71,0,32,53,212,231,161,0,90,39,108,244,196,103,241,253,41,227,236,235,255,0,45,39,99,235,246,110,222,248,43,215,175,110,156,138,164,139,9,251, +214,238,227,63,222,182,95,230,167,30,160,226,166,9,110,70,62,199,47,28,255,0,199,205,184,29,185,32,219,184,60,17,235,143,228,1,117,90,1,209,174,129,56,32,139,75,134,206,70,127,131,176,239,140,243,235, +82,168,78,187,238,185,254,245,165,208,199,234,157,125,79,208,116,36,211,81,110,56,251,43,12,243,131,45,177,207,32,103,254,60,143,29,115,248,251,85,164,142,6,60,68,70,112,62,89,34,60,16,48,9,26,105,28, +12,12,100,122,96,98,128,38,81,8,251,207,55,60,101,173,238,71,227,142,71,174,57,231,211,165,60,36,4,1,185,206,49,214,9,59,118,229,79,169,228,250,158,135,38,162,251,44,36,30,56,244,243,96,82,49,128,71,58, +104,235,192,236,125,125,105,194,197,9,200,13,156,247,186,140,99,32,241,198,158,195,31,92,0,58,1,129,64,19,136,98,234,60,204,129,218,30,163,128,115,136,178,115,212,228,254,52,121,106,91,0,72,188,255,0, +207,54,198,65,232,6,193,144,126,153,254,116,213,183,35,161,147,60,12,11,188,15,110,154,112,201,207,92,131,140,114,65,228,63,107,47,33,155,61,193,188,126,221,50,5,144,233,233,143,175,83,64,15,242,115,147, +135,231,214,54,252,121,242,58,3,212,146,112,115,211,187,150,6,61,49,158,64,200,35,175,166,98,82,78,61,71,182,7,90,81,231,63,27,73,246,55,147,3,249,253,137,135,126,249,244,35,138,147,108,195,25,141,6,6, +6,110,221,136,30,159,53,134,15,126,163,7,158,61,0,24,45,164,56,229,79,76,157,220,253,62,231,110,217,198,1,233,146,42,81,109,40,28,52,99,61,154,72,193,255,0,199,163,247,239,252,197,0,93,2,112,209,99,35, +24,147,220,142,73,178,80,125,136,247,227,2,164,205,192,56,105,35,30,184,184,97,235,235,105,245,224,99,129,219,138,0,103,145,50,131,131,31,212,73,106,121,244,255,0,85,158,59,100,126,7,184,98,159,4,109, +4,245,206,235,97,239,198,34,0,126,92,99,62,153,0,184,32,31,49,64,233,254,188,30,51,211,6,209,123,227,28,254,184,5,224,92,140,124,224,253,39,81,244,227,201,246,206,113,131,156,247,2,128,16,36,170,7,238, +65,227,57,205,175,57,228,115,229,15,78,57,237,79,223,50,255,0,203,32,48,71,67,110,79,62,226,35,156,243,147,143,90,104,55,3,57,96,126,179,46,71,94,153,136,114,126,163,21,56,18,228,252,231,142,121,149,72, +39,241,76,247,247,206,15,165,0,66,39,144,31,245,108,71,112,190,73,201,239,140,64,121,207,60,246,234,51,74,46,152,245,141,148,250,230,49,220,142,190,64,193,245,206,71,4,224,12,230,113,231,228,227,39,216, +21,97,212,30,190,73,207,167,111,78,5,47,239,198,14,93,79,94,10,255,0,241,143,211,57,245,247,0,137,110,143,32,150,31,140,99,62,199,16,31,161,246,237,214,143,61,206,0,115,140,147,150,32,113,128,15,62,65, +255,0,245,117,199,121,188,217,71,89,230,200,31,116,18,8,235,156,15,47,169,207,39,240,238,105,60,217,115,243,207,114,123,169,15,32,24,236,14,87,28,128,122,125,121,160,8,140,207,158,10,159,162,196,115,215, +146,126,200,79,111,95,200,211,12,242,19,128,177,227,35,239,40,3,131,219,109,162,129,158,49,215,140,113,216,90,18,63,105,110,179,234,36,148,115,142,236,160,30,51,211,4,156,14,79,90,122,203,58,228,137,39, +32,158,166,89,201,233,211,135,83,233,199,233,211,0,21,119,54,7,16,100,231,156,142,189,184,54,192,100,122,145,216,99,61,227,102,126,112,32,198,238,238,84,31,111,150,215,130,50,0,200,197,95,51,203,146,12, +146,142,59,53,201,63,146,206,71,60,118,0,126,32,82,11,137,58,25,231,3,142,162,231,235,215,207,192,61,122,99,211,7,176,6,126,92,240,62,207,211,175,154,73,245,234,108,242,0,56,25,39,182,121,166,236,155, +146,69,176,4,231,253,110,14,72,255,0,106,223,144,48,125,179,219,21,164,102,113,255,0,47,15,245,31,105,7,0,119,204,224,158,188,100,224,126,39,12,251,79,36,125,166,108,241,159,154,111,126,65,123,161,215, +143,243,205,0,81,41,42,247,128,129,198,3,199,140,99,175,252,123,103,252,49,145,207,86,17,48,228,197,3,30,56,47,31,97,220,139,110,71,78,217,61,201,226,180,197,200,25,197,213,193,62,128,22,31,80,126,213, +159,254,191,233,27,92,49,63,44,147,147,219,247,108,120,207,125,183,103,191,183,52,1,152,26,65,193,183,136,231,39,153,20,99,175,172,28,116,250,82,110,63,197,12,10,59,102,68,80,79,30,144,175,56,238,57,7, +208,214,145,150,99,209,229,201,7,172,12,71,95,123,146,71,57,29,186,122,154,141,164,184,199,28,247,201,179,45,208,242,73,107,145,200,231,160,235,158,120,228,3,57,139,30,145,192,6,122,249,227,29,248,25, +78,253,57,250,116,201,49,29,252,159,42,44,130,57,243,129,233,207,67,1,94,152,236,122,113,205,104,153,46,59,236,60,156,255,0,161,228,254,7,207,108,116,192,61,48,115,140,140,83,124,203,174,222,81,28,112, +108,249,235,236,249,231,219,30,156,115,64,25,197,177,146,99,132,146,49,144,241,241,248,253,157,115,219,242,35,144,105,9,4,12,236,140,99,248,90,1,212,245,4,198,1,201,238,7,61,205,104,135,186,60,255,0,163, +99,57,255,0,143,67,156,240,7,59,200,252,185,231,189,52,201,115,221,227,82,7,240,217,231,63,95,222,100,228,30,113,249,208,6,97,42,6,124,220,251,9,109,71,94,157,99,207,235,235,144,122,3,114,231,2,69,94, +58,180,150,217,228,250,121,96,16,122,159,215,219,64,125,176,147,137,35,30,237,106,139,145,234,57,57,207,248,122,28,177,146,236,30,110,45,134,78,121,183,35,35,158,132,19,143,196,122,158,180,1,71,4,231, +247,232,1,232,67,193,211,161,224,47,60,250,156,113,212,114,105,4,14,126,111,180,198,73,28,28,219,2,48,50,121,57,207,97,198,8,60,116,235,119,202,184,99,205,229,153,234,48,109,215,39,183,36,134,227,35,175, +183,122,79,42,94,247,122,119,29,140,40,121,199,208,99,185,7,25,238,56,226,128,40,132,112,112,46,193,61,148,73,6,61,64,218,56,227,212,0,126,134,152,82,110,134,114,57,199,88,49,220,245,220,128,119,250,159, +194,180,10,77,146,86,238,193,122,245,82,159,200,116,199,185,35,63,155,8,185,231,109,237,150,71,7,106,59,3,232,57,140,227,31,227,156,80,5,64,36,24,2,225,184,193,32,181,185,235,158,153,152,113,212,244,199, +66,7,74,105,89,155,56,184,57,255,0,101,161,206,61,112,179,118,255,0,30,71,90,186,86,231,39,117,245,169,28,15,149,28,30,159,245,196,244,31,92,99,25,61,105,140,36,255,0,159,200,79,76,144,192,16,123,117, +178,57,4,241,140,142,63,34,1,79,203,147,175,158,196,245,25,104,185,61,56,196,222,255,0,215,175,20,252,74,185,11,135,199,241,23,35,190,123,57,199,79,79,169,199,53,35,25,179,129,117,1,227,187,33,29,57,235, +100,7,60,119,28,230,154,124,192,62,105,237,207,115,143,40,147,215,210,197,178,122,156,22,239,129,205,0,52,180,227,131,26,28,250,200,70,113,146,123,103,29,50,114,59,250,212,78,36,57,63,101,65,232,124,241, +245,39,5,79,190,115,233,244,169,124,226,164,226,88,78,79,63,34,3,147,129,218,196,30,231,147,142,120,206,8,160,204,9,39,48,176,234,72,136,19,156,255,0,215,159,60,118,60,99,219,160,4,42,100,11,255,0,30, +192,140,244,243,35,99,239,210,46,61,135,126,212,132,182,8,54,72,222,187,146,54,200,252,34,83,158,71,63,254,186,152,78,6,14,229,81,233,228,140,115,211,37,173,0,0,243,211,147,158,41,62,213,25,224,186,224, +131,200,72,129,246,251,246,185,60,254,24,200,160,8,48,160,128,108,208,12,228,226,52,28,156,12,3,180,119,227,130,123,243,214,152,226,60,227,236,225,1,234,54,2,120,244,253,211,17,233,233,236,123,78,39,181, +56,203,3,244,138,30,79,61,127,209,215,211,212,247,231,138,67,61,136,60,228,245,233,20,28,231,140,228,168,207,56,198,115,223,130,1,20,1,80,52,121,63,186,252,203,160,244,249,130,70,185,227,160,24,199,191, +57,11,160,233,24,25,207,33,174,14,79,66,62,184,7,63,143,115,197,193,115,97,201,199,182,62,207,3,99,167,82,25,122,28,113,199,61,64,167,27,141,56,158,85,125,6,32,143,158,253,165,246,245,232,57,233,64,25, +165,219,7,8,113,199,105,72,29,123,145,199,95,65,207,79,90,105,119,232,16,142,188,226,83,211,219,112,28,245,224,244,7,233,90,191,107,211,199,72,148,251,152,128,231,60,240,39,4,251,142,185,207,32,80,215, +22,13,128,45,151,156,114,17,151,143,251,250,122,15,124,30,254,148,1,144,94,65,220,142,7,72,164,234,79,253,117,237,143,199,215,34,135,150,76,125,242,220,113,147,42,146,70,7,252,246,192,244,224,116,206, +71,122,212,243,52,242,120,180,76,31,246,73,199,226,73,227,36,231,25,29,50,71,20,19,100,7,203,109,27,122,13,164,114,79,66,55,15,167,0,143,65,130,77,0,99,6,152,142,7,215,18,204,64,206,127,187,112,153,236, +57,3,191,39,138,66,215,36,241,183,29,57,146,224,228,14,58,139,161,245,193,7,184,173,188,90,48,192,180,10,122,224,43,244,245,225,186,119,36,15,195,213,190,92,36,144,182,241,12,103,25,142,98,125,186,18, +115,131,207,57,235,142,58,0,99,147,54,112,76,89,244,18,76,72,35,29,204,252,30,156,115,142,221,69,56,71,112,217,202,68,56,227,231,39,29,125,100,28,145,142,14,61,51,222,181,54,42,240,34,183,81,192,27,161, +155,7,158,156,242,7,92,228,224,250,119,167,24,114,48,34,183,198,56,43,4,128,140,99,190,9,98,115,211,57,60,208,6,80,73,51,247,98,198,127,137,226,76,99,156,252,207,237,208,247,246,167,24,207,241,71,110, +115,253,233,161,254,65,179,215,167,30,227,21,127,236,202,87,132,65,199,56,180,13,235,200,110,72,28,255,0,22,49,248,83,13,154,158,161,65,201,207,250,38,79,7,31,221,108,247,192,199,97,158,112,104,2,137, +129,8,229,45,71,184,54,228,156,156,247,113,211,0,119,61,77,48,67,111,159,245,112,12,245,249,237,128,250,30,15,29,1,57,250,244,171,166,209,1,225,240,58,255,0,199,146,241,159,98,138,78,50,122,3,199,97,210, +165,91,69,198,68,228,96,118,176,92,244,239,128,14,79,35,56,247,29,120,0,204,251,61,167,86,134,217,179,223,54,228,143,175,238,249,199,177,238,121,238,28,45,173,48,63,117,0,207,76,45,183,35,240,137,185, +239,200,233,158,135,53,122,75,88,249,205,196,131,174,127,208,128,245,3,131,47,35,156,14,57,246,21,19,90,66,216,6,240,231,208,218,16,120,231,167,153,219,24,207,78,63,48,10,162,11,101,60,68,128,0,114,81, +172,208,99,232,109,243,147,219,232,113,207,72,216,64,15,203,20,188,99,59,94,205,179,235,200,133,7,168,228,144,51,200,53,116,89,193,192,55,71,35,186,218,158,189,185,50,118,63,135,114,65,52,255,0,177,66, +216,83,114,72,29,196,1,114,120,207,30,97,57,235,206,8,234,125,40,3,49,229,129,63,229,132,185,233,203,218,228,125,119,2,51,233,129,235,211,140,198,102,140,131,251,137,49,216,230,208,156,115,221,118,156, +142,49,130,122,99,21,172,108,109,215,24,185,151,169,56,17,183,183,63,235,1,192,235,215,142,190,212,134,210,48,50,37,118,60,131,145,112,189,56,7,9,41,231,212,251,12,142,212,1,145,230,32,60,65,48,62,164, +192,61,6,64,12,115,223,160,199,29,48,105,119,14,138,179,158,152,196,209,254,95,113,135,62,227,156,224,115,205,107,8,20,12,110,126,14,9,6,108,114,127,218,144,158,195,63,135,185,165,16,198,114,12,132,30, +224,25,58,30,191,242,208,123,28,99,145,158,194,128,50,149,229,0,31,223,143,251,111,207,177,226,60,122,119,239,72,124,242,14,13,199,95,249,237,39,83,147,192,80,7,161,60,241,207,108,214,171,219,196,51,135, +206,122,101,229,25,252,60,211,142,123,85,111,33,1,32,41,57,244,154,97,216,231,140,57,35,215,147,144,120,199,90,0,162,126,209,140,6,159,176,249,167,152,113,239,128,196,113,192,227,211,61,205,71,155,207, +186,37,144,30,217,185,149,187,28,241,176,140,228,117,253,57,173,51,2,245,216,217,238,86,226,65,156,156,114,26,44,145,232,56,61,15,3,138,70,136,176,255,0,82,196,231,189,203,15,167,88,134,126,188,158,121, +239,144,12,237,151,132,159,222,191,3,167,159,47,108,28,231,200,39,175,81,250,122,167,145,124,121,251,70,58,140,121,211,54,48,78,51,182,212,254,35,63,202,174,53,184,224,52,18,142,191,118,237,198,79,64, +56,136,31,126,120,7,130,1,21,25,183,28,168,134,108,123,221,176,228,99,190,206,127,78,158,157,64,43,11,75,208,121,185,7,39,159,223,221,143,166,72,141,64,39,56,233,232,112,121,195,90,218,244,147,254,146, +71,174,46,174,249,29,250,167,36,243,233,142,51,86,62,202,163,27,97,108,227,169,190,126,70,120,192,49,254,131,35,61,142,57,70,181,207,72,216,224,238,255,0,143,183,3,243,11,192,231,39,140,253,40,2,139,90, +95,49,32,207,51,46,62,108,92,76,220,145,159,226,110,255,0,253,115,142,180,211,103,113,192,47,35,18,115,204,147,150,227,233,56,31,203,252,46,27,51,200,88,164,39,61,5,245,192,3,219,42,167,175,57,227,255, +0,173,11,89,178,240,208,74,15,108,95,79,159,196,24,199,29,198,72,228,119,233,64,21,205,172,224,18,124,206,120,200,150,81,211,35,36,53,192,29,7,61,249,35,167,37,13,172,221,2,205,201,207,18,72,73,29,51, +255,0,31,126,157,121,252,141,89,22,135,254,120,220,112,115,143,237,9,64,231,145,193,92,227,156,138,13,180,152,194,197,56,60,19,155,249,152,142,248,0,49,28,117,254,88,205,0,87,242,27,163,139,177,219,10, +242,30,125,143,219,57,199,82,8,3,0,230,154,96,235,242,222,237,236,9,153,189,58,129,126,61,72,57,199,65,219,53,96,219,202,188,152,174,193,29,214,234,114,61,142,90,80,71,126,184,198,120,237,76,49,75,209, +22,228,17,208,189,204,196,228,103,144,60,194,123,142,224,251,30,104,2,3,4,101,114,99,190,110,61,103,219,223,183,219,134,7,110,221,1,199,92,183,236,240,133,199,151,169,115,159,184,36,32,250,19,186,241, +176,71,175,95,214,165,43,115,206,68,160,255,0,215,203,174,73,224,28,134,7,245,110,120,224,0,42,22,23,56,194,180,248,30,146,187,250,250,30,61,185,233,232,120,32,17,155,72,14,236,38,172,62,176,179,15,126, +4,249,35,30,220,118,233,138,143,236,86,189,93,53,19,237,246,89,61,186,159,59,61,127,14,158,212,31,56,144,25,164,0,99,134,46,62,185,234,57,206,50,71,78,59,140,33,82,73,218,236,196,140,145,144,113,234,1, +96,185,252,56,39,191,34,128,20,218,217,30,54,234,95,133,164,192,129,146,56,38,227,25,233,199,126,163,169,38,7,178,178,57,220,53,17,129,159,248,247,126,125,114,62,210,121,3,220,99,147,129,138,121,82,120, +223,199,184,143,241,254,62,157,1,207,175,65,217,141,17,56,27,212,112,57,204,7,30,248,36,96,129,212,113,129,233,64,16,155,27,30,199,80,3,7,3,236,216,7,25,228,19,49,63,92,18,123,240,122,68,218,125,139,99, +38,252,158,79,54,228,14,227,170,201,140,253,113,201,231,138,157,173,75,117,116,60,250,217,142,158,236,228,158,184,235,211,223,164,109,104,153,249,100,136,119,39,117,160,237,220,153,7,62,253,62,188,96, +2,187,105,150,63,220,188,228,28,1,11,117,247,37,200,199,7,28,31,67,207,21,25,211,173,179,242,199,117,131,158,26,21,108,122,125,236,140,242,121,231,28,84,237,100,156,229,163,35,35,39,207,181,25,227,167, +222,252,249,56,244,39,172,109,105,110,15,27,179,215,11,113,101,249,15,222,100,140,15,127,166,114,40,2,35,166,193,200,49,93,183,28,3,103,27,123,19,247,71,24,7,159,155,29,135,113,17,211,32,80,72,142,76, +224,156,53,156,3,249,199,159,196,15,198,166,54,214,196,227,7,25,36,230,107,94,79,78,72,60,243,129,159,65,156,122,33,179,183,110,237,180,115,133,187,181,0,231,212,20,57,192,233,201,233,159,92,0,85,58,124, +71,63,184,147,35,214,11,81,211,24,224,196,79,248,122,2,9,17,62,154,185,251,184,192,239,29,168,234,123,98,35,250,12,19,142,58,213,131,99,111,207,250,222,188,255,0,165,90,159,66,121,216,51,193,207,31,173, +66,214,86,132,231,231,227,39,155,152,7,191,95,43,3,156,156,228,12,96,118,20,1,93,180,227,158,74,15,247,173,237,216,253,115,246,115,156,156,241,145,215,219,6,6,176,97,213,35,60,96,226,222,53,57,245,249, +109,73,207,242,24,205,89,107,75,85,60,40,35,215,207,129,186,113,158,23,56,238,56,30,252,98,162,49,217,0,114,131,142,9,243,87,230,35,175,221,0,99,0,117,253,40,2,163,233,236,79,250,146,70,59,219,161,233, +207,241,64,50,79,76,97,70,79,6,163,22,108,15,54,249,198,113,254,139,17,27,177,146,78,80,15,195,220,247,206,108,177,178,231,1,177,159,225,112,115,239,131,235,199,161,245,2,162,205,142,238,22,76,242,121, +228,115,238,49,239,245,199,113,212,2,35,110,220,110,181,35,142,171,111,18,228,17,143,238,128,127,167,124,158,106,35,10,142,13,187,128,57,193,75,113,207,126,185,207,3,235,214,172,191,217,56,0,55,161,221, +188,99,167,60,43,30,196,241,236,64,201,230,172,176,219,54,74,171,183,251,158,119,24,199,102,143,24,231,39,140,143,200,208,2,24,198,0,48,242,121,200,242,9,199,78,118,184,35,60,246,30,190,148,210,20,40, +59,14,112,127,229,156,109,249,15,63,29,56,29,57,207,28,10,77,150,106,57,142,112,123,2,78,7,175,30,88,110,253,142,72,252,42,22,22,228,17,229,203,207,99,187,28,245,254,15,175,63,254,186,0,119,152,122,249, +14,123,96,68,138,123,158,247,35,57,207,28,96,123,14,105,190,99,14,77,141,201,31,236,69,23,30,188,139,172,116,233,158,70,79,110,42,51,28,64,18,177,178,227,213,152,114,51,234,131,7,242,39,7,158,42,38,72, +200,193,19,2,64,201,12,132,19,199,25,40,72,235,207,81,142,7,60,80,5,141,249,235,97,119,198,121,100,78,252,114,77,223,111,168,230,152,210,160,225,172,165,3,212,197,9,238,59,153,216,119,245,245,206,42,185, +128,118,105,242,15,121,34,231,143,65,26,147,244,235,158,58,244,95,36,96,157,179,254,14,23,39,167,80,164,116,245,237,248,208,4,141,52,39,36,219,76,49,199,16,218,30,63,224,79,245,207,126,252,117,170,204, +240,19,243,91,92,127,192,173,45,27,61,241,196,202,59,251,159,232,173,106,167,157,147,17,140,227,237,46,79,174,126,225,3,215,31,214,171,189,162,110,200,142,228,244,200,243,51,249,126,237,78,6,49,146,114, +123,246,52,0,246,120,89,73,251,52,152,29,141,140,10,125,143,203,118,58,250,158,123,123,24,25,224,199,54,114,177,255,0,102,210,48,51,158,224,92,55,25,200,35,60,117,237,192,45,138,241,228,206,3,1,146,206, +78,49,158,223,48,207,78,8,227,29,169,90,216,48,33,90,83,158,128,111,96,49,223,1,148,254,135,39,144,7,6,128,34,43,110,220,253,138,224,117,206,219,116,3,35,184,31,104,237,156,158,115,239,214,163,48,91,145, +187,236,215,43,219,238,168,63,128,51,231,31,64,70,115,244,18,125,149,151,60,92,253,68,115,1,199,61,68,139,223,167,81,199,95,81,162,153,191,138,240,41,57,35,203,185,192,24,199,95,49,184,199,166,113,199, +165,0,87,120,160,4,100,202,189,240,203,26,244,255,0,122,227,29,61,113,156,156,129,76,22,240,103,253,100,159,128,182,193,235,215,253,36,250,247,199,57,207,39,21,109,96,152,114,191,104,98,120,201,75,222, +6,127,216,254,167,142,112,0,230,165,242,110,48,6,219,147,129,215,202,191,56,224,113,211,7,60,116,231,4,144,120,34,128,40,24,32,192,201,152,242,63,231,220,12,3,145,200,156,12,158,57,201,231,138,119,151, +0,31,242,212,145,217,158,17,199,176,91,158,51,212,99,223,140,158,110,52,87,35,37,100,186,78,248,41,120,7,92,244,96,123,122,103,175,35,156,210,132,188,92,31,180,93,123,226,9,206,63,23,66,56,245,94,191, +136,160,10,96,90,128,65,89,63,22,4,228,250,145,62,57,36,240,49,219,4,17,196,100,90,159,225,155,32,28,124,233,244,227,18,55,127,202,180,129,190,220,8,158,80,71,77,209,237,39,211,254,89,117,235,158,189, +57,235,82,111,189,7,155,169,7,29,118,179,0,50,56,207,144,0,250,103,241,24,160,12,205,150,196,112,183,28,156,127,120,115,244,97,146,121,250,254,20,224,177,167,43,29,206,48,15,49,70,71,228,224,169,7,63, +94,79,28,86,135,157,122,14,62,214,199,156,228,238,83,142,227,27,15,7,220,125,61,207,54,225,137,83,118,1,56,198,231,199,168,227,49,2,6,51,158,8,35,24,192,234,1,76,62,220,159,179,204,195,147,255,0,30,241, +30,79,56,194,169,39,245,56,236,56,194,25,193,60,89,206,112,7,11,106,156,30,56,25,65,131,158,255,0,133,104,131,114,0,111,181,67,215,25,50,32,30,152,193,183,199,60,224,28,230,141,247,0,159,244,200,129,245, +89,34,192,233,206,13,186,142,227,184,228,128,56,160,10,126,121,237,101,48,233,156,218,38,113,206,115,251,178,7,76,122,119,245,33,126,208,227,27,108,229,82,57,207,217,1,231,142,152,85,7,216,246,198,113, +215,22,76,179,231,6,245,75,28,28,153,98,31,128,92,40,233,207,183,29,121,194,249,174,50,77,242,113,221,100,128,243,142,159,119,56,60,145,130,121,200,239,64,20,222,107,150,225,45,231,7,29,237,14,49,236, +20,129,207,25,232,123,243,73,139,198,227,202,148,12,240,126,206,224,228,99,28,131,144,70,9,227,63,76,252,213,120,92,48,193,251,80,32,156,229,165,69,63,78,48,57,235,192,29,58,231,6,166,89,193,63,241,245, +22,122,144,46,84,30,221,8,145,49,192,62,231,208,244,160,10,73,13,233,24,10,195,56,7,116,45,156,115,211,60,28,231,161,253,14,105,124,139,188,159,155,191,57,129,122,231,156,243,215,235,208,245,171,134,112, +14,5,208,35,140,145,116,185,247,227,207,56,231,142,159,211,42,183,7,39,109,195,243,215,109,212,100,241,211,0,205,158,122,126,99,218,128,43,8,110,112,126,85,56,239,181,114,113,147,192,222,48,57,227,189, +30,76,217,57,84,29,8,44,48,6,51,158,146,122,125,6,127,75,130,105,115,242,220,74,61,133,196,96,156,231,175,239,248,201,246,230,131,119,113,156,121,183,71,158,72,184,76,126,56,155,60,103,208,30,72,244,160, +10,171,105,33,32,184,141,192,63,194,192,99,243,155,63,128,192,232,15,0,1,47,217,93,186,71,27,99,177,110,190,196,121,227,215,142,216,199,24,60,216,23,115,103,173,211,28,12,131,112,24,122,128,113,114,0, +246,250,131,199,90,122,220,204,73,253,220,195,129,144,210,22,57,60,99,30,107,241,223,25,60,118,237,64,16,125,153,198,6,200,148,3,211,122,14,121,232,94,126,188,117,250,230,158,182,236,73,6,40,137,224,252, +207,110,120,236,70,110,151,158,8,235,145,238,49,83,153,230,228,121,82,127,223,109,206,51,129,128,112,49,129,219,28,228,82,121,210,156,230,223,143,92,156,228,159,117,63,134,78,122,251,96,1,68,33,112,60, +168,135,214,91,92,113,219,254,62,189,186,100,241,250,76,168,252,124,144,253,68,182,192,156,99,3,139,130,114,9,32,96,142,7,61,49,80,25,166,232,45,92,130,127,132,41,199,167,68,198,122,99,28,253,49,79,12, +228,243,111,40,224,116,137,142,58,12,31,220,145,201,57,200,0,126,185,0,159,44,63,133,64,207,79,62,17,252,166,61,71,67,206,123,122,84,184,118,232,17,0,24,36,205,1,39,129,219,205,253,71,62,184,230,162,66, +72,249,160,114,163,175,238,192,31,142,45,216,243,211,56,169,210,24,31,4,219,254,27,121,250,113,96,72,233,250,116,197,0,57,21,179,159,147,140,127,203,120,65,247,232,231,30,156,129,158,112,56,169,0,193, +251,185,36,245,19,64,51,249,100,140,158,221,248,205,70,109,173,88,255,0,168,80,127,218,96,189,251,110,176,233,250,127,71,139,91,96,1,16,167,83,209,225,24,236,121,251,24,0,142,156,224,243,233,64,19,5,220, +15,238,226,35,175,250,232,75,99,175,25,137,189,137,7,57,247,201,37,76,65,184,104,23,29,15,239,99,80,63,5,135,240,245,61,6,41,159,101,181,198,118,160,61,121,154,220,241,216,255,0,199,168,192,255,0,56,206, +105,201,13,151,33,147,28,18,49,53,190,7,182,126,206,62,163,191,175,56,160,3,236,168,73,196,40,51,142,179,145,248,103,236,231,249,158,227,146,57,81,107,30,14,96,7,39,254,122,150,7,24,199,252,184,231,3, +56,228,246,61,121,196,139,29,136,60,12,96,246,184,137,125,15,104,7,39,140,242,56,232,106,95,38,196,240,92,40,56,36,25,225,35,29,136,38,47,240,3,156,159,64,10,127,97,183,110,182,131,234,3,31,207,26,113, +235,156,156,99,158,7,25,166,141,54,216,145,155,24,216,19,221,78,122,251,233,164,254,99,63,144,53,160,33,211,112,64,150,34,79,99,61,167,234,12,39,177,56,233,143,200,83,214,215,78,115,254,178,19,192,57, +243,108,143,60,113,204,67,159,199,175,20,1,155,253,157,106,48,69,140,24,28,237,49,147,238,58,233,216,227,4,251,1,129,154,85,176,181,24,221,167,218,21,233,157,141,159,192,45,136,193,227,35,128,64,239,207, +58,38,210,204,28,167,147,211,180,150,160,245,231,32,48,31,55,190,56,60,99,147,72,45,226,83,202,43,14,156,189,177,227,160,228,200,2,129,215,29,114,104,2,144,178,180,29,52,251,115,211,172,115,14,216,233, +246,28,116,239,235,207,28,84,191,100,181,219,255,0,30,150,139,142,223,103,155,183,191,216,242,58,247,39,29,234,224,130,14,235,183,29,137,183,60,250,125,243,244,231,29,57,165,48,66,78,112,159,82,240,228, +243,234,37,39,158,249,28,227,158,188,0,85,88,45,70,49,109,99,207,28,193,56,24,61,58,91,1,145,131,207,65,206,49,138,176,162,212,117,138,200,17,206,5,164,191,174,97,235,248,12,227,142,106,97,103,22,9,2, +30,122,110,150,46,128,117,4,205,142,254,156,251,240,41,126,196,112,1,54,228,112,120,185,129,70,56,227,153,215,7,145,212,243,192,238,104,2,63,50,212,231,17,217,169,24,199,250,43,247,192,244,83,198,79,61, +6,51,219,52,84,162,201,65,255,0,85,110,253,78,13,204,93,115,211,34,119,228,103,160,228,243,198,49,130,128,49,150,117,239,28,173,142,185,156,119,255,0,112,140,240,59,100,2,56,198,121,157,37,102,32,8,167, +25,231,135,157,128,39,185,37,251,143,66,126,157,106,156,112,12,255,0,174,191,80,79,56,137,143,25,233,157,164,142,15,76,113,211,167,53,117,34,136,114,243,234,71,166,72,67,131,199,76,152,250,245,245,235, +207,24,160,11,137,187,0,17,38,58,29,203,43,123,227,239,123,28,19,154,178,17,136,235,140,244,249,166,83,219,57,3,35,208,102,170,71,21,191,25,151,81,224,144,62,70,28,99,131,254,163,39,191,97,239,222,173, +167,150,8,253,245,254,51,252,105,212,99,24,57,140,115,142,152,199,76,244,232,1,50,161,3,135,101,60,17,135,151,156,99,3,136,73,246,201,35,30,135,57,169,213,101,63,197,33,24,200,195,92,142,64,255,0,102, +5,7,56,3,147,142,230,152,143,31,31,189,152,243,209,188,160,126,164,27,99,215,211,156,241,158,217,178,141,17,224,77,32,192,39,5,162,29,7,61,108,199,65,200,231,25,199,168,160,5,95,55,3,45,32,28,96,51,94, +227,142,115,196,64,103,211,208,14,245,54,210,195,129,147,198,64,107,242,120,192,29,99,42,58,117,247,237,205,56,28,159,150,124,140,122,219,243,215,35,152,16,253,64,207,53,97,84,145,146,217,198,57,205,176, +7,158,184,242,79,94,220,30,190,148,1,18,68,249,207,206,190,152,123,145,158,72,227,116,89,4,142,14,48,51,216,142,42,194,192,196,143,150,99,142,114,90,228,241,248,218,183,31,143,160,198,51,82,172,103,169, +4,100,127,7,144,115,216,130,69,184,244,255,0,245,84,201,16,43,133,141,253,57,207,61,121,56,136,46,62,135,159,169,56,0,104,182,147,28,130,57,254,33,49,228,99,25,38,207,61,198,113,158,167,147,205,75,246, +118,61,88,140,103,56,107,132,252,121,176,231,160,227,60,99,28,210,136,156,100,136,240,7,60,245,228,240,50,84,113,192,244,231,28,212,203,12,141,144,9,207,7,1,21,177,156,123,19,211,249,116,56,205,0,53,33, +152,17,180,177,192,28,25,164,199,94,255,0,241,47,56,245,192,201,247,226,172,162,220,30,55,30,132,1,231,76,7,225,139,14,156,114,56,254,84,197,183,148,19,195,125,124,172,103,167,183,175,57,198,71,212,84, +130,7,238,146,224,255,0,118,50,125,251,48,199,92,250,158,230,128,37,22,247,12,62,111,47,7,169,251,75,250,244,230,196,12,227,177,62,160,96,117,153,44,166,245,128,145,198,124,240,79,230,109,176,70,49,142, +57,227,161,205,71,28,13,142,22,232,158,51,136,216,145,248,25,87,215,183,231,83,44,78,127,229,158,160,78,123,71,32,3,140,147,184,72,79,94,61,0,231,61,128,5,149,177,156,99,46,131,183,250,213,233,198,120, +22,121,252,193,199,175,60,217,91,121,6,71,156,159,139,198,196,254,122,127,94,158,158,157,176,106,36,61,50,154,135,126,177,187,99,243,112,57,232,115,142,249,171,11,3,28,31,46,247,182,3,68,49,142,185,230, +110,57,252,189,179,200,4,226,222,99,207,153,8,28,100,111,76,241,223,157,63,131,215,235,197,61,96,102,56,47,27,16,114,197,103,143,57,234,15,22,64,243,142,70,79,233,81,125,154,78,201,48,83,219,200,143,158, +156,17,246,149,252,121,236,56,167,165,187,103,230,19,231,29,4,17,19,158,123,253,164,129,200,232,14,9,0,2,7,32,2,97,109,32,57,222,72,231,143,181,33,253,26,212,125,123,242,79,35,0,212,171,104,255,0,196, +79,66,115,246,148,231,167,80,176,175,110,220,115,235,205,49,109,241,252,55,108,49,206,35,85,24,3,142,86,110,61,64,236,56,25,193,53,58,66,163,63,187,186,198,56,7,104,238,59,27,161,218,128,20,89,129,129, +151,99,199,252,182,7,143,96,20,113,239,142,227,142,230,84,182,64,121,146,101,255,0,101,24,16,56,239,251,190,122,231,169,36,243,140,30,92,176,41,0,148,152,123,52,125,192,231,7,206,112,125,58,140,159,94, +41,126,206,8,5,68,131,235,26,241,208,112,124,206,152,239,220,99,189,0,74,34,81,128,178,221,126,4,54,71,29,15,217,220,126,3,167,83,236,211,27,30,18,75,179,159,108,242,122,231,22,103,143,254,191,34,148, +90,169,7,46,1,234,11,68,171,159,114,124,222,199,142,217,207,78,121,119,217,215,0,228,49,62,145,126,24,218,46,8,252,66,255,0,92,0,32,183,148,159,245,151,100,250,145,39,242,91,51,129,144,189,179,215,190, +49,32,183,126,1,150,227,145,156,17,113,207,227,246,64,7,183,94,115,143,74,111,146,59,146,56,29,98,148,117,255,0,117,155,31,159,94,252,240,229,140,2,14,249,0,62,130,98,51,233,204,108,1,60,1,158,253,56, +160,7,173,187,15,249,120,157,125,246,92,182,125,73,197,137,24,7,32,124,216,228,122,224,74,177,0,126,107,153,24,118,221,21,192,28,119,230,200,122,122,119,239,145,150,129,129,128,247,28,244,198,226,120, +233,255,0,44,56,199,111,95,90,20,191,252,245,156,250,238,140,55,29,121,30,71,191,60,142,121,224,208,4,162,56,122,155,134,60,245,17,205,130,79,167,250,17,192,207,29,56,236,49,75,229,199,145,251,226,57, +193,12,178,254,29,108,54,129,154,143,50,103,253,123,143,111,35,31,153,16,183,211,183,94,163,154,48,196,127,199,195,12,227,143,36,103,30,193,173,193,36,126,56,235,64,19,152,80,140,9,35,110,135,230,243, +71,161,237,97,215,176,236,121,234,51,144,64,171,214,72,192,250,184,92,143,115,104,184,28,115,130,15,24,239,80,236,199,38,225,184,39,254,93,215,32,231,7,254,88,113,208,30,49,200,192,28,83,113,30,79,250, +75,228,244,255,0,70,83,234,120,83,14,61,243,140,100,1,159,80,11,97,34,24,6,107,97,223,153,28,99,25,236,33,206,125,9,193,244,237,78,34,220,17,155,139,64,70,79,205,43,28,103,161,230,44,255,0,79,76,113,84, +254,78,215,18,255,0,224,36,61,126,134,213,178,79,243,63,141,61,10,119,185,147,131,159,248,245,132,15,175,48,142,122,118,233,156,158,57,0,179,182,220,240,46,108,241,140,113,112,1,62,128,228,47,174,14,64, +224,254,96,142,14,130,226,207,7,254,158,152,14,160,224,97,135,24,231,215,191,65,80,252,167,239,92,202,71,78,44,237,241,235,206,54,254,103,219,167,0,38,216,51,205,196,132,117,193,179,136,140,244,234,36, +63,94,49,212,208,5,157,150,253,4,182,217,238,69,219,48,233,238,249,239,216,31,76,230,154,18,60,228,75,30,1,233,230,202,87,24,246,147,145,128,125,249,200,207,104,68,118,248,56,149,143,3,31,232,104,63,147, +1,207,94,15,177,198,105,155,109,193,195,76,228,103,254,120,0,9,201,231,6,83,199,25,228,115,64,22,74,192,126,252,136,190,225,174,51,143,94,24,246,224,124,220,99,191,83,19,197,105,158,36,102,30,170,243, +140,240,79,119,25,24,199,78,252,115,81,131,109,207,239,72,60,145,136,98,82,7,24,36,153,129,252,51,244,193,160,75,109,211,206,144,99,31,117,98,246,3,57,184,206,56,207,99,223,7,25,160,5,217,104,15,89,79, +76,140,205,129,142,152,59,219,63,212,250,118,97,138,209,142,74,72,115,128,126,89,219,191,226,9,63,253,110,42,67,52,28,128,247,7,61,188,200,151,215,63,41,156,255,0,33,235,232,105,190,109,191,173,194,145, +235,58,55,110,114,22,99,233,158,188,123,156,154,0,65,111,106,113,133,152,255,0,186,142,51,212,227,4,174,48,113,192,237,193,61,41,198,218,1,158,46,71,92,31,37,136,3,240,155,167,248,15,165,6,91,98,48,26, +94,59,238,76,115,158,185,114,70,120,224,3,245,235,152,76,150,191,243,210,69,228,159,188,163,184,28,114,122,241,192,228,80,2,249,17,116,18,76,7,251,118,196,241,207,247,166,25,207,168,61,114,64,239,64,183, +67,192,148,129,129,140,217,70,191,251,115,159,175,166,42,49,60,67,129,43,143,164,136,61,184,249,177,215,211,212,142,156,83,77,204,96,225,167,152,147,158,147,32,92,228,140,227,206,28,125,57,235,199,168, +4,159,101,224,145,58,131,208,3,4,75,200,231,35,46,72,250,247,0,224,119,160,90,185,206,46,87,158,113,182,14,190,152,220,15,29,134,115,237,214,163,251,92,92,126,246,94,63,233,188,125,115,200,3,206,199,166, +72,3,146,48,121,160,94,14,113,53,208,199,31,36,209,227,158,127,231,177,97,156,103,143,110,61,64,30,109,102,224,125,165,112,59,149,131,140,3,215,15,207,92,245,35,29,241,212,251,44,167,165,222,79,108,172, +64,2,114,51,196,163,232,62,163,212,26,136,222,49,235,61,217,32,144,7,154,184,199,108,126,240,254,29,243,233,214,152,111,78,63,227,226,240,118,255,0,92,164,142,231,131,40,235,147,219,142,156,224,224,2, +70,177,185,24,43,126,163,160,56,17,100,3,211,129,114,73,199,63,161,192,168,158,206,224,242,111,156,143,66,141,142,71,79,150,228,253,120,253,123,31,108,98,188,93,92,159,64,206,163,241,226,227,158,9,231, +142,224,113,77,23,146,1,129,113,115,143,250,238,87,39,60,128,86,231,233,201,25,231,29,49,64,17,53,148,167,63,233,205,158,184,49,204,115,219,175,155,199,92,231,159,175,170,125,130,79,249,250,103,198,78, +68,115,31,124,143,222,244,192,227,31,95,173,145,122,236,63,215,220,144,59,11,182,63,95,249,120,7,220,224,156,228,113,197,6,228,140,147,52,227,32,243,189,216,158,167,189,207,177,231,61,207,122,0,170,108, +229,60,121,215,7,175,43,29,214,9,233,156,13,231,62,153,227,158,248,200,133,173,166,92,254,250,225,135,28,24,239,201,231,128,62,66,56,252,189,51,218,175,11,150,255,0,158,178,246,251,204,228,254,39,237, +3,158,190,188,99,214,154,103,44,127,215,63,99,198,15,35,24,206,235,131,212,250,15,233,64,25,239,111,49,28,52,231,3,145,228,106,188,251,144,15,231,210,163,242,46,7,0,78,72,236,32,213,128,252,112,192,250, +14,173,232,70,43,79,205,81,157,210,205,156,112,22,48,70,122,158,68,167,232,58,15,165,2,120,113,143,57,193,227,25,135,63,92,226,79,175,227,250,128,102,27,121,152,128,222,127,166,126,207,170,231,175,57, +221,184,15,195,245,7,20,195,4,217,0,189,200,25,235,228,106,158,217,235,7,62,189,127,92,138,214,51,198,20,230,92,158,132,125,156,3,235,201,50,183,79,112,49,211,175,70,249,241,140,97,227,207,60,11,120,115, +199,82,64,108,158,188,126,35,232,1,150,45,36,36,149,150,124,0,58,199,126,164,28,142,198,221,189,248,61,190,156,187,236,147,147,196,242,125,25,111,119,116,228,127,199,171,103,169,29,61,200,235,90,13,58, +31,227,140,103,56,38,218,32,79,92,117,148,12,227,183,211,241,137,166,0,224,203,24,231,57,251,52,25,228,117,201,184,83,253,121,52,1,84,65,40,193,50,76,217,231,159,182,145,142,157,5,160,61,112,51,145,207, +97,75,228,72,78,51,41,198,57,63,105,29,58,242,214,235,233,208,145,156,145,212,113,99,237,86,224,125,248,201,57,192,242,237,87,62,196,121,248,62,220,158,188,117,193,67,117,111,146,74,68,79,188,118,205, +219,61,86,224,100,117,236,122,240,115,64,16,52,18,19,130,242,99,60,16,210,28,117,61,226,28,12,117,62,220,103,138,67,108,114,51,45,200,198,78,67,112,127,3,22,122,242,125,184,206,6,42,192,188,128,12,44, +113,247,251,177,64,163,158,127,134,98,123,127,158,148,211,125,27,99,9,25,60,240,202,164,228,103,159,245,163,140,122,30,115,64,17,181,178,55,6,225,241,146,72,44,188,99,183,250,161,147,158,216,61,198,49, +64,178,143,35,109,212,131,29,129,92,12,245,231,98,241,237,159,95,193,30,238,62,15,151,19,28,128,56,92,2,56,39,153,250,145,146,190,131,145,211,20,134,236,17,133,130,44,1,215,124,67,249,59,113,248,131,215, +235,64,18,253,139,118,64,184,118,199,32,23,140,227,252,231,234,115,239,76,251,18,130,119,59,158,189,12,103,166,14,122,103,191,235,216,245,99,92,130,0,218,191,64,204,49,215,29,3,3,216,245,252,59,134,9, +212,28,109,80,9,206,1,98,123,255,0,211,19,248,31,76,113,147,64,14,54,112,100,110,45,206,63,134,60,254,96,241,248,241,216,158,13,52,216,219,183,66,222,156,149,247,32,96,110,31,92,245,231,138,67,112,184, +193,216,51,220,146,56,201,224,143,179,30,189,58,30,255,0,90,141,174,50,56,49,175,28,18,237,215,232,208,15,196,103,35,158,79,20,1,40,211,224,235,185,255,0,15,47,211,167,220,39,175,56,247,60,142,180,191, +217,176,146,127,214,144,50,122,47,31,142,206,58,14,135,143,124,213,127,180,100,0,103,65,207,240,204,65,233,200,0,69,131,206,15,67,140,158,121,6,141,192,231,23,15,216,255,0,199,204,96,12,14,249,140,117, +233,208,99,161,230,128,44,29,45,72,39,105,227,187,238,35,211,146,23,7,223,182,59,99,145,11,105,140,24,225,20,14,58,19,199,160,251,128,118,246,62,221,234,63,47,60,172,139,220,182,235,136,73,39,63,222,32, +142,249,199,165,56,6,29,103,140,117,200,23,80,143,111,225,4,228,125,9,61,121,61,0,3,167,184,207,202,48,50,64,243,20,103,39,220,12,125,125,143,94,51,25,181,32,243,25,97,198,2,201,156,116,7,36,71,129,147, +131,248,242,114,14,37,104,193,97,153,212,158,115,153,213,179,235,208,12,15,199,232,105,60,148,60,111,129,135,114,210,69,208,15,121,20,140,103,174,65,56,35,61,50,1,93,173,162,198,124,146,167,142,76,147, +100,128,49,255,0,44,226,111,167,225,199,179,62,204,6,2,164,131,216,73,112,50,121,231,152,71,202,62,135,158,125,170,241,134,44,99,125,159,66,56,120,51,215,29,230,247,231,60,142,57,52,193,107,15,105,173, +51,206,49,228,182,48,78,70,86,228,15,94,71,94,156,30,128,21,124,153,148,252,177,202,187,122,19,37,209,253,124,188,126,135,57,238,120,13,97,112,115,147,56,236,7,157,112,8,28,116,59,1,250,254,100,12,138, +208,16,66,48,124,203,83,206,57,72,207,30,227,237,12,71,83,158,59,224,116,167,155,88,72,28,218,96,227,164,99,158,252,141,252,113,156,245,234,113,138,0,200,34,126,207,63,161,204,247,99,167,184,35,169,28, +15,199,156,114,155,100,234,94,115,207,7,207,185,57,231,166,88,18,71,24,239,211,28,245,173,99,106,156,96,89,18,73,198,88,168,30,188,6,199,78,184,235,147,237,71,216,211,28,45,145,3,174,11,14,59,28,150,192, +31,78,228,15,74,0,202,253,239,221,15,116,72,24,192,146,232,99,216,16,0,3,240,28,247,28,210,159,180,119,251,127,29,7,153,116,195,241,33,64,252,113,192,227,61,107,72,216,131,206,109,193,224,130,55,28,1, +211,162,145,207,30,221,56,25,166,125,129,135,67,1,207,251,69,79,226,48,58,122,242,125,58,208,6,105,243,243,159,46,240,227,174,77,233,252,79,202,7,31,78,49,235,72,26,233,79,200,215,32,158,48,13,224,207, +0,255,0,19,15,95,108,116,250,223,107,52,3,147,30,115,212,76,254,158,192,115,211,45,147,145,199,61,67,126,204,191,194,100,39,56,253,220,243,41,201,36,117,12,15,39,234,15,31,90,0,172,69,230,50,126,211,223, +130,215,28,30,61,101,30,152,228,231,215,28,83,9,184,254,49,46,7,57,45,54,78,121,232,110,49,158,199,177,235,83,180,12,163,152,238,57,234,13,205,216,193,236,126,240,237,212,142,158,158,140,48,103,36,44, +225,186,228,94,92,30,121,206,11,238,192,199,78,79,114,123,146,1,1,7,239,50,76,79,56,56,114,122,231,254,126,50,58,28,240,114,125,241,81,146,1,25,89,122,243,133,199,56,231,239,92,145,192,207,80,63,30,149, +35,194,224,144,126,212,1,31,243,247,49,206,126,131,161,7,168,24,199,34,171,180,101,121,197,209,28,100,27,137,143,60,247,60,231,244,233,232,5,0,5,240,48,166,224,99,184,143,190,122,113,114,164,145,215,175, +31,141,66,100,39,32,155,190,56,251,170,191,144,55,227,25,255,0,116,0,56,250,57,242,15,221,185,61,242,179,92,254,120,80,114,70,123,142,255,0,90,129,153,70,70,203,194,123,127,164,95,46,61,71,37,71,183,3, +185,56,52,1,33,117,32,124,215,153,29,65,137,14,1,192,201,34,241,143,7,219,39,29,15,102,51,224,224,125,167,0,117,49,170,243,234,127,124,126,185,35,241,239,81,17,27,30,86,237,123,228,220,94,55,76,142,217, +231,159,124,250,113,203,76,64,125,217,174,7,29,12,151,135,175,210,60,119,206,9,199,182,65,160,9,55,30,9,150,229,114,56,3,202,237,193,207,206,253,9,235,215,175,110,106,57,36,85,60,203,116,0,28,28,65,142, +121,236,164,156,114,58,99,24,238,57,104,130,78,162,107,134,4,12,131,246,209,198,63,217,128,231,28,227,156,126,28,82,27,117,254,41,231,231,177,55,68,156,243,211,200,207,7,29,115,129,237,145,64,13,23,8, +79,51,93,31,64,171,1,39,24,249,127,212,18,14,15,92,241,244,230,154,110,163,192,196,151,217,39,160,49,14,163,0,231,200,199,32,244,235,198,64,206,13,41,180,94,72,184,185,252,18,227,4,96,243,147,106,57,227, +7,158,56,60,138,79,177,194,78,76,179,19,131,252,19,228,145,156,156,27,114,56,255,0,245,227,173,0,34,221,57,200,15,113,198,62,243,166,127,28,90,177,250,227,30,230,152,110,166,193,35,204,124,12,114,196, +254,127,232,44,56,231,56,233,233,82,125,138,51,192,150,225,65,36,146,85,200,28,255,0,215,28,227,140,1,128,126,166,154,108,96,207,252,126,202,50,58,24,73,28,250,230,32,79,231,192,207,25,205,0,48,94,72, +123,42,123,22,124,254,71,76,111,214,147,237,50,227,239,193,140,100,140,200,9,245,39,254,37,131,215,158,163,142,188,138,113,181,129,78,63,180,93,78,70,8,182,25,30,159,194,113,131,215,24,250,246,168,218, +24,211,145,169,150,201,32,150,179,221,156,140,116,42,51,211,63,211,32,80,0,215,78,112,55,192,51,158,4,174,51,158,191,242,224,188,12,142,120,235,223,156,68,247,51,96,3,34,126,4,55,63,248,9,245,31,150,123, +10,115,20,0,3,126,92,103,24,22,106,57,57,227,25,24,35,183,35,175,165,67,132,25,63,109,124,19,222,214,60,126,68,158,156,245,43,143,173,0,70,110,231,7,34,96,15,113,229,240,127,40,1,29,243,208,130,58,119, +164,251,101,217,233,58,142,223,119,24,233,216,198,0,29,127,207,37,219,148,124,162,244,253,62,201,8,239,220,140,158,120,32,243,129,143,108,41,200,201,23,142,199,158,76,113,247,61,135,4,118,227,24,254,128, +17,53,230,162,115,139,149,3,167,221,3,158,223,242,196,242,50,122,125,15,179,26,238,248,245,186,29,59,198,8,246,206,97,31,204,115,193,165,99,41,57,23,173,131,159,249,98,8,201,247,7,29,57,28,245,250,28, +180,155,131,210,245,137,193,56,49,62,65,234,112,67,129,244,3,143,115,130,40,2,38,190,187,56,6,229,128,233,145,26,174,78,71,170,14,15,7,57,244,247,168,154,234,229,178,126,217,33,24,251,128,67,131,207,112, +201,158,79,29,125,42,192,251,64,60,220,76,216,28,127,173,81,233,218,94,51,212,242,79,183,28,176,199,51,117,158,127,251,237,241,142,156,238,102,60,99,154,0,166,247,14,188,25,37,57,235,131,2,243,244,217, +192,238,120,63,142,121,175,246,160,122,200,192,115,242,147,109,220,241,200,65,156,125,220,113,239,147,90,134,7,3,151,148,231,28,249,132,103,241,36,147,142,61,187,230,144,219,72,122,239,198,50,9,154,64, +7,211,104,57,245,234,49,200,160,12,182,186,137,191,139,113,3,187,219,224,117,250,17,199,191,96,71,52,130,123,118,31,50,70,113,217,228,128,143,174,55,28,123,3,90,77,110,235,209,212,19,235,60,217,57,232, +56,35,175,57,7,31,206,169,73,111,38,73,50,3,156,129,254,144,193,73,224,31,226,7,183,169,62,184,160,10,140,214,92,147,20,39,215,13,106,115,158,217,98,167,57,232,121,0,85,118,26,113,225,160,135,56,233,190, +200,143,196,153,199,78,184,199,61,70,49,86,36,19,2,0,101,0,129,156,204,196,158,125,67,231,175,25,60,158,159,86,121,111,140,180,136,220,116,51,42,114,59,103,204,206,61,200,25,234,65,206,104,2,191,252,75, +185,81,109,108,126,173,102,7,226,124,240,7,160,60,247,60,14,140,217,167,158,150,176,3,200,56,154,215,7,161,239,112,61,186,3,86,72,227,130,160,255,0,215,212,103,129,211,239,62,49,199,191,29,128,56,168, +89,20,228,25,144,18,73,230,230,2,15,176,204,108,6,125,155,161,160,10,175,21,150,115,246,104,248,39,31,61,145,237,232,46,65,32,17,156,131,158,167,167,21,11,8,63,229,156,80,128,122,13,246,170,113,199,28, +223,96,231,30,157,253,8,204,172,132,103,19,71,142,191,235,45,253,243,216,14,195,160,30,227,154,130,66,6,65,153,14,122,124,246,184,228,127,187,147,233,208,115,147,159,80,4,61,182,199,30,8,207,250,219,44, +224,241,156,125,180,251,103,32,125,113,205,70,82,64,55,0,170,0,235,254,138,221,122,99,108,236,79,212,2,58,250,26,97,65,255,0,63,35,212,5,48,96,28,255,0,184,70,113,244,231,235,81,144,217,31,190,145,187, +48,6,219,56,30,167,203,228,96,145,140,96,113,206,77,0,60,180,196,124,179,145,236,169,109,142,253,127,120,123,159,192,99,142,245,25,123,145,210,226,81,207,36,249,0,113,244,115,233,239,236,70,5,72,160,40, +225,229,30,255,0,184,32,19,207,69,92,14,189,73,4,28,103,24,20,237,160,145,155,139,156,159,225,43,1,28,247,228,142,115,198,49,143,161,160,10,172,215,39,36,93,184,39,61,81,79,29,122,146,64,233,201,7,143, +64,79,53,218,75,194,78,111,220,115,156,249,72,71,79,94,135,234,61,123,244,171,238,10,227,109,196,195,176,255,0,80,164,122,253,217,179,223,156,245,199,60,245,174,230,66,9,23,119,67,159,239,67,130,62,134, +66,127,31,229,216,2,145,107,206,250,150,62,177,32,31,95,245,47,215,182,7,255,0,88,83,115,142,117,8,152,30,78,65,235,212,0,69,185,4,19,140,228,103,241,171,138,210,17,129,115,113,158,185,222,163,244,206, +57,246,61,56,206,121,165,15,56,56,251,101,226,158,120,5,118,254,121,61,199,174,120,28,240,13,0,84,204,192,141,215,176,103,62,145,158,58,255,0,29,174,113,156,12,19,215,30,180,140,228,100,27,203,97,142, +14,109,67,156,231,145,148,181,227,156,99,0,246,198,42,225,105,143,91,187,199,250,228,142,249,193,231,216,99,218,153,185,192,193,158,232,227,221,129,233,193,61,58,103,158,61,122,115,64,20,140,152,56,55, +150,192,156,117,182,101,24,227,156,24,19,57,206,121,39,175,65,73,144,64,38,238,197,177,207,205,110,70,61,120,91,102,234,58,131,207,211,53,123,205,29,238,174,151,0,116,113,144,7,166,88,147,223,160,231, +216,10,107,77,206,6,161,56,224,117,117,233,143,82,252,103,215,131,159,126,40,3,60,176,200,30,126,152,59,31,244,105,58,114,71,38,223,175,185,60,125,79,42,36,35,33,38,176,235,243,31,38,101,92,251,102,6, +0,227,183,39,142,51,87,76,204,191,118,254,70,250,206,156,244,235,134,56,245,199,94,184,246,112,158,94,15,158,205,216,145,51,49,235,158,129,73,227,173,0,83,18,183,252,246,211,185,233,152,174,135,215,36, +90,129,145,244,207,78,113,140,183,204,57,229,244,243,215,12,34,189,99,198,56,24,129,73,247,198,58,125,43,72,79,39,95,48,0,120,203,44,141,130,64,7,56,140,96,243,244,62,189,130,153,100,193,34,104,200,61, +127,119,48,250,119,81,199,78,62,185,227,144,12,225,48,81,204,150,120,207,107,75,195,129,199,247,215,174,123,103,30,226,129,117,30,64,243,45,155,217,109,111,84,156,103,25,216,140,121,200,35,183,173,104, +9,152,115,230,219,100,30,75,25,80,254,100,245,252,49,252,170,79,180,62,78,38,181,39,169,30,100,152,199,177,12,167,191,76,227,211,214,128,51,12,200,71,202,209,147,158,64,183,212,70,63,242,1,231,159,110, +189,198,65,111,152,228,253,229,199,167,145,169,247,233,255,0,44,73,238,121,231,175,32,230,182,5,196,227,37,102,182,57,207,2,89,79,233,230,30,63,2,79,74,95,180,92,142,119,192,120,236,102,63,206,78,195, +167,225,199,92,0,100,23,99,200,25,198,57,88,117,65,215,211,16,160,239,232,120,207,4,129,78,12,224,229,98,108,245,27,163,212,136,198,65,232,97,45,235,223,7,158,156,231,88,93,72,9,200,132,144,9,200,50,169, +193,235,198,230,35,31,160,244,25,165,23,78,79,250,168,72,198,57,19,158,188,19,242,149,35,128,122,241,245,233,64,25,97,166,25,204,75,142,58,219,95,54,7,124,102,49,142,58,117,193,244,237,50,187,103,2,54, +7,218,11,165,207,30,241,156,123,245,227,211,35,26,62,118,79,1,16,119,1,103,246,245,147,25,252,241,142,58,210,121,132,241,190,49,200,193,243,118,142,115,234,65,253,79,211,52,1,85,90,76,242,178,140,127, +211,9,113,158,113,130,98,25,237,158,221,42,82,147,48,24,89,58,242,76,44,7,227,251,189,223,204,117,239,83,121,142,6,56,97,193,255,0,94,163,25,60,96,22,35,39,233,238,59,138,67,51,175,0,17,255,0,109,151, +39,219,142,255,0,153,231,184,197,0,11,107,112,227,59,100,3,182,35,126,71,169,6,17,215,142,156,99,21,34,216,221,227,25,147,24,3,152,64,224,251,236,207,57,227,56,39,191,36,154,111,157,47,77,132,15,121,24, +158,221,213,79,95,78,42,100,154,94,6,95,24,237,35,140,114,123,109,3,39,185,62,199,29,13,0,2,198,92,140,239,206,14,48,135,35,56,238,23,175,183,35,242,167,253,154,117,224,121,160,119,198,70,71,211,56,252, +112,14,71,124,154,112,150,80,15,239,14,57,227,206,199,230,57,63,167,127,81,128,171,52,188,109,120,250,14,26,89,24,247,234,14,14,71,224,14,59,208,0,45,228,7,231,121,215,35,35,18,21,32,28,131,252,105,128, +122,100,231,28,226,165,88,48,9,51,94,156,242,10,204,199,0,245,4,7,126,123,254,56,193,164,19,207,142,101,182,227,168,86,27,186,125,79,31,128,207,226,41,69,228,224,243,45,176,29,112,196,147,249,42,115,131, +244,239,207,67,64,15,251,59,16,71,155,126,56,228,52,164,143,92,2,84,30,163,219,160,224,30,168,44,240,120,55,129,185,193,13,33,198,7,66,84,117,4,245,36,140,156,116,224,57,111,38,60,253,162,216,251,126, +251,24,247,34,49,131,219,167,244,204,162,242,67,214,123,62,57,198,110,51,223,158,35,56,62,167,245,56,205,0,65,246,86,200,220,247,3,161,195,52,252,142,163,63,186,198,113,215,3,158,184,192,165,104,8,0,135, +153,113,144,1,105,242,127,17,24,245,60,159,175,122,182,183,110,121,51,89,159,246,74,220,183,24,7,180,28,254,7,215,6,167,23,39,128,100,180,32,255,0,8,142,224,116,198,57,104,20,126,184,61,70,104,3,47,59, +113,153,101,239,213,238,143,94,189,142,62,191,158,105,203,44,128,229,37,115,129,144,54,220,103,61,122,144,9,239,156,243,215,174,50,117,13,211,131,242,253,148,231,177,46,57,238,0,242,200,239,234,7,67,129, +64,185,151,4,133,183,56,198,72,46,71,79,250,225,212,227,166,225,250,230,128,51,67,200,120,50,28,243,247,188,238,122,145,198,215,31,144,4,140,247,165,15,34,2,3,193,159,246,150,110,61,58,65,142,254,248, +250,10,211,91,153,207,240,219,0,59,109,28,99,185,204,61,59,116,199,225,75,231,79,193,242,224,110,79,160,35,223,30,64,28,115,211,130,7,6,128,50,252,233,112,62,107,17,158,135,202,115,206,70,119,19,0,30, +190,189,240,7,57,118,249,79,222,151,79,25,57,229,92,17,207,31,117,61,125,15,81,218,180,196,179,49,4,164,103,156,112,200,58,228,255,0,20,60,30,78,15,127,204,210,137,165,31,122,5,198,63,191,31,94,120,226, +12,15,175,63,214,128,41,44,210,99,2,107,76,113,140,121,152,250,101,190,164,115,159,214,156,38,112,71,239,173,20,142,251,176,127,241,229,227,241,231,220,85,227,33,56,196,68,31,85,42,125,248,43,110,61,241, +158,185,227,60,212,66,103,200,196,114,113,158,135,28,231,159,249,98,58,126,184,192,227,154,0,96,185,108,255,0,199,228,7,175,1,208,109,24,200,234,153,201,61,123,126,84,225,59,118,185,182,30,133,167,135, +167,184,242,78,15,7,142,184,224,117,200,156,203,47,252,241,148,227,24,44,224,231,167,253,50,29,176,115,223,142,41,190,108,249,192,143,111,78,8,147,35,175,79,244,102,4,116,200,29,184,250,128,49,100,126, +191,110,182,83,237,115,16,199,61,177,108,115,142,57,39,240,56,201,151,204,56,31,241,51,181,92,114,115,114,131,242,196,0,245,35,156,117,227,234,211,113,34,140,148,99,129,217,37,63,144,22,67,182,120,45, +140,211,150,227,57,253,220,185,199,240,197,63,230,49,98,112,121,245,192,24,237,205,0,74,178,99,25,214,162,193,237,246,128,113,219,254,120,12,122,231,249,140,83,188,200,255,0,232,46,6,58,109,185,0,112, +50,72,253,214,123,231,216,99,235,80,153,137,251,201,112,50,122,249,50,146,70,115,128,126,194,57,227,3,31,143,76,211,150,64,113,132,185,35,222,222,98,125,70,49,102,58,12,231,60,145,193,245,160,11,11,60, +24,227,82,144,231,183,218,65,231,183,5,84,28,241,200,246,235,69,66,24,156,241,54,49,143,248,243,184,62,167,35,48,47,108,228,118,252,49,69,0,115,169,109,42,255,0,203,107,28,115,198,99,236,122,15,244,108, +243,215,169,206,51,83,44,55,3,253,92,150,140,61,0,3,24,28,114,182,185,57,200,35,61,1,228,116,198,68,100,31,249,117,82,56,224,136,135,110,216,143,183,124,123,143,90,180,133,49,204,1,125,138,36,159,55,176, +17,231,255,0,173,143,90,0,212,69,191,233,186,215,182,15,155,180,128,58,128,77,176,192,198,115,145,223,175,165,164,23,160,231,22,141,143,91,181,231,234,4,3,60,130,112,63,165,100,46,222,8,0,115,206,219, +101,32,115,199,47,31,3,175,255,0,94,172,71,41,28,109,144,244,63,234,80,31,108,97,71,92,125,61,168,3,101,26,236,16,76,22,103,25,233,112,135,62,217,22,252,247,25,206,122,103,165,88,86,185,60,155,123,78, +135,3,205,4,243,244,183,250,14,51,234,58,86,56,102,57,34,55,39,145,202,39,126,192,22,29,7,208,114,126,130,194,135,3,229,128,231,60,112,131,61,15,64,248,245,7,161,61,243,197,0,106,171,93,140,109,181,181, +57,244,184,28,113,215,254,61,15,211,183,111,165,76,179,94,142,5,148,7,176,197,204,99,174,112,48,109,71,231,215,166,121,198,115,227,243,79,252,176,67,199,57,39,61,177,202,130,63,206,112,106,208,45,208, +196,23,156,19,231,21,193,224,253,211,25,0,142,0,25,237,197,0,90,19,223,128,65,179,183,193,245,189,140,16,15,251,177,47,108,156,241,235,145,198,101,23,23,132,0,109,34,29,126,237,236,68,228,158,120,227, +39,56,25,237,220,114,105,145,224,143,153,80,123,253,165,71,92,255,0,211,177,35,243,224,17,147,208,155,43,21,184,25,50,70,56,232,110,64,63,94,32,207,244,227,156,245,160,4,141,239,57,45,8,81,199,252,189, +196,58,119,33,79,124,1,216,103,146,42,202,188,195,0,198,7,191,218,163,57,25,24,193,4,231,35,29,254,167,52,192,150,128,127,174,66,51,208,220,47,29,58,31,44,19,239,199,167,32,116,122,11,113,209,163,60,224, +226,230,16,49,245,54,236,223,92,19,64,22,17,229,63,192,184,29,73,157,73,224,243,223,159,233,234,56,169,212,146,7,203,142,79,34,237,20,122,115,245,28,119,192,56,207,122,137,82,217,176,119,32,244,43,116, +190,131,191,216,200,232,121,199,57,245,206,76,226,43,46,239,22,227,223,204,87,63,173,144,60,140,243,207,168,60,208,3,213,91,185,32,96,156,11,213,25,247,231,175,174,65,60,14,153,6,164,84,35,169,108,30, +133,175,129,247,232,184,57,231,24,56,3,142,157,209,86,205,71,250,213,227,31,196,185,233,142,134,219,7,223,61,63,157,132,22,56,192,149,1,198,73,221,17,57,232,115,155,78,135,0,245,32,14,51,158,128,8,35, +7,163,168,28,117,186,147,63,145,56,39,57,25,250,241,142,42,117,135,104,31,188,86,29,63,227,229,137,28,14,184,39,56,28,126,88,231,138,64,150,153,207,218,163,24,199,223,104,9,231,215,253,25,113,253,61,6, +42,101,242,1,24,186,132,241,212,121,67,60,96,255,0,2,140,118,206,121,244,237,64,10,34,67,214,68,35,208,207,183,168,245,42,199,161,35,175,181,89,85,140,40,201,136,158,224,221,28,99,61,254,76,30,248,0,131, +212,28,224,83,84,68,58,72,167,182,85,96,111,112,64,221,156,115,215,140,103,147,82,42,195,187,45,51,103,140,31,42,219,0,100,255,0,180,64,61,251,115,201,4,115,64,10,169,25,237,24,250,221,70,59,245,25,183, +193,246,25,227,191,180,171,18,14,118,194,123,131,246,216,243,235,208,68,58,247,30,163,185,38,167,142,59,108,2,103,113,219,62,84,0,96,250,21,32,156,142,220,143,166,106,216,142,212,17,137,156,129,142,177, +68,71,191,89,6,15,60,227,56,233,129,220,2,158,213,192,1,19,30,243,35,140,30,248,17,15,79,211,138,153,76,67,57,0,113,211,247,95,78,72,80,122,247,198,123,14,249,188,177,68,115,182,66,59,113,12,24,252,127, +123,206,56,236,127,198,100,133,15,6,119,0,122,67,22,121,247,4,142,223,129,29,58,228,3,61,101,139,238,134,143,142,228,167,28,19,208,133,227,215,220,247,200,167,249,171,142,36,139,140,224,151,128,116,206, +120,98,9,30,216,254,166,180,197,188,120,25,185,185,245,249,98,136,12,115,215,230,92,116,239,248,83,252,171,117,235,53,222,65,200,38,56,186,115,211,19,116,233,211,29,58,122,0,101,44,167,129,148,56,7,7, +124,57,198,63,222,0,100,30,50,115,252,234,85,154,85,198,223,44,142,217,146,44,12,129,215,231,198,51,207,6,181,4,54,228,115,53,215,126,74,70,121,235,208,57,35,156,228,115,140,244,239,65,138,217,120,89, +238,135,186,192,191,207,99,31,169,193,228,119,238,1,155,246,171,162,112,4,68,243,193,104,59,228,231,253,103,175,242,239,128,12,130,230,247,63,118,49,207,95,50,12,142,227,141,235,215,211,36,158,221,205, +94,6,44,113,52,228,143,88,212,123,231,136,63,14,8,35,161,35,187,139,0,56,150,78,189,209,123,231,61,99,29,186,3,233,244,160,10,95,104,187,24,203,32,3,24,195,70,122,250,129,47,82,126,158,231,4,138,119,155, +120,199,130,48,112,113,186,16,56,39,169,243,57,245,57,206,49,211,158,44,137,20,100,52,211,5,0,19,242,174,57,233,142,71,83,219,20,25,35,28,137,156,19,216,42,254,60,228,240,125,250,103,167,114,1,14,237, +67,213,122,28,238,146,1,223,182,28,231,242,207,110,130,151,204,212,56,5,99,60,231,62,108,4,15,82,62,112,115,245,3,219,218,95,58,33,199,154,238,58,96,132,39,215,147,145,239,219,223,158,237,55,16,140,229, +148,96,28,230,37,238,79,28,242,115,156,224,158,254,180,0,162,91,190,164,115,200,225,237,242,70,122,1,184,156,30,158,189,254,179,44,215,132,1,181,199,28,97,225,207,227,130,58,118,200,199,231,205,95,180, +68,199,27,199,28,255,0,199,186,159,108,240,49,201,201,30,255,0,65,79,18,67,212,228,243,255,0,60,23,35,29,122,198,113,252,129,233,222,128,45,25,239,142,84,150,3,253,232,51,200,28,228,140,241,211,140,244, +199,173,52,11,151,63,51,74,79,125,175,15,24,224,14,83,24,207,83,219,235,154,173,231,196,78,21,156,15,83,18,5,239,199,48,245,235,206,57,239,140,12,174,236,224,140,227,211,201,131,57,199,98,16,103,158,185, +25,253,5,0,92,88,167,7,172,223,95,180,66,164,113,212,130,153,30,196,28,122,245,165,242,36,36,134,19,158,114,49,117,110,15,166,78,98,31,207,25,224,250,213,38,4,142,85,179,159,249,225,22,123,250,68,120, +237,237,239,158,19,7,3,17,177,245,253,202,19,245,255,0,143,124,118,250,123,118,160,11,254,83,142,134,225,71,253,127,219,15,167,43,24,231,142,191,204,128,64,55,41,198,249,179,199,252,196,34,4,113,198,48, +135,57,247,239,250,81,219,48,193,17,77,128,122,136,144,231,60,112,77,175,94,253,121,244,20,255,0,222,140,0,151,61,206,22,20,63,94,150,100,241,128,120,235,219,52,1,108,172,204,113,190,228,244,60,234,17, +125,115,200,29,207,183,215,138,67,28,249,31,61,193,39,214,250,31,82,122,100,103,142,59,231,25,198,50,5,50,210,156,130,151,68,147,208,198,1,207,227,109,156,103,147,193,237,212,117,112,141,201,195,91,222, +28,14,56,3,60,100,156,125,143,24,244,201,207,166,123,0,79,228,204,71,63,104,0,231,254,94,225,228,103,156,252,199,174,121,224,243,220,227,152,140,79,157,167,237,39,56,36,173,228,11,156,227,176,76,114,58, +96,131,234,15,90,140,176,81,131,105,117,156,145,202,161,61,79,95,244,112,125,186,174,123,17,216,3,113,207,216,175,25,79,83,177,64,250,12,199,131,208,2,112,122,117,7,160,3,196,78,50,66,221,241,200,38,238, +51,215,31,221,85,60,241,208,156,31,90,110,110,64,59,90,228,2,79,252,180,146,76,227,142,217,235,215,249,231,154,82,35,76,110,176,188,235,207,56,228,117,56,85,3,28,103,191,225,70,248,7,63,100,186,83,200, +31,41,99,193,199,39,120,247,234,57,233,198,78,0,25,230,221,40,192,107,145,255,0,0,148,143,192,0,0,198,123,122,116,52,27,139,240,50,169,112,220,103,136,110,15,235,183,140,142,120,7,24,57,171,2,104,15,63, +103,188,24,24,249,98,99,248,2,100,7,31,227,199,74,60,203,124,228,199,119,142,62,253,191,175,78,68,192,159,78,40,2,151,218,181,35,255,0,44,38,111,95,244,121,216,129,215,248,144,244,250,247,207,209,191, +105,190,39,152,36,200,28,102,23,7,160,61,60,163,223,191,110,61,234,225,146,211,166,201,114,78,114,96,35,233,214,127,111,78,15,122,104,123,64,79,223,24,31,243,204,15,83,198,36,39,25,247,60,114,40,2,153, +186,191,60,8,165,31,72,156,17,207,167,217,201,233,245,28,117,25,20,121,250,139,112,171,50,129,235,20,152,35,191,6,1,156,243,198,7,110,245,120,77,108,58,51,12,14,165,0,35,177,224,72,56,3,28,144,121,63, +133,33,158,34,72,14,192,1,128,66,168,231,159,246,142,113,208,243,193,237,232,1,64,201,168,30,166,97,199,79,34,99,223,253,148,0,123,119,235,131,146,65,95,54,251,187,92,12,115,129,109,54,61,199,42,120,252, +189,121,61,45,121,195,4,153,66,255,0,188,136,79,28,96,146,56,239,248,19,248,176,220,174,112,179,68,126,145,198,127,28,20,39,25,235,143,168,237,64,21,204,151,184,206,249,142,120,230,22,95,174,75,71,140, +227,160,7,165,68,198,232,240,4,164,244,230,53,233,208,96,133,235,199,78,163,142,115,86,76,185,228,76,157,59,36,64,103,25,56,204,7,156,231,140,241,212,115,205,70,238,237,201,104,152,227,130,22,31,83,158, +176,156,227,190,58,100,103,61,40,2,12,93,17,247,37,231,175,9,159,92,124,203,252,129,31,149,40,142,110,75,44,252,158,131,201,218,59,30,145,18,71,230,61,56,28,161,119,31,195,19,28,127,211,53,253,69,187, +127,143,61,105,132,203,201,17,197,211,180,168,15,115,158,109,135,110,127,46,115,197,0,15,111,41,232,151,4,113,194,136,207,227,254,164,158,63,14,252,246,166,11,57,24,242,151,28,30,134,62,131,142,0,17,143, +196,241,223,167,101,34,67,156,193,31,28,159,153,72,30,135,253,72,24,60,140,246,168,155,120,255,0,150,17,99,159,238,146,71,211,103,124,116,231,3,60,131,197,0,74,108,216,12,180,119,0,3,255,0,60,200,206, +51,220,41,61,113,199,57,7,7,178,212,66,212,110,36,65,116,221,121,41,38,61,192,221,11,1,201,252,122,244,224,71,177,136,201,183,136,122,98,34,79,175,100,92,254,71,142,185,166,152,243,157,201,31,28,149,17, +48,35,0,117,249,123,116,224,15,202,128,44,125,151,45,255,0,30,242,19,215,231,4,17,142,185,196,43,236,120,28,231,60,83,13,137,63,242,235,33,5,178,24,22,99,249,178,100,115,220,30,123,140,213,127,36,19,254, +172,142,56,2,11,134,24,29,58,16,49,158,78,23,4,243,223,33,202,136,7,220,94,59,125,150,224,158,221,203,130,8,235,212,251,117,160,9,69,131,143,187,107,113,215,166,211,129,211,32,113,199,99,147,223,61,133, +56,216,178,129,152,39,94,160,141,153,245,227,36,131,223,35,169,30,163,28,197,136,191,138,51,184,103,147,4,227,232,57,207,78,224,30,252,244,20,5,182,56,27,16,158,73,204,115,129,250,241,211,156,100,1,216, +208,3,197,174,1,2,9,206,120,228,63,94,50,120,126,188,103,24,20,223,177,18,79,238,37,1,135,247,102,35,215,36,171,30,158,164,103,223,169,161,133,152,192,37,84,158,155,109,221,186,246,7,63,78,115,219,158, +217,64,176,143,186,87,212,226,7,92,140,243,157,195,167,92,245,228,227,38,128,29,246,50,191,242,197,189,243,28,167,175,115,188,146,9,232,78,7,34,162,107,86,36,238,133,72,247,19,142,73,39,178,17,215,174, +9,7,0,142,148,242,35,36,29,168,220,112,60,178,72,250,2,163,242,218,70,63,70,238,69,232,85,65,236,86,47,208,55,111,192,254,61,40,1,134,220,174,127,115,23,174,78,253,222,223,122,60,228,140,117,246,234,114, +106,7,137,137,225,19,62,138,15,95,161,137,129,199,190,113,208,158,120,181,230,70,121,253,211,14,188,199,3,116,61,73,198,59,103,29,200,7,158,5,47,155,24,83,197,191,227,21,167,234,74,183,61,243,158,156, +119,160,12,255,0,46,97,209,99,199,114,201,8,207,191,250,140,246,199,28,140,18,78,14,1,243,224,135,91,115,200,238,131,211,156,125,145,191,50,42,233,146,38,7,41,24,231,63,118,199,143,205,0,199,61,242,122, +244,166,230,37,206,22,50,114,57,242,236,73,224,127,178,233,199,110,112,113,249,80,5,83,140,18,162,12,142,184,120,155,39,56,255,0,159,28,243,199,76,240,50,121,206,80,164,204,219,64,182,30,192,68,113,142, +249,251,9,236,123,129,140,142,121,25,178,93,78,54,44,96,28,130,124,187,32,51,220,140,187,115,248,227,215,28,18,158,99,142,23,203,227,56,196,118,61,250,131,135,235,245,61,197,0,87,16,202,167,45,246,92, +116,28,91,160,3,57,60,181,144,28,125,122,126,128,7,56,38,211,142,192,217,147,200,60,3,246,108,228,123,159,78,249,196,226,82,58,162,19,147,210,11,86,35,142,251,92,112,48,121,25,235,244,164,51,131,212,40, +250,65,16,32,227,208,75,159,81,211,4,208,4,96,115,156,219,103,63,221,181,110,158,132,218,3,159,199,210,151,51,100,127,199,175,94,15,151,105,140,115,253,216,149,176,63,161,239,140,187,207,24,56,126,199, +129,10,17,249,43,246,235,219,24,231,210,154,102,155,57,14,160,31,88,164,95,126,10,74,78,126,131,7,158,244,1,32,89,179,156,217,18,71,25,242,1,24,232,112,160,49,227,156,112,121,61,250,187,100,131,150,251, +15,29,14,245,31,94,142,184,199,108,116,227,144,106,3,115,116,0,34,81,129,143,225,156,113,238,55,5,199,110,167,182,41,4,247,127,243,241,23,110,162,124,243,198,64,243,56,207,126,59,100,140,228,144,9,246, +158,203,106,79,112,28,159,203,247,189,61,128,7,208,211,74,204,51,133,179,227,28,25,220,100,103,156,17,49,29,199,28,113,199,78,144,180,247,224,227,237,49,1,140,240,110,48,115,159,118,206,59,100,241,219, +154,67,45,255,0,252,252,69,142,153,217,49,4,245,245,231,175,175,124,140,230,128,37,242,217,186,197,100,61,197,211,12,227,24,224,75,223,174,14,57,252,48,198,73,7,252,177,181,62,133,110,219,255,0,30,31, +105,36,126,31,95,74,140,203,126,114,13,204,67,161,63,185,185,31,145,82,7,211,145,154,65,61,234,231,23,81,54,15,64,183,32,224,117,234,71,60,156,115,192,206,113,216,2,109,147,129,254,162,18,167,176,186, +96,6,71,96,103,198,57,60,247,61,56,205,41,73,192,226,218,33,159,75,150,24,255,0,200,227,215,183,227,85,197,197,232,251,183,17,147,159,250,120,60,118,60,159,175,111,92,250,80,102,187,63,121,226,108,19, +157,201,118,220,47,94,137,142,115,143,95,211,32,18,21,185,24,253,196,99,156,113,117,252,89,246,148,156,243,223,156,251,10,113,55,56,230,2,72,227,63,107,64,7,126,50,91,182,6,15,115,232,114,43,137,78,112, +226,18,79,76,71,118,49,215,167,238,143,63,83,144,121,30,148,198,120,179,243,67,17,28,227,16,220,19,199,184,43,223,174,113,211,181,0,89,204,253,77,188,131,39,24,55,16,182,79,99,141,141,215,56,193,83,237, +223,9,190,232,99,101,171,145,238,240,30,253,126,107,109,199,29,206,79,189,86,47,8,235,108,156,231,164,23,158,227,140,100,246,252,61,79,120,217,173,191,138,213,91,216,199,122,50,64,207,64,126,189,125,7, +99,64,23,12,151,95,243,193,212,228,127,207,185,108,231,57,36,219,113,235,212,12,243,156,156,84,126,117,208,32,8,228,207,83,242,91,227,177,207,203,7,67,142,73,235,140,251,213,109,214,189,69,164,123,189, +2,222,134,29,59,243,199,215,223,216,209,254,140,71,205,102,63,224,45,116,188,127,223,7,223,61,250,119,201,160,11,30,125,235,127,203,38,233,193,48,219,156,116,255,0,167,51,233,193,207,175,78,41,173,45, +224,198,81,113,144,114,35,183,29,59,143,244,30,123,18,51,223,211,25,170,99,179,39,34,209,241,143,239,220,142,9,232,115,0,31,92,30,220,102,147,101,145,235,110,227,60,224,73,114,123,12,255,0,203,34,70,122, +116,30,188,28,208,5,131,113,112,14,12,100,156,231,143,179,32,60,240,112,214,56,206,79,175,83,235,80,189,196,153,249,163,3,129,156,205,108,71,126,223,98,3,39,57,25,227,167,160,195,85,108,151,238,67,55, +39,159,222,77,199,96,9,49,115,215,166,61,241,210,156,198,219,31,44,115,115,219,204,147,183,112,54,131,193,231,245,226,128,32,105,28,156,128,131,35,32,153,45,9,28,113,214,204,144,122,125,120,168,142,252, +125,228,63,239,125,143,158,221,126,198,59,227,3,185,3,57,197,89,43,106,220,52,114,131,211,135,35,212,245,97,207,110,248,28,112,115,73,178,204,159,153,101,29,122,203,31,64,48,63,132,247,246,238,72,3,154, +0,172,90,108,96,52,75,211,36,201,104,8,245,56,251,48,231,167,177,244,168,93,95,169,154,220,117,4,153,237,126,156,255,0,162,40,25,206,48,9,29,185,206,106,248,91,81,211,118,0,56,196,168,72,244,24,10,48, +125,137,250,129,158,27,155,66,49,153,88,250,121,152,235,207,100,233,211,57,56,61,115,156,26,0,207,49,59,252,190,117,182,63,139,19,218,244,192,231,139,112,51,199,60,244,31,90,97,183,81,247,174,33,3,61, +239,45,135,61,57,30,64,24,35,212,241,156,140,26,186,198,192,99,46,249,227,25,148,119,236,75,16,14,59,243,199,211,32,167,153,96,160,100,176,39,167,239,16,127,237,85,36,14,57,199,83,64,25,237,12,56,32,222, +64,56,207,205,115,104,195,142,64,198,20,146,120,224,96,243,211,129,136,90,211,118,118,221,90,1,147,200,154,208,12,117,207,223,31,204,228,231,29,171,69,141,153,39,14,163,60,12,191,7,159,250,232,121,7,211, +3,215,210,162,49,91,231,129,15,226,88,245,206,127,139,61,253,254,152,200,160,10,31,98,112,217,55,214,217,232,15,218,45,184,233,140,230,101,43,235,199,7,215,138,67,107,40,198,111,45,152,114,1,23,16,19, +142,59,9,198,1,233,242,158,220,100,213,163,109,110,199,131,14,15,7,14,195,25,57,62,164,243,248,122,240,113,77,107,88,151,148,158,37,61,127,227,231,103,92,240,127,118,199,57,24,24,200,227,39,160,160,10, +191,103,147,60,221,197,159,105,227,24,245,235,113,156,126,25,232,104,107,125,192,22,188,135,167,66,232,220,103,190,46,6,125,123,30,132,230,166,48,22,224,92,199,144,114,127,211,72,7,241,251,49,192,245, +249,130,241,131,215,21,27,216,158,119,206,158,153,251,98,176,207,110,90,1,199,94,6,121,237,129,64,21,140,49,175,6,104,8,246,72,201,253,110,121,245,231,35,129,200,52,214,138,19,255,0,45,48,123,20,69,35, +30,131,109,199,78,253,79,61,249,53,47,216,73,7,19,71,199,39,253,50,31,167,123,112,71,56,238,57,250,212,102,206,99,192,158,17,206,6,46,96,60,131,198,118,66,79,211,146,125,134,112,0,24,34,132,241,246,153, +48,9,198,34,67,130,56,60,27,142,49,158,127,35,77,104,148,253,217,230,35,218,37,3,60,142,166,99,233,140,131,138,26,210,76,99,237,22,228,143,239,78,15,232,96,199,63,76,84,95,100,117,251,211,91,19,223,19, +64,71,168,7,116,68,247,246,247,226,128,20,196,152,59,174,110,20,113,140,224,231,29,62,80,222,157,143,7,182,106,63,33,14,113,59,176,198,0,41,146,57,193,39,105,200,200,227,223,215,213,26,221,215,31,52,3, +254,218,217,231,61,185,49,175,36,228,117,199,29,186,84,77,25,94,75,199,206,50,126,209,101,201,0,244,218,192,145,199,126,254,244,0,230,183,67,140,200,220,122,68,248,235,234,79,110,231,184,252,48,195,103, +25,228,75,156,243,146,19,249,49,220,49,233,245,198,59,194,84,227,128,15,24,31,189,183,60,99,212,63,65,207,79,196,211,74,182,9,242,212,142,120,15,17,36,1,207,75,133,24,201,192,228,99,159,192,1,90,204,117, +18,140,99,146,21,7,215,39,120,29,127,207,21,15,216,201,24,251,76,189,186,73,2,140,159,247,88,159,94,57,25,235,77,103,117,224,68,157,184,218,172,79,226,47,79,184,228,119,35,154,141,165,147,28,194,128,14, +14,97,82,56,231,189,207,28,115,143,255,0,93,0,43,88,73,156,253,162,82,9,254,41,1,224,116,238,171,235,140,3,223,241,174,246,19,16,64,218,223,239,18,114,79,169,87,35,35,166,112,15,29,8,230,135,114,220,132, +137,135,92,8,211,31,67,254,148,184,192,29,201,206,121,227,147,14,230,32,143,33,0,244,88,226,199,61,7,55,135,56,227,158,63,192,2,54,211,238,20,240,19,242,44,7,114,115,201,253,9,237,211,164,77,103,117,142, +35,12,15,76,32,245,198,126,108,100,140,116,193,237,192,38,165,63,104,39,11,185,65,61,2,33,0,99,177,89,207,24,207,86,198,77,68,201,49,35,116,147,1,254,194,19,198,123,237,186,199,211,63,149,0,68,109,47, +1,193,140,15,64,81,27,24,29,135,67,143,97,249,212,102,222,244,116,76,231,28,139,104,184,39,166,115,1,29,57,62,188,224,158,181,41,134,76,229,124,238,123,181,187,146,125,191,227,227,190,51,215,142,106,39, +134,113,146,18,67,220,126,233,151,63,95,223,55,62,195,242,29,40,2,38,181,212,6,14,214,3,212,218,231,174,14,50,144,28,246,232,49,156,245,237,17,181,212,121,33,79,30,177,62,48,49,201,205,143,29,123,147, +254,14,49,74,121,104,167,198,51,196,72,71,94,167,116,157,127,207,214,48,140,120,217,112,123,133,88,65,233,255,0,125,250,115,216,228,246,52,0,134,215,84,228,8,212,142,49,251,139,147,198,79,165,142,51,199, +57,199,181,33,181,212,65,195,196,131,191,252,123,203,249,140,218,46,0,231,248,126,153,2,149,161,115,130,34,187,60,99,1,25,122,242,65,192,65,199,161,227,169,61,169,162,25,184,2,219,80,236,120,221,143,76, +253,230,233,235,219,166,7,52,0,191,102,187,25,102,59,64,224,5,183,151,242,221,246,80,7,7,28,17,210,155,229,206,78,51,39,57,31,50,74,189,240,63,229,216,15,207,223,32,156,154,147,201,124,18,98,212,65,234, +112,228,96,247,7,228,201,28,115,247,123,28,158,77,57,98,95,226,182,212,91,129,247,164,36,114,120,28,170,131,207,76,19,156,240,77,0,68,97,148,131,146,223,148,231,242,2,6,25,253,79,167,170,44,50,242,66, +202,216,238,177,207,140,240,120,221,110,58,123,115,238,106,114,176,140,143,177,221,48,236,94,80,15,95,114,7,167,248,82,124,131,238,218,74,128,142,191,104,137,72,231,158,167,128,63,78,162,128,35,242,167, +255,0,158,87,64,103,25,85,184,199,225,251,181,228,245,228,113,158,148,109,117,224,173,217,35,60,4,184,63,211,167,97,207,191,4,212,195,202,4,254,234,97,199,123,203,99,211,174,119,15,151,219,145,245,230, +156,4,60,227,57,207,87,186,182,95,99,156,57,39,24,227,63,145,7,144,8,67,30,127,117,119,220,18,98,185,201,62,132,171,168,201,3,7,129,129,156,83,25,192,227,203,187,24,29,124,187,158,79,124,49,144,103,177, +231,191,176,171,97,71,37,68,100,103,24,55,86,167,233,247,228,92,156,227,28,143,78,58,131,96,60,145,24,0,14,151,118,7,211,0,131,114,221,122,30,40,2,129,144,19,242,137,201,227,170,92,28,2,120,201,243,152, +103,174,123,14,252,98,130,242,227,33,39,57,234,60,185,136,30,231,50,140,14,156,129,193,247,171,226,52,63,197,8,13,216,220,216,28,250,1,135,56,233,207,168,61,42,65,4,124,133,54,231,61,140,182,100,103,0, +156,254,244,127,158,113,210,128,51,212,76,71,250,147,142,49,152,24,158,122,159,245,202,125,59,250,227,184,166,177,124,243,11,30,188,155,121,137,233,212,226,228,17,211,3,167,110,189,107,79,201,0,15,248, +243,0,245,34,107,34,195,24,255,0,166,164,250,147,142,220,119,205,33,5,78,49,110,71,167,159,104,14,70,122,126,243,60,113,208,15,122,0,207,5,192,192,143,29,249,182,187,57,29,179,182,244,28,254,35,61,113, +65,82,196,229,34,7,253,171,75,243,207,67,199,219,120,62,185,199,233,129,166,178,28,116,131,145,142,46,45,113,223,182,227,158,191,222,224,0,62,137,158,112,34,182,108,119,51,90,184,206,9,235,184,144,63, +253,89,160,12,239,37,192,249,97,179,111,115,111,124,0,231,191,250,94,58,30,121,244,226,153,228,78,115,251,155,30,153,31,232,247,196,250,247,185,32,3,142,152,250,115,138,216,81,33,25,242,109,79,28,130, +208,228,126,68,14,125,79,183,189,40,243,49,255,0,30,176,16,7,172,60,250,156,238,192,244,228,143,78,70,48,1,140,32,124,252,240,219,19,146,72,91,123,156,145,219,25,156,145,244,32,241,199,56,21,42,218,177, +193,251,52,125,142,69,181,200,207,211,47,143,108,231,29,235,80,179,169,202,219,219,244,238,241,129,248,140,224,224,158,189,187,30,105,68,243,12,31,178,91,16,120,7,124,67,215,169,15,223,240,7,35,142,69, +0,80,91,67,199,250,48,236,127,227,222,232,15,97,149,221,207,184,200,3,210,159,246,119,29,45,24,14,14,224,154,130,254,129,112,115,199,160,246,233,87,13,220,195,143,177,70,6,57,10,99,32,158,48,73,50,158, +158,195,219,142,104,91,131,147,155,39,57,7,56,48,55,233,184,246,29,123,119,227,168,5,85,130,94,158,68,195,233,21,217,57,224,224,150,140,227,232,56,254,178,8,102,24,249,37,231,254,153,92,129,201,199,57, +136,147,143,124,117,224,30,247,86,118,110,5,132,131,166,8,16,100,126,69,179,211,140,247,199,165,59,204,184,63,118,11,145,158,152,91,60,224,227,36,231,145,201,224,18,122,30,7,74,0,169,229,206,172,73,12, +163,167,6,228,31,199,16,48,232,56,206,122,231,0,212,158,105,78,11,202,156,116,221,113,130,15,115,254,141,158,122,117,61,63,57,132,147,140,134,183,186,24,57,31,36,7,223,177,192,233,156,14,56,227,189,41, +154,78,51,5,219,31,247,45,199,29,186,147,219,167,166,120,239,64,13,73,147,157,215,19,156,241,133,243,28,245,233,151,128,99,4,250,122,116,169,86,120,241,196,215,89,200,56,43,187,184,198,15,149,129,159, +76,30,253,57,166,137,29,134,68,23,128,100,140,102,213,78,51,254,210,131,142,255,0,152,21,32,145,192,31,37,246,127,222,180,199,254,60,6,59,123,117,233,64,14,23,81,143,189,117,50,251,121,96,145,143,98,163, +57,245,199,30,135,20,166,230,50,115,246,169,135,79,189,4,92,147,147,206,113,145,211,242,193,233,138,80,206,112,11,106,9,248,218,243,199,178,253,57,62,189,49,209,217,96,48,39,212,0,238,11,90,142,115,206, +120,199,60,142,131,169,52,1,15,218,162,255,0,159,215,92,2,48,214,214,239,147,239,243,122,250,142,163,160,169,5,220,36,147,246,224,120,232,214,150,227,25,233,146,139,144,51,232,106,81,44,139,247,110,47, +64,228,224,155,115,199,126,120,200,62,199,140,243,236,134,105,143,91,155,195,215,163,64,1,235,130,15,152,188,158,120,227,29,49,154,0,79,181,194,115,254,147,25,30,190,66,17,244,43,229,156,250,227,243,193, +163,237,54,219,177,246,136,207,113,155,56,206,115,207,56,139,185,244,35,233,208,83,148,177,251,198,244,158,48,119,33,207,224,183,42,59,231,208,241,197,75,216,241,121,199,96,128,255,0,227,205,117,216,158, +112,122,113,214,128,35,243,109,219,140,163,142,132,11,37,0,131,235,130,48,15,166,210,79,29,241,147,117,177,7,247,81,224,231,147,106,23,25,224,28,130,113,142,131,168,227,56,171,0,203,193,31,108,219,254, +226,12,247,57,38,240,19,128,113,215,232,79,66,121,133,114,55,222,175,240,128,99,83,158,189,191,180,16,28,119,251,221,243,235,64,20,217,237,215,32,199,30,15,28,219,56,28,240,59,158,252,30,59,99,218,151, +125,177,200,17,166,114,48,22,222,229,135,24,206,2,169,250,242,7,231,210,232,96,220,25,110,207,60,31,37,72,193,199,101,212,242,127,46,123,14,212,224,33,24,12,47,27,145,144,45,228,7,7,191,26,152,207,184, +3,175,183,20,1,67,54,96,100,196,57,236,109,239,115,201,237,136,136,250,17,244,199,90,95,244,102,224,68,164,31,72,175,151,0,241,143,245,88,237,219,25,207,56,173,31,244,97,159,221,222,242,127,231,148,167, +242,206,164,216,246,244,61,143,20,224,109,134,63,119,119,129,255,0,76,166,7,167,111,244,211,143,215,235,154,0,160,22,216,0,66,30,122,129,246,245,247,224,4,24,7,131,158,254,131,38,148,27,96,62,235,14,58, +159,181,182,78,72,39,38,61,217,233,223,128,113,211,53,116,155,99,144,22,245,65,231,230,130,124,126,7,237,153,61,15,183,78,120,169,20,66,6,68,151,0,243,144,96,144,159,175,205,120,65,199,99,249,208,6,118, +109,207,5,228,3,168,59,174,148,14,253,227,43,129,199,24,237,207,74,118,219,96,70,37,153,123,103,207,148,47,228,109,155,3,232,1,31,202,227,53,176,206,90,115,193,201,48,16,58,12,115,246,163,211,159,229, +200,164,18,91,183,83,39,225,19,1,207,3,165,200,250,147,131,219,235,64,21,115,111,143,150,105,88,244,1,102,147,169,206,64,31,101,228,140,117,200,29,120,245,42,216,48,28,97,201,224,112,234,253,59,255,0, +203,98,62,131,36,115,237,69,0,114,105,105,51,114,98,188,0,113,141,147,47,83,215,253,94,115,147,211,7,233,138,178,150,151,3,56,91,165,61,139,51,0,6,125,60,176,125,51,128,15,35,235,89,75,127,110,121,221, +23,168,57,39,29,50,0,108,240,123,140,30,184,232,113,86,86,238,212,127,28,71,161,206,213,35,169,224,115,199,81,206,14,120,233,220,3,69,109,102,57,201,184,246,199,152,122,247,63,47,62,152,198,71,108,146, +48,162,209,199,123,145,211,172,115,242,125,64,17,142,195,191,167,90,174,183,144,112,21,226,3,182,127,30,161,100,95,92,240,9,247,235,82,11,148,36,16,98,35,142,145,72,71,60,244,89,185,35,7,167,126,125,40, +2,220,86,174,49,242,220,30,58,136,239,7,110,78,2,129,215,156,125,61,205,93,72,93,78,4,119,44,49,147,149,186,228,241,219,7,0,245,235,130,15,64,107,56,73,156,115,7,95,249,231,34,159,108,255,0,164,2,56,198, +51,146,125,58,102,194,8,207,204,124,134,60,224,3,56,250,142,46,115,223,39,183,127,114,1,162,182,210,55,252,176,148,3,232,46,185,231,166,22,60,28,96,140,30,71,124,102,174,37,172,251,72,30,122,142,167,43, +116,123,103,31,234,24,12,115,156,250,240,51,89,106,177,156,96,38,71,77,178,220,140,246,228,27,131,145,142,57,7,216,246,171,10,24,14,16,231,167,250,249,65,207,166,13,193,244,199,221,235,239,64,23,197,180, +255,0,243,222,117,3,60,180,51,227,62,153,54,135,62,195,61,113,206,14,13,148,134,97,207,218,164,192,206,6,217,49,199,177,183,246,233,142,166,179,21,100,3,253,83,183,79,249,121,110,157,123,207,215,177,234, +127,50,42,96,174,79,48,191,61,63,122,206,115,235,159,52,245,252,58,254,20,1,174,130,78,1,184,147,60,99,17,246,35,60,131,108,59,254,67,30,153,171,40,93,71,50,76,121,237,16,193,61,250,219,15,97,232,79,65, +88,155,39,200,219,4,199,158,8,150,95,195,27,88,243,199,7,244,21,97,69,217,198,232,102,3,29,60,201,24,240,122,225,161,60,224,1,208,255,0,42,0,220,73,37,3,239,76,64,231,230,134,46,71,227,14,70,57,3,177, +231,25,3,137,196,141,129,128,123,142,99,139,156,113,211,201,199,249,62,156,99,40,184,24,6,25,122,228,150,115,144,122,227,152,115,207,78,199,35,130,8,56,153,101,156,28,8,28,246,32,59,183,227,242,192,71, +215,169,233,64,27,42,91,187,170,228,140,254,225,9,231,167,31,103,252,240,121,254,115,169,10,56,159,105,193,235,108,132,125,57,132,14,126,132,243,206,49,89,73,44,249,207,144,126,167,204,39,156,242,115, +104,57,233,128,126,156,213,129,44,152,225,20,100,131,147,25,3,159,251,117,60,250,131,239,158,69,0,94,222,164,97,164,71,207,253,58,194,9,207,108,237,24,247,31,145,60,26,177,25,132,96,136,161,98,120,201, +134,33,142,191,119,234,0,60,254,61,69,103,36,220,225,140,99,60,224,195,35,1,130,71,252,241,193,233,215,29,253,205,88,89,99,39,147,0,255,0,122,200,176,231,60,231,201,31,94,252,30,153,197,0,94,18,197,208, +67,15,36,245,137,49,235,198,215,3,215,128,127,50,41,224,219,183,38,222,2,72,199,40,23,216,18,5,208,25,252,126,181,85,100,143,128,102,179,3,183,252,75,137,238,127,216,95,200,156,116,224,244,18,172,246, +224,141,210,217,158,228,182,152,253,56,239,128,7,3,142,122,17,199,2,128,39,221,103,141,173,109,110,49,219,105,234,71,65,155,238,70,65,206,50,59,16,106,84,91,19,203,67,110,59,142,10,145,142,58,125,176, +231,156,117,35,28,156,156,10,136,93,90,158,178,216,177,60,109,93,60,228,241,211,253,96,199,98,6,125,61,169,62,215,106,204,6,235,96,6,121,22,103,183,214,118,108,231,57,4,125,125,128,46,134,177,31,242,198, +60,12,242,37,235,158,122,253,177,78,6,62,159,213,193,236,48,114,177,116,201,30,115,224,156,251,94,142,125,14,120,227,3,168,168,22,234,217,185,18,91,143,165,176,13,245,220,78,3,112,15,83,235,211,21,47, +218,109,192,255,0,90,131,36,116,138,22,207,215,44,79,78,220,1,208,99,154,0,110,235,30,214,208,253,76,128,100,251,238,212,14,120,31,227,197,74,178,217,227,254,61,147,156,114,38,39,223,140,94,156,28,128, +123,115,142,152,205,52,79,16,231,206,94,135,159,42,221,177,156,100,1,159,175,76,143,97,83,137,161,192,33,203,127,187,111,0,235,158,216,99,211,232,71,78,153,20,0,11,155,65,129,229,38,220,0,71,152,88,131, +206,121,55,163,156,227,177,62,249,205,60,77,102,56,88,87,232,164,18,15,212,221,48,62,220,31,229,134,44,184,36,2,227,30,182,214,227,57,244,62,79,232,73,233,215,29,101,19,177,24,99,43,115,192,9,10,254,60, +67,142,7,166,79,78,120,160,5,51,219,40,220,177,34,243,142,132,251,118,155,28,19,142,163,233,147,79,23,8,196,97,50,59,124,132,116,238,63,120,223,128,206,69,34,207,33,7,17,202,49,239,22,79,227,246,81,130, +7,190,62,188,230,69,154,78,165,102,199,183,150,192,3,211,56,182,56,227,169,206,7,57,52,0,241,113,32,28,66,6,59,236,111,94,15,223,56,252,48,125,105,86,228,156,101,23,158,7,250,60,174,78,59,110,45,223,56, +198,59,99,234,229,153,248,0,92,55,110,35,56,206,59,17,108,114,57,239,237,142,212,166,121,243,196,119,131,7,180,110,127,28,249,8,7,78,63,150,115,144,7,25,79,93,157,177,197,160,3,61,177,146,71,174,120,35, +215,158,174,89,223,35,137,151,185,11,102,59,250,101,125,58,96,251,115,77,89,174,63,231,149,206,61,224,144,250,122,40,254,121,254,117,39,218,110,7,203,228,220,103,168,253,204,196,145,219,248,176,49,233, +198,49,232,40,1,193,203,127,29,218,158,70,86,209,8,227,183,205,131,193,244,35,250,211,183,17,201,146,244,246,226,218,17,211,29,0,147,219,61,9,239,210,154,46,110,178,0,130,99,158,133,163,156,0,79,184,113, +253,1,227,140,14,28,110,46,121,12,172,185,29,49,113,207,254,70,30,189,14,125,232,1,68,156,224,205,168,227,29,173,192,227,35,166,100,199,4,3,199,183,94,148,224,88,144,22,93,71,168,28,91,196,79,95,95,56, +158,126,135,158,158,209,25,102,198,76,32,246,230,39,35,28,246,50,246,245,39,35,28,98,158,38,151,140,195,26,145,255,0,76,159,61,61,174,87,174,125,143,3,232,64,38,40,57,37,181,48,113,201,251,60,0,113,245, +207,80,49,215,159,90,140,172,68,252,211,106,99,183,252,123,219,128,0,24,239,142,221,249,207,62,194,131,43,227,253,84,100,115,129,229,184,193,31,246,248,7,183,115,250,229,134,105,142,7,217,237,135,169, +101,82,70,14,72,249,175,79,110,59,122,224,26,0,82,99,3,34,93,68,129,145,150,138,209,51,215,28,224,147,206,125,125,186,211,60,213,4,144,215,157,7,37,45,216,12,159,64,152,231,169,61,78,59,244,50,137,36, +94,68,54,32,99,145,229,143,233,123,254,62,212,27,166,25,59,116,229,57,3,253,74,113,219,0,155,179,207,211,32,250,116,200,3,69,192,244,184,108,115,202,91,40,35,62,234,49,131,199,225,144,77,40,186,199,30, +89,57,231,12,246,160,158,253,10,31,175,76,243,245,20,159,106,13,146,30,199,57,28,136,225,237,211,173,201,35,160,62,135,145,199,90,97,156,30,11,88,245,199,11,8,29,243,214,227,4,253,57,250,227,20,0,243, +116,15,252,179,133,64,36,242,214,231,156,228,224,27,118,207,191,190,64,238,41,62,212,9,225,45,1,239,185,237,129,57,199,65,246,97,130,112,56,227,211,167,84,18,166,64,255,0,69,39,190,22,19,159,64,49,112, +15,95,76,126,61,105,198,68,35,119,250,56,193,29,227,95,110,215,67,30,189,178,104,0,19,146,70,229,180,81,211,253,100,35,28,227,31,45,185,235,159,79,92,230,144,220,199,209,69,137,61,72,99,23,191,36,136, +57,252,189,59,26,82,200,113,251,200,65,198,122,198,192,17,212,115,112,223,129,199,243,192,77,201,253,251,98,15,114,19,156,99,176,151,28,113,245,160,4,243,3,243,182,195,39,213,129,234,58,129,228,99,223, +250,116,166,147,147,141,182,25,224,112,171,158,253,49,109,207,83,145,223,29,14,5,60,8,152,255,0,172,183,31,68,78,63,1,38,120,233,207,255,0,173,127,118,15,250,216,113,208,124,160,14,188,117,115,233,249, +117,227,168,4,91,73,57,9,100,51,158,4,81,145,237,140,219,255,0,46,185,226,151,203,126,194,208,115,218,31,79,64,32,25,62,191,151,60,211,196,113,183,34,88,24,231,251,202,15,7,142,141,237,206,113,249,116, +83,8,235,254,142,114,7,71,147,39,158,114,71,29,125,51,140,245,236,64,34,49,200,120,221,9,228,140,11,105,51,235,140,139,114,120,233,158,125,113,140,154,66,146,47,25,3,211,22,179,1,192,237,152,20,103,167, +112,112,121,207,53,39,148,6,9,91,124,122,54,242,9,237,156,176,207,28,115,207,183,160,99,4,253,235,96,113,200,219,32,233,158,222,105,231,182,48,58,114,121,20,1,25,73,201,7,14,7,82,5,179,123,244,204,125, +121,232,79,78,1,57,164,219,32,201,59,243,215,13,106,217,227,166,15,149,212,114,61,8,238,123,153,3,36,11,86,237,201,124,115,159,73,243,223,140,227,216,250,184,185,238,182,160,31,67,32,35,184,235,55,57, +250,142,221,178,104,1,129,228,224,4,114,56,7,22,216,250,245,66,49,147,220,14,158,185,164,50,56,60,71,47,81,147,228,168,199,127,151,49,158,252,12,15,67,78,47,158,3,71,216,124,173,49,231,30,162,98,122,251, +115,208,250,210,110,113,156,74,56,237,186,228,99,31,240,63,94,63,144,205,0,55,237,82,12,29,178,131,207,37,8,198,121,35,43,31,94,188,19,143,79,121,4,238,123,204,61,128,147,249,1,248,227,28,125,122,215, +47,35,100,111,4,103,143,222,220,99,184,245,36,1,142,61,126,180,135,127,247,209,125,48,103,111,207,131,250,122,251,80,4,173,33,111,226,185,57,60,224,186,251,244,32,28,118,234,51,212,228,113,80,121,132, +103,230,159,29,65,103,108,142,156,2,16,156,116,7,166,123,251,180,171,103,62,118,9,227,229,251,71,228,114,113,206,79,27,115,142,148,44,108,63,229,232,245,198,55,76,14,115,236,254,220,250,228,80,3,188,215, +36,109,121,91,28,128,51,198,123,96,160,206,61,64,201,201,198,122,80,90,86,193,45,34,119,229,78,78,115,198,76,100,30,58,100,145,244,238,211,28,159,243,245,49,198,122,73,55,30,164,12,147,248,113,143,106, +67,17,56,13,121,56,56,35,35,206,39,29,51,144,24,142,15,66,51,156,30,244,0,49,155,156,74,253,127,136,0,113,239,251,177,207,79,198,162,63,105,99,254,181,250,250,145,245,206,216,248,237,146,78,79,110,77, +59,236,224,227,58,133,200,201,227,230,155,167,56,255,0,150,99,3,242,31,129,197,42,192,185,255,0,143,201,253,203,52,158,167,31,122,50,7,92,127,81,154,0,139,109,240,63,45,193,10,72,225,137,62,222,128,244, +244,0,140,14,148,255,0,46,253,177,254,144,15,224,221,56,36,156,227,166,48,64,235,207,160,169,182,40,24,251,84,132,247,249,241,143,197,182,158,14,59,243,211,189,48,66,164,127,199,229,192,245,253,235,144, +122,245,196,163,142,160,250,122,208,4,77,111,124,8,196,229,114,120,200,94,252,224,18,199,158,220,115,234,58,225,134,13,67,63,241,240,57,60,159,49,70,63,224,32,143,94,64,199,78,181,49,134,51,156,222,92, +18,57,249,110,138,227,156,14,76,248,250,12,241,244,228,24,81,145,246,139,142,249,63,106,82,14,120,193,13,112,220,250,228,112,126,153,32,17,139,91,230,206,110,16,228,143,227,228,99,190,124,192,72,62,155, +189,197,53,180,251,204,140,206,131,161,254,18,6,122,14,46,3,31,124,243,232,123,212,204,177,127,207,197,192,200,237,120,185,7,223,50,245,235,198,122,15,122,173,178,30,215,179,250,12,222,196,14,125,62,255, +0,31,175,248,128,41,178,185,7,45,60,71,129,198,10,30,135,254,158,183,117,192,228,227,60,227,57,202,173,180,221,65,136,244,24,25,201,193,244,251,86,9,238,15,7,62,192,210,230,49,156,92,72,79,163,106,81, +0,121,199,67,33,39,167,66,50,71,160,166,183,124,78,15,7,159,183,196,125,243,247,198,122,123,247,245,160,9,133,172,185,203,55,205,211,1,1,233,207,83,114,71,191,39,158,160,118,164,107,96,120,118,124,119, +33,80,30,188,244,185,224,122,228,117,32,1,129,197,70,231,254,94,71,208,222,198,71,110,51,231,116,61,251,130,56,199,90,129,163,14,72,55,8,59,228,223,71,142,135,60,45,207,0,251,140,243,211,212,2,241,183, +183,25,203,92,18,58,114,62,188,3,112,71,31,76,243,199,173,53,99,183,4,226,75,143,111,153,71,166,71,250,227,198,58,147,158,249,227,0,103,121,8,115,153,226,252,46,145,176,63,239,225,245,224,246,235,72,33, +10,9,73,226,250,137,148,254,28,72,15,96,70,78,120,199,20,1,169,229,219,131,214,227,56,206,75,39,0,116,56,50,17,198,0,250,228,123,83,95,201,81,192,159,35,176,16,28,143,94,84,251,231,191,21,150,80,247,185, +137,121,3,137,37,231,159,246,100,236,122,99,183,83,198,104,27,64,200,185,66,115,211,117,209,3,30,152,148,241,255,0,1,231,181,0,94,51,91,3,140,203,147,158,140,23,56,63,236,68,113,249,126,56,57,167,52,150, +216,0,25,115,206,54,79,130,113,254,200,183,110,61,115,84,3,240,1,150,35,215,144,111,51,200,244,243,135,95,110,120,246,2,152,121,254,46,79,24,11,118,192,227,167,89,241,244,200,24,231,183,64,11,76,201,193, +18,92,0,115,183,18,62,58,255,0,179,106,50,127,1,140,19,158,57,132,200,70,0,146,76,250,180,215,43,215,143,249,245,239,249,117,206,56,170,229,79,221,243,95,7,178,165,215,168,224,134,156,14,152,39,158,113, +244,5,6,71,62,100,192,103,178,204,51,211,168,55,56,239,250,159,106,0,152,249,133,190,89,6,72,39,151,185,99,159,94,45,185,244,201,28,143,78,77,5,110,200,194,152,72,237,147,57,200,199,113,246,82,62,184, +227,174,58,230,153,184,142,179,76,7,166,199,35,160,192,230,86,252,71,35,168,250,189,103,0,159,244,153,215,183,48,200,62,191,113,189,189,135,111,74,0,140,165,235,240,124,134,198,71,47,57,231,0,243,139, +66,71,175,35,167,191,88,76,87,42,114,99,183,114,79,56,91,131,223,159,249,115,64,120,25,192,227,216,213,163,116,7,91,169,112,113,252,19,116,39,30,167,131,244,28,115,71,159,9,235,41,110,71,7,206,28,127, +223,150,24,237,244,228,122,80,5,77,151,36,131,246,104,9,60,16,82,225,15,80,57,196,43,207,29,127,78,105,90,43,163,143,244,75,124,159,107,145,143,64,75,71,201,252,59,243,86,26,104,7,1,199,65,206,231,227, +57,231,155,76,231,175,112,56,28,211,11,219,184,229,201,62,155,142,61,112,113,7,92,142,217,7,249,0,87,49,93,15,249,117,136,12,127,114,118,92,159,127,47,142,156,103,29,186,145,72,82,224,96,52,22,228,103, +28,137,64,227,143,249,230,220,14,9,200,39,220,103,21,100,61,162,140,121,168,164,131,128,93,249,239,147,251,129,211,29,185,252,105,4,182,92,134,154,6,199,61,103,227,166,70,68,64,103,223,145,158,152,60, +80,5,111,42,76,243,5,184,239,193,108,123,99,49,14,125,189,122,10,141,162,96,121,182,132,142,195,112,66,123,227,62,73,206,58,117,3,191,184,190,38,176,35,239,219,227,156,128,102,110,126,130,3,207,39,131, +239,193,160,62,158,113,202,14,59,27,144,57,60,127,203,37,3,62,164,103,240,160,12,211,110,28,243,108,163,220,74,72,207,254,3,227,220,145,146,7,32,98,158,45,80,96,139,97,156,143,249,110,217,198,71,31,241, +237,219,215,159,199,28,223,102,180,206,21,16,253,94,232,117,207,251,96,96,244,28,1,215,57,193,196,123,109,207,240,70,167,131,157,242,55,226,51,32,57,30,135,62,249,160,10,94,67,171,101,109,144,158,1,63, +107,110,0,60,228,8,127,152,227,241,225,222,75,240,90,24,199,99,254,154,70,0,29,127,227,223,182,58,28,30,51,86,79,144,78,1,80,113,192,85,45,207,92,157,211,140,250,246,7,28,10,140,121,64,144,30,67,140,244, +140,156,122,244,188,24,245,63,79,198,128,34,49,40,35,136,193,231,25,191,140,16,122,224,177,131,60,103,250,113,74,99,64,79,49,143,99,169,70,132,14,188,15,179,3,130,123,103,233,233,82,252,132,253,233,51, +223,247,108,73,247,255,0,143,179,199,245,61,232,43,159,186,211,31,251,98,224,122,30,126,211,143,200,18,113,214,128,32,217,9,39,127,148,79,61,117,104,65,193,198,58,91,99,167,7,60,227,175,178,236,183,29, +18,19,193,31,242,24,181,239,245,181,62,253,199,126,106,93,185,24,38,224,55,35,229,140,129,250,220,100,245,235,207,99,142,148,211,25,239,37,214,61,2,49,60,99,176,159,29,187,158,159,136,160,8,252,184,115, +147,29,177,235,255,0,49,171,94,51,215,0,90,15,203,61,177,235,73,178,217,79,250,187,108,14,119,54,175,111,158,217,200,251,54,59,255,0,123,167,24,61,104,104,88,156,9,110,7,60,110,89,1,206,51,156,11,143, +175,174,7,126,9,166,121,13,208,75,112,79,57,194,74,122,103,145,137,24,123,231,252,128,5,45,17,7,100,118,196,114,11,29,94,35,143,95,187,23,82,61,142,61,15,21,14,97,4,229,45,50,70,127,228,41,25,200,199, +25,253,203,114,71,61,122,117,52,227,24,31,242,222,224,17,215,253,30,94,113,207,4,54,9,206,49,207,212,228,12,166,206,1,18,93,3,219,17,92,1,233,200,86,36,15,76,118,206,115,64,16,187,219,130,63,119,111,235, +242,234,113,113,199,168,180,32,103,184,237,142,217,170,198,88,193,249,98,136,142,122,234,89,61,243,247,109,112,125,198,59,116,199,21,116,171,19,254,182,231,56,7,253,92,234,15,95,86,25,250,231,142,123, +82,52,79,140,238,152,250,124,178,182,61,121,18,241,193,57,28,156,12,241,206,64,51,218,85,231,253,30,12,12,231,253,53,216,254,35,200,83,220,231,61,198,59,84,101,242,78,45,97,25,231,34,121,1,207,212,70, +15,126,120,199,62,248,171,167,204,4,225,229,244,24,142,94,15,215,237,3,36,231,63,78,220,18,88,210,79,206,37,185,56,234,12,18,227,56,201,199,250,64,207,76,129,216,116,25,160,12,230,243,48,64,141,1,246, +158,227,28,250,136,212,17,245,200,232,113,142,41,132,62,2,149,83,199,24,146,252,156,241,200,59,78,49,216,147,199,94,188,214,139,77,113,221,167,62,159,232,172,79,35,174,13,216,63,168,207,124,84,59,231, +39,131,55,39,31,241,233,33,31,165,231,29,251,117,252,50,1,64,164,128,158,88,100,240,3,222,231,161,56,230,53,36,125,91,211,61,57,140,134,10,75,49,35,175,50,221,243,143,83,130,189,143,95,124,122,86,143, +218,46,9,192,105,125,63,227,194,78,114,125,239,134,126,184,254,149,31,157,117,145,134,151,140,142,109,102,94,254,131,80,65,235,235,252,141,0,103,135,199,24,110,58,159,180,94,100,143,195,110,127,167,233, +72,206,141,149,111,52,123,11,139,172,112,123,126,243,31,158,122,117,237,90,5,231,193,220,102,61,14,126,205,55,62,153,198,169,207,60,145,158,190,157,4,5,220,18,55,48,56,63,242,194,81,245,25,254,210,111, +113,140,123,103,52,1,69,140,94,174,7,57,2,91,178,113,216,146,100,32,116,234,48,59,14,149,17,104,7,252,180,148,122,98,226,80,115,216,29,193,178,126,184,228,3,142,245,164,211,40,224,188,152,228,28,219,92, +28,231,220,94,55,229,192,39,233,77,243,226,110,12,164,244,251,209,78,163,30,184,251,75,31,111,94,166,128,51,11,70,57,18,204,125,190,210,217,199,124,254,228,131,147,215,250,231,34,35,42,128,65,89,220,228, +158,110,67,100,12,103,57,183,35,160,224,241,143,67,138,213,101,129,142,124,228,193,28,147,28,253,123,224,100,251,19,201,235,205,66,240,219,227,139,148,255,0,191,19,140,118,231,106,177,35,185,0,140,117, +199,56,160,12,247,185,64,63,212,220,103,212,79,30,51,219,230,251,46,15,56,235,211,143,83,85,218,243,177,183,152,240,120,55,74,8,199,168,251,57,207,183,36,14,122,99,53,167,229,192,50,77,226,171,115,156, +65,112,115,245,62,73,244,228,224,246,231,209,141,21,187,100,253,165,27,212,249,114,245,245,63,232,224,159,92,245,238,113,197,0,100,53,212,103,147,111,41,36,243,139,244,24,246,193,180,42,121,227,182,125, +61,107,188,209,131,147,4,171,158,65,251,76,71,61,120,200,178,57,250,103,184,39,140,145,174,99,182,25,204,208,147,238,147,2,6,58,229,162,3,244,192,25,207,38,171,186,192,50,21,224,193,235,149,124,158,49, +140,24,72,199,28,140,142,224,250,0,12,118,154,44,159,220,72,79,171,60,7,7,158,152,179,94,125,123,241,244,164,89,215,160,142,80,51,208,60,75,211,61,205,190,48,59,113,219,173,106,226,6,24,18,64,71,108,43, +145,255,0,164,196,127,158,213,93,162,137,190,236,214,224,1,156,24,198,114,112,113,147,110,189,122,250,116,250,208,5,38,145,72,225,27,142,114,124,183,35,241,22,163,35,175,29,123,99,166,107,153,64,96,76, +109,158,121,13,180,142,152,227,236,192,113,156,245,25,206,123,115,116,218,169,35,108,214,184,247,129,191,64,177,0,72,29,121,201,31,123,57,21,11,219,162,28,153,237,113,255,0,92,24,253,48,191,40,235,208, +245,30,216,160,10,230,69,57,56,117,227,140,59,28,114,113,144,32,25,252,58,123,211,75,231,172,152,0,14,49,33,198,49,140,147,16,228,246,28,253,1,169,74,42,147,137,173,143,175,238,156,99,223,1,177,199,25, +231,161,231,142,170,118,21,59,76,25,237,181,27,175,126,90,85,31,134,15,7,143,90,0,128,202,87,164,132,227,161,11,39,166,120,200,227,131,158,160,113,234,51,76,19,204,62,236,132,227,3,253,68,146,12,142,195, +8,114,63,32,7,114,48,106,66,174,57,223,16,3,208,241,215,3,33,102,56,30,157,186,227,52,166,89,113,143,53,72,199,103,32,0,56,238,73,228,99,191,39,214,128,34,91,187,133,254,37,246,197,156,195,240,236,49, +248,31,198,156,47,103,39,59,212,114,79,252,123,202,185,237,200,218,121,28,147,233,129,154,11,205,211,122,224,140,31,245,196,251,116,56,63,227,74,194,98,6,25,15,110,68,227,143,169,228,31,76,245,228,224, +246,0,112,189,155,159,157,72,7,161,73,65,232,56,193,136,158,184,235,233,233,140,35,94,30,172,208,169,227,4,249,227,167,3,36,128,63,28,103,173,40,107,128,48,88,176,246,107,142,253,129,14,15,82,49,128,64, +207,4,117,164,47,48,232,36,57,199,11,53,210,159,94,237,142,120,238,71,25,160,5,251,80,56,199,145,211,239,17,35,126,171,42,158,163,61,1,231,222,131,114,131,188,28,158,130,27,134,199,167,73,249,239,145, +211,160,206,115,75,231,92,128,64,138,228,129,145,196,247,135,240,35,126,79,30,156,115,208,244,167,137,238,115,254,166,114,72,255,0,158,183,189,71,65,128,127,145,239,248,208,4,98,230,47,250,103,207,117, +183,159,230,233,201,255,0,74,200,193,200,233,239,223,20,198,186,135,174,229,31,75,89,216,254,151,39,191,225,250,212,230,91,195,214,27,128,185,239,113,123,192,236,57,39,142,196,1,233,207,52,240,242,96, +111,130,224,251,11,155,175,199,130,160,242,0,60,14,131,63,64,10,203,117,7,0,150,4,30,191,98,184,239,223,253,120,199,226,122,96,14,5,31,106,182,28,153,101,224,246,180,117,35,159,250,236,223,135,126,121, +233,204,236,75,255,0,203,11,158,113,130,110,174,71,227,204,71,219,145,158,61,205,30,94,57,242,238,64,57,56,89,229,32,156,243,146,109,78,115,201,25,201,228,143,168,4,43,115,104,127,229,188,156,119,22,179, +243,156,103,254,90,99,142,221,15,177,228,80,46,109,115,197,196,227,142,15,217,103,227,158,70,3,28,251,131,199,7,158,149,96,67,191,4,173,222,48,9,2,121,129,252,197,159,111,92,99,165,74,34,24,0,125,164, +109,227,47,117,113,215,223,109,143,61,134,0,63,210,128,41,139,139,114,115,246,233,185,29,62,197,112,7,167,57,124,247,233,198,49,212,84,162,104,142,51,117,55,78,15,217,174,70,123,140,100,149,61,251,96, +243,206,106,198,198,83,242,180,216,227,172,243,19,207,80,75,217,174,125,121,35,3,31,130,178,255,0,122,71,4,14,127,126,255,0,161,22,100,227,142,163,208,230,128,43,249,176,31,149,174,165,206,65,32,219,200, +1,31,137,234,56,235,142,61,185,163,204,179,32,127,164,54,115,207,200,84,99,254,248,45,233,193,39,191,173,89,81,25,235,44,253,0,32,93,72,49,207,181,144,30,158,252,103,214,129,29,184,36,180,179,6,255,0, +175,201,143,80,63,187,100,71,35,209,178,59,208,4,33,236,201,0,79,237,203,50,241,201,25,13,25,7,215,140,96,242,115,83,170,217,17,133,186,68,231,60,188,96,156,244,228,199,158,49,207,32,123,119,45,99,18, +241,246,139,128,51,208,94,93,17,193,236,86,220,2,62,163,223,232,171,36,35,254,94,174,56,61,5,205,219,116,192,193,196,107,147,248,18,71,225,144,7,136,237,243,197,236,67,223,237,32,28,142,131,229,140,103, +25,207,31,165,47,148,163,133,188,129,135,81,254,150,131,244,43,147,248,143,196,210,121,240,144,49,113,48,35,140,27,171,232,199,166,73,221,215,60,115,236,78,70,105,254,100,123,126,107,137,207,60,227,81, +189,3,167,99,188,2,65,24,238,0,228,14,8,32,7,217,153,241,251,251,54,24,254,43,133,110,163,146,113,143,196,123,80,45,24,12,169,176,124,250,206,0,32,156,244,42,216,228,113,243,96,116,246,166,137,163,7,151, +156,251,139,251,230,198,71,174,245,7,175,4,14,135,173,56,73,27,244,107,188,103,140,95,93,228,114,6,114,102,28,116,29,136,206,69,0,39,217,164,207,63,97,81,147,210,100,61,125,222,35,254,125,70,105,235,108, +228,243,253,158,112,63,138,226,14,48,65,255,0,158,28,30,120,237,232,7,20,208,170,78,21,175,135,66,71,218,239,126,163,4,77,180,253,114,64,235,154,119,150,196,97,69,247,3,248,174,110,14,63,242,104,12,103, +25,232,79,231,64,15,251,53,206,1,139,251,52,1,142,126,211,17,56,206,115,159,44,122,123,14,152,227,154,95,38,244,240,63,179,207,210,104,142,113,233,132,250,243,156,228,113,211,52,139,28,195,161,185,25, +232,4,242,123,224,243,114,71,3,0,140,241,215,111,76,42,164,196,224,165,199,111,189,52,172,14,120,60,249,140,50,121,193,234,58,228,247,0,83,29,247,32,67,98,192,140,0,110,0,253,60,179,233,199,76,103,7,52, +169,21,238,70,235,107,62,184,226,224,19,142,57,255,0,84,217,39,211,175,126,113,201,228,203,207,250,60,164,0,48,124,217,135,111,64,79,28,140,240,57,247,56,160,91,190,50,214,243,142,156,121,243,55,61,125, +65,61,65,228,15,160,234,64,39,17,220,96,134,179,183,61,121,18,142,70,125,225,0,247,237,255,0,214,70,138,64,195,253,30,219,32,240,124,212,60,158,58,20,198,78,58,224,115,80,152,144,103,247,19,19,238,210, +147,245,192,153,122,119,3,175,126,244,208,171,143,245,19,2,15,96,231,158,122,131,112,123,241,143,167,166,104,2,125,146,156,230,40,135,36,99,116,44,15,176,249,1,236,61,207,67,154,118,220,115,181,71,174, +60,160,61,48,79,203,207,60,118,30,189,170,184,3,31,241,239,57,199,63,117,184,25,224,130,38,39,159,64,71,36,103,0,242,245,49,115,186,6,24,7,59,132,131,219,57,103,35,62,196,159,240,0,159,29,132,97,143,178, +198,79,62,164,204,189,49,198,7,63,157,32,200,235,20,202,14,50,66,130,91,142,79,55,7,167,29,189,56,168,193,132,255,0,203,185,198,79,252,244,4,127,223,44,192,159,235,223,6,148,53,183,70,182,114,51,217,229, +83,159,167,152,0,199,251,88,61,122,144,0,0,148,148,111,151,203,151,30,241,47,160,245,46,61,113,243,103,39,29,113,77,8,132,147,229,202,222,254,90,131,211,253,151,82,48,120,233,199,78,180,171,37,160,255, +0,151,91,131,130,114,119,49,31,142,235,140,241,232,58,14,126,146,137,44,207,2,214,227,145,215,4,245,193,235,246,130,125,189,58,138,0,139,17,175,13,111,41,29,6,80,129,248,98,224,116,227,183,57,226,147, +8,79,17,50,144,115,146,188,146,51,212,11,156,224,99,166,5,90,18,90,142,144,74,73,228,100,176,35,211,254,91,147,233,142,70,122,140,138,148,52,124,109,182,144,228,131,201,36,227,254,254,182,1,200,201,32, +227,28,119,160,10,136,19,251,188,250,236,36,100,115,200,55,36,99,39,61,51,147,214,166,1,125,48,115,216,17,158,167,159,244,159,126,164,231,60,122,129,97,72,255,0,159,54,99,254,251,14,51,142,129,129,236, +122,28,250,245,193,147,36,96,139,40,254,134,82,15,215,230,97,142,221,143,126,104,2,161,0,143,185,145,158,234,205,208,227,147,246,160,49,220,158,9,228,230,154,35,61,68,7,158,114,34,60,123,228,220,55,24, +250,255,0,58,209,46,74,130,44,162,244,193,148,19,156,103,212,147,199,78,57,201,230,163,27,176,127,208,144,30,14,124,195,142,51,216,238,28,242,58,130,121,160,10,69,71,252,242,4,244,193,183,7,39,166,51, +231,12,245,25,207,61,206,51,138,42,238,247,201,255,0,66,64,59,124,217,30,135,143,44,246,239,158,158,253,10,0,243,229,152,224,157,240,15,251,101,14,48,57,254,233,57,252,8,62,217,167,249,228,142,101,76, +12,96,44,80,16,123,99,144,56,30,163,30,252,131,85,126,208,160,156,92,56,227,28,249,224,28,227,167,238,24,247,193,25,36,227,214,172,37,201,227,19,134,231,128,90,243,167,60,113,102,115,219,182,49,208,158, +180,0,241,42,182,11,204,171,232,68,43,236,7,43,50,140,231,131,128,58,242,71,74,176,146,91,131,150,186,133,79,61,99,81,159,98,26,227,146,71,78,15,94,6,113,76,23,91,126,244,129,191,221,150,240,18,125,127, +228,28,125,123,231,249,212,137,124,217,0,25,64,7,63,44,247,64,250,247,211,134,79,124,100,245,252,40,2,220,115,90,156,98,238,33,140,140,3,176,250,96,136,230,200,235,147,211,211,181,77,190,221,71,23,72, +120,7,253,116,171,156,127,188,228,31,196,254,117,89,47,25,186,60,196,158,114,210,220,146,73,201,235,246,0,58,156,112,15,166,122,85,133,186,96,70,85,201,31,244,210,227,142,79,56,251,33,39,208,17,140,12, +245,28,128,9,214,88,184,43,114,184,228,144,39,199,31,131,143,110,160,115,249,85,148,120,91,31,233,42,58,3,254,146,70,115,146,57,222,122,15,195,235,205,68,183,178,142,140,113,207,14,247,164,244,227,24, +183,94,56,233,205,76,183,146,243,202,110,231,248,111,220,176,233,192,49,41,29,59,228,103,61,178,40,2,80,136,70,5,194,176,35,143,244,166,25,57,231,156,16,1,233,223,61,179,83,44,113,116,44,184,245,251,115, +140,227,182,6,113,215,208,15,81,145,138,129,46,103,244,83,145,199,201,122,164,115,254,212,124,115,211,156,103,57,2,173,36,211,177,230,56,122,116,99,168,140,30,189,35,76,159,204,253,113,193,0,149,34,182, +56,198,206,132,15,244,201,137,227,223,203,108,158,185,192,3,31,83,86,82,27,124,244,29,50,54,222,73,130,65,233,150,128,247,3,142,73,232,65,224,213,127,50,112,50,176,194,123,130,23,81,192,245,201,109,163, +244,56,56,231,173,72,147,76,72,2,222,6,39,212,94,31,111,239,1,215,208,241,223,216,2,242,36,0,42,249,56,200,200,205,219,242,57,236,45,215,29,187,231,219,130,42,66,176,177,192,69,32,115,131,121,116,49,207, +60,4,199,7,29,186,156,14,1,53,84,73,40,3,54,246,75,211,27,150,245,121,231,239,19,193,61,187,228,115,140,226,164,89,31,57,242,116,252,241,212,222,115,207,166,8,63,64,189,207,126,160,22,82,11,114,64,49, +197,140,228,147,125,57,35,36,116,221,131,206,57,224,26,176,44,173,27,4,71,6,14,57,251,85,193,237,215,33,128,255,0,61,121,21,85,36,151,32,253,146,199,35,186,139,192,114,123,255,0,169,108,224,125,50,122, +30,42,77,211,19,147,105,102,70,49,145,246,156,129,212,117,181,56,56,199,126,156,1,210,128,45,173,133,168,193,9,1,239,133,186,147,144,125,114,228,241,199,94,163,245,147,236,54,103,172,81,231,222,225,177, +249,151,227,29,240,8,199,124,138,174,175,113,255,0,62,182,195,176,201,185,245,239,139,80,71,3,191,127,90,120,105,155,131,107,104,24,158,155,231,56,234,58,139,101,239,201,234,71,233,64,22,22,210,215,248, +86,4,237,159,180,224,114,113,142,101,36,118,57,227,128,78,106,194,218,69,140,134,131,60,3,254,155,129,140,227,160,151,245,7,131,214,168,230,101,231,236,246,184,245,87,155,60,116,251,208,142,113,208,28, +254,7,24,22,75,140,227,201,135,142,127,214,62,1,232,72,253,193,235,193,7,159,210,128,52,214,206,35,143,222,219,3,201,195,94,200,78,73,200,231,205,98,125,137,7,219,168,195,190,202,156,143,58,208,14,196, +222,75,248,244,144,119,24,228,117,3,174,5,85,70,155,25,242,227,30,165,76,228,145,237,139,126,125,186,126,60,98,79,50,78,123,1,129,194,220,19,244,255,0,82,61,58,99,175,30,132,128,89,91,65,145,155,136,8, +29,64,188,144,129,248,19,253,121,227,57,171,43,107,24,206,110,163,24,233,135,146,79,78,62,255,0,110,160,129,207,160,170,42,242,19,214,92,250,136,223,3,191,83,111,158,122,99,140,114,56,226,167,87,96,113, +231,220,47,79,225,151,3,167,35,48,99,215,216,1,219,184,5,160,138,191,118,240,16,127,217,155,31,250,31,182,62,159,149,74,164,103,31,107,25,29,49,246,176,61,15,70,252,122,158,122,113,197,64,143,158,90,234, +232,140,118,73,59,253,96,227,245,206,72,57,6,164,18,161,192,251,69,193,192,238,188,228,245,200,107,115,142,123,144,49,198,59,138,0,178,172,122,139,228,246,200,191,227,183,240,201,233,208,140,246,32,118, +171,81,188,163,7,251,73,0,29,132,90,129,200,62,153,44,78,56,207,191,215,38,154,72,128,241,53,208,61,126,94,70,79,78,5,190,209,236,15,25,245,226,167,19,100,140,220,95,130,15,111,51,183,79,187,110,114,120, +207,57,232,126,180,1,103,207,144,96,127,104,175,225,111,168,122,243,252,32,17,239,159,74,95,180,58,231,23,254,184,196,23,99,129,147,220,228,241,245,244,56,234,99,73,211,248,174,111,129,60,231,19,114,58, +3,197,168,239,249,158,57,169,76,241,146,51,123,126,63,9,71,167,60,218,227,35,62,190,188,241,192,3,133,195,156,147,124,167,60,127,199,189,206,65,250,5,63,78,73,239,215,138,148,72,72,25,187,82,78,115,155, +75,163,199,94,209,40,29,15,205,131,248,212,43,34,147,129,125,120,192,14,140,88,3,233,255,0,44,79,175,167,24,245,169,84,130,114,47,46,243,219,38,92,116,238,18,223,28,142,112,122,227,52,0,239,49,142,113, +58,183,96,12,23,72,127,33,11,99,175,82,8,250,244,165,14,199,248,163,63,240,9,250,247,206,232,6,113,207,175,168,244,163,130,121,186,185,32,118,242,228,57,57,63,222,139,35,174,115,232,71,6,154,66,158,147, +79,158,159,50,74,122,244,228,32,254,84,1,58,172,152,255,0,88,188,0,115,178,76,119,192,193,136,228,14,156,99,175,126,41,118,51,30,93,9,246,133,199,61,250,196,79,231,248,119,2,178,166,236,102,103,192,57, +7,100,132,158,189,113,25,252,120,227,240,230,97,6,79,203,52,167,223,108,195,182,122,249,68,116,62,190,180,1,47,144,0,25,36,255,0,187,17,199,82,0,199,146,61,56,24,250,84,126,84,125,25,136,61,79,238,206, +1,232,50,26,47,195,159,79,165,56,91,146,126,105,78,59,238,121,64,199,76,100,192,125,120,231,175,38,158,182,200,62,236,138,91,175,50,55,0,250,127,163,251,99,160,199,52,0,193,10,144,0,149,64,207,25,72,128, +238,113,159,39,32,231,30,166,151,236,192,100,140,19,216,1,24,227,223,17,168,255,0,235,138,95,179,100,147,148,108,116,63,104,117,3,158,227,236,203,248,12,241,158,148,245,131,221,15,253,188,73,140,31,165, +187,99,223,7,219,214,128,25,246,119,234,55,30,122,121,144,142,62,132,140,254,35,60,245,226,158,33,97,143,144,145,142,166,104,15,224,49,159,110,121,61,251,226,156,98,85,207,220,99,232,103,147,249,152,1, +244,60,159,74,110,49,252,8,48,115,147,116,224,15,166,32,207,94,254,248,201,230,128,30,18,94,131,119,211,204,139,167,215,35,32,99,142,59,12,250,210,121,115,128,121,28,227,171,199,156,17,232,67,103,250, +143,74,79,152,224,143,47,220,11,185,135,174,127,229,220,231,168,234,6,115,206,105,9,0,243,16,60,255,0,13,228,160,147,142,49,155,124,113,207,110,153,30,148,0,237,183,0,231,42,51,140,19,44,35,244,3,60,131, +158,123,158,157,105,119,79,252,69,79,76,126,254,46,222,131,215,25,199,39,223,185,168,76,142,9,27,10,117,255,0,151,217,251,246,192,131,223,166,48,59,114,42,51,44,153,56,36,143,81,113,57,252,179,16,7,29, +250,114,40,2,234,137,27,164,91,143,253,124,64,188,113,142,57,36,242,120,56,207,94,8,192,82,164,31,158,221,241,158,74,220,38,51,211,56,12,49,147,206,123,123,142,42,154,203,116,126,228,133,125,9,103,231, +220,124,131,233,206,13,27,239,59,206,27,142,157,121,207,82,74,245,235,233,223,29,40,3,68,48,29,34,153,123,231,207,64,113,235,140,158,231,184,39,176,0,210,153,99,25,202,204,78,7,89,17,241,233,141,177,147, +199,190,51,206,78,71,25,165,239,0,3,205,39,211,132,232,71,3,144,56,7,223,29,123,114,3,37,239,252,245,144,123,134,135,29,50,120,32,156,117,0,247,160,11,254,116,39,128,210,175,3,178,254,120,49,123,96,3, +142,125,123,27,226,39,37,238,8,61,213,97,207,80,120,37,15,127,94,255,0,173,12,222,48,192,185,145,73,231,147,8,255,0,208,151,160,62,158,223,74,64,151,231,254,95,91,166,57,242,79,183,79,44,250,227,32,117, +61,104,3,64,60,57,198,235,209,158,132,52,43,145,244,84,3,30,128,158,252,116,197,41,48,238,56,146,231,39,0,102,65,187,146,8,224,31,195,3,142,245,72,127,105,46,113,126,23,31,236,219,228,143,79,245,57,63, +167,181,57,95,83,234,117,36,32,117,24,135,57,247,13,110,70,58,245,31,134,40,2,119,141,7,33,174,255,0,25,88,2,123,128,2,145,192,236,73,254,89,137,162,98,15,250,224,59,239,149,15,126,63,229,151,63,94,121, +228,210,137,175,142,67,106,11,245,255,0,67,193,4,117,193,179,111,113,207,7,191,25,167,25,47,58,61,249,35,61,84,218,128,115,212,97,109,57,247,228,253,71,52,1,92,196,227,163,201,159,250,233,25,232,61,60, +146,63,32,57,252,42,7,130,114,71,239,28,2,49,141,240,158,191,91,85,233,238,217,207,90,186,12,167,147,60,132,228,231,136,72,246,224,89,159,195,233,214,151,18,158,179,201,235,242,249,67,219,129,246,64,127, +44,245,231,20,1,146,246,119,7,163,18,79,127,220,146,51,158,50,32,198,56,198,127,10,65,97,116,70,48,9,199,25,49,224,243,223,108,71,241,61,250,96,98,181,129,148,116,154,126,223,192,173,223,60,226,207,235, +208,246,28,244,165,15,112,78,22,73,207,63,243,201,48,65,62,246,196,146,79,166,51,159,161,160,12,81,167,79,158,99,143,147,147,157,128,99,56,56,253,206,115,237,159,124,130,105,166,202,80,0,49,64,64,4,156, +145,219,219,203,24,233,147,199,127,166,119,115,47,87,105,219,216,42,231,182,50,26,5,7,175,167,106,140,151,39,254,94,7,177,10,121,39,218,62,153,246,235,199,78,128,24,98,220,41,63,232,208,54,79,104,148, +224,251,102,3,143,160,39,156,244,198,10,121,74,14,90,218,49,206,115,246,100,110,49,255,0,92,54,142,126,163,211,168,21,187,134,193,37,174,64,35,39,108,36,231,211,162,129,158,125,177,193,235,81,178,200, +1,32,222,99,211,236,142,115,143,125,254,249,56,199,229,64,24,230,53,61,33,69,227,28,216,177,193,250,44,3,159,97,199,7,28,211,194,33,56,242,212,231,177,211,229,60,30,135,253,71,24,227,31,135,189,104,54, +225,222,227,142,126,107,89,64,246,232,216,236,115,239,207,29,152,90,85,7,111,218,49,220,136,37,198,48,122,2,192,142,227,174,123,131,64,21,133,186,244,242,99,193,56,255,0,143,9,215,140,28,127,203,49,248, +147,211,211,56,165,48,70,188,24,34,231,24,39,79,187,35,211,168,139,24,227,215,138,151,207,159,168,121,185,207,252,177,151,158,223,197,46,127,33,142,0,231,178,25,46,8,230,76,118,203,69,58,244,56,254,249, +31,92,103,28,15,76,0,68,82,46,155,45,129,247,178,187,28,243,140,230,18,7,79,94,41,2,199,131,131,106,9,227,155,107,149,227,39,183,148,185,198,79,36,118,224,231,56,113,123,131,156,202,159,128,153,123,117, +224,250,103,140,241,192,60,245,97,121,135,1,227,57,35,31,52,217,231,219,99,96,115,144,123,156,208,3,26,61,221,62,198,125,197,173,235,0,112,71,33,87,140,253,56,207,28,28,82,136,219,31,242,232,221,198,44, +239,120,199,0,240,65,24,36,123,224,144,7,83,74,13,208,39,19,1,147,208,52,188,99,156,228,192,122,240,112,65,63,144,164,50,93,12,124,242,31,115,114,233,156,125,109,177,143,207,235,218,128,27,228,231,146, +182,132,118,205,157,234,250,158,142,227,244,231,214,144,194,131,239,37,168,28,244,142,245,1,234,51,196,224,2,125,64,231,177,207,68,47,116,50,119,158,252,11,237,188,122,156,88,177,60,123,158,51,70,251, +174,162,78,158,151,192,144,51,239,97,131,199,82,71,183,122,0,60,152,136,226,222,19,158,50,166,248,231,240,251,80,63,151,183,36,211,25,99,82,115,18,142,248,221,122,123,117,193,188,207,78,56,28,250,98,149, +154,239,24,105,14,61,13,228,94,188,224,181,129,199,169,254,84,210,179,158,70,63,240,50,35,147,248,88,12,18,115,250,103,181,0,40,72,65,25,135,56,234,115,116,163,223,147,113,223,235,220,119,6,164,13,108, +189,98,148,159,246,76,205,130,59,229,174,71,168,239,216,227,189,71,229,56,32,157,224,251,95,71,128,59,224,27,18,191,134,63,198,151,203,28,22,50,231,218,254,33,215,216,88,142,191,135,110,156,80,3,140,176, +14,66,92,142,220,23,199,94,48,13,222,73,62,254,189,7,120,196,144,100,140,95,12,242,49,184,1,145,158,243,176,200,233,223,32,227,215,18,108,24,206,247,31,75,220,159,174,22,205,122,118,201,255,0,235,187, +106,41,39,116,237,145,142,110,9,31,153,129,64,201,207,4,158,220,250,128,64,90,35,247,95,80,244,249,157,71,212,143,156,250,251,119,199,124,56,170,12,31,54,247,28,227,247,137,198,121,238,11,17,142,58,103, +181,59,106,49,32,134,193,199,13,48,108,251,99,103,0,158,62,83,216,210,172,105,147,136,212,118,249,176,65,244,56,192,28,103,215,177,207,29,0,32,96,11,113,53,208,198,121,251,216,250,230,54,7,169,61,250, +80,86,92,127,199,204,169,207,120,97,39,147,130,71,238,1,239,158,152,231,57,238,44,24,148,227,229,140,28,127,8,69,35,244,60,245,62,253,49,232,27,100,206,79,151,140,119,101,234,49,212,151,92,250,117,231, +211,38,128,43,132,155,39,253,46,78,79,31,36,56,28,115,156,65,158,58,131,232,72,237,154,70,55,3,165,225,3,184,49,161,200,231,176,64,73,255,0,245,246,193,180,99,3,172,145,142,114,0,112,56,247,34,113,236, +48,63,26,97,201,225,94,35,158,197,85,253,64,206,110,189,51,156,117,235,215,52,1,83,253,55,57,251,80,101,60,143,149,83,142,199,132,207,191,94,252,244,165,198,164,8,2,82,120,36,252,195,3,215,144,160,227, +166,120,56,236,13,72,98,98,50,194,2,115,222,36,199,35,184,23,188,15,161,56,227,184,197,87,104,67,117,251,47,184,251,60,100,103,39,185,190,239,201,193,7,35,28,247,32,19,1,169,178,224,176,25,207,87,7,142, +58,130,189,79,65,211,158,70,40,11,170,116,50,69,158,191,44,167,39,61,248,207,183,60,117,28,242,13,87,16,162,156,31,177,114,79,252,186,194,113,130,51,146,46,155,31,211,0,251,152,158,36,94,127,208,176,113, +200,182,140,99,240,51,28,254,29,179,233,64,22,216,234,73,210,82,49,159,249,120,97,158,153,199,204,191,203,31,78,106,22,151,81,28,153,223,7,3,34,237,129,199,127,249,106,114,70,115,212,96,246,207,90,39, +96,231,54,71,168,199,149,0,252,190,115,129,245,57,206,51,72,95,143,149,45,187,253,216,147,190,79,59,100,227,143,110,248,231,176,5,199,154,248,140,153,38,99,254,205,243,12,250,113,230,28,12,254,92,30,245, +25,184,189,0,243,57,28,142,111,156,0,120,193,234,120,253,51,192,24,230,169,25,217,113,152,161,192,192,25,131,119,215,177,60,116,4,122,119,21,27,78,27,131,28,39,208,125,145,187,28,245,17,17,223,156,114, +114,122,12,208,5,182,188,187,25,194,78,70,72,33,111,100,62,157,72,235,245,192,245,199,162,253,182,233,114,10,94,168,192,56,23,146,176,233,131,252,4,14,125,127,94,13,81,243,208,127,203,43,65,215,173,150, +0,227,222,212,147,199,94,112,73,231,184,41,246,216,212,28,69,103,145,233,104,216,25,199,165,153,29,251,28,253,58,144,11,127,109,156,159,156,106,68,122,44,211,18,57,199,252,251,224,255,0,78,135,161,52, +141,119,142,167,82,78,152,203,207,249,157,182,224,142,157,241,207,92,245,170,195,80,244,138,201,143,98,109,194,12,116,227,54,7,235,158,49,144,115,216,169,212,229,25,2,43,53,29,65,8,131,158,135,31,232, +32,2,62,128,158,254,224,18,53,240,25,203,234,103,39,251,247,93,135,32,255,0,163,125,113,201,227,52,207,181,198,221,175,56,61,91,237,37,136,207,76,253,159,215,234,15,28,245,20,197,212,174,15,81,96,58,125, +225,17,199,29,135,216,79,61,127,166,0,53,50,223,79,217,172,57,231,34,53,207,175,252,248,0,56,244,199,231,208,1,22,113,156,136,238,113,219,43,41,233,212,243,0,24,207,65,206,112,121,166,153,249,193,91,129, +129,253,217,59,231,176,137,122,125,113,131,211,185,144,220,220,30,179,217,12,146,121,77,163,175,170,216,191,12,123,131,198,49,156,82,249,179,183,30,118,155,220,2,88,242,125,50,108,211,31,94,189,254,160, +17,249,221,50,211,129,255,0,109,134,59,30,9,3,211,145,211,174,77,5,248,226,75,128,59,144,38,3,215,184,96,7,126,189,168,111,180,55,87,211,200,63,244,216,237,207,67,214,215,235,244,193,246,166,152,238,152, +124,179,216,131,232,183,91,112,78,123,139,113,207,96,50,78,115,200,25,52,0,224,195,24,18,206,120,32,124,210,156,31,160,96,127,30,59,112,64,225,165,159,28,75,48,200,61,76,224,113,156,103,247,131,60,116, +29,73,228,250,84,109,111,122,115,139,168,56,36,231,237,187,6,1,25,63,234,8,193,247,228,140,224,102,163,48,106,32,12,79,15,190,219,224,220,254,54,174,123,143,78,191,152,4,133,165,199,250,231,0,244,249, +230,7,191,172,160,142,156,19,215,159,67,76,223,48,29,100,57,29,220,147,249,111,206,61,69,70,209,95,28,134,186,81,212,145,246,204,30,255,0,244,234,61,186,116,250,103,17,155,107,131,247,166,82,79,31,45, +244,160,255,0,233,48,80,123,99,183,29,168,2,99,52,195,248,165,224,246,56,63,250,52,254,28,122,228,122,176,203,49,206,94,94,220,7,0,3,219,163,158,220,159,92,100,158,51,80,253,158,227,28,185,35,57,230,252, +242,7,80,63,114,51,249,113,250,84,38,7,4,228,158,252,155,233,27,167,178,196,160,31,199,24,227,3,24,160,11,27,238,51,242,187,253,76,153,207,24,193,195,17,140,113,192,227,175,25,164,50,220,16,115,35,28, +250,25,72,231,167,80,1,206,122,14,59,85,7,141,201,228,72,163,218,228,182,125,51,186,60,158,152,236,59,114,49,81,16,192,224,60,157,198,26,232,41,246,203,109,94,217,235,208,228,250,26,0,182,210,220,140, +141,199,161,198,69,192,199,83,146,64,81,223,252,42,38,107,146,48,56,24,228,254,252,115,233,157,140,121,206,73,0,224,129,145,85,137,187,36,236,220,234,59,125,178,54,3,175,114,14,56,236,71,183,92,210,111, +184,63,122,48,122,117,189,136,103,156,99,229,143,191,242,235,64,10,233,57,228,34,244,198,76,204,73,198,114,73,48,113,216,129,198,65,56,25,233,17,142,78,21,162,132,250,22,185,219,156,100,112,62,206,73, +3,31,151,210,164,223,57,24,49,196,6,71,222,188,92,12,231,166,8,60,12,117,62,184,164,221,63,247,109,88,129,211,237,163,167,78,134,67,142,216,61,15,60,230,128,34,49,144,15,238,161,62,194,233,179,140,140, +227,253,21,65,28,246,39,167,83,210,154,208,57,206,33,143,158,6,47,27,29,122,96,199,223,158,1,235,78,119,159,4,121,112,103,129,197,226,30,156,140,229,192,253,113,236,15,34,50,247,88,235,16,28,114,47,16, +30,51,145,145,46,9,235,198,56,244,160,6,73,104,227,39,202,143,166,72,251,107,231,129,254,233,193,24,207,124,241,80,53,184,61,98,62,191,45,219,156,31,65,242,99,183,126,65,39,53,54,110,143,34,72,148,158, +187,175,208,251,99,253,105,4,31,78,15,167,180,71,251,67,39,19,91,231,36,243,168,219,146,0,238,1,147,158,49,156,96,140,99,138,0,129,173,226,201,204,18,115,128,15,219,130,244,28,140,180,103,29,123,1,215, +39,56,20,207,179,91,244,49,77,255,0,1,212,134,113,237,186,220,129,220,246,25,247,53,116,54,164,78,124,203,114,7,166,165,110,8,207,168,5,187,250,142,57,234,77,56,45,215,37,164,131,220,155,219,108,119,35, +144,7,167,57,253,104,2,129,180,183,111,249,103,119,237,141,70,60,112,120,251,182,195,184,3,56,227,24,60,116,103,216,161,24,11,29,210,227,210,249,155,215,186,160,39,175,64,51,158,43,72,253,168,227,109, +205,168,35,160,55,176,100,126,92,96,246,254,89,168,93,110,49,134,185,182,36,243,197,204,29,49,156,125,209,211,244,234,58,230,128,42,155,56,128,249,69,208,61,127,227,230,114,123,122,163,103,167,29,7,174, +71,72,154,215,35,132,189,198,115,129,116,192,103,215,6,18,127,0,78,49,248,213,179,20,191,243,221,9,231,164,214,239,143,79,225,35,175,99,131,142,121,60,83,12,18,103,137,200,61,114,37,139,29,199,31,187, +63,161,3,183,173,0,81,107,87,24,196,87,188,242,73,186,145,70,51,158,113,106,196,0,58,19,156,243,223,4,174,36,94,60,139,166,235,147,246,153,88,159,92,159,176,115,159,215,176,199,75,222,68,220,143,61,142, +120,201,150,49,206,61,161,57,198,51,140,119,244,232,195,12,171,214,121,49,253,209,32,207,30,135,236,220,115,200,25,24,233,64,20,179,47,24,138,101,201,29,110,164,24,250,159,177,12,246,207,3,128,122,118, +65,231,177,192,89,198,7,4,75,35,247,60,130,108,200,250,228,158,125,249,171,123,0,63,52,147,142,185,203,142,199,175,250,149,199,108,140,254,117,25,16,103,153,220,30,56,47,184,244,61,182,15,126,14,51,206, +123,224,2,6,75,147,145,137,184,32,99,3,142,189,218,201,78,120,247,235,222,163,197,202,147,148,56,28,130,234,78,0,62,214,203,206,15,25,25,56,238,51,83,50,192,63,229,230,85,36,147,156,169,231,215,5,91,130, +49,199,99,193,247,136,249,89,25,150,225,143,98,161,15,61,115,145,3,114,121,235,237,128,112,50,1,42,153,127,139,167,35,2,37,234,58,28,152,123,246,224,123,128,51,77,98,231,56,192,29,57,242,215,191,112,85, +78,123,126,62,149,14,232,201,194,155,178,61,70,192,125,73,195,90,243,249,118,234,73,224,56,4,109,107,192,64,234,86,50,122,142,135,236,120,235,235,156,116,247,160,9,74,19,232,65,200,193,143,204,7,140,129, +193,28,126,39,129,140,10,111,146,115,146,96,0,246,54,195,56,231,4,124,199,182,59,158,158,230,162,50,48,32,9,110,242,71,113,25,30,217,255,0,69,4,126,3,31,151,1,144,147,204,183,28,140,17,181,57,3,25,231, +236,231,142,248,61,121,7,168,160,1,173,67,228,230,16,120,203,125,149,120,201,233,254,179,211,60,129,215,167,36,225,22,217,151,128,202,195,166,22,216,99,211,63,120,228,99,216,159,99,158,25,231,54,112,5, +227,142,7,17,198,73,233,235,2,224,140,122,156,142,244,241,43,18,187,163,212,59,140,121,104,160,113,237,31,79,204,156,114,58,80,3,188,150,206,66,198,49,215,253,25,83,191,171,122,96,126,126,199,40,90,69, +206,197,137,142,64,206,213,199,30,160,190,113,211,160,4,114,56,28,211,129,36,255,0,171,212,78,123,42,145,192,232,112,23,3,60,158,49,212,145,222,148,50,169,230,29,68,127,188,100,62,216,200,0,228,114,127, +151,124,0,48,61,207,116,139,24,198,68,105,129,215,57,36,143,161,32,114,41,140,247,99,35,203,143,158,127,213,196,14,15,110,84,130,58,14,131,175,115,83,22,136,156,148,212,6,78,14,36,148,96,227,61,55,128, +61,253,61,185,167,110,128,12,17,168,250,228,200,237,200,29,121,184,7,235,192,199,67,198,40,2,147,61,215,252,242,143,142,78,33,182,39,216,31,221,49,246,63,203,145,128,75,116,57,242,199,168,34,11,80,78, +9,61,68,25,207,126,160,231,25,7,160,184,36,183,201,200,212,15,97,251,201,70,7,212,220,227,25,247,254,184,105,22,109,255,0,44,111,250,127,21,196,131,61,121,255,0,143,177,215,142,195,142,71,28,80,4,31,105, +185,31,192,248,28,224,44,10,6,59,241,110,0,56,236,120,254,116,162,230,231,188,114,224,241,147,246,108,227,62,240,100,140,159,167,83,216,210,152,109,15,30,77,239,29,254,212,195,175,185,187,57,232,48,49, +199,86,245,167,136,45,63,231,141,239,28,224,221,156,100,251,181,209,28,224,231,30,255,0,74,0,65,61,217,227,103,0,116,97,102,7,174,121,128,158,120,235,201,237,140,210,131,112,115,194,246,224,45,166,57, +206,121,49,14,51,142,118,250,231,154,119,145,109,218,9,206,79,70,189,95,212,121,196,15,175,63,208,163,91,195,209,109,103,108,224,127,199,212,68,126,175,250,231,249,112,0,162,39,61,99,11,207,222,88,236, +177,219,169,216,27,158,122,118,247,224,191,236,201,140,20,57,207,80,150,160,122,244,18,40,32,113,216,227,60,30,160,48,90,160,233,105,48,206,63,229,230,223,140,30,255,0,57,198,115,215,145,216,142,184,79, +178,159,249,241,148,250,110,188,128,158,220,227,99,1,244,252,199,74,0,144,90,64,1,4,185,207,162,219,129,147,255,0,3,24,235,140,140,103,3,4,14,41,69,157,184,32,166,225,220,156,195,232,115,255,0,45,135, +80,65,235,249,244,168,26,213,135,91,3,200,198,126,213,25,28,123,121,89,56,29,64,231,169,245,166,8,36,95,249,114,65,219,63,107,192,235,198,113,22,61,179,198,62,134,128,47,125,146,22,206,85,15,185,49,19, +199,111,248,249,30,188,18,70,122,125,31,246,24,27,147,18,123,157,176,30,222,247,57,7,61,189,207,181,84,88,155,24,107,68,62,223,110,114,9,232,127,229,137,24,206,7,3,61,61,170,104,211,111,63,97,64,79,115, +122,63,28,230,32,199,166,113,223,208,10,0,178,186,125,191,35,108,96,99,60,197,9,193,231,184,156,12,224,145,235,233,199,20,245,211,109,207,86,76,143,238,197,6,113,234,71,218,65,207,185,233,245,168,73,61, +62,193,110,1,199,223,189,206,71,25,224,199,215,220,159,173,52,160,57,255,0,66,181,4,147,200,189,108,158,59,227,131,215,174,58,243,214,128,38,58,108,25,198,65,207,35,49,196,58,113,208,221,228,19,211,131, +211,56,246,105,211,226,94,1,140,14,188,196,164,103,39,143,150,252,30,125,0,192,236,15,120,118,224,241,107,105,180,103,25,188,99,183,182,51,192,28,244,224,147,237,138,92,231,165,181,151,28,18,110,231,29, +250,252,163,145,239,215,241,24,160,9,126,194,189,0,128,118,201,137,58,126,55,141,248,231,147,142,244,163,79,3,24,22,184,255,0,174,48,159,110,3,93,2,121,227,3,223,140,3,81,0,196,18,32,180,81,237,119,115, +129,158,114,8,3,147,208,30,190,244,229,18,12,97,32,231,36,127,166,92,49,24,236,55,17,140,242,112,78,63,28,146,1,96,105,164,228,176,183,193,25,59,108,225,97,147,200,228,221,126,29,115,206,79,161,120,211, +33,236,235,145,215,109,164,3,145,244,185,227,175,208,119,193,6,163,88,231,108,1,26,12,228,113,116,191,134,67,185,199,112,65,60,99,140,82,155,107,145,210,56,87,24,36,153,162,32,142,248,195,224,250,244, +56,231,216,80,3,134,154,188,0,232,188,142,12,106,185,25,4,143,150,233,125,120,253,71,38,151,251,61,129,229,162,199,63,194,163,158,189,77,230,49,245,28,99,218,155,229,221,100,2,150,199,0,117,32,158,253, +10,185,252,49,129,140,241,205,70,96,156,159,245,54,196,30,152,56,201,252,243,223,158,127,46,192,19,125,152,40,254,30,59,101,185,233,207,203,120,49,207,28,159,165,34,198,71,76,100,158,168,164,131,248,54, +160,216,233,159,207,165,48,91,204,51,136,163,239,192,86,253,50,72,227,61,250,96,246,167,8,39,7,34,24,198,6,57,70,207,25,227,57,43,142,63,78,196,154,0,152,35,231,25,32,127,185,23,78,70,14,235,167,245,246, +206,122,142,239,17,158,9,36,19,216,139,124,122,244,243,115,252,248,239,222,161,17,206,121,48,174,6,15,49,171,103,158,193,151,190,125,121,198,1,165,10,253,90,8,198,58,230,24,49,193,255,0,107,229,61,64, +232,50,112,51,234,1,59,43,40,206,243,215,140,24,125,61,22,114,127,48,50,56,237,77,51,50,255,0,203,86,7,177,243,10,247,227,63,189,39,215,167,166,125,170,47,148,140,53,188,39,184,205,180,4,142,217,4,76, +184,224,156,118,239,200,167,4,140,41,204,49,103,211,236,227,35,61,78,22,67,131,248,245,7,191,64,7,27,185,71,43,46,64,207,91,140,147,233,129,231,17,239,211,158,220,102,157,246,235,144,114,38,199,124,121, +177,144,122,142,132,158,152,244,0,96,84,97,160,3,12,168,167,128,66,197,42,231,212,241,112,49,215,56,219,131,236,105,79,217,219,163,75,244,88,221,78,79,60,31,59,35,3,167,225,140,100,224,2,95,237,27,147, +140,220,57,237,128,214,96,96,127,189,25,235,235,156,143,106,67,127,114,220,9,223,61,199,153,99,223,145,214,35,215,208,30,221,58,83,64,76,2,36,157,64,231,130,227,60,100,231,50,117,193,198,9,60,31,122,111, +155,183,165,196,234,14,122,159,98,7,252,182,7,233,158,58,247,197,0,59,237,51,48,249,167,152,100,113,137,108,136,231,60,159,244,102,224,158,78,59,113,233,69,51,206,35,4,93,203,201,57,249,192,57,207,171, +76,73,245,35,145,245,57,162,128,60,208,50,156,103,96,25,231,107,92,14,253,112,110,72,199,211,29,120,169,82,84,25,218,203,234,14,38,252,254,105,192,246,28,247,235,235,154,45,231,207,205,193,29,51,117,115, +200,35,39,27,162,32,254,94,131,218,172,164,23,7,4,4,62,159,233,76,63,60,219,231,183,25,239,245,32,128,104,44,199,144,48,217,224,145,158,135,174,65,144,143,92,12,16,79,108,213,148,144,140,229,73,36,103, +28,228,131,237,180,131,219,161,234,49,245,204,17,92,12,19,28,76,70,115,155,177,235,199,223,135,142,112,51,131,206,123,212,193,101,31,122,11,124,231,189,196,71,140,142,135,201,4,30,185,29,50,48,125,104, +3,77,102,101,228,161,92,115,196,110,113,140,241,247,112,121,61,120,200,233,219,50,253,168,19,150,216,70,63,142,25,120,193,246,36,241,158,228,140,146,7,78,115,145,118,147,186,59,92,30,222,108,39,28,14, +9,16,158,153,56,231,168,237,222,216,17,245,255,0,68,30,131,206,132,156,131,208,145,18,142,57,227,56,254,64,2,215,219,20,115,149,7,167,202,215,40,51,142,114,21,128,244,233,205,57,110,212,96,146,7,115,153, +38,24,199,60,121,141,255,0,214,250,14,145,34,219,244,102,179,234,7,13,23,233,251,134,207,111,94,122,26,178,18,215,187,89,96,129,247,140,93,184,39,136,134,79,29,113,207,29,104,2,69,186,92,240,201,192,25, +253,249,0,231,61,1,4,122,246,247,197,76,183,108,56,89,15,35,130,179,147,142,7,24,88,241,143,204,128,9,35,29,4,130,213,185,221,107,142,6,21,137,199,96,73,242,192,193,29,62,149,102,56,108,212,240,176,150, +246,97,156,143,196,244,207,160,30,180,0,137,120,255,0,243,241,32,56,237,116,234,15,25,207,250,162,122,103,160,236,115,198,42,210,93,72,79,23,50,241,208,253,166,83,143,66,127,112,59,227,142,115,215,142, +149,34,165,160,193,37,87,156,112,172,113,233,209,177,223,184,25,32,30,57,169,130,91,28,16,209,14,224,152,147,235,193,57,4,99,215,250,102,128,17,110,103,228,11,167,7,7,59,174,37,57,246,193,69,233,223,56, +192,245,169,22,226,232,224,125,168,0,122,98,73,73,31,248,240,245,237,143,198,151,203,183,60,153,211,183,2,37,3,156,140,128,135,142,48,73,29,114,120,205,74,177,219,227,2,114,115,128,54,35,47,57,247,117, +207,126,114,63,158,64,26,36,185,60,155,150,233,212,59,142,120,227,248,179,193,193,228,131,201,199,122,176,159,106,99,205,201,61,254,102,4,99,56,3,149,57,245,232,7,182,72,203,150,56,72,199,156,204,61,54, +49,199,183,250,210,121,61,14,79,174,51,79,88,96,61,93,206,122,12,46,67,12,255,0,8,98,122,246,198,125,9,160,9,227,75,225,141,183,33,122,246,244,207,162,0,115,223,142,189,48,79,22,81,111,243,205,219,112, +123,35,30,58,114,54,14,190,191,136,28,241,72,195,111,209,203,12,15,246,87,32,251,6,207,61,57,25,7,158,1,38,165,88,237,16,1,251,207,98,221,251,255,0,17,193,246,237,215,29,77,0,105,42,94,113,254,151,33, +246,16,176,237,244,3,252,77,78,130,239,254,123,57,60,224,249,17,19,142,156,150,193,252,243,236,122,86,64,107,48,72,221,156,99,35,48,142,78,121,63,33,7,182,70,64,206,56,167,121,150,153,24,76,242,57,87, +139,142,79,92,68,71,24,228,156,122,122,228,3,117,126,214,57,243,88,227,4,255,0,163,192,63,169,0,15,82,123,115,128,121,120,123,158,1,119,108,142,209,219,12,254,114,30,221,113,215,175,173,98,9,173,144,140, +163,18,57,226,101,35,39,253,216,241,211,29,49,223,208,98,117,185,183,56,204,51,156,244,109,236,120,28,116,242,136,199,79,195,29,59,128,110,70,210,145,201,159,7,140,3,100,132,227,56,251,204,79,67,130,71, +66,115,211,154,176,178,74,62,238,225,143,239,79,98,59,140,100,101,115,158,199,118,115,158,79,124,49,52,24,39,236,243,16,87,143,189,140,241,207,16,238,39,4,254,57,244,34,164,18,71,144,22,218,124,241,208, +200,57,56,60,127,163,103,160,231,4,243,193,246,0,221,243,110,48,54,133,232,57,107,171,49,198,79,111,52,227,240,192,231,140,243,151,137,110,79,44,51,201,206,46,109,63,172,189,126,156,16,5,99,9,148,100, +8,110,64,30,161,223,212,255,0,207,1,192,245,227,182,114,122,188,78,221,160,189,39,28,15,42,71,7,174,120,242,113,142,188,159,76,96,231,128,13,193,45,199,27,16,30,199,116,246,141,211,233,118,189,58,227, +0,117,231,165,72,26,243,56,2,60,113,255,0,45,173,128,3,177,0,93,147,215,56,35,174,77,97,139,137,49,131,105,120,115,255,0,78,210,28,245,237,229,3,199,60,131,199,0,243,197,74,147,185,5,86,198,248,241,200, +22,183,0,117,24,206,213,80,64,25,207,78,73,60,243,64,27,195,237,7,3,48,103,208,203,23,126,231,109,200,24,198,48,70,125,251,225,118,207,220,91,103,161,38,83,237,216,79,146,65,227,131,142,248,200,172,120, +229,184,201,63,101,190,3,35,27,173,39,0,116,232,78,1,254,67,158,115,210,200,185,112,112,109,111,179,234,45,38,252,113,147,129,211,212,126,6,128,52,21,39,29,36,181,94,163,239,72,120,247,196,196,231,3,36, +246,167,132,144,114,211,90,17,140,97,124,242,71,94,159,188,3,63,253,115,212,138,205,251,67,28,6,130,245,121,224,180,50,100,116,234,55,122,19,144,120,252,177,82,125,162,47,226,142,224,227,60,121,64,31, +67,215,60,231,28,113,154,0,182,219,207,75,136,72,3,24,88,229,56,233,220,200,9,201,29,193,56,24,227,25,46,86,35,173,200,235,213,96,147,129,234,6,9,7,158,112,115,85,86,238,219,35,11,55,64,79,238,162,199, +28,242,24,103,3,252,125,42,65,123,106,114,56,237,193,183,135,57,3,212,14,123,244,201,61,58,154,0,183,190,44,100,92,103,35,167,147,38,8,29,185,7,158,185,200,252,65,206,64,241,255,0,20,196,99,214,22,232, +121,255,0,158,13,144,79,39,215,28,114,5,68,183,118,103,239,108,0,116,6,40,71,126,56,40,72,207,64,63,28,246,19,45,205,143,247,163,7,221,45,207,7,182,60,177,142,228,28,245,234,15,52,0,129,224,83,159,180, +183,3,188,12,71,36,127,211,145,4,14,123,114,58,250,23,153,237,71,31,106,3,215,17,237,39,158,192,216,243,198,50,120,25,227,7,165,76,179,218,112,60,216,199,78,49,107,156,113,208,24,115,219,24,193,199,226, +106,101,123,54,206,94,30,160,2,99,181,24,192,192,31,234,6,123,123,156,19,146,104,2,184,184,128,116,188,62,255,0,41,35,63,133,142,123,241,207,31,74,148,79,1,28,221,49,233,252,44,61,250,253,144,19,207,79, +111,165,72,26,209,184,89,34,29,50,54,90,245,198,63,231,145,36,147,158,195,128,15,181,59,22,221,4,144,28,255,0,211,11,71,206,71,115,228,18,58,251,115,140,156,117,0,139,237,16,12,15,180,130,113,199,223, +231,25,36,127,199,175,78,199,140,242,114,51,78,75,133,98,0,152,17,156,131,185,135,124,118,179,39,142,184,32,156,115,211,20,243,28,60,99,202,227,210,24,23,223,60,68,1,207,168,227,245,194,8,227,39,59,148, +2,57,62,84,92,122,143,245,92,19,145,206,65,32,245,237,64,18,249,225,128,253,226,15,99,52,131,32,245,36,125,143,215,156,146,14,122,1,140,131,207,113,202,188,99,185,204,140,121,239,207,216,255,0,159,227, +211,152,140,17,182,112,65,30,170,138,57,232,48,68,44,58,158,157,191,74,105,129,70,48,231,255,0,29,252,184,131,3,220,224,126,153,32,19,125,163,104,5,165,128,231,141,172,242,113,215,31,118,203,145,215,24, +32,12,250,102,148,93,40,28,249,13,223,137,164,31,167,144,189,179,216,96,241,198,106,15,34,67,146,37,80,61,216,242,70,70,0,242,177,199,231,147,205,48,193,32,198,93,24,227,176,4,254,169,158,221,50,79,29, +248,160,11,95,106,7,238,172,99,185,253,252,188,147,199,247,63,192,142,79,20,211,114,249,229,109,206,125,103,126,123,127,112,103,240,57,253,42,175,147,40,229,101,24,237,133,92,251,117,95,229,206,123,19, +154,105,142,110,50,217,227,159,221,231,182,15,240,158,15,167,31,143,74,0,180,110,14,9,2,221,125,79,218,49,201,255,0,182,125,122,247,60,247,245,104,157,216,253,232,7,96,124,232,207,168,7,6,63,228,122,251, +243,85,130,184,227,114,131,211,6,38,192,255,0,190,87,250,144,59,246,161,140,192,1,190,34,7,64,99,113,159,79,225,231,241,200,30,192,228,0,89,50,177,235,44,32,117,255,0,88,132,241,158,132,1,245,60,119,3, +214,154,103,3,172,145,19,158,114,224,241,237,134,206,113,206,72,3,233,192,170,204,210,12,159,244,110,156,230,22,224,231,168,195,41,199,127,188,0,199,182,106,63,50,67,144,126,202,217,225,112,142,48,125, +193,152,103,240,63,67,140,80,5,243,60,39,130,98,35,191,221,199,30,135,120,63,129,207,76,113,192,160,79,16,25,92,17,211,31,187,192,247,226,76,231,29,62,152,24,228,213,31,49,193,218,69,185,35,166,216,88, +242,121,237,114,70,126,152,245,230,141,239,143,185,9,255,0,182,12,61,250,249,196,250,119,198,59,117,200,5,211,112,71,65,23,67,201,116,28,115,223,115,15,204,231,29,115,221,166,71,60,147,111,130,9,199,157, +24,245,235,132,36,119,239,223,39,29,69,63,58,67,140,68,128,140,140,136,229,29,127,221,148,227,211,0,127,245,129,37,192,31,234,211,7,39,136,230,233,206,7,37,207,63,212,144,6,104,2,209,145,7,12,109,201, +35,156,75,23,169,207,57,82,115,239,219,138,97,149,122,131,14,223,250,235,16,7,240,14,185,247,235,158,252,117,132,61,198,120,142,33,215,180,217,227,140,242,158,254,217,231,212,154,66,46,155,254,89,197, +248,25,137,3,212,124,188,18,73,200,36,113,156,227,154,0,155,204,201,255,0,85,3,129,158,89,243,219,185,19,12,159,78,189,61,122,175,153,23,123,91,76,31,226,105,152,17,129,239,47,79,207,25,235,218,160,219, +115,208,196,9,24,232,207,130,57,246,60,228,30,164,140,96,103,209,119,93,169,31,186,3,142,71,154,70,61,136,3,61,62,148,0,242,214,253,173,236,23,175,38,228,112,62,141,47,184,25,199,81,156,115,72,76,103, +238,199,105,131,208,173,210,140,143,78,36,31,215,176,207,20,161,238,128,230,5,56,239,231,51,12,117,234,33,232,7,191,126,163,165,2,75,172,227,236,202,199,29,164,108,231,232,85,127,83,158,223,80,8,203,39, +82,214,234,57,192,107,178,7,166,6,217,125,51,193,227,177,227,146,221,214,248,230,226,204,28,116,251,90,231,63,83,56,31,161,254,149,99,117,223,83,104,0,199,252,245,193,227,25,3,44,6,65,227,223,215,20,129, +230,110,77,178,12,145,195,52,100,243,254,243,145,239,235,198,15,36,80,5,125,214,171,201,187,181,11,207,34,120,219,156,122,153,9,246,60,227,175,61,77,52,75,107,156,45,205,177,234,114,38,128,122,227,163, +100,119,224,131,197,90,102,0,18,214,177,54,7,115,0,36,247,28,74,59,113,215,220,251,69,231,198,7,54,145,143,64,30,3,250,155,158,62,152,63,214,128,32,47,110,115,153,109,136,233,243,75,111,156,99,29,114, +63,12,140,228,142,9,166,98,213,143,50,90,143,251,107,103,199,110,50,135,39,35,211,130,79,190,103,23,41,207,250,44,125,176,124,200,186,142,255,0,241,243,131,249,96,251,245,165,55,0,146,69,188,96,28,244, +146,18,122,103,159,244,131,207,110,156,12,116,236,1,92,173,175,240,220,65,232,118,53,139,30,185,237,15,61,190,159,133,11,20,108,56,149,48,57,36,37,139,3,199,83,254,140,123,243,206,115,142,181,96,75,27, +16,76,39,175,103,132,250,103,10,179,31,167,28,122,142,41,25,163,60,8,100,25,207,63,187,207,94,167,50,169,192,245,36,142,157,115,200,5,73,34,94,62,116,192,61,124,157,63,145,220,228,218,14,221,48,49,200, +206,122,212,94,76,71,4,11,115,199,86,77,52,28,31,79,244,28,30,159,65,245,57,23,200,136,14,81,128,199,67,176,231,211,238,74,65,245,238,123,243,218,61,177,103,133,246,193,4,125,71,92,14,123,231,167,126, +244,1,83,201,76,225,97,136,145,233,6,153,140,115,198,126,196,65,57,231,166,63,83,72,208,144,70,32,39,24,39,108,58,112,29,73,56,255,0,66,4,224,250,117,233,140,26,181,229,65,156,136,144,158,188,9,1,60,99, +36,169,36,251,241,248,241,77,101,60,108,133,0,7,171,25,123,140,247,94,120,61,198,71,106,0,174,32,148,130,22,22,92,158,214,218,121,207,94,64,251,63,82,59,144,113,248,210,121,55,11,200,141,148,3,215,200, +211,193,231,145,210,216,30,79,127,199,156,115,96,163,156,97,33,3,211,116,217,253,34,244,255,0,62,145,155,118,198,90,11,114,196,227,143,60,130,59,117,67,215,158,131,7,249,0,32,142,237,70,239,223,114,79, +252,177,177,83,235,158,45,14,65,233,212,122,142,6,105,140,110,250,1,48,3,131,152,237,23,167,251,182,164,12,118,60,30,188,113,72,97,228,255,0,162,193,199,82,166,97,199,185,216,6,49,211,129,211,62,134,163, +48,175,123,75,66,73,198,88,206,220,115,255,0,77,7,63,151,79,126,0,28,126,211,159,153,165,28,118,123,64,8,207,175,144,58,117,60,31,229,128,77,112,196,225,165,35,61,166,179,254,144,251,250,115,223,28,83, +86,18,184,255,0,69,176,234,6,10,207,147,245,204,220,125,125,248,226,130,174,48,5,181,130,129,158,211,115,142,252,185,3,211,184,232,57,238,1,63,153,117,215,124,227,28,103,206,182,244,234,63,116,9,245,235, +192,227,24,167,7,187,36,98,123,145,140,255,0,203,196,43,200,228,224,121,103,158,152,252,176,48,51,158,204,195,172,22,195,219,7,166,51,200,105,1,193,231,4,129,232,123,10,106,202,224,225,82,221,113,208, +140,14,121,238,211,140,254,0,244,252,128,52,12,151,89,207,153,114,199,142,77,220,24,57,198,120,17,243,140,156,18,62,190,129,165,238,57,255,0,94,219,143,57,187,132,103,215,56,80,123,119,192,254,185,230, +71,60,152,225,231,159,188,70,57,24,192,89,200,4,103,56,219,207,126,132,82,101,159,56,142,50,61,203,117,28,99,155,176,63,201,160,13,33,231,16,127,215,15,80,46,226,99,219,128,120,35,3,142,158,163,36,102, +154,233,47,116,157,129,198,75,92,199,147,248,150,193,56,255,0,61,9,207,221,38,78,32,76,241,247,89,84,14,135,156,221,117,199,161,200,246,205,56,181,192,27,66,70,7,82,55,198,195,61,120,62,107,30,49,249, +230,128,44,136,229,228,8,167,35,57,255,0,143,216,113,245,192,45,142,61,253,176,41,222,92,192,231,236,247,61,184,23,48,28,143,247,140,103,56,28,244,61,234,147,27,204,100,70,155,79,25,67,24,233,211,161, +39,182,56,56,235,192,21,11,73,120,120,43,248,238,67,215,25,200,8,216,32,28,115,200,233,129,129,64,26,13,20,199,172,23,96,115,159,223,193,211,211,136,200,199,249,199,74,174,200,203,200,181,184,56,238,94, +19,245,235,106,221,123,246,63,144,170,12,46,123,23,62,187,95,167,29,63,213,140,31,95,254,184,161,22,236,156,170,190,123,228,240,123,255,0,207,22,207,110,220,245,245,160,11,14,179,18,72,179,152,131,142, +178,91,140,143,198,207,140,129,142,14,57,228,240,50,192,178,156,255,0,161,220,41,201,25,18,90,158,253,207,217,15,234,62,190,161,140,183,131,134,36,96,119,102,25,235,199,252,122,54,122,245,3,182,42,34, +46,57,220,196,115,159,245,175,248,28,27,0,123,17,193,62,252,80,5,163,12,227,165,180,160,28,100,249,182,100,231,185,199,216,79,248,103,215,154,99,9,99,235,111,114,79,180,246,131,183,253,131,251,241,158, +184,227,147,85,240,231,239,72,63,239,232,207,183,91,44,254,25,29,122,102,148,100,245,184,84,192,35,137,73,56,238,126,75,32,51,207,60,14,63,26,0,127,154,195,165,164,222,197,174,237,87,158,189,70,156,123, +127,158,245,50,220,77,140,11,102,95,76,221,195,252,255,0,178,193,207,39,7,57,205,65,177,15,31,106,69,61,255,0,121,32,206,72,35,57,180,7,60,158,127,35,232,239,42,46,247,81,117,198,119,147,142,185,28,218, +19,158,252,182,61,185,160,9,69,205,194,244,89,51,201,255,0,143,216,253,125,126,194,51,159,167,94,180,209,117,114,58,164,156,142,66,223,168,231,147,218,197,184,233,215,30,195,131,65,68,233,246,132,35,128, +8,57,231,7,142,45,128,207,57,193,192,207,81,140,212,139,28,125,68,234,61,114,192,14,156,158,97,192,35,145,237,200,244,52,0,130,238,231,156,172,234,51,222,248,113,248,139,116,24,247,227,235,222,153,246, +187,160,73,13,40,7,210,255,0,62,190,216,227,3,60,247,206,58,85,129,28,96,28,220,195,143,79,54,32,63,31,221,126,120,57,63,78,140,242,96,63,242,210,35,199,105,161,25,207,97,202,254,24,198,115,64,16,181, +237,192,3,153,177,193,255,0,143,210,9,3,32,103,243,198,6,63,74,136,223,72,9,39,237,7,142,215,142,123,1,215,122,156,115,147,158,122,231,218,240,182,132,244,104,189,64,50,68,223,65,204,128,142,220,245,235, +212,245,141,173,211,142,34,57,232,60,216,249,57,193,4,110,108,96,28,126,28,158,160,128,82,58,131,156,12,207,200,192,197,212,199,245,243,70,57,224,0,15,175,181,70,218,132,185,57,146,225,73,206,72,150,102, +199,94,239,62,222,126,131,223,158,183,204,49,244,101,137,176,120,219,58,40,231,131,146,85,187,156,156,125,114,57,33,10,66,63,229,140,61,255,0,229,230,60,227,174,120,131,61,125,241,193,231,29,64,50,90, +246,115,202,220,94,131,212,109,57,246,201,205,250,156,117,29,61,142,57,204,98,238,228,146,12,215,196,250,249,104,115,128,127,234,34,15,56,227,177,254,90,172,32,232,97,143,233,246,148,200,235,158,4,32, +142,15,76,231,36,251,85,114,45,73,59,161,65,245,188,32,14,231,150,132,175,29,176,125,104,2,131,92,204,73,30,117,209,39,254,152,196,71,215,157,64,240,79,222,233,156,116,199,6,51,36,152,230,107,161,143, +68,183,94,153,207,45,120,220,159,175,212,117,173,54,22,163,254,88,197,142,227,237,234,125,59,24,120,56,244,231,161,61,170,19,228,156,237,181,128,227,161,251,122,143,195,34,0,57,255,0,235,241,64,20,1,149, +185,47,118,217,207,104,61,15,57,23,7,145,145,211,191,215,20,5,108,225,77,210,156,15,189,246,113,159,175,239,79,56,199,67,130,127,91,77,176,114,109,34,94,65,24,212,6,7,126,134,220,245,250,243,197,35,60, +67,159,179,198,14,49,159,237,5,207,25,232,126,198,123,103,131,234,57,234,8,5,99,28,217,12,30,124,30,155,163,136,159,124,17,112,15,28,240,120,199,113,64,138,102,56,50,79,158,188,67,27,123,18,115,47,208, +254,29,49,210,97,34,182,118,34,142,219,70,164,71,4,28,0,194,215,63,67,199,76,210,52,143,131,242,0,14,58,95,74,70,71,96,86,216,103,24,252,125,199,20,1,0,180,102,234,110,24,231,147,229,34,224,122,128,178, +118,199,28,231,60,143,119,11,103,92,147,246,150,235,199,150,224,145,216,29,174,125,243,134,0,254,3,40,210,190,112,16,3,140,241,121,47,62,228,24,1,108,231,234,59,231,179,26,66,65,253,200,39,158,69,196, +172,123,255,0,118,220,30,58,255,0,58,0,151,108,120,201,73,212,224,228,148,185,25,207,92,129,32,227,131,219,143,208,64,68,67,32,37,206,114,8,202,93,145,201,228,112,249,28,131,198,105,68,236,120,42,160, +142,6,110,102,95,108,2,96,4,118,207,57,247,166,52,143,156,100,224,103,24,187,186,35,158,120,43,14,78,63,222,29,232,1,26,88,151,32,172,156,99,150,134,247,143,202,126,163,3,29,178,120,228,112,223,50,22, +4,227,112,200,0,27,109,69,191,95,51,142,253,57,30,188,138,80,79,63,43,140,116,34,226,247,61,243,209,1,235,211,190,56,168,95,102,127,128,156,99,231,150,240,156,140,231,157,163,35,145,146,112,51,154,0,60, +200,14,112,49,129,218,215,84,207,79,246,101,63,224,106,3,44,9,159,148,176,246,181,213,126,86,57,227,1,137,224,117,39,57,199,106,145,144,30,64,135,140,159,245,247,67,29,121,232,15,65,198,115,158,120,237, +81,50,66,62,252,80,18,115,199,157,117,145,235,213,241,147,215,25,28,251,208,2,52,176,54,72,132,158,50,9,181,213,19,61,79,167,215,156,243,215,140,226,152,38,133,7,250,168,198,121,249,161,213,79,60,156, +96,227,28,113,131,211,143,165,33,138,203,28,199,0,207,171,184,253,90,76,146,61,79,94,180,223,46,204,156,7,183,78,56,204,140,199,24,198,14,217,6,58,247,198,122,131,64,10,103,136,131,149,183,32,116,221, +22,160,49,211,174,81,135,168,234,79,190,122,192,236,173,247,98,129,187,141,177,222,112,56,245,128,159,94,158,217,207,105,26,218,216,229,132,214,170,59,157,242,244,237,144,178,147,211,212,14,127,26,133, +173,109,136,36,93,91,15,248,19,19,158,49,195,74,49,219,130,27,30,244,1,24,115,140,11,91,115,215,157,151,89,245,31,242,230,112,9,232,59,99,154,99,110,56,2,209,15,111,145,111,185,62,131,110,156,121,39,24, +231,212,122,84,194,206,216,143,154,123,64,15,57,100,86,232,51,128,12,221,251,19,128,121,231,61,26,108,109,59,79,98,163,174,118,64,61,249,253,249,253,72,244,38,128,33,41,42,140,155,49,236,113,120,78,61, +179,99,159,195,29,185,232,42,61,211,14,150,139,235,131,21,219,100,123,255,0,160,14,56,250,15,90,155,236,182,138,112,46,173,127,224,63,103,25,235,198,67,156,246,3,57,235,77,107,107,92,12,92,65,147,207, +45,9,57,3,128,64,61,64,57,57,39,249,208,3,85,230,231,253,22,31,92,181,189,198,51,236,62,201,158,190,221,121,207,0,131,51,12,230,27,97,233,139,89,88,158,50,78,26,196,242,7,247,136,253,121,5,173,185,225, +103,140,158,126,233,140,18,112,122,149,206,112,120,231,166,49,197,40,134,21,227,205,65,215,4,184,94,199,174,220,158,125,126,157,40,1,140,211,145,254,162,28,28,227,22,50,103,211,144,44,24,244,25,193,245, +207,34,162,43,63,57,141,15,57,255,0,143,73,136,95,166,205,44,159,199,61,120,25,29,102,242,34,32,231,203,124,14,162,78,121,245,37,189,184,224,142,153,197,48,65,10,255,0,6,210,49,247,103,84,245,57,225,191, +195,143,90,0,140,44,173,247,163,181,94,58,189,165,222,122,228,240,52,134,235,140,251,159,194,164,242,137,224,155,110,189,62,205,122,48,126,163,72,29,143,24,199,4,245,29,30,176,196,57,8,252,231,57,190, +97,156,118,1,102,92,14,220,131,245,206,77,6,56,129,249,162,102,30,166,254,124,156,142,58,72,71,126,135,211,161,160,8,252,145,208,155,85,236,63,209,46,155,255,0,66,211,23,143,95,169,207,169,119,145,131, +129,37,184,25,24,219,97,112,196,242,48,50,52,255,0,215,130,71,60,102,130,168,15,17,31,151,56,6,254,236,254,60,75,211,28,113,208,250,247,67,180,156,249,27,142,56,63,109,190,98,122,240,112,223,168,39,30, +131,60,0,72,176,19,252,113,145,233,253,157,58,158,157,62,107,32,1,232,51,234,64,245,166,155,118,94,20,140,158,120,179,114,7,30,130,200,14,157,115,142,152,60,226,159,145,255,0,60,99,0,19,195,92,234,57, +198,123,237,152,28,99,161,35,241,29,164,222,152,25,72,65,0,1,155,141,76,96,142,199,247,227,39,252,61,40,2,175,217,164,57,5,139,117,235,105,50,143,167,203,111,31,92,96,3,199,94,56,2,148,90,18,62,97,1,207, +60,199,118,50,125,198,205,191,151,29,185,169,252,196,96,126,91,83,142,8,251,70,167,158,64,36,100,77,207,108,243,205,52,4,201,59,45,240,78,78,46,181,76,245,61,196,220,3,207,191,234,0,2,11,70,92,109,91, +76,144,65,196,83,18,126,159,32,201,232,79,35,30,244,166,222,98,6,196,143,159,238,65,47,81,220,229,151,57,24,3,128,73,231,218,164,80,133,127,212,219,156,231,173,230,178,191,135,19,122,247,24,60,10,122, +128,184,196,54,88,231,150,188,214,159,142,153,3,121,201,227,177,234,48,79,83,64,20,205,189,206,112,35,92,158,114,109,101,98,61,201,51,255,0,245,189,57,160,90,222,245,81,16,61,112,109,102,94,220,231,19, +28,231,7,39,183,106,208,14,132,96,65,167,2,122,127,164,234,192,251,147,243,47,67,207,185,61,186,82,141,165,190,104,116,194,50,113,139,157,92,55,127,89,14,78,71,61,143,60,156,114,1,156,96,191,94,2,217, +158,255,0,50,92,166,73,231,254,123,116,198,56,24,61,184,166,148,188,24,221,253,154,15,7,151,186,24,63,79,55,29,125,73,36,122,14,186,101,34,99,204,54,75,158,50,46,245,101,201,246,204,163,211,185,244,199, +20,27,120,184,45,21,183,35,248,53,13,67,61,79,80,211,14,227,190,71,176,206,104,3,48,11,214,60,127,101,99,167,204,215,220,117,25,255,0,89,207,215,61,63,42,79,244,149,28,157,23,167,83,37,218,142,255,0,223, +102,231,60,1,143,199,131,157,99,109,1,25,16,64,195,32,227,237,211,231,219,254,91,6,246,245,29,50,113,154,122,219,193,222,52,92,103,165,204,204,7,111,188,39,207,56,245,160,12,112,243,31,249,107,164,47, +97,137,166,237,245,35,62,216,227,220,246,77,242,231,6,109,44,250,98,107,144,58,251,50,241,215,140,143,165,109,125,158,215,186,40,7,210,73,92,158,113,142,110,71,30,189,113,249,208,109,172,64,57,17,244, +28,17,33,244,63,243,248,49,237,235,142,58,28,128,98,103,39,45,62,144,123,28,220,92,130,9,3,131,251,225,129,192,252,251,154,122,121,24,195,220,233,89,231,24,187,186,35,130,48,73,46,91,130,127,33,154,213, +22,122,105,31,50,71,130,127,184,65,199,94,9,187,29,51,212,1,156,145,158,115,76,107,13,45,137,59,95,28,15,148,22,247,198,62,212,192,122,117,207,175,4,208,6,107,27,117,36,249,218,65,207,28,94,79,219,158, +235,237,235,235,142,5,32,146,44,227,237,26,118,51,206,46,39,56,250,225,78,123,114,20,255,0,142,135,246,126,152,185,219,231,3,220,170,144,115,223,254,91,147,207,110,69,52,218,88,169,198,233,87,156,0,99, +82,112,15,92,121,199,158,58,244,29,197,0,84,89,45,250,153,237,56,193,56,251,73,31,94,64,233,158,14,121,61,121,167,121,150,160,156,207,108,114,6,72,23,57,193,29,179,142,112,123,2,8,245,227,54,77,190,154, +185,47,36,160,246,30,75,17,158,121,24,152,125,58,17,212,99,214,51,14,155,158,39,144,14,49,254,143,39,182,71,18,31,208,1,249,100,128,53,94,211,57,243,163,60,118,55,132,18,123,0,163,4,224,244,227,191,32, +231,42,68,71,144,234,123,15,221,222,19,140,251,200,78,14,120,227,60,115,197,70,241,105,196,0,39,45,158,185,130,80,71,95,124,231,158,14,70,57,233,210,163,251,46,158,122,75,25,7,156,24,136,39,220,29,227, +62,153,39,191,57,205,0,89,81,31,57,124,113,218,222,229,189,125,193,244,28,231,175,214,157,136,142,57,115,234,126,203,33,199,208,144,112,122,103,143,161,170,162,206,208,140,172,209,40,238,193,112,121,207, +82,204,121,254,157,123,138,95,178,219,40,56,187,0,242,113,134,7,63,64,224,28,231,60,208,5,172,196,163,172,153,236,22,206,66,59,247,218,188,231,219,0,126,177,180,177,169,195,180,192,142,63,227,206,76,12, +240,49,137,208,100,250,100,99,57,170,222,68,43,147,231,169,24,239,27,28,129,198,78,95,208,12,14,192,227,216,46,97,80,51,42,145,254,234,169,56,236,1,113,250,147,199,111,80,11,0,219,176,233,43,28,119,181, +96,71,36,142,13,225,227,158,71,110,58,26,80,182,216,60,56,61,79,238,17,113,219,146,110,251,113,156,143,110,59,87,87,181,200,253,226,251,13,232,188,147,156,159,222,119,207,7,35,183,90,152,24,178,113,50, +12,14,3,77,24,3,143,121,189,57,228,98,128,30,18,220,228,135,127,115,177,61,199,107,229,56,244,24,207,167,106,79,38,15,239,18,221,183,68,153,60,231,156,223,240,7,184,235,142,61,28,8,83,159,50,38,227,175, +218,34,28,240,115,145,40,60,247,231,35,183,6,156,36,114,50,12,64,18,121,107,200,215,140,231,248,167,60,246,232,123,251,208,4,66,8,179,201,61,78,62,68,28,119,192,23,108,57,246,56,207,181,41,134,17,144, +55,130,115,207,0,125,119,125,176,14,217,192,224,114,120,230,172,249,178,46,63,227,223,24,201,63,111,143,39,30,192,245,3,39,28,140,112,58,80,111,39,3,229,144,145,223,101,220,109,145,238,74,182,7,28,255, +0,42,0,169,178,37,232,95,63,92,145,248,173,241,236,59,113,75,133,3,57,39,35,161,98,58,123,155,192,123,250,241,237,154,152,221,220,48,60,73,216,96,222,199,200,57,32,129,229,145,201,227,38,154,46,174,58, +129,142,51,255,0,31,240,47,110,120,16,117,250,114,104,2,32,142,121,88,129,199,113,41,227,129,199,252,126,48,25,233,200,61,135,99,79,49,204,7,16,57,7,31,242,208,19,211,32,255,0,175,239,219,7,158,231,189, +73,246,137,136,229,143,57,227,237,241,16,49,201,192,17,142,227,39,43,142,59,112,105,119,183,83,42,123,131,120,173,244,251,177,129,236,9,28,103,220,228,2,45,146,227,62,76,185,199,31,188,35,24,61,56,185, +224,231,57,250,211,7,218,65,226,210,126,135,159,57,78,71,25,3,55,12,7,94,115,212,100,159,90,153,165,199,87,66,122,17,231,198,123,119,221,6,15,80,57,60,119,168,204,224,30,118,1,199,241,66,115,215,254,153, +142,153,234,59,126,38,128,16,61,192,198,108,174,79,28,145,113,24,60,241,211,207,0,123,241,248,245,162,144,200,153,4,180,74,122,100,181,185,32,0,115,199,148,122,28,117,231,174,120,162,128,60,171,49,175, +100,199,28,132,179,31,167,149,147,236,122,99,191,164,200,241,1,242,224,122,149,88,201,232,120,59,81,70,62,156,159,229,158,4,39,7,8,121,36,98,70,39,168,227,2,236,231,145,156,103,63,206,165,88,161,113,180, +166,127,218,83,49,63,146,223,99,30,188,126,28,114,1,166,147,12,124,175,143,95,145,122,126,42,123,240,115,200,231,165,59,207,207,87,110,135,7,42,1,227,28,18,57,29,120,28,228,246,237,65,108,237,207,240, +99,211,230,156,30,49,217,175,9,235,142,160,113,223,39,20,227,101,111,198,19,32,142,129,156,156,254,23,125,179,207,29,250,138,0,209,89,246,253,217,91,28,31,149,137,193,252,176,127,1,131,239,86,146,240, +174,49,59,142,132,142,50,121,200,29,123,15,228,107,29,108,237,199,240,177,193,238,36,200,233,211,55,71,183,30,132,31,206,84,182,132,16,66,131,158,219,75,127,237,98,125,56,200,247,30,160,27,107,168,48, +201,251,75,253,12,143,131,142,192,123,143,229,214,172,174,167,198,60,236,159,77,210,251,99,164,184,39,215,229,252,14,78,113,22,36,24,0,30,58,229,120,201,61,71,239,79,215,142,153,197,72,4,64,141,202,185, +244,242,83,223,63,49,113,254,25,56,28,80,6,234,223,103,146,224,46,114,114,215,25,62,157,28,96,122,128,113,244,226,172,37,240,237,32,31,240,43,147,158,220,3,147,200,35,215,245,34,176,162,120,64,3,202,36, +250,132,135,32,247,227,207,239,248,15,108,26,176,36,129,122,69,33,238,7,149,24,25,233,146,69,210,147,234,59,123,14,164,3,119,237,188,0,37,227,140,140,76,78,57,192,249,129,199,99,208,246,28,103,34,100, +186,87,28,184,92,156,28,164,164,96,15,100,224,250,243,236,115,214,176,22,230,60,253,210,48,70,50,136,14,120,255,0,167,210,0,199,229,215,7,53,56,212,8,224,42,140,99,24,8,127,12,11,174,164,227,166,112,51, +220,144,0,58,5,48,156,126,251,146,120,202,74,1,30,217,76,142,228,103,142,106,210,121,56,193,148,227,208,9,134,6,123,102,63,207,24,235,248,215,59,21,246,79,35,61,65,1,113,233,212,137,88,123,113,145,158, +245,113,47,20,240,85,71,76,110,96,48,58,255,0,9,97,248,3,145,206,120,52,1,178,176,196,115,181,216,245,198,13,222,74,241,158,137,131,207,166,8,231,3,189,74,176,34,140,237,115,158,249,184,36,15,109,196, +31,255,0,85,100,45,218,103,149,140,147,198,21,206,64,244,3,122,242,120,232,50,49,239,138,149,46,147,35,17,168,29,212,185,57,252,51,144,14,9,250,140,251,208,6,202,68,184,249,98,187,201,244,50,129,212,14, +234,122,100,231,158,223,149,133,71,28,17,120,14,56,249,159,156,123,19,140,99,7,133,36,245,199,21,140,183,81,14,85,8,233,156,51,0,115,192,251,160,145,142,72,237,147,235,82,125,173,121,194,48,252,103,201, +247,226,54,247,199,56,235,64,27,209,171,1,247,110,51,199,7,97,39,29,7,204,20,251,103,38,172,47,155,218,9,177,140,245,139,3,169,231,46,48,62,156,231,183,122,192,91,180,29,81,152,117,44,76,228,251,142,98, +239,212,241,140,224,246,197,90,75,168,72,255,0,80,237,239,182,76,3,147,140,226,223,61,61,184,192,199,65,64,27,224,201,140,108,116,236,50,209,158,63,9,48,189,49,207,39,29,120,169,21,165,200,11,27,183,111, +224,108,227,156,231,205,4,30,131,35,28,247,205,96,137,163,126,124,137,0,206,14,35,144,175,235,111,130,73,199,191,3,160,39,51,249,145,240,86,57,215,128,50,35,110,7,184,48,113,207,28,3,215,129,64,27,129, +174,112,113,13,209,199,36,44,80,183,30,185,55,39,245,199,160,198,114,94,178,93,170,159,221,92,244,206,60,155,127,175,59,167,32,96,254,93,123,156,98,36,200,9,202,72,125,63,114,221,241,201,6,223,191,0,142, +231,0,154,157,100,92,130,35,186,207,92,11,80,195,24,246,181,56,60,231,190,113,199,122,0,215,19,72,0,221,28,192,158,198,11,98,121,35,28,2,196,116,237,211,145,159,87,239,103,25,242,152,245,39,54,240,41, +239,147,192,207,229,198,15,161,231,48,72,7,5,46,143,183,217,31,36,103,191,250,32,29,249,227,219,189,2,80,120,242,110,9,200,255,0,151,55,252,190,91,113,235,223,24,199,62,132,3,72,48,3,129,143,95,244,91, +118,247,199,49,147,237,158,71,244,112,1,142,64,112,112,114,22,206,33,192,231,32,5,61,191,51,250,208,82,164,156,67,42,129,215,54,155,79,254,61,6,61,189,249,29,14,106,76,174,126,84,43,219,152,16,48,35,3, +36,249,103,142,217,61,115,233,64,23,132,113,158,175,40,245,205,156,64,114,61,124,176,125,50,50,114,59,154,67,2,228,109,146,95,162,219,40,254,113,158,126,157,56,170,121,63,221,36,127,181,23,78,128,255, +0,203,48,62,158,128,14,123,212,129,226,24,220,164,158,49,242,47,4,122,112,50,63,12,228,208,5,165,136,245,223,40,199,80,98,3,211,213,9,252,135,175,76,212,138,89,79,18,28,3,213,144,15,94,73,216,114,123, +243,207,31,81,85,132,208,0,63,116,14,58,134,82,126,153,27,120,253,113,193,227,6,164,18,194,199,136,99,24,224,126,236,158,216,254,44,99,159,235,142,156,0,92,18,176,28,201,22,49,200,242,203,156,254,17,144, +122,96,16,70,61,122,97,235,52,128,252,178,175,182,35,78,221,240,87,60,253,7,210,169,44,209,166,9,17,115,129,134,131,142,190,238,7,175,60,119,199,165,72,39,136,127,4,7,29,202,1,245,24,105,113,140,159,65, +205,0,95,73,238,65,255,0,92,227,28,124,136,27,183,57,219,253,51,232,7,56,51,173,204,199,131,112,199,212,21,101,192,247,32,142,49,201,206,123,243,222,179,86,226,51,130,60,129,158,14,212,76,254,70,225,71, +97,206,122,123,85,145,114,7,0,66,120,228,42,70,73,192,233,129,114,59,117,25,24,198,15,56,160,13,21,153,135,62,112,193,206,115,36,153,207,79,94,190,184,57,233,237,83,45,210,140,19,113,31,175,204,210,147, +199,253,180,3,25,239,142,253,59,86,80,186,94,208,70,64,60,126,230,63,204,145,114,112,71,124,224,244,62,213,47,219,8,255,0,150,81,1,142,190,64,36,17,142,226,235,24,0,245,245,207,57,52,1,164,47,99,24,253, +252,4,119,7,156,245,234,73,57,237,238,56,171,43,121,9,3,152,155,145,140,70,167,245,193,56,193,56,199,94,153,244,196,91,207,112,167,156,98,17,140,113,206,60,246,200,39,219,252,11,254,208,95,157,224,99, +210,33,199,29,78,233,129,30,220,144,79,211,128,13,131,119,3,14,86,47,83,242,47,30,196,109,231,175,78,157,120,199,52,130,226,3,200,84,35,182,21,49,215,32,113,7,76,122,231,184,30,181,155,29,193,207,19,200, +195,208,40,81,192,227,3,237,3,29,58,254,153,21,47,218,208,240,210,205,212,231,231,219,140,250,131,116,122,115,156,115,219,158,224,26,9,115,8,255,0,150,81,227,221,115,198,7,95,220,254,36,30,62,153,163, +237,54,255,0,243,202,60,30,163,96,252,185,139,252,251,156,214,127,159,22,112,110,36,92,99,248,149,176,121,232,62,208,64,35,142,121,244,245,167,150,140,242,110,92,143,83,242,240,125,127,125,130,7,39,215, +30,189,192,44,253,162,223,248,109,227,124,250,5,227,25,239,229,174,122,250,113,199,185,167,155,152,177,159,178,67,219,178,15,204,24,249,250,238,28,224,118,197,80,221,109,156,155,162,58,1,243,159,175,107, +133,25,198,6,64,207,29,79,74,85,107,83,199,219,20,122,98,86,7,61,242,5,199,83,158,51,147,192,193,160,11,70,229,7,34,218,220,30,113,133,136,243,158,159,52,100,227,184,224,251,119,160,92,6,255,0,150,16, +140,240,112,137,131,145,156,156,70,48,121,233,159,199,214,182,109,51,131,122,231,29,54,202,252,127,228,102,61,255,0,28,241,82,131,107,140,139,183,32,12,242,242,30,121,234,203,50,250,117,206,71,60,244, +160,7,52,234,63,129,1,232,49,8,239,223,230,35,143,92,227,233,210,132,157,91,175,150,15,95,245,81,145,250,158,71,231,250,138,3,91,14,124,210,65,247,157,187,99,254,127,51,207,160,252,115,72,211,89,128,50, +35,127,67,33,159,159,65,205,209,231,212,131,249,208,4,166,226,53,231,124,89,234,115,4,96,125,67,103,28,115,249,243,142,104,243,34,96,73,104,177,223,17,198,58,140,116,206,70,57,36,251,131,154,172,38,181, +108,237,130,19,143,246,166,192,235,211,253,32,143,207,175,29,104,50,198,63,229,214,18,51,211,247,184,207,166,68,164,122,224,158,184,237,206,64,38,13,109,156,31,33,179,156,228,46,6,114,79,10,199,145,199, +124,103,30,212,240,214,71,254,90,88,175,61,88,198,63,244,38,246,232,125,61,249,169,230,161,198,108,227,207,80,67,205,249,252,215,9,232,59,250,140,156,96,134,81,146,126,192,58,28,16,211,145,211,176,89, +223,60,246,198,123,30,121,160,11,166,75,33,143,244,139,19,143,120,15,161,3,150,29,120,224,247,235,64,107,50,63,215,88,100,247,34,46,120,231,27,95,215,175,61,251,213,3,32,228,155,50,61,243,56,236,121,57, +145,79,110,135,159,96,51,72,37,140,245,182,3,28,225,190,209,207,92,242,92,41,231,60,228,231,218,128,47,159,176,231,59,236,78,126,246,25,20,103,208,129,32,207,215,167,233,65,75,34,7,207,96,123,252,211, +109,207,97,192,147,30,160,255,0,142,107,60,203,0,228,193,24,231,175,155,34,128,71,28,102,70,199,211,25,235,212,230,144,207,14,1,40,171,223,34,96,160,244,238,234,114,59,3,156,227,232,40,3,75,203,177,35, +254,92,8,239,137,36,112,78,59,224,183,57,239,147,129,142,249,168,136,176,12,0,54,71,130,63,214,200,184,199,56,219,180,30,127,92,145,205,83,243,80,143,149,144,3,211,247,240,231,183,190,121,28,1,211,129, +158,248,82,64,207,250,67,47,183,155,110,121,7,168,220,63,14,71,7,223,6,128,45,31,236,241,193,123,117,224,112,178,76,78,113,219,129,159,111,203,232,229,251,30,0,89,225,3,254,186,56,250,117,7,28,251,158, +254,181,75,204,140,253,235,198,228,113,251,219,112,1,206,58,229,114,120,29,59,243,147,198,87,116,29,77,244,160,140,156,137,109,201,29,49,129,184,254,93,79,62,148,1,109,141,184,57,91,136,176,58,225,216, +158,252,240,135,131,207,79,79,194,163,118,135,131,230,143,78,26,92,140,122,98,47,240,231,145,142,208,111,182,83,205,253,207,225,228,96,231,184,202,99,191,60,96,228,231,52,241,45,177,24,251,125,199,67, +252,86,224,250,96,128,128,115,238,48,115,129,215,128,0,203,8,255,0,150,206,122,240,4,228,125,51,228,176,239,234,113,215,0,98,133,184,132,112,12,199,175,35,204,60,253,60,145,252,184,231,241,107,8,177,197, +245,222,79,78,45,207,191,27,163,94,220,227,28,99,169,237,31,201,222,234,237,186,96,236,182,239,158,64,242,193,247,235,131,158,192,208,4,205,117,18,156,129,55,253,240,48,114,115,159,154,18,70,9,4,99,167, +124,116,166,181,202,30,139,47,78,234,163,223,248,96,3,56,231,131,211,60,10,131,100,36,131,246,139,178,216,39,148,180,81,199,182,236,145,215,140,122,227,158,105,26,56,1,4,181,195,19,208,172,118,192,140, +17,140,112,73,233,199,56,247,28,80,4,230,227,61,18,79,248,10,171,158,50,56,2,48,15,78,185,233,218,144,76,1,199,147,112,72,239,229,68,1,244,229,144,254,57,31,206,170,98,35,159,222,94,116,199,48,195,147, +219,141,169,215,175,124,231,156,28,211,74,192,63,138,245,142,57,220,170,0,239,131,144,185,199,167,231,200,20,1,121,167,192,249,173,101,61,113,152,162,99,220,116,88,199,31,135,53,17,156,18,7,217,38,193, +61,62,202,8,227,223,203,3,167,28,127,66,77,93,139,198,12,231,217,196,103,175,60,239,233,199,7,7,208,102,152,98,64,121,138,83,192,231,22,227,146,7,39,231,25,63,135,208,231,154,0,188,92,18,15,217,39,28, +245,54,160,117,199,32,236,56,234,122,16,78,57,52,155,198,112,45,174,15,56,207,144,252,246,224,14,115,212,246,250,103,129,157,44,106,64,204,50,96,99,175,217,200,207,126,178,241,245,198,48,78,0,198,12,106, +144,168,57,133,201,61,179,104,163,142,191,197,158,51,215,252,128,13,79,48,128,64,134,225,61,63,209,174,27,28,231,146,165,128,39,28,1,220,123,210,9,28,158,124,239,160,181,190,228,243,215,0,227,166,79,78, +132,123,214,97,142,51,202,70,202,192,16,73,123,99,143,192,78,153,199,62,167,233,156,21,54,238,121,82,27,254,5,17,250,228,36,231,39,161,25,239,235,64,26,102,103,94,64,184,39,35,254,93,175,64,3,167,66,141, +208,28,103,29,7,106,97,184,144,140,20,184,25,29,85,47,1,207,167,250,159,195,208,245,61,235,52,91,220,103,27,88,14,188,28,14,157,148,57,207,126,59,156,227,185,164,54,215,31,221,39,158,155,185,239,200,6, +65,212,231,156,102,128,52,252,233,113,128,46,71,67,141,183,120,252,206,209,199,166,79,78,252,84,109,44,192,255,0,172,184,94,70,126,91,193,159,167,239,48,51,239,245,30,167,48,193,116,113,136,198,48,62, +246,194,120,4,99,230,144,254,120,239,248,134,152,38,28,178,70,71,39,229,104,242,72,231,176,206,7,25,28,145,211,142,40,3,83,204,184,4,16,102,108,240,51,37,202,245,7,161,47,192,239,158,15,211,154,113,158, +97,222,80,65,60,11,139,188,241,233,198,79,79,195,241,53,136,86,85,32,132,35,254,218,0,58,158,159,33,63,175,28,30,244,129,101,200,39,104,198,113,151,64,115,223,150,81,193,24,207,76,156,250,208,6,217,154, +228,140,40,156,14,62,244,243,12,244,56,5,212,245,244,228,245,0,212,100,220,183,39,207,201,39,3,206,144,122,96,229,160,224,15,82,192,254,85,148,86,124,100,8,248,28,254,253,58,117,200,27,129,39,234,49,198, +6,105,131,205,192,221,24,60,231,253,104,57,239,254,208,199,62,221,8,246,160,13,93,151,29,163,156,231,140,139,149,3,0,123,199,208,227,212,118,237,80,176,185,5,129,138,113,129,222,100,97,244,35,202,110, +164,119,63,225,84,75,1,255,0,46,210,18,123,139,128,163,167,92,20,236,58,243,249,118,64,98,110,126,207,32,227,254,123,161,231,158,159,42,231,62,188,241,140,10,0,183,229,205,220,76,9,237,185,58,243,129, +157,153,231,233,76,41,47,241,68,231,60,99,42,61,201,200,137,134,65,235,193,199,64,56,168,130,219,159,189,111,39,76,140,202,135,167,126,164,156,115,219,29,120,230,156,86,215,32,181,188,135,28,143,223,1, +255,0,179,47,215,57,244,233,216,1,133,36,7,132,39,169,31,56,227,240,251,46,211,128,56,207,83,219,156,208,81,198,9,138,112,15,66,172,163,30,249,251,38,15,97,237,248,212,155,236,192,230,214,228,113,198, +38,39,63,148,235,143,203,220,113,76,47,106,57,91,57,193,247,153,136,61,177,133,184,224,247,60,244,227,140,208,4,70,57,88,157,130,224,245,227,40,72,238,122,89,28,31,231,223,210,129,111,114,221,60,220,117, +219,133,60,15,95,244,22,35,212,224,255,0,65,86,86,72,113,255,0,30,83,116,234,179,73,158,190,158,107,31,204,28,14,56,163,205,139,189,157,200,245,249,230,63,151,204,61,187,127,141,0,64,32,185,94,161,192, +224,96,237,94,222,246,92,116,228,123,244,244,105,142,227,24,14,7,81,243,74,170,0,193,237,246,28,244,231,174,72,224,230,172,153,163,199,22,115,3,142,50,243,114,126,160,15,231,216,242,105,162,224,28,1,103, +40,198,65,45,36,231,161,29,178,72,199,112,9,236,71,173,0,85,17,92,18,65,117,97,156,12,78,195,242,34,192,14,120,254,117,34,219,205,221,148,19,199,23,206,48,56,244,179,28,28,156,100,250,228,250,202,110, +217,127,229,209,142,61,94,96,7,215,112,227,220,227,61,63,8,218,249,187,90,199,143,247,164,39,31,80,1,61,6,0,233,216,80,2,27,118,7,6,117,7,211,237,243,119,246,22,184,200,231,167,57,200,206,122,40,183,111, +249,237,19,18,113,143,183,220,140,99,212,152,0,200,7,28,140,30,122,84,98,241,201,25,179,79,197,165,231,156,241,149,61,176,58,243,211,222,148,93,177,57,54,177,147,215,25,118,246,231,10,61,7,39,128,71,126, +5,0,73,246,114,1,38,72,179,207,252,196,238,136,231,24,4,121,65,125,48,48,49,159,198,141,128,12,51,67,143,251,8,93,12,117,232,91,104,39,223,158,222,249,85,188,113,210,24,151,182,12,115,183,67,142,216,3, +243,224,140,142,57,169,77,238,7,41,30,79,80,35,187,81,207,208,144,7,168,4,143,94,51,64,21,152,194,6,11,126,11,170,202,14,123,112,210,134,200,250,140,113,233,195,124,235,84,36,25,36,228,30,6,168,237,193, +56,61,100,32,122,118,233,143,122,186,183,196,143,149,98,29,121,100,190,250,156,5,110,50,65,28,103,158,79,61,81,181,54,25,30,92,71,0,112,35,190,207,94,164,238,82,1,245,233,140,227,165,0,81,223,111,146, +68,146,145,215,3,84,144,17,156,115,133,184,29,56,244,7,140,114,120,120,158,13,191,235,103,31,46,48,117,73,112,125,120,51,19,129,140,116,244,57,57,197,92,58,171,140,126,237,70,56,255,0,81,122,199,160,36, +127,173,4,231,216,231,61,9,192,168,155,84,45,207,144,8,231,4,65,168,130,78,71,92,92,113,200,24,199,35,168,28,80,5,86,146,216,140,25,39,98,6,114,53,25,142,61,143,239,79,66,113,211,61,122,98,163,15,109, +198,4,237,129,208,95,72,78,120,228,15,51,159,160,252,58,154,156,234,109,200,251,44,164,30,160,69,169,129,206,48,114,215,29,49,219,4,99,166,8,166,141,79,56,2,214,95,65,152,175,251,103,56,221,49,60,119, +206,59,123,80,4,69,237,241,202,221,130,58,255,0,164,6,28,244,201,121,24,227,234,51,142,185,206,41,153,182,234,94,235,32,241,204,100,113,211,158,71,175,28,125,71,119,157,70,108,228,90,202,122,224,249,119, +249,227,166,127,122,72,0,123,30,248,39,20,211,125,112,115,182,213,200,25,60,165,247,225,203,6,3,191,191,185,236,1,17,242,122,7,156,231,32,96,39,215,144,23,31,159,242,25,9,178,60,18,12,205,219,13,18,183, +168,224,5,36,158,195,7,25,28,30,41,143,115,114,228,3,101,33,28,1,133,155,28,255,0,191,24,252,122,3,158,79,90,99,77,46,70,108,36,224,103,152,88,31,110,118,227,183,61,250,230,128,28,209,163,143,186,252, +156,255,0,199,186,174,14,0,7,38,62,190,132,228,118,60,84,98,4,25,27,92,140,127,207,40,51,193,29,67,64,71,94,48,79,233,145,81,150,103,57,107,25,135,166,33,7,142,125,241,142,157,6,114,49,73,133,60,27,39, +60,240,126,206,7,174,115,128,51,236,50,121,57,160,9,140,10,71,9,33,228,255,0,203,27,81,249,19,111,249,16,15,177,228,98,35,110,195,27,85,192,31,222,138,211,167,94,159,101,255,0,235,129,147,197,51,201,25, +57,177,101,4,241,148,28,245,61,192,206,61,179,248,84,130,0,71,252,123,21,25,233,129,145,239,140,15,175,3,174,51,199,52,0,121,114,128,49,187,142,64,22,246,172,64,199,80,5,177,60,243,211,191,110,113,78, +34,228,1,134,110,196,3,5,170,156,14,49,255,0,30,69,177,223,7,140,142,113,201,160,91,176,229,109,247,17,131,147,177,113,220,112,92,115,156,2,112,1,246,224,128,160,31,126,0,15,99,251,162,114,49,199,250, +194,113,159,110,58,96,99,128,6,102,251,146,24,246,231,48,15,229,108,160,112,61,135,212,231,44,95,237,12,156,48,201,31,196,97,3,61,192,34,50,1,206,49,206,6,59,28,226,83,28,67,134,128,31,112,176,117,206, +56,204,202,70,121,239,211,175,32,97,129,34,39,2,14,6,72,24,143,56,246,197,193,233,211,35,167,56,226,128,16,13,71,39,24,92,103,159,58,50,188,243,208,64,216,207,177,29,58,118,44,41,169,158,67,198,7,25,30, +98,30,135,25,192,129,78,121,61,125,125,170,64,160,228,8,163,30,163,203,110,253,7,203,122,50,58,115,129,248,244,160,174,62,244,113,231,140,110,133,248,224,245,197,235,96,227,7,185,246,227,144,8,138,106, +125,124,200,151,168,200,216,72,231,191,238,0,247,56,239,207,213,140,186,159,79,180,194,190,164,40,244,255,0,174,71,62,164,14,158,148,246,98,51,136,237,215,24,25,17,48,237,220,27,209,235,193,57,205,68, +100,235,255,0,30,185,245,17,115,158,253,111,87,233,205,0,51,58,128,56,55,113,147,208,19,22,79,28,127,207,185,227,211,29,122,1,72,205,168,246,186,67,200,199,238,92,146,115,199,6,220,96,140,255,0,158,180, +25,129,7,34,31,167,217,139,117,199,173,247,56,192,237,219,165,68,211,146,9,255,0,69,233,144,77,171,30,195,140,11,223,204,12,30,248,29,40,0,97,168,54,55,78,141,199,63,186,155,61,57,206,35,31,136,198,56, +166,145,116,191,121,208,130,114,74,195,112,122,116,198,33,227,3,191,81,156,154,140,202,217,200,54,185,60,103,236,210,131,198,0,56,91,220,15,126,220,241,235,77,51,203,156,19,106,58,15,245,55,3,156,14,126, +91,240,123,254,36,243,138,0,148,181,198,62,246,70,63,231,214,96,71,231,107,142,192,245,254,84,193,156,2,100,45,199,42,108,217,190,188,253,157,120,25,233,156,12,119,224,83,60,217,128,63,53,183,78,161,46, +212,3,248,234,36,28,250,224,115,244,168,154,121,201,56,146,223,234,173,50,241,142,128,61,251,251,99,129,156,14,70,14,64,44,6,94,140,95,4,14,35,180,96,167,56,255,0,166,35,24,30,220,244,233,205,35,58,241, +128,231,0,14,45,101,7,234,113,111,146,71,65,128,223,74,172,46,174,6,213,47,9,224,224,7,96,71,191,252,125,112,126,157,113,236,114,125,166,224,255,0,12,68,158,132,202,71,92,122,95,41,193,233,192,253,40, +2,195,19,198,45,230,63,246,237,112,1,207,4,28,91,115,252,199,7,189,52,22,63,242,231,38,0,239,109,112,9,227,140,238,181,207,99,220,115,199,110,107,249,247,64,156,5,3,168,43,59,16,121,207,39,237,135,249, +126,100,230,144,181,211,242,29,6,15,39,237,8,57,207,57,13,116,50,125,115,223,245,0,176,95,28,53,163,142,188,139,105,59,129,212,152,73,199,96,49,215,145,140,211,124,193,187,155,103,24,28,127,163,19,215, +212,152,24,123,231,142,188,14,5,86,38,224,112,101,94,0,0,139,152,191,12,1,120,199,240,192,28,30,41,224,187,125,233,241,142,198,230,62,125,176,102,61,49,208,31,167,108,0,79,230,103,24,143,97,56,255,0,151, +120,250,251,230,223,183,29,71,24,29,241,77,44,228,140,163,16,56,24,181,132,227,168,4,126,227,29,184,200,234,15,173,48,34,255,0,20,174,113,233,60,56,57,206,8,30,105,201,231,156,116,247,164,101,227,2,73, +80,227,0,137,45,8,201,199,103,102,39,142,131,61,57,201,60,80,4,164,96,19,181,198,125,45,144,96,241,158,150,173,129,244,0,26,140,199,33,233,51,12,142,141,0,11,198,59,139,34,51,158,7,61,128,233,77,17,30, +210,202,125,9,54,24,61,176,48,228,159,203,158,15,0,210,50,145,128,36,112,50,115,251,203,101,250,112,37,3,140,244,28,80,4,170,146,142,68,167,30,130,18,58,142,156,217,243,158,163,4,140,251,212,129,166,4, +98,99,232,51,0,97,248,15,33,123,113,208,103,29,137,230,129,221,209,102,145,127,218,19,90,28,19,143,89,143,76,158,131,29,207,35,36,80,192,156,222,74,61,204,214,43,207,99,159,56,28,28,245,63,204,80,6,152, +243,186,125,161,135,83,143,178,195,245,206,26,37,239,245,199,56,238,40,217,114,192,98,239,30,159,232,241,112,59,244,0,243,140,231,184,235,84,145,182,242,110,199,29,127,210,108,137,199,215,205,35,61,199, +83,83,121,204,49,182,125,195,168,38,107,66,79,0,231,229,12,0,61,51,144,61,15,67,64,22,254,203,119,212,222,227,25,193,242,20,12,123,144,141,128,7,211,142,180,198,182,191,56,2,249,138,250,44,25,32,118,254, +13,164,15,195,24,233,212,212,95,104,156,114,28,30,7,38,91,114,192,117,24,218,217,3,242,250,83,90,238,224,240,10,127,192,167,135,175,124,169,94,120,227,57,206,50,58,10,0,151,236,151,132,16,47,37,61,200, +54,237,130,113,207,36,109,200,207,39,39,211,156,211,5,165,226,255,0,203,195,247,3,22,255,0,134,7,32,15,240,239,131,154,111,218,238,136,249,165,137,79,24,6,233,49,248,128,59,159,175,226,115,148,251,93, +214,14,26,220,142,231,237,143,193,198,115,181,99,61,59,114,123,250,240,0,255,0,179,94,169,201,153,216,123,193,24,28,99,25,37,191,66,73,252,169,60,155,194,49,246,128,128,142,246,241,126,28,121,131,230, +233,142,159,74,96,187,149,137,13,229,103,0,113,57,114,122,127,121,65,239,245,35,183,90,145,89,241,147,229,224,156,241,33,61,207,28,68,216,250,12,140,99,156,230,128,24,182,87,68,243,114,196,3,208,91,166, +57,235,247,92,254,28,1,145,200,233,133,107,27,156,113,35,158,114,51,26,231,35,215,169,207,110,79,210,165,243,19,31,234,145,152,14,187,230,247,244,128,255,0,129,244,29,226,56,7,2,213,9,246,23,45,158,185, +201,251,41,250,241,236,64,52,0,198,176,185,60,51,74,199,61,68,79,142,189,120,82,123,241,211,63,76,138,97,211,159,185,159,60,117,141,251,227,60,5,24,250,250,117,227,164,132,54,48,108,213,65,254,32,47,70, +122,99,159,179,17,198,70,48,7,215,173,48,195,158,126,206,202,79,32,169,187,94,58,157,164,219,142,216,57,244,235,215,20,0,131,77,92,228,197,49,32,240,124,153,8,39,144,113,150,3,185,62,189,126,148,255,0, +236,245,57,31,102,151,28,231,116,46,6,58,231,238,156,28,113,129,145,223,169,166,139,89,9,200,142,64,8,31,197,57,57,39,3,147,26,228,127,250,179,211,46,242,29,127,229,148,135,30,162,83,252,215,7,233,254, +7,0,14,251,2,129,196,7,160,60,7,24,28,156,127,170,201,35,223,175,32,245,2,162,22,0,159,245,39,191,57,147,60,145,215,16,19,158,157,73,254,66,164,195,169,249,173,228,82,184,7,42,216,233,211,147,192,61,7, +127,113,206,20,9,14,113,18,140,228,124,204,71,110,185,222,63,60,103,218,128,26,116,245,234,96,144,143,68,105,6,9,31,245,235,237,211,191,174,105,62,196,20,0,44,174,8,239,147,51,103,215,165,186,227,190, +70,0,227,32,154,82,37,25,31,187,3,254,186,178,140,231,167,250,224,127,80,78,61,57,161,99,157,185,13,17,7,214,114,163,240,205,216,62,189,49,211,191,52,0,211,104,185,37,172,230,235,255,0,61,46,9,3,62,209, +14,128,116,200,199,78,180,27,107,110,246,146,228,117,230,227,156,14,50,74,175,228,9,30,184,201,171,10,151,0,96,60,96,145,206,219,148,228,2,79,241,94,14,159,135,126,122,2,165,110,27,254,91,14,252,52,241, +17,248,98,244,244,61,243,142,157,104,2,183,145,106,6,69,164,185,207,32,155,131,156,115,222,34,48,113,208,177,207,61,56,202,172,80,140,226,210,69,244,195,92,126,132,40,250,231,29,127,75,59,110,20,127,174, +65,211,32,203,30,49,239,254,155,207,24,198,65,232,0,239,147,247,131,143,50,19,215,161,94,125,78,225,116,71,65,200,25,39,30,226,128,42,180,105,200,251,59,131,144,73,51,95,169,252,48,128,1,198,61,120,224, +117,164,216,184,33,99,97,156,144,76,218,128,35,167,77,160,49,244,57,192,250,244,54,255,0,120,78,55,64,56,235,142,8,227,184,185,28,247,235,201,192,29,169,198,57,155,145,52,7,3,160,207,81,156,145,139,146, +56,235,215,142,244,1,81,99,151,208,30,159,242,219,83,3,143,125,203,159,124,228,19,158,185,201,144,164,132,96,168,206,8,39,206,212,192,252,91,237,25,232,61,8,25,226,164,48,203,211,204,0,245,249,23,160, +207,94,103,60,241,219,158,192,122,160,142,112,120,145,207,24,229,87,7,175,102,118,227,28,115,211,158,51,64,16,152,164,35,24,132,100,116,51,106,57,236,71,38,111,79,99,158,114,56,205,51,201,144,99,47,0, +234,115,186,245,249,235,140,153,50,15,65,142,48,121,232,50,39,100,186,0,255,0,172,206,120,109,177,1,199,76,29,135,129,199,124,158,248,166,98,239,60,52,217,231,186,99,158,128,17,24,199,25,231,175,78,252, +208,5,115,12,172,114,179,90,131,232,207,118,167,62,228,204,126,135,140,251,17,149,167,172,55,3,0,220,216,241,216,73,119,147,128,78,65,45,201,247,206,57,35,29,112,239,46,252,19,137,24,0,115,204,172,15, +25,199,247,120,28,117,233,233,232,194,47,73,193,103,99,147,143,222,175,31,76,231,35,166,78,51,211,143,80,0,165,210,240,183,118,120,28,255,0,173,186,0,99,144,62,119,32,228,3,237,232,41,170,215,125,239, +44,178,122,5,184,98,7,253,244,87,60,142,248,227,235,72,126,220,6,1,148,14,122,77,24,25,62,217,0,158,255,0,203,217,132,94,158,12,183,30,193,110,20,14,127,237,166,6,48,61,71,225,64,22,191,210,136,56,186, +180,192,198,72,184,92,250,244,103,235,219,35,143,195,38,163,111,180,140,111,150,221,184,235,231,199,156,12,14,113,43,96,244,25,253,49,154,170,86,252,147,151,186,32,131,214,238,30,253,14,75,247,235,212, +245,231,208,200,144,94,228,147,231,119,56,55,138,51,140,231,128,205,142,57,224,140,246,237,64,8,198,66,65,243,226,64,61,37,56,198,58,112,220,241,215,29,125,185,162,172,11,123,179,142,221,7,252,125,169, +62,132,228,200,15,215,143,196,119,40,3,196,195,19,210,23,35,217,46,78,123,99,168,207,63,174,56,56,226,116,121,1,194,192,202,79,76,199,56,57,239,255,0,45,0,207,208,30,64,29,42,186,205,0,192,51,66,65,7, +33,100,190,193,237,218,34,14,56,247,62,212,255,0,180,68,6,18,104,49,147,159,154,252,1,207,253,114,31,166,79,4,115,138,0,188,130,235,35,49,198,189,8,59,100,207,190,49,39,24,199,70,63,204,213,152,227,184, +44,6,64,231,36,229,151,241,230,97,212,119,227,147,248,86,80,184,143,254,123,219,158,71,25,190,231,29,58,168,61,128,245,238,7,115,42,220,199,255,0,61,173,70,56,233,122,72,35,240,206,127,47,247,187,80,6, +242,219,222,99,34,85,193,231,230,184,41,249,98,232,231,167,92,126,61,204,139,5,230,115,190,38,227,28,221,49,236,7,32,220,127,79,169,201,24,194,23,145,12,145,113,8,199,24,16,221,176,0,115,252,69,120,206, +63,151,57,167,139,248,138,231,237,145,28,2,113,246,43,178,61,58,146,70,58,250,244,224,117,20,1,190,182,247,124,110,242,240,57,207,154,6,79,212,206,6,59,113,158,0,230,167,84,185,92,101,148,12,243,182,226, +53,7,7,56,31,233,153,199,190,1,244,231,36,115,139,125,31,252,253,70,48,122,11,25,49,235,200,42,8,234,51,219,189,76,53,24,193,226,226,12,129,193,251,3,131,211,177,36,117,245,39,56,230,128,58,32,147,28, +124,249,235,143,244,200,198,58,19,199,218,192,252,15,175,61,169,68,15,156,229,113,143,227,187,143,29,71,97,114,126,188,147,216,159,124,68,212,83,63,241,245,10,142,63,229,212,1,249,25,148,143,167,35,190, +112,106,226,234,112,128,51,121,9,57,251,191,100,136,143,195,55,24,60,250,131,207,106,0,216,72,78,121,48,131,147,199,218,162,56,231,129,131,113,131,216,14,149,100,66,139,129,230,34,146,57,9,113,108,114, +121,228,19,116,157,243,140,143,235,156,120,245,56,51,205,220,60,250,217,91,143,115,128,206,65,28,241,207,227,86,99,212,225,254,27,165,35,142,126,203,108,51,158,58,137,87,140,250,242,71,189,0,105,198,0, +56,243,144,12,245,51,218,250,112,121,188,111,211,255,0,175,83,229,50,9,185,94,115,255,0,45,45,207,31,65,112,122,250,243,234,120,235,156,154,148,121,63,233,81,49,7,25,251,52,25,29,176,113,48,30,252,227, +191,66,106,117,191,13,157,179,43,123,152,162,31,175,158,6,120,57,228,255,0,90,0,212,69,136,140,155,182,25,29,71,148,126,156,172,228,17,215,182,71,182,56,112,88,6,51,120,115,201,27,140,67,158,7,121,128, +239,252,200,170,73,115,47,27,68,77,158,165,163,136,143,124,102,124,15,212,244,60,115,86,146,228,227,159,178,130,79,1,140,72,50,15,185,35,57,235,215,7,56,226,128,44,170,167,107,196,228,128,112,176,231, +24,56,199,239,15,230,127,48,122,204,35,57,24,187,136,251,20,182,237,193,255,0,150,131,175,92,227,30,131,29,105,249,238,221,62,206,123,13,146,91,17,216,158,78,79,3,4,159,83,142,115,83,15,48,147,242,71, +158,249,242,27,167,166,213,35,145,232,15,113,156,208,5,196,82,1,255,0,76,69,193,7,136,237,134,79,160,38,80,79,177,233,86,2,177,31,242,16,147,166,0,6,215,142,61,62,210,56,62,131,31,143,124,221,211,156, +5,142,38,56,32,100,67,140,116,232,209,145,220,245,207,28,250,84,192,95,17,242,197,108,61,137,181,207,110,64,216,191,145,245,62,156,128,104,8,88,156,27,251,131,216,128,208,250,255,0,215,102,0,228,99,7, +29,58,243,138,178,182,243,0,72,188,159,142,62,103,140,28,251,31,48,114,64,207,7,175,231,89,73,13,251,2,69,189,163,14,156,181,182,224,115,211,156,240,127,206,51,83,11,123,243,128,45,109,135,126,176,131, +156,116,24,143,31,203,234,104,3,68,37,210,182,5,204,253,199,250,216,242,115,193,63,235,185,231,241,7,145,201,165,99,116,185,2,121,137,56,31,235,147,143,108,153,216,15,78,48,65,232,121,53,72,89,94,156, +22,181,180,7,220,68,79,95,116,0,250,212,171,103,117,156,125,158,203,130,78,68,81,110,60,113,130,96,36,250,158,120,244,160,11,145,201,121,158,102,152,115,128,4,240,174,65,199,63,235,193,228,17,207,110, +217,224,213,181,107,163,131,230,220,244,206,5,221,185,3,62,198,224,243,245,200,224,140,86,111,216,174,91,165,188,89,232,118,164,71,234,70,21,79,62,157,0,206,41,209,217,93,47,75,110,115,193,49,127,69,60, +243,140,140,19,220,119,20,1,172,26,126,65,150,113,233,155,168,73,199,184,89,9,228,241,193,61,253,170,76,202,216,31,105,147,167,70,184,135,255,0,138,57,24,29,191,42,202,22,247,193,179,246,101,60,114,86, +37,224,12,127,121,129,29,49,146,15,161,235,82,172,55,103,173,146,16,48,62,104,224,31,143,40,216,0,224,117,199,79,114,0,53,135,154,0,253,242,130,7,241,221,66,49,159,82,223,135,78,188,224,0,70,101,89,157, +78,13,204,25,28,255,0,199,197,191,25,232,121,116,97,156,14,158,249,197,102,172,87,60,19,102,160,100,125,207,32,227,25,35,143,39,31,92,159,78,184,21,56,73,0,255,0,143,103,95,247,26,219,130,59,141,182,231, +223,175,29,248,226,128,52,5,235,113,186,107,82,6,70,124,235,99,215,25,31,52,204,115,235,220,246,232,13,40,185,141,249,19,91,123,13,208,30,157,59,237,252,115,220,251,10,160,25,186,52,87,0,103,128,13,183, +245,180,3,169,244,252,122,211,132,209,131,196,82,241,211,50,217,131,199,168,107,49,201,235,244,52,1,160,179,33,200,19,91,2,14,48,30,212,113,128,115,142,115,223,24,227,159,108,213,165,147,140,27,152,120, +227,2,88,51,219,57,194,30,123,99,158,122,112,113,89,34,112,62,234,62,51,206,103,177,224,116,239,103,200,3,140,123,247,201,167,172,237,145,132,81,131,252,83,233,224,99,183,6,203,142,163,147,245,233,205, +0,105,153,71,63,233,49,125,11,35,240,48,78,118,197,252,241,220,2,123,72,37,66,9,251,68,35,156,140,148,7,61,15,88,135,95,81,215,29,6,106,143,218,176,62,236,99,167,252,183,211,207,111,69,178,235,235,244, +63,90,65,121,31,27,132,94,231,237,22,185,35,140,159,146,207,56,227,252,241,64,26,66,100,200,34,226,2,113,215,116,75,211,57,199,201,207,108,244,250,112,42,81,42,156,127,164,91,231,142,51,1,29,123,254,228, +158,73,246,36,243,222,178,141,220,36,140,164,68,116,31,233,113,14,122,19,133,129,65,63,136,239,215,165,74,147,161,229,89,64,244,107,161,215,142,133,66,143,167,29,114,120,230,128,52,195,171,116,150,22, +60,119,139,28,125,45,216,241,235,129,198,61,41,8,27,129,15,110,15,169,49,0,61,203,27,28,247,29,79,61,184,226,169,27,150,224,44,144,99,222,229,219,158,0,39,12,160,113,211,4,231,158,9,52,229,145,137,229, +237,9,63,222,158,67,239,142,37,0,3,223,0,243,211,173,0,93,203,129,149,150,208,250,230,104,0,62,163,231,178,28,247,237,234,58,10,114,180,184,0,53,129,57,239,45,159,63,129,181,201,247,231,169,39,60,85,81, +36,195,144,109,8,231,145,44,205,235,208,137,243,208,119,239,158,49,197,75,230,206,71,41,110,126,173,63,94,79,79,52,99,142,58,224,244,250,128,74,76,128,124,199,79,108,96,243,45,150,61,179,152,87,7,60,244, +24,205,72,172,228,144,6,158,115,216,77,98,57,39,28,31,43,215,183,80,49,200,235,85,196,178,140,102,59,94,57,28,76,220,246,224,220,15,255,0,88,239,205,63,206,148,253,216,45,200,200,39,49,204,122,158,48, +126,211,129,211,190,15,94,115,208,2,207,239,248,216,44,135,78,13,197,129,24,39,175,40,56,207,160,247,200,228,81,254,147,198,82,215,131,212,79,105,140,28,127,116,117,200,233,140,247,35,138,133,94,232,224, +139,75,78,184,206,201,207,124,243,153,143,28,17,207,78,79,74,152,53,214,65,54,182,153,39,248,99,184,39,242,15,143,126,188,142,58,230,128,28,77,210,142,4,121,231,165,204,0,116,24,232,0,3,168,228,143,196, +83,119,221,246,151,97,239,137,224,110,135,174,124,206,191,159,0,99,167,11,230,92,99,155,107,102,247,251,61,201,61,248,255,0,90,61,253,1,207,160,200,136,200,205,247,172,33,24,4,103,236,119,62,153,225,132, +227,142,156,18,61,241,64,6,251,204,228,94,48,28,228,9,237,179,237,200,149,78,113,143,235,154,70,107,188,227,237,151,24,35,168,150,221,143,126,255,0,105,82,120,235,201,3,28,102,148,75,128,3,89,69,145,156, +255,0,162,76,223,135,51,31,79,83,156,147,233,150,25,98,36,131,101,23,177,22,178,112,56,29,230,39,35,61,178,49,248,80,3,212,221,140,175,219,239,6,115,157,178,219,168,231,160,33,110,153,177,219,161,36,99, +138,149,77,192,235,125,118,56,245,136,254,39,247,164,19,143,81,215,25,35,156,85,204,76,73,54,232,56,232,109,166,207,83,211,247,223,128,227,158,48,9,57,167,131,6,63,213,21,60,227,109,172,195,175,209,248, +252,243,214,128,44,159,60,140,255,0,104,92,231,28,228,91,228,3,233,251,193,235,193,207,36,30,1,168,203,204,6,26,250,232,142,185,6,219,156,99,7,163,112,78,70,8,233,211,154,96,88,7,222,18,99,143,249,118, +184,206,122,246,151,24,62,248,207,110,244,161,44,250,237,124,131,218,210,108,129,211,147,187,60,103,241,237,205,0,55,206,110,127,211,46,112,15,5,188,128,1,61,79,32,99,140,113,192,235,215,129,65,184,32, +241,121,33,199,247,141,179,47,65,234,227,169,227,56,233,158,244,165,44,9,228,16,217,57,38,221,248,207,83,243,72,57,60,246,35,56,206,41,26,29,63,4,239,35,130,114,34,11,215,147,206,242,71,79,78,184,235, +210,128,20,220,169,25,51,171,227,174,69,182,61,255,0,229,174,56,237,159,126,156,82,139,132,198,75,196,195,158,15,217,121,199,210,95,94,253,249,231,21,0,131,77,201,196,234,189,176,204,1,246,193,32,129, +245,228,113,237,74,32,176,199,19,169,228,28,134,136,16,7,184,136,123,12,129,64,19,9,208,145,128,139,158,70,86,220,241,207,77,178,49,62,223,169,169,68,201,140,31,44,99,184,88,249,201,244,12,49,215,147, +147,143,124,98,170,172,54,157,62,212,199,216,73,9,231,57,232,99,207,99,208,227,166,6,105,226,59,113,200,153,216,142,199,236,217,30,167,44,87,24,224,156,140,112,57,244,0,123,77,23,35,120,200,29,138,143, +99,192,115,250,99,167,175,72,204,177,246,144,228,100,29,164,103,35,254,218,231,234,58,254,4,138,99,71,17,235,33,35,39,27,154,201,125,56,193,110,190,152,28,245,224,115,76,104,160,96,64,147,158,121,95,176, +158,58,115,193,30,231,57,239,216,19,64,18,134,67,156,203,34,231,29,152,247,255,0,120,126,185,231,244,147,8,71,23,15,143,64,141,239,217,156,227,215,140,119,227,165,80,49,198,188,173,198,220,1,206,108,135, +225,194,114,61,184,193,28,243,138,102,196,224,139,166,231,185,123,18,113,219,145,158,61,58,96,112,5,0,94,56,60,249,183,25,231,145,12,109,252,209,137,250,103,63,135,70,20,36,231,125,233,0,19,196,9,142, +248,227,236,252,126,60,14,163,142,42,137,0,100,165,227,231,60,252,214,103,24,207,60,160,252,6,115,142,51,197,42,137,8,4,93,202,196,140,1,139,50,125,249,222,79,65,140,129,212,117,60,208,5,210,173,143,245, +215,192,250,172,32,96,125,62,202,51,211,145,159,241,166,133,113,156,93,95,128,71,0,193,25,252,191,115,220,254,190,157,106,147,164,199,172,178,144,51,201,75,97,199,127,155,205,81,244,28,31,167,90,140,195, +35,12,180,175,219,4,253,144,99,142,132,139,172,147,199,76,147,214,128,46,157,192,31,223,106,24,238,124,152,249,60,242,84,219,246,29,114,72,252,15,17,18,73,225,239,177,223,48,196,115,142,153,45,108,63, +32,115,143,175,21,197,169,206,90,227,29,134,90,223,60,103,32,15,180,19,233,211,176,198,49,138,62,204,163,39,237,170,15,81,243,69,193,246,196,160,228,116,200,231,219,129,64,22,67,176,201,111,182,19,198, +79,146,184,252,72,128,245,244,193,29,41,226,86,198,49,121,129,235,16,239,245,140,15,161,192,60,213,49,4,153,36,95,254,82,227,167,61,62,208,59,31,76,123,83,188,167,3,3,80,43,211,133,185,80,71,127,226,185, +198,61,135,124,122,100,0,78,110,7,57,91,174,156,145,110,187,120,57,24,35,31,151,113,206,51,81,137,227,206,239,223,115,198,26,219,13,129,156,242,152,207,60,112,14,57,207,180,102,222,66,188,106,36,103,160, +243,227,234,120,235,246,192,191,168,250,211,13,173,198,48,53,38,35,209,174,33,199,166,8,251,113,200,30,153,253,122,0,88,50,91,238,37,132,167,31,222,136,142,8,238,25,241,211,219,28,103,232,214,146,208, +130,118,176,255,0,121,35,32,247,233,230,46,65,244,238,122,142,181,88,218,221,174,8,189,136,131,208,153,160,250,31,249,123,98,9,233,235,199,97,77,251,61,208,224,222,194,63,237,164,76,58,158,185,157,129, +192,201,247,29,232,2,195,73,103,130,21,24,14,223,186,64,15,67,145,180,231,182,126,241,62,189,193,140,77,108,160,252,206,164,131,255,0,44,227,61,176,56,36,17,211,191,83,147,81,253,158,232,127,203,229,187, +255,0,192,145,136,199,166,28,240,79,183,67,223,138,12,23,157,62,213,108,61,14,212,224,241,131,156,131,250,250,250,208,4,171,53,184,235,35,21,247,142,49,215,158,115,144,123,243,156,115,199,94,92,103,182, +110,21,155,39,60,4,135,147,129,192,202,182,122,243,245,252,169,180,87,227,63,190,183,111,195,147,207,96,48,192,231,252,244,166,121,55,156,238,48,147,211,39,35,159,163,28,247,228,12,14,190,180,1,111,124, +35,147,230,28,99,172,22,135,191,124,197,156,126,125,177,199,70,153,32,57,192,124,123,193,103,128,62,166,6,25,25,246,62,156,102,169,52,23,109,222,215,167,179,241,223,133,112,115,211,163,114,59,83,77,165, +206,57,22,237,219,10,178,99,156,114,49,33,199,92,144,15,7,242,160,13,5,146,32,49,135,193,207,252,177,179,207,224,5,167,184,234,72,239,201,230,147,125,168,61,92,2,58,253,154,215,39,56,228,255,0,162,129, +129,252,199,53,79,236,115,158,177,35,30,191,234,101,99,233,220,55,111,246,137,199,110,166,148,217,62,62,104,246,231,183,146,235,249,225,199,235,237,223,138,0,156,203,110,14,6,79,92,102,206,35,223,190, +45,48,56,244,39,212,123,33,154,44,240,140,7,95,248,243,235,142,255,0,45,174,56,231,169,237,214,171,53,142,6,54,56,231,156,32,30,223,121,229,201,25,30,189,56,30,134,54,178,61,7,158,190,165,95,7,60,244, +253,225,29,134,122,127,74,0,181,230,199,129,185,73,231,156,218,184,36,28,2,70,44,136,232,57,39,62,157,179,73,230,68,50,54,40,7,183,217,219,234,73,63,98,4,140,103,219,140,118,231,60,217,48,63,235,110,135, +57,192,108,28,251,229,193,57,3,61,115,252,233,126,203,200,6,123,209,215,162,198,79,126,70,100,207,82,0,32,143,65,201,160,11,133,147,119,8,125,191,209,216,243,199,115,107,250,131,199,182,56,60,216,71,25, +139,142,172,246,206,8,246,200,182,207,81,219,60,156,130,9,38,170,27,118,4,129,121,124,0,4,231,16,28,99,182,12,159,143,79,240,166,24,100,192,255,0,77,212,113,192,198,34,29,79,185,56,231,215,219,32,116, +160,11,134,72,179,196,144,14,71,38,25,71,92,99,159,179,130,120,60,118,224,130,1,32,82,25,70,56,150,12,12,19,242,204,15,235,110,58,119,57,199,56,224,245,168,82,81,207,218,181,3,140,117,150,211,60,19,206, +25,64,252,206,79,126,184,166,230,78,247,55,164,116,203,77,100,8,255,0,199,71,76,228,16,79,78,189,114,1,104,220,72,167,42,241,48,235,149,239,244,95,39,147,158,191,228,83,126,217,114,14,1,136,17,208,108, +139,63,82,90,16,112,62,156,227,29,106,29,237,158,110,110,61,78,102,182,39,129,232,17,179,201,31,135,110,184,80,248,7,253,38,114,79,98,241,99,174,79,72,59,244,227,235,244,0,148,94,92,255,0,19,175,208,173, +185,80,120,28,110,183,244,167,139,201,112,78,248,184,61,197,169,61,179,210,21,244,199,4,247,250,212,30,114,114,62,213,55,25,206,9,35,25,207,81,15,175,224,59,26,85,157,6,127,210,102,61,57,15,128,113,235, +136,131,14,59,158,184,235,197,0,79,246,183,238,98,57,255,0,174,30,135,208,99,233,144,65,227,165,55,237,153,239,6,61,196,93,59,242,34,207,29,120,201,227,253,170,111,218,19,167,152,228,28,115,230,54,127, +91,99,248,224,159,82,77,6,84,60,51,204,71,166,242,127,30,109,27,235,211,216,117,197,0,31,107,110,48,145,145,198,72,101,4,103,223,202,7,160,245,239,142,244,209,121,38,73,8,51,140,1,231,99,191,253,113,32, +241,223,56,246,238,20,72,156,98,73,0,247,221,159,79,249,244,0,142,56,3,161,253,19,124,68,144,101,44,7,64,68,135,39,29,8,91,112,51,193,198,121,160,4,123,198,7,38,32,189,7,55,49,224,228,250,152,215,169, +200,3,183,20,159,107,36,253,197,246,34,237,48,51,128,121,217,206,48,125,122,242,64,52,172,240,247,127,161,242,174,15,108,244,251,62,15,78,196,250,99,173,66,210,168,232,238,184,236,182,215,64,159,195,201, +25,233,235,232,69,0,76,179,231,251,128,241,159,244,245,29,63,221,135,131,145,235,156,126,52,225,51,144,72,10,115,140,159,237,3,242,158,252,140,123,112,113,156,10,162,110,177,156,73,55,124,126,230,227, +62,252,24,58,231,147,219,156,10,5,203,183,89,166,244,207,151,41,245,7,239,192,125,137,227,61,70,5,0,95,55,47,131,184,2,58,100,223,22,39,25,232,89,199,225,144,70,71,83,138,97,157,155,160,113,144,58,221, +196,71,62,132,191,226,120,61,79,78,113,72,72,79,30,123,140,113,205,180,236,58,117,27,34,80,79,28,100,14,252,226,144,202,115,254,185,192,35,170,217,92,96,250,115,148,231,143,110,189,250,208,5,243,44,163, +162,202,223,73,161,56,228,255,0,211,96,115,207,28,115,129,210,152,100,148,255,0,203,57,59,100,179,70,249,252,12,223,64,56,193,197,80,220,195,254,91,185,206,49,155,73,199,31,67,55,28,140,15,195,211,52, +110,36,100,185,60,244,54,242,2,115,142,0,55,31,152,29,125,15,82,1,109,164,155,248,99,151,167,64,144,245,224,14,76,160,122,147,138,135,204,159,36,121,79,145,206,12,22,236,63,63,59,249,130,61,249,168,247, +70,57,249,177,232,45,101,200,60,116,38,99,238,122,1,237,64,151,156,3,56,198,118,255,0,163,191,94,159,196,231,32,28,227,27,120,198,51,214,128,39,13,114,79,203,108,79,63,197,101,110,217,206,57,36,77,237, +140,116,233,199,122,152,253,160,12,253,153,122,142,150,22,196,14,153,251,206,56,252,72,206,115,220,213,64,238,195,153,110,20,250,21,198,48,58,28,200,7,228,7,248,202,161,249,253,236,158,132,17,207,168, +56,243,115,206,61,135,243,160,9,3,78,6,77,169,207,168,176,181,231,223,12,88,126,71,175,106,97,121,217,129,91,118,29,64,2,194,208,30,113,232,122,103,140,145,216,113,72,84,245,221,35,18,123,161,56,62,216, +155,212,116,3,29,56,198,41,64,148,3,131,145,201,82,200,0,199,227,114,57,232,63,152,57,25,0,126,235,190,246,184,0,99,38,198,223,215,169,1,113,245,60,241,219,173,55,204,188,60,11,101,228,30,69,141,178,227, +175,92,231,145,159,81,206,120,205,48,180,252,231,42,51,212,181,186,140,253,60,210,64,228,116,28,231,36,138,55,204,56,46,14,121,198,244,35,240,32,19,248,3,199,29,115,64,15,84,187,206,76,74,131,28,230,210, +203,39,129,253,230,39,169,4,97,64,233,201,61,94,82,235,216,143,79,34,192,99,62,131,61,129,233,232,48,50,115,80,23,184,236,241,128,113,213,115,211,130,115,130,9,199,76,116,252,42,51,53,231,240,74,132,31, +246,24,158,58,116,76,251,224,96,115,220,231,0,23,124,139,150,193,80,23,215,247,54,32,31,126,75,126,31,145,2,154,246,247,184,198,249,49,199,10,182,3,60,254,35,169,227,185,29,201,235,72,189,233,31,235,98, +28,14,26,57,65,250,100,40,98,112,121,228,99,142,152,21,31,250,94,51,230,198,79,57,34,59,130,51,142,184,201,30,252,228,115,211,129,144,11,18,65,119,208,61,201,31,238,233,196,14,114,15,33,14,61,120,207, +189,87,107,123,179,252,119,61,120,253,214,156,120,199,60,151,235,233,141,189,15,94,42,35,246,193,214,92,119,192,134,81,223,144,62,94,121,245,207,28,158,13,1,47,121,97,52,189,51,242,164,185,3,25,30,255, +0,144,24,35,146,115,192,3,141,165,209,228,180,228,14,198,45,60,159,126,140,121,227,176,236,1,7,187,13,156,221,204,203,235,251,171,46,125,122,47,57,60,158,252,14,130,130,183,135,131,115,119,158,193,18, +114,56,231,24,13,143,195,219,25,199,70,4,186,239,53,239,94,141,21,195,126,138,220,14,125,186,253,40,0,54,178,40,235,63,57,255,0,150,86,88,227,216,39,3,140,242,115,198,113,140,98,45,140,173,131,246,147, +201,63,241,239,106,63,35,179,4,251,131,206,106,111,42,235,159,154,239,56,200,255,0,70,186,252,57,50,15,231,145,223,21,22,203,149,56,103,186,56,200,249,98,184,0,140,145,146,68,132,158,158,131,223,220,1, +132,158,71,151,117,235,204,86,159,214,51,239,192,233,143,202,44,174,78,99,186,35,215,200,178,39,160,39,32,198,8,246,231,216,112,113,86,135,155,142,126,217,129,255,0,76,238,65,252,203,241,158,252,142,192, +112,13,5,36,35,152,239,28,245,251,183,89,207,169,196,202,58,142,156,15,192,154,0,164,76,68,224,195,113,237,139,123,81,156,250,149,218,8,28,250,118,25,235,147,247,93,60,185,135,60,147,2,158,51,219,108, +152,28,14,62,189,170,246,198,56,6,11,190,72,198,229,184,247,236,211,145,158,252,116,250,98,143,43,28,181,180,231,156,159,150,112,79,175,73,143,161,237,237,64,20,182,161,25,242,220,128,127,138,216,224, +12,245,193,145,129,193,199,113,211,173,33,80,121,242,151,169,198,45,80,100,231,130,112,231,146,59,17,158,79,225,161,136,215,147,101,57,39,28,186,92,1,250,63,97,207,78,195,235,76,38,0,1,107,23,99,234,96, +184,199,29,115,150,231,142,216,39,25,236,69,0,82,46,23,131,26,244,63,242,238,173,199,167,12,126,157,59,26,79,54,64,70,216,20,118,63,232,202,51,142,153,193,227,208,243,199,185,171,161,172,251,217,54,122, +124,177,92,2,160,113,212,146,7,92,103,143,108,241,76,47,100,217,38,9,135,225,38,6,79,187,0,49,143,199,167,60,208,5,97,52,189,12,113,130,58,255,0,163,100,119,255,0,104,131,211,140,15,82,50,58,48,201,114, +127,130,60,99,140,217,156,117,35,37,130,144,49,211,35,7,60,112,42,112,108,88,237,242,101,245,231,205,57,252,152,182,48,121,228,123,28,113,76,104,45,142,118,71,48,238,70,201,48,58,156,231,206,80,113,140, +123,247,231,57,0,68,154,227,60,36,32,99,128,109,28,3,131,235,128,78,122,31,199,7,53,40,184,186,29,60,158,73,24,251,44,227,146,121,206,23,146,49,143,207,173,66,34,129,72,36,114,123,24,164,39,3,208,53,206, +6,122,156,231,56,57,199,81,32,22,252,100,228,144,71,48,35,123,14,183,36,247,207,191,214,128,28,101,185,108,228,198,1,35,133,181,113,142,49,213,147,158,128,117,60,251,103,39,159,50,140,2,112,73,206,216, +49,200,199,63,234,207,92,123,100,118,29,41,219,237,134,56,76,227,189,178,115,131,215,2,232,1,206,114,59,103,24,6,164,220,153,24,48,129,208,230,208,103,131,198,208,46,135,7,182,73,56,160,10,226,226,92, +242,210,100,158,115,27,227,4,250,4,0,103,60,1,130,59,123,200,103,118,36,22,147,28,100,172,18,30,185,31,221,199,57,246,250,241,196,251,142,14,199,140,100,243,254,142,139,206,113,147,155,177,211,3,250,227, +0,209,151,206,3,65,245,104,97,201,224,156,159,244,178,121,36,103,63,134,40,2,175,4,146,204,231,156,157,192,140,228,245,198,240,78,113,156,99,142,105,170,170,222,223,247,210,129,158,153,220,254,189,79, +226,122,130,109,110,112,127,229,212,227,142,45,226,207,190,15,218,179,212,227,142,121,24,167,44,146,228,126,238,22,29,50,182,241,49,236,78,115,113,159,203,28,1,223,56,0,165,229,47,79,50,60,142,112,101, +218,64,199,96,102,95,111,78,244,27,98,72,195,70,70,9,230,226,76,99,168,255,0,151,179,199,208,99,161,245,173,15,62,229,65,194,64,57,228,52,16,14,220,99,55,71,156,119,193,61,122,208,215,151,24,229,98,13, +200,27,97,128,156,243,200,204,221,184,201,233,138,0,203,54,195,113,221,37,186,140,242,76,243,113,199,189,195,2,9,60,117,250,211,13,172,99,56,158,223,169,39,45,112,126,152,219,40,24,39,208,100,156,254, +58,13,123,120,50,67,69,215,169,75,82,115,219,133,148,156,247,235,254,53,3,94,222,231,137,80,115,156,121,54,253,61,254,118,252,186,119,198,50,8,5,85,183,60,126,250,215,3,130,75,93,175,30,227,205,199,190, +120,238,51,220,60,67,150,192,154,199,158,159,53,232,199,29,201,184,193,250,143,161,3,169,121,188,190,200,38,100,61,112,4,48,100,118,201,224,131,219,61,49,248,212,102,230,231,156,202,188,130,8,217,16,235, +212,101,99,25,244,60,154,0,83,107,156,1,115,99,207,99,37,222,50,113,255,0,79,3,142,156,103,131,159,173,47,217,92,112,46,52,224,127,132,135,188,98,79,169,30,107,96,158,7,57,231,7,28,10,143,205,156,242, +25,73,227,162,32,39,241,217,200,3,212,227,183,209,68,183,13,159,150,34,14,112,12,89,63,78,19,243,60,12,228,228,18,114,1,56,179,184,96,115,119,103,159,247,174,72,200,250,200,191,79,195,7,25,164,91,89,127, +138,123,34,127,188,26,224,28,96,231,131,49,207,174,7,174,58,12,212,91,231,39,129,0,245,6,221,15,97,140,31,47,223,177,234,58,158,205,45,41,235,228,30,199,22,235,144,56,233,242,117,207,183,127,66,104,2, +86,137,193,199,159,104,0,201,57,51,117,231,213,241,145,236,122,156,114,72,20,220,73,198,217,96,111,66,3,140,145,220,101,193,3,62,163,39,210,162,218,252,144,136,125,15,217,135,35,30,241,144,78,65,29,59, +253,48,229,141,216,128,209,198,59,100,66,57,244,225,45,219,159,83,207,65,248,128,75,254,146,50,124,235,112,7,83,188,46,61,1,222,254,220,244,244,199,163,132,179,175,62,117,161,61,50,36,133,143,230,102, +7,219,184,199,7,131,138,140,217,146,126,234,224,243,204,18,100,126,86,131,29,7,4,230,156,45,19,159,221,18,79,92,91,59,100,247,35,48,140,253,113,211,175,161,0,95,54,98,73,243,45,128,28,141,178,219,169, +227,167,89,49,220,228,3,207,124,226,163,23,82,167,30,116,56,201,201,18,91,127,48,199,32,99,29,79,62,157,157,246,30,48,34,61,121,205,162,28,17,211,134,76,240,15,24,244,244,226,129,167,145,156,69,16,234, +126,107,59,112,79,161,230,60,159,196,126,7,165,0,47,219,230,35,2,228,0,56,56,107,66,56,237,143,55,143,207,143,74,141,174,220,156,153,149,240,115,131,246,76,245,234,73,155,216,99,3,183,0,243,83,173,154, +224,146,98,82,48,48,182,118,217,4,103,61,98,192,199,76,149,62,128,245,195,62,198,50,112,84,241,130,13,181,170,119,227,0,70,59,114,6,115,215,167,96,6,253,173,207,70,92,142,56,91,118,245,224,252,228,147, +235,143,92,156,115,74,110,38,111,186,98,237,214,24,184,235,200,27,177,198,59,12,245,160,91,178,156,252,139,140,140,24,109,64,25,228,240,209,231,158,156,99,242,164,242,28,158,30,221,113,221,162,177,7,223, +131,26,147,158,220,244,245,160,5,251,77,198,8,38,3,223,38,24,114,58,127,180,56,245,207,67,210,155,230,74,123,68,217,234,82,52,0,126,83,175,111,108,240,125,176,190,73,7,6,91,94,255,0,242,202,199,240,236, +59,244,201,28,28,251,210,21,96,113,155,70,30,162,59,5,61,61,119,54,71,76,231,208,99,216,1,174,28,242,118,175,79,249,102,71,94,249,19,30,160,30,121,61,254,177,24,152,228,150,139,167,79,47,39,63,80,249, +231,7,190,59,125,37,42,231,160,183,35,158,169,167,140,245,192,201,95,95,174,61,70,57,103,149,156,146,182,124,103,239,53,128,199,108,224,48,3,158,216,252,250,208,2,8,27,25,196,4,113,201,73,127,146,201, +215,175,110,0,61,250,68,240,100,157,194,212,227,253,137,129,247,234,249,29,49,250,228,98,158,99,97,201,251,46,63,217,158,211,31,164,131,167,0,3,207,24,36,211,89,88,253,211,25,60,131,139,139,101,25,247, +203,17,142,160,231,175,210,128,25,229,224,17,229,90,244,200,59,155,235,208,190,64,56,228,115,208,212,68,31,91,117,3,140,111,108,12,246,255,0,88,8,239,142,127,198,166,17,202,122,180,93,58,11,219,78,252, +30,1,39,183,39,142,163,167,20,50,3,198,98,36,118,107,235,49,143,174,224,223,78,160,14,13,0,87,45,24,27,158,69,35,32,16,146,128,51,216,0,243,243,207,227,193,24,234,41,164,219,145,131,230,103,161,34,69, +200,231,177,251,71,227,143,203,60,26,176,35,3,248,65,246,75,235,80,115,235,196,36,99,211,61,112,59,210,149,83,198,217,7,7,254,95,237,122,241,215,16,126,31,143,191,0,21,10,198,57,79,180,12,227,118,100, +136,224,14,159,122,228,227,175,184,237,199,98,166,242,213,71,36,129,201,31,233,246,231,158,123,121,32,19,199,25,57,199,234,80,7,130,249,80,128,57,212,70,57,255,0,81,7,7,145,131,255,0,19,32,15,63,131,117, +231,173,72,161,120,195,221,15,103,180,133,191,3,255,0,19,92,247,7,156,113,233,82,168,185,234,176,201,130,59,37,233,200,31,238,205,207,224,63,149,73,182,228,252,191,102,148,228,99,34,61,71,142,189,252, +198,239,198,58,251,244,160,4,85,94,63,214,146,7,83,98,135,219,28,106,132,15,167,94,125,57,169,214,48,120,218,9,60,252,246,80,15,212,106,128,140,250,18,121,237,211,17,125,154,224,143,248,243,149,137,234, +88,106,33,187,250,55,244,31,92,243,78,22,243,129,205,145,56,237,255,0,19,28,243,147,253,227,239,199,31,226,1,113,96,114,54,236,136,12,142,26,206,18,15,94,187,181,35,197,78,182,210,158,139,108,71,189,140, +68,245,246,212,143,79,167,94,158,130,138,67,47,123,70,25,28,124,183,184,24,224,231,46,51,198,48,78,15,165,76,33,145,122,219,182,123,0,154,137,200,235,211,115,46,125,240,120,252,168,2,240,178,184,36,5, +251,56,198,112,126,194,152,199,176,55,252,227,60,116,207,39,60,85,200,237,46,212,125,235,96,15,165,146,40,252,197,240,246,200,231,167,62,131,28,249,188,237,183,148,28,99,30,86,160,70,49,211,5,8,233,142, +56,227,165,71,153,65,207,217,164,28,103,38,11,193,252,144,156,117,231,212,246,25,52,1,210,253,154,232,12,150,182,199,28,27,81,211,167,95,182,28,116,199,79,99,218,158,150,247,7,172,150,152,227,134,129, +20,122,16,63,210,73,25,25,235,245,207,175,56,166,94,62,68,92,144,49,246,123,192,73,246,43,31,64,48,122,228,243,145,206,42,226,51,1,243,109,28,129,143,42,232,30,113,212,52,89,244,244,160,14,133,108,228, +108,110,123,92,142,62,85,11,198,121,234,73,244,228,19,158,185,233,82,125,132,128,50,208,147,215,128,167,182,49,204,189,127,46,166,177,18,117,206,21,128,207,95,221,206,113,235,203,38,63,19,207,108,243, +86,18,229,83,0,60,124,119,17,185,35,182,57,80,123,224,158,167,191,52,1,168,44,206,62,244,42,59,252,171,239,140,149,155,35,243,231,189,74,182,128,241,231,71,199,60,121,96,142,253,69,200,39,219,0,126,102, +179,126,216,70,0,145,72,227,172,78,120,28,243,250,251,138,153,110,198,57,150,17,211,141,175,142,252,144,35,108,251,228,231,166,61,104,3,81,44,200,193,55,41,143,171,30,131,60,98,224,227,240,63,208,213, +133,182,13,130,102,141,128,3,24,102,206,123,114,215,92,18,62,135,167,106,201,91,246,82,85,103,131,24,235,177,240,56,56,60,219,119,29,251,19,156,224,85,164,187,102,35,253,34,208,122,103,120,24,244,199, +145,142,49,215,142,252,231,138,0,209,22,228,227,18,166,72,239,48,25,252,76,228,140,126,32,243,205,6,23,24,25,183,200,56,12,210,35,18,50,72,199,204,72,192,239,184,116,30,185,21,214,225,142,63,210,116,241, +207,252,244,184,199,61,127,213,194,56,245,198,113,147,146,49,86,214,110,7,250,93,142,6,1,219,37,216,56,206,112,49,18,238,62,188,142,221,168,2,68,134,227,177,180,36,112,62,96,252,119,32,44,185,207,62,254, +253,77,89,65,122,188,237,128,129,142,54,40,207,3,156,249,192,227,61,243,199,29,185,21,214,225,23,57,187,182,7,28,252,215,71,30,195,17,245,252,63,74,147,207,56,202,223,217,129,142,1,91,163,220,247,242, +212,126,103,3,25,62,148,1,117,38,184,28,21,133,112,121,195,133,56,199,61,39,99,207,115,145,142,131,53,97,100,186,61,2,224,17,146,183,5,71,127,73,24,224,117,60,18,114,73,172,177,114,71,35,80,178,108,245, +0,92,0,48,112,115,242,57,227,29,48,73,207,94,73,169,214,225,137,0,221,217,176,61,8,89,142,125,50,60,140,245,39,248,64,233,131,205,0,107,36,183,24,27,183,31,165,203,140,1,208,228,43,12,28,30,167,183,225, +82,45,196,202,121,18,28,127,211,200,255,0,217,163,235,238,121,250,224,86,88,114,73,219,115,9,62,139,28,248,30,255,0,234,20,115,211,57,231,166,64,53,42,18,195,13,42,125,118,78,160,122,114,65,246,237,244, +57,34,128,52,133,212,132,130,35,149,135,162,221,194,191,95,249,98,15,94,227,145,211,53,101,46,39,56,253,204,199,35,143,244,196,207,190,49,24,245,25,224,240,70,50,112,107,36,100,116,149,0,25,229,214,99, +158,122,146,7,61,0,227,4,113,245,50,169,147,251,208,100,30,114,178,115,142,51,243,22,252,63,48,40,3,102,57,157,177,254,143,49,245,2,224,110,239,144,27,122,28,227,161,29,127,157,133,98,58,193,120,61,190, +212,121,252,166,7,3,25,3,39,56,227,60,231,7,113,206,75,219,131,206,112,219,7,56,231,5,49,156,126,189,123,84,171,44,131,161,181,236,6,233,148,28,100,156,124,177,182,114,79,113,144,115,223,20,1,187,136, +219,59,146,237,72,29,238,156,158,188,14,38,94,157,250,228,119,160,68,173,252,87,135,211,18,185,252,50,102,233,245,56,172,117,184,149,114,60,171,22,31,237,76,188,99,28,243,24,224,103,61,50,7,166,70,103, +91,134,254,43,125,55,175,105,248,193,31,236,219,158,131,174,14,48,61,58,0,106,172,9,223,237,93,127,136,110,245,24,36,77,158,126,167,61,125,234,77,136,0,219,230,231,212,197,180,247,39,173,208,4,113,223, +167,62,153,172,159,60,19,194,105,201,233,182,66,115,244,253,199,191,167,83,239,79,91,150,28,22,211,70,49,255,0,45,159,167,226,135,60,224,224,241,211,177,160,13,128,131,0,152,221,189,218,4,36,99,184,205, +217,36,159,195,212,84,138,160,103,108,57,228,228,155,101,198,7,92,145,121,156,241,207,3,158,59,10,199,23,128,103,15,166,15,92,200,221,186,243,229,99,175,167,228,58,7,173,250,231,151,211,248,207,42,192, +231,29,134,232,241,212,117,4,26,0,216,222,132,0,200,157,57,63,99,66,125,58,253,172,158,58,142,158,216,238,239,57,56,11,18,16,56,56,179,136,14,252,228,220,177,235,193,224,96,250,119,203,23,170,127,138, +30,127,184,232,120,246,249,9,224,3,223,142,14,105,13,234,114,119,35,118,24,193,207,126,65,81,198,71,29,58,228,99,57,160,13,149,185,56,199,147,17,61,201,182,135,0,28,31,249,233,142,196,19,206,59,156,98, +148,92,182,127,227,218,220,143,85,183,128,113,192,233,230,242,64,199,245,61,235,36,94,130,78,118,253,48,185,231,215,145,143,196,116,29,115,79,23,4,140,1,32,24,254,5,143,60,113,144,68,131,245,244,3,216, +128,107,121,238,127,229,210,19,198,120,130,220,122,241,254,187,143,254,177,6,155,231,204,51,182,201,9,231,24,134,18,14,57,255,0,158,188,241,207,235,192,233,158,38,115,209,174,189,113,182,51,131,237,186, +108,254,63,79,106,112,154,110,237,116,199,176,49,194,71,212,126,252,145,156,14,231,240,233,64,26,34,230,227,130,52,229,98,57,35,202,183,244,206,64,222,120,245,252,115,142,238,251,76,217,4,233,74,58,128, +54,68,167,174,72,56,82,15,82,120,63,203,53,64,75,49,198,5,209,63,245,206,219,143,174,88,241,248,99,167,210,165,19,94,255,0,12,119,100,127,178,182,196,113,216,102,50,0,228,123,240,120,239,64,22,252,251, +147,211,78,247,224,71,143,166,75,103,255,0,29,250,231,188,130,75,162,1,93,57,186,243,243,66,167,140,245,33,73,30,167,30,196,140,85,1,53,232,97,136,174,129,60,18,99,180,247,36,242,153,231,35,223,159,122, +81,121,118,15,73,135,214,40,79,63,80,163,183,245,245,160,13,31,50,248,224,157,61,135,92,22,150,63,232,135,175,36,227,60,99,169,160,189,238,70,219,80,189,240,101,83,158,195,134,24,238,127,206,107,63,251, +66,240,117,67,245,217,16,207,183,50,129,158,189,72,31,74,145,117,11,207,66,56,236,144,55,29,184,243,240,9,31,95,94,115,64,26,10,247,135,254,93,137,233,202,201,14,0,63,80,195,174,15,226,57,21,48,123,209, +207,144,167,0,1,150,139,147,215,176,29,249,234,51,159,81,154,204,58,141,194,175,204,210,168,206,9,54,240,19,211,215,206,252,193,233,147,199,74,104,212,156,241,185,241,142,79,147,110,14,126,158,111,235, +145,223,142,40,3,105,100,191,7,152,32,224,242,11,68,9,31,247,195,28,247,201,32,16,61,248,113,146,239,32,136,34,62,160,75,16,239,219,9,156,131,239,159,228,114,70,164,8,27,164,124,231,35,247,81,131,211, +208,76,58,117,228,113,248,26,95,237,37,3,62,116,172,113,145,251,168,184,244,255,0,150,227,32,99,223,233,64,27,1,110,201,57,219,31,60,5,158,49,142,252,100,12,143,110,71,173,60,37,215,57,149,155,56,233, +50,113,199,64,81,115,192,235,207,78,125,235,16,106,74,221,110,36,81,208,102,27,102,253,90,228,16,58,122,227,233,82,45,232,61,47,31,4,28,128,182,163,175,24,199,218,242,61,206,8,198,49,142,180,1,174,203, +113,222,87,94,121,34,64,79,215,37,54,254,156,158,164,19,76,242,174,15,252,190,72,59,99,204,65,244,231,203,206,223,207,182,122,26,203,55,49,54,79,219,31,142,50,86,215,146,125,205,203,3,140,140,31,83,234, +41,162,104,243,255,0,31,82,15,77,171,167,228,117,57,57,145,179,219,241,207,24,230,128,53,60,155,179,255,0,45,238,91,158,66,207,23,62,164,102,34,121,199,81,237,223,146,214,134,231,175,153,118,14,56,205, +196,3,167,39,172,44,8,207,160,192,200,60,30,180,252,244,237,117,112,120,60,24,44,14,58,231,36,18,14,62,167,39,128,15,118,25,114,88,44,237,140,119,130,196,17,158,57,224,100,147,235,211,166,123,128,11,109, +5,208,56,243,111,27,32,242,47,96,92,255,0,192,90,18,7,229,235,208,12,83,124,139,128,112,103,187,245,57,212,45,15,92,113,197,160,57,250,116,239,203,0,42,18,91,25,155,131,217,160,178,32,245,254,232,61,6, +48,49,192,28,14,229,140,7,105,99,39,158,150,150,44,70,57,193,204,93,120,60,0,65,201,228,224,138,0,186,82,229,79,250,233,14,15,25,212,45,199,175,31,241,232,58,31,167,78,105,55,220,130,114,238,231,166,63, +180,172,200,255,0,210,98,79,25,56,235,252,141,6,29,115,52,67,216,90,105,249,237,211,108,60,31,111,65,216,102,144,69,252,95,104,82,59,127,162,217,227,219,129,9,56,245,192,250,247,160,11,198,75,177,156, +43,227,29,69,237,166,56,239,159,178,12,144,8,200,7,156,231,30,137,231,221,129,128,1,62,250,133,168,250,244,183,192,29,206,78,126,188,214,99,42,242,12,145,158,113,255,0,30,246,141,207,97,196,94,217,250, +228,16,105,184,244,104,142,15,31,232,214,128,140,114,7,252,123,243,143,231,142,5,0,106,173,197,200,31,234,33,62,191,241,50,129,177,249,38,62,128,113,200,233,154,113,158,228,15,154,40,144,143,250,125,132, +241,235,254,171,61,71,124,244,53,148,168,164,141,204,152,246,182,183,218,70,79,80,182,253,253,177,192,239,78,242,20,156,249,176,96,140,156,195,26,243,211,144,96,0,142,196,1,219,161,197,0,104,253,162,227, +170,139,108,158,113,246,200,114,120,60,16,33,39,223,57,224,245,227,138,107,79,62,57,75,82,115,215,237,57,231,174,48,45,200,231,219,142,152,7,53,158,45,162,99,204,182,248,201,24,16,199,211,220,149,92,156, +231,168,28,98,158,109,161,218,54,180,36,14,63,212,160,61,122,240,141,158,125,8,252,133,0,89,51,206,120,217,102,112,48,65,154,66,79,168,194,196,58,158,216,61,79,82,120,141,165,149,142,62,207,108,72,7,144, +204,192,1,198,70,83,39,62,252,142,189,133,65,246,88,155,164,128,1,232,176,168,31,129,100,60,247,202,228,31,65,147,75,246,88,135,171,122,97,99,207,92,246,184,95,215,61,134,77,0,41,73,216,241,13,184,192, +32,101,92,143,67,200,78,72,231,0,147,207,226,3,124,187,128,126,104,237,8,255,0,106,44,2,113,234,192,123,158,249,198,14,69,30,69,182,50,98,92,140,14,168,113,131,201,194,78,192,103,56,60,103,158,59,211, +126,203,108,78,68,76,113,131,242,42,227,158,192,153,58,117,227,140,115,64,13,120,156,156,49,177,94,156,4,25,63,144,231,7,183,92,28,226,154,97,56,56,146,212,16,49,194,56,28,123,249,108,20,245,4,103,167, +108,245,147,236,182,249,201,130,113,142,152,42,57,250,9,23,182,49,243,123,154,107,65,106,6,74,93,169,231,28,168,82,58,140,230,108,144,65,231,159,126,152,20,1,89,162,85,192,243,45,73,232,112,48,9,245,230, +32,121,246,39,183,74,60,163,212,181,174,73,224,123,17,156,128,35,29,61,207,113,211,173,63,101,169,234,151,7,39,179,2,79,224,211,16,61,184,61,77,48,195,104,115,251,187,144,1,32,226,68,7,169,201,3,25,39, +158,221,253,40,1,134,37,236,96,39,161,194,69,223,175,46,163,243,29,56,224,154,140,199,211,136,251,145,181,45,207,35,160,229,120,207,182,105,124,187,93,216,217,114,70,113,196,203,211,144,58,183,61,143, +3,219,189,46,219,80,62,228,228,123,176,60,30,220,191,110,128,16,115,235,64,12,17,54,50,161,71,35,0,180,11,219,140,98,51,143,97,143,207,34,156,81,192,201,108,245,199,207,17,255,0,219,118,28,227,56,3,4, +250,138,140,139,99,200,138,64,49,206,24,3,233,215,105,227,244,252,205,55,16,128,112,179,41,244,221,25,60,117,198,229,3,63,92,114,59,247,0,151,31,237,162,156,147,143,50,46,153,25,255,0,151,124,231,62,196, +243,219,147,80,176,113,209,85,250,140,249,196,227,142,57,91,98,59,243,208,147,223,61,20,50,96,97,102,110,152,230,216,99,191,82,227,131,249,228,231,214,144,200,171,144,55,142,135,4,196,125,0,25,222,63, +207,3,52,0,208,172,127,229,148,99,211,50,49,232,56,206,235,81,193,250,240,123,118,163,14,73,253,220,67,35,7,3,118,125,56,22,199,60,254,157,248,21,25,151,60,3,158,56,230,33,249,128,71,97,207,81,223,156, +81,231,1,203,12,17,193,192,132,156,115,216,183,3,28,231,25,60,30,180,1,46,214,24,27,83,156,224,121,15,159,210,220,125,120,201,62,212,20,108,243,128,57,206,35,159,183,4,140,70,15,7,28,123,96,212,38,245, +7,59,93,129,207,72,163,45,198,71,105,9,62,156,12,14,156,119,5,236,103,35,203,149,122,231,48,69,244,56,200,99,248,117,244,205,0,77,180,12,124,234,70,122,24,110,134,7,124,98,46,220,227,4,14,195,221,164, +47,119,136,116,235,4,231,30,255,0,52,121,28,99,176,192,237,81,53,244,67,36,67,35,30,231,200,139,175,212,161,35,24,231,25,250,140,209,246,213,234,99,155,169,56,251,58,243,156,156,12,68,79,191,81,147,207, +173,0,43,52,67,4,201,15,61,205,172,192,254,57,41,142,48,9,247,252,41,166,107,117,198,231,67,211,238,192,254,135,0,31,48,243,201,207,35,245,201,83,118,164,96,69,63,211,200,64,123,240,8,136,159,110,221, +70,64,236,207,182,39,123,123,145,234,76,79,252,150,60,247,237,234,57,192,160,9,68,144,55,10,229,122,141,194,34,164,112,51,247,228,201,62,196,119,227,7,4,73,185,0,226,89,24,103,141,169,23,227,146,103,83, +233,211,131,142,199,165,54,189,135,189,188,199,142,65,134,110,63,242,30,122,118,193,246,3,169,119,218,173,207,75,123,131,158,78,33,56,231,177,223,16,246,234,49,211,36,142,104,2,99,47,94,100,39,156,128, +97,0,114,7,123,176,1,247,31,253,106,97,184,7,229,43,113,211,144,179,64,15,78,195,237,164,126,63,78,7,57,67,113,108,71,16,77,193,31,242,197,7,211,248,48,62,188,12,227,24,197,64,210,91,96,159,178,202,1, +227,59,66,127,37,92,103,211,129,199,74,0,155,237,88,224,37,209,35,35,38,107,76,247,29,77,193,35,175,29,205,48,221,113,202,220,149,255,0,175,139,33,193,235,140,207,147,215,248,70,122,103,53,77,165,180, +201,30,75,130,56,32,228,140,140,122,73,158,188,231,140,245,207,56,8,100,182,192,11,14,8,238,34,118,235,206,72,243,249,28,30,51,234,61,104,2,203,94,168,224,173,210,241,128,60,235,32,121,200,227,247,199, +36,99,191,79,126,148,130,233,91,31,61,240,24,239,53,143,83,255,0,125,96,15,78,48,125,106,182,248,198,115,110,220,119,22,185,206,51,223,207,200,239,223,142,231,165,68,239,16,201,242,15,213,173,91,143,251, +230,99,140,96,103,60,140,245,195,80,6,144,159,160,18,93,227,176,243,172,65,198,59,0,184,231,175,7,61,177,192,160,202,227,171,221,128,7,247,237,15,242,28,250,131,145,198,122,214,106,201,27,14,99,137,65, +228,3,107,49,246,7,253,97,199,3,166,73,31,78,105,9,132,145,254,168,30,71,252,123,149,31,143,204,113,248,227,161,199,161,0,188,110,84,158,101,186,200,192,24,123,110,59,231,0,147,245,35,56,31,162,249,170, +115,153,174,123,103,18,89,255,0,38,83,207,234,65,233,147,131,71,114,142,21,173,156,113,203,194,217,29,249,10,115,239,235,193,228,82,238,94,15,151,98,64,199,252,177,184,206,126,128,55,233,159,241,0,185, +189,15,62,117,215,92,229,133,153,95,67,130,97,42,79,182,71,92,210,15,41,142,90,89,15,251,205,102,0,252,160,31,143,111,92,116,53,214,69,60,249,118,74,49,198,33,187,200,207,36,240,14,113,207,111,207,160, +176,4,157,141,170,241,208,69,116,156,118,25,48,30,188,255,0,16,32,118,239,64,15,81,14,70,221,196,123,75,110,58,231,128,86,28,240,127,3,156,242,115,82,133,13,200,47,236,162,104,135,242,132,103,147,237, +159,97,80,146,195,141,246,234,122,146,94,233,65,233,199,203,16,192,231,215,212,114,122,33,101,199,205,45,144,35,4,230,226,236,103,242,132,30,79,171,31,78,152,160,11,38,50,56,43,43,99,159,245,217,4,142, +123,4,25,39,211,142,120,166,148,56,230,41,51,156,2,36,13,128,125,139,243,215,168,25,233,233,80,44,184,207,239,44,136,60,243,115,114,79,28,112,206,170,189,122,103,0,103,154,145,101,24,229,237,136,61,49, +113,33,56,199,92,148,60,14,58,30,61,168,1,164,38,120,142,108,243,144,38,3,24,236,62,108,159,127,94,125,240,194,62,96,124,169,61,6,249,184,31,175,211,35,32,118,30,242,249,242,0,8,251,62,73,235,231,79,234, +56,192,80,9,246,233,144,79,94,171,230,200,79,204,160,246,59,46,46,64,234,123,6,25,60,142,114,58,245,233,64,21,204,160,18,12,104,167,140,226,70,39,190,51,130,112,50,122,240,14,114,9,166,249,128,242,4,106, +122,124,210,178,244,233,128,87,7,142,6,65,233,223,156,218,243,200,206,208,216,25,7,101,205,195,28,143,76,203,142,59,1,235,211,213,12,204,79,222,147,216,125,170,229,121,35,211,204,63,253,110,51,205,0,86, +18,48,200,5,1,29,252,197,124,123,224,168,252,7,78,253,105,222,123,244,121,91,190,54,162,142,49,207,33,15,161,4,231,175,126,184,180,146,62,71,51,156,140,241,61,193,7,241,14,185,233,235,212,10,147,204,148, +14,22,111,166,235,150,56,60,142,119,49,231,158,14,113,219,2,128,40,121,195,146,93,253,0,62,90,241,223,57,25,63,152,61,62,180,134,116,207,222,39,28,141,207,0,4,158,126,246,51,159,80,7,64,51,233,86,243, +51,244,91,140,250,6,152,14,192,244,218,73,199,60,231,140,212,138,147,127,16,156,103,143,189,48,39,29,58,43,115,215,175,94,189,133,0,103,249,200,78,85,240,217,31,242,218,212,142,7,253,114,200,227,183,227, +158,148,240,204,249,35,145,158,211,193,223,145,255,0,44,198,9,250,113,212,226,175,145,49,224,155,142,63,219,185,92,251,100,70,160,241,208,2,71,175,57,2,50,164,128,76,146,3,232,103,151,242,32,171,117,238, +57,62,221,168,2,161,98,9,193,96,70,127,229,226,216,116,247,49,113,248,210,22,45,201,121,130,145,218,230,211,156,247,1,160,206,9,224,243,158,163,235,112,96,2,11,56,232,121,121,189,207,221,251,33,31,151, +227,219,40,193,15,6,121,21,112,79,222,145,113,207,80,62,194,79,99,147,144,113,250,128,86,12,1,192,150,114,15,173,205,176,207,184,42,139,199,62,216,165,50,128,9,18,205,156,100,98,242,219,56,227,168,36, +247,29,241,235,234,76,141,229,47,31,105,57,198,70,230,144,156,103,0,16,214,62,157,249,60,116,239,80,57,7,35,205,140,227,187,48,79,195,230,178,30,228,112,125,241,64,13,105,212,159,191,47,3,190,163,110, +15,215,1,134,56,227,29,133,52,206,153,206,246,233,255,0,63,241,119,235,130,146,158,188,241,142,252,84,68,195,150,62,108,39,7,160,104,179,211,147,145,99,142,216,200,192,245,237,70,232,128,24,150,17,208, +114,208,240,70,9,200,22,93,65,193,206,0,207,57,160,7,27,136,243,203,176,239,205,227,55,92,255,0,117,207,31,175,57,244,165,46,132,103,206,35,142,159,106,152,126,162,117,62,167,238,231,160,230,162,55,17, +140,129,113,6,121,25,243,97,3,25,239,182,209,72,233,158,163,166,105,134,69,108,177,186,183,227,31,242,216,16,58,3,192,131,30,132,129,158,58,112,13,0,76,38,133,65,45,41,35,215,237,83,231,57,246,186,25, +29,184,29,177,235,73,246,152,78,113,50,250,0,102,185,61,122,241,246,192,61,57,7,7,243,21,16,148,168,249,110,160,231,209,228,227,220,109,128,99,145,208,17,156,115,193,192,119,218,73,31,241,247,24,199,164, +174,112,122,244,108,123,116,199,245,160,9,188,232,137,201,117,192,234,75,93,114,113,192,226,235,119,227,142,198,148,221,32,200,34,54,94,57,221,117,147,208,240,13,200,231,211,62,221,170,167,218,27,63,241, +245,110,72,192,229,85,207,28,0,0,144,231,235,250,250,191,237,19,103,137,173,190,108,224,249,97,79,56,231,137,20,231,24,228,142,221,168,2,83,113,110,14,49,207,115,182,83,207,28,100,221,142,156,254,185, +167,249,182,248,221,186,33,145,140,121,115,187,115,198,70,110,91,219,250,84,11,44,199,254,90,196,61,114,204,56,231,156,9,135,110,189,7,97,140,212,134,226,80,56,150,28,127,219,99,158,184,231,206,32,208, +1,190,15,249,233,23,251,173,3,182,15,167,205,54,63,58,145,60,166,57,243,109,186,100,126,229,51,211,169,63,104,227,175,160,238,56,168,68,174,72,253,237,191,94,230,108,118,56,57,156,119,28,28,96,119,60, +211,195,46,73,50,192,125,72,142,83,199,28,18,110,25,125,120,33,177,223,60,18,0,242,209,167,252,180,181,4,246,242,227,35,234,115,116,78,70,120,3,142,216,57,224,23,16,255,0,122,220,156,255,0,207,16,51,145, +212,15,53,135,30,227,240,32,240,221,233,218,120,79,94,182,161,128,200,233,247,113,244,235,140,125,41,8,183,254,41,224,83,158,7,216,212,131,235,206,204,12,127,95,194,128,28,101,143,3,62,67,103,166,35,132, +16,61,0,243,87,29,186,245,250,116,4,182,228,124,205,31,113,133,54,220,241,199,89,248,29,186,17,239,154,104,138,217,135,19,218,18,15,241,91,69,207,62,234,15,183,4,243,129,193,226,131,5,179,30,101,179,200, +56,255,0,143,100,24,39,190,85,57,206,71,126,167,145,222,128,30,62,204,127,229,154,243,211,247,150,157,115,255,0,95,106,71,32,28,156,115,215,221,192,194,160,42,70,61,114,37,128,30,190,215,77,211,161,94, +156,114,1,21,85,173,45,49,204,246,201,211,56,138,35,211,166,65,97,147,212,224,142,120,63,86,253,158,211,144,183,86,216,193,235,105,17,199,108,243,147,232,126,157,125,128,46,150,29,68,114,147,130,1,15, +9,3,142,129,190,209,208,123,99,30,158,161,234,15,149,33,60,255,0,203,72,217,128,234,8,63,104,227,175,29,122,241,142,181,158,108,237,8,255,0,143,219,97,236,45,99,94,62,165,70,121,56,0,30,48,112,49,205, +74,45,45,176,49,127,2,142,223,232,224,131,223,186,28,112,125,191,19,154,0,176,29,134,127,119,119,158,113,242,196,64,246,203,72,192,227,35,158,253,113,71,155,46,126,81,118,61,130,90,28,114,71,36,174,127, +50,123,251,129,95,200,183,31,242,254,167,177,2,221,20,28,119,56,135,211,216,244,199,90,140,197,0,207,250,99,30,249,88,84,116,237,194,38,79,224,79,126,56,160,11,191,233,46,62,83,118,51,206,90,61,60,227, +28,142,26,50,113,215,191,60,117,224,211,54,220,142,60,219,158,79,57,135,79,56,57,207,4,40,198,14,115,192,231,185,197,84,242,160,56,219,113,114,199,174,2,196,57,207,29,250,3,143,240,29,158,64,94,22,107, +188,19,144,124,184,31,167,76,21,32,254,60,28,224,158,216,0,176,209,93,184,226,105,191,224,86,250,121,227,7,143,245,39,191,82,1,253,106,33,29,208,227,237,12,49,158,62,199,98,113,220,28,136,51,207,61,59, +99,3,39,21,1,206,237,203,113,118,14,51,196,17,103,36,156,231,45,232,113,156,30,185,231,187,252,199,193,205,206,161,156,142,2,198,1,31,132,82,2,56,7,31,167,90,0,127,151,116,56,107,151,61,50,77,157,139, +129,199,79,248,245,24,227,29,9,32,31,81,138,83,19,96,102,88,137,29,218,198,223,35,28,30,86,211,167,126,189,254,149,3,75,113,213,110,175,212,1,145,141,185,207,174,5,152,63,204,244,227,57,20,207,181,78, +58,205,168,54,79,101,83,147,140,224,255,0,163,31,207,159,211,20,1,104,66,115,196,209,12,245,197,157,185,232,59,127,163,169,62,224,241,223,234,239,43,177,158,47,65,155,40,193,253,45,249,237,193,32,18,57, +60,85,3,115,39,59,155,81,32,255,0,178,6,120,60,18,109,191,44,14,58,103,173,39,218,31,128,13,255,0,97,202,49,231,211,229,64,59,19,252,207,20,1,120,198,79,87,137,185,199,22,121,228,250,254,228,96,253,79, +175,108,154,127,148,138,7,17,156,240,73,179,112,115,232,54,170,147,159,92,159,110,112,107,63,237,18,114,25,111,25,71,118,141,250,3,215,25,201,235,233,219,233,78,23,101,78,71,218,84,245,203,67,49,246,228, +137,70,51,156,118,224,28,156,144,40,2,250,224,28,0,123,255,0,203,172,255,0,76,128,92,251,115,183,249,19,77,45,183,37,142,57,249,115,109,115,211,184,253,217,36,15,110,79,76,224,154,169,246,199,124,130, +210,116,239,111,112,64,4,147,212,92,168,233,200,201,30,192,119,122,78,217,202,201,47,190,45,220,131,245,6,224,158,63,64,112,51,214,128,45,137,147,3,231,3,29,71,145,168,31,215,30,156,244,39,60,123,132, +55,40,56,18,227,61,254,195,168,190,113,158,135,120,198,79,227,235,129,140,49,39,147,179,49,255,0,122,9,8,60,247,83,114,1,199,110,254,163,174,94,39,126,50,35,57,235,155,66,122,116,207,250,96,246,231,219, +175,20,1,17,153,73,226,119,82,121,59,108,175,6,122,1,157,242,130,61,57,207,78,15,170,121,152,198,235,137,152,131,144,62,197,117,142,125,15,156,221,65,252,114,121,237,86,119,100,103,16,14,252,194,7,83, +223,55,189,191,2,125,251,130,67,211,117,182,50,8,30,90,16,122,0,121,186,97,142,217,227,235,140,80,5,83,58,147,130,243,28,119,251,45,200,232,57,206,235,143,196,224,2,120,232,50,106,63,50,49,203,60,163, +235,109,48,81,232,78,46,83,252,245,246,188,101,32,143,154,212,116,57,17,91,128,63,19,119,211,220,145,237,236,210,75,30,100,181,28,96,19,21,185,224,3,207,23,12,79,78,163,143,110,77,0,81,50,219,227,153, +112,122,103,236,237,158,79,56,221,118,73,39,184,231,182,7,106,139,204,182,227,51,41,29,183,91,55,67,158,9,19,28,158,157,9,237,212,116,208,101,99,200,184,180,35,24,3,101,168,227,254,4,231,142,79,249,60, +196,83,39,45,53,167,3,35,63,100,60,250,252,161,136,36,115,219,62,190,160,21,150,75,76,149,46,135,208,152,78,125,200,205,192,244,61,70,15,110,188,61,165,181,24,249,211,143,250,119,132,12,131,235,231,228, +240,49,147,211,36,129,220,188,159,73,173,142,56,233,111,131,220,125,216,91,243,35,60,138,174,204,135,32,77,7,212,52,127,82,56,128,112,51,130,15,67,158,216,160,7,121,150,237,210,68,25,201,228,68,184,61, +120,204,174,63,195,61,56,197,56,61,176,24,221,27,99,0,141,208,145,131,158,79,205,208,224,240,78,61,121,170,164,168,28,74,159,85,152,47,94,223,40,29,249,233,239,235,73,230,168,232,253,49,159,223,238,199, +168,192,92,129,142,159,49,252,9,20,1,116,92,218,161,60,65,158,8,59,224,30,252,129,158,135,166,15,124,30,130,144,222,91,30,15,217,193,63,237,192,58,147,147,221,186,28,0,14,125,242,42,167,158,127,190,14, +71,252,244,82,78,57,193,221,34,244,245,61,61,185,166,52,178,183,2,66,61,0,185,143,25,239,247,110,15,167,57,244,252,128,46,155,251,113,218,208,251,238,140,100,240,79,60,15,174,6,125,57,28,180,234,17,228, +144,176,1,216,163,163,2,58,147,192,7,24,233,201,200,252,234,134,102,4,225,159,166,79,239,148,142,222,178,156,103,28,116,239,156,102,152,101,184,232,28,99,56,249,166,0,126,59,110,20,143,243,244,160,13, +65,168,70,64,202,91,159,114,122,14,15,113,232,123,156,125,56,165,58,132,100,31,150,0,49,217,137,237,156,124,168,123,125,58,227,61,171,36,203,121,218,104,207,66,54,204,125,15,115,116,153,199,29,51,159, +76,241,76,55,87,227,56,148,126,51,2,79,94,70,111,112,127,19,206,126,180,1,162,110,208,231,9,11,47,67,195,158,156,118,78,163,176,237,250,84,102,226,34,121,137,15,28,98,54,254,76,131,167,161,199,57,193, +192,205,103,125,166,243,146,101,35,3,146,36,140,143,95,249,255,0,35,145,207,35,29,251,82,125,170,244,12,9,91,7,36,99,200,199,126,127,227,247,144,73,237,206,50,6,15,64,11,175,115,1,24,242,16,250,18,128, +126,124,253,120,199,78,248,25,162,169,155,155,211,201,102,199,78,18,28,251,156,11,147,158,189,9,63,206,138,0,240,225,28,227,163,21,3,251,162,219,191,213,79,25,30,252,250,80,22,232,156,121,132,240,58,165, +184,224,112,126,226,12,158,227,159,208,114,34,237,32,174,161,39,67,159,222,54,71,78,6,20,30,125,78,125,135,74,155,59,78,78,163,38,79,79,222,204,119,96,100,175,11,199,36,227,130,0,201,200,199,32,13,9,58, +228,49,151,39,209,80,117,24,200,1,178,79,29,179,142,157,122,188,9,123,187,147,198,1,139,57,200,233,156,143,253,4,227,52,237,206,127,229,254,69,201,192,204,147,117,245,201,133,185,39,175,39,129,211,140, +83,195,78,6,62,221,47,108,17,113,56,246,39,2,211,143,192,240,40,1,241,249,128,14,14,58,100,131,131,142,248,3,145,156,247,246,7,138,184,136,121,204,108,120,231,17,73,203,14,227,46,6,122,126,56,227,130, +77,60,220,246,188,157,240,51,196,243,183,25,237,155,51,128,121,56,200,224,30,163,56,93,215,39,25,184,155,168,25,105,229,31,251,104,9,231,240,25,193,233,130,1,120,9,71,221,130,98,122,127,199,186,46,115, +238,88,118,227,233,193,227,53,42,188,196,227,236,183,10,14,6,18,48,73,235,156,0,204,57,250,0,51,89,232,110,57,62,100,175,199,105,228,35,156,0,127,212,14,189,49,130,59,226,156,77,208,36,23,96,9,24,15,60, +153,227,60,241,18,231,191,80,71,92,118,160,13,53,243,240,73,134,245,122,115,177,64,31,153,218,115,199,81,158,189,170,64,100,207,49,221,144,58,143,42,60,125,6,48,114,50,123,122,147,89,74,215,32,129,243, +17,198,10,221,74,1,236,78,60,130,79,57,239,214,166,15,118,9,62,84,132,241,214,105,27,249,219,99,62,199,215,233,64,26,168,92,227,22,247,68,103,28,6,94,79,182,252,0,71,29,71,183,2,172,32,98,127,227,222, +232,28,244,102,201,193,227,212,250,116,24,250,158,131,25,100,185,39,253,83,142,188,249,202,185,35,131,199,217,135,108,156,244,28,3,237,42,201,56,60,238,4,142,87,237,120,57,247,81,24,25,35,158,156,28,19, +211,128,13,197,133,206,49,21,214,118,159,186,203,158,71,78,27,39,223,62,191,90,148,65,49,254,11,224,71,7,230,92,127,227,205,206,51,232,122,154,198,18,75,129,156,228,14,127,210,147,31,172,68,228,99,245, +234,115,86,22,89,58,50,185,30,162,242,30,71,110,177,161,206,6,78,9,250,226,128,53,86,11,149,228,53,226,15,250,237,18,142,253,119,50,227,175,30,255,0,149,74,182,247,36,130,110,174,20,18,126,244,232,122, +118,249,93,65,25,247,63,143,6,178,68,146,28,252,178,47,94,62,219,1,252,130,43,19,223,177,199,94,249,169,4,206,14,8,113,158,132,221,196,65,28,119,16,31,231,159,83,200,160,13,133,182,185,35,139,137,216, +30,71,239,34,199,115,147,188,242,71,245,234,8,230,85,180,156,103,50,76,78,115,140,218,183,185,251,204,115,219,140,122,123,86,58,78,114,1,96,79,57,6,245,70,62,131,202,11,237,248,123,102,173,139,166,24, +199,190,1,189,136,118,236,60,160,56,244,199,127,165,0,106,37,188,192,14,38,60,100,176,22,99,61,185,25,235,219,219,167,181,76,45,229,0,110,251,80,31,91,3,192,238,119,231,60,117,206,61,120,53,155,29,243, +227,59,98,35,167,252,125,196,72,193,227,27,99,201,237,201,198,112,122,84,226,237,142,8,81,206,56,251,64,113,193,227,143,47,35,63,76,159,126,180,1,116,64,195,159,58,228,114,6,10,233,100,241,211,24,0,227, +39,212,142,120,32,245,113,87,29,101,186,111,92,199,166,147,206,48,9,31,92,113,145,198,123,226,171,165,193,110,177,175,174,75,131,142,121,220,4,64,100,250,159,195,56,226,101,155,145,148,28,19,202,187,227, +216,13,168,189,179,198,78,59,100,96,80,4,138,121,224,78,72,39,254,89,105,199,182,8,233,206,70,114,126,99,131,142,135,155,10,195,188,119,45,158,127,227,222,199,3,168,198,79,61,179,233,140,143,90,128,74, +173,142,10,140,99,150,152,31,199,144,127,28,14,184,228,12,137,86,72,240,79,202,196,241,140,79,198,126,188,116,245,24,207,189,0,78,36,141,112,62,207,49,7,28,27,125,60,228,247,201,220,167,233,142,113,193, +247,155,54,231,134,178,148,228,231,254,61,108,136,228,123,72,57,237,211,142,70,113,85,213,134,0,84,92,244,4,168,32,96,158,6,88,113,140,129,145,233,197,76,169,33,198,85,115,158,158,84,103,24,63,245,209, +126,190,157,243,64,19,44,144,15,187,103,39,161,253,205,186,251,1,132,99,223,223,131,128,77,76,37,183,35,230,180,156,99,140,129,24,3,28,99,135,60,100,245,32,244,224,12,213,97,27,228,96,48,193,28,24,129, +7,240,19,0,120,231,190,15,61,113,153,60,169,200,56,220,57,232,34,85,252,70,102,3,190,57,192,254,160,22,210,104,58,45,180,157,48,73,145,129,231,140,158,72,228,14,113,144,122,241,208,88,89,227,32,226,213, +219,0,96,171,63,7,234,14,7,60,115,250,86,112,142,224,17,251,227,130,49,141,144,140,113,198,10,204,78,122,250,254,84,227,21,223,24,153,121,35,7,116,100,147,212,231,50,227,243,3,174,56,56,160,13,48,21,185, +107,41,176,122,17,59,14,190,164,31,95,199,174,59,26,182,145,197,130,12,51,32,0,112,110,101,56,35,175,59,199,227,156,118,56,56,205,97,164,87,188,231,45,128,1,36,64,114,78,113,223,211,220,246,29,113,79, +11,118,167,62,88,28,99,230,91,112,115,142,160,52,160,31,99,211,175,208,0,110,126,239,56,9,32,25,224,253,162,108,122,228,237,185,7,183,183,56,167,3,25,192,217,32,207,172,243,99,175,175,219,1,7,191,67,249, +214,50,181,224,35,49,12,100,130,76,118,100,14,253,90,82,15,176,200,227,169,197,76,30,232,12,239,198,61,18,209,70,113,200,4,74,71,126,70,61,15,169,0,27,97,163,83,140,5,56,29,110,152,99,24,57,193,186,36, +100,143,161,254,79,243,99,63,121,208,1,140,255,0,166,57,35,39,130,65,187,25,245,228,30,123,242,115,132,100,184,3,147,46,121,198,126,207,158,220,224,57,28,117,207,29,189,114,100,89,238,250,121,143,211, +160,120,70,122,28,140,18,73,61,241,158,224,98,128,58,5,104,14,115,36,92,18,57,152,177,207,190,47,71,57,236,79,106,92,192,71,204,34,60,242,65,234,58,255,0,207,247,61,58,140,227,175,76,214,34,206,227,239, +75,50,144,49,143,144,244,207,3,106,28,129,199,92,251,19,205,76,179,30,185,184,110,164,156,1,248,12,71,201,63,94,244,1,169,182,22,201,1,64,245,220,192,30,131,57,251,112,0,244,28,131,207,173,56,52,41,140, +21,7,156,28,182,9,227,143,248,255,0,219,147,249,123,119,170,2,124,99,41,119,207,112,160,156,28,227,37,115,159,167,95,97,214,151,237,0,113,182,235,215,149,113,199,112,2,247,30,195,215,241,0,210,15,25,224, +36,76,57,56,25,28,242,51,143,183,243,158,158,156,103,60,114,165,135,104,98,24,228,96,224,28,118,230,228,140,116,227,57,247,198,49,158,183,10,120,196,217,25,251,203,33,63,170,31,195,234,61,170,80,196,243, +137,253,114,18,69,227,160,193,251,63,67,250,112,40,2,240,97,193,17,67,233,131,176,244,29,199,158,199,215,175,214,156,36,140,28,121,17,131,142,209,200,120,244,249,101,228,15,64,115,235,142,51,71,113,221, +193,153,129,193,203,9,136,32,142,120,251,43,96,254,56,231,190,78,101,12,184,5,145,249,236,22,112,58,117,31,232,139,211,158,167,242,25,160,11,161,163,207,250,165,36,245,196,83,15,200,239,98,56,246,35,142, +148,48,66,62,228,96,224,245,89,186,113,146,115,232,115,129,211,131,192,237,80,58,1,196,46,65,235,242,74,115,248,155,97,207,184,35,235,72,88,224,132,182,151,57,24,253,212,167,184,235,136,148,100,231,191, +181,0,94,85,3,188,73,207,247,100,30,249,29,9,245,3,208,113,197,74,60,191,226,157,65,224,127,171,152,140,145,244,231,159,99,249,142,115,129,148,114,109,230,11,208,254,238,92,118,244,136,244,192,56,255, +0,235,96,221,208,152,228,80,127,188,146,131,199,214,49,255,0,124,247,250,154,0,217,85,128,224,27,152,142,57,249,150,232,1,146,50,48,6,57,231,210,166,41,107,192,19,64,6,14,127,119,118,64,28,112,114,163, +215,39,140,250,113,88,106,170,122,160,207,95,154,57,0,7,254,253,224,243,244,239,218,165,88,144,240,177,2,79,101,141,120,224,127,177,158,223,204,96,115,128,13,129,5,163,245,187,131,30,187,46,56,235,216, +176,35,183,111,94,79,116,107,91,60,231,237,113,15,247,99,149,114,123,115,230,47,79,229,219,165,100,48,81,193,76,123,20,35,158,248,1,63,31,207,158,41,48,188,254,236,17,234,35,126,191,83,24,245,250,118, +250,0,106,139,59,102,225,111,144,251,1,48,245,63,243,215,56,192,224,114,104,251,20,75,199,218,148,140,129,157,204,14,125,129,108,30,156,114,113,223,181,99,144,51,247,72,245,196,14,65,0,227,160,117,25, +207,182,71,167,90,64,16,143,188,64,56,201,242,36,7,223,248,241,244,32,245,199,226,1,174,108,151,156,92,18,71,92,28,227,167,172,152,207,212,12,115,193,230,154,109,79,79,50,76,119,253,219,145,223,142,24, +254,36,96,251,14,249,138,145,140,229,200,239,204,46,56,227,221,184,246,57,231,142,120,5,254,92,39,24,152,103,191,238,27,143,108,121,68,247,235,156,117,160,13,31,177,30,58,30,152,13,27,1,233,206,231,7, +241,207,208,230,152,214,155,78,74,41,207,66,34,12,57,233,157,206,27,24,29,15,175,62,181,158,109,226,233,230,161,30,134,221,143,191,252,243,61,125,113,198,59,241,134,237,219,157,175,8,236,79,144,224,96, +142,249,131,39,143,98,120,224,241,64,22,204,68,17,242,174,57,193,49,168,25,238,79,239,70,122,140,14,217,57,199,90,76,58,228,5,80,0,236,170,63,16,222,118,71,92,156,115,215,142,194,184,47,140,121,240,1, +192,31,184,184,92,253,54,195,199,190,15,29,205,48,43,18,64,154,217,185,231,49,92,231,219,31,32,61,249,96,14,58,128,104,2,218,205,42,245,3,129,221,143,63,77,147,19,250,31,198,159,246,167,3,148,80,121,25, +41,33,193,233,201,98,50,49,235,144,115,235,85,86,59,129,202,207,104,0,245,142,240,103,159,82,140,7,184,193,7,138,82,46,184,2,123,19,245,75,161,159,92,238,133,137,236,70,63,60,230,128,38,55,78,195,253, +108,106,61,237,230,99,158,120,27,122,14,63,62,156,84,66,242,64,79,239,162,0,117,31,99,156,244,255,0,182,138,51,232,6,1,250,228,211,11,94,143,249,105,167,96,247,41,32,250,15,154,215,32,250,99,159,94,212, +211,61,242,140,3,96,79,251,33,193,234,59,27,46,71,0,22,201,247,29,13,0,76,183,108,84,102,104,240,48,50,108,101,245,238,76,220,250,100,243,248,210,27,199,207,252,124,100,28,14,45,166,207,111,225,19,227, +60,122,243,235,208,213,119,150,248,224,159,236,246,250,179,40,29,185,31,101,82,127,94,163,185,21,17,154,224,30,83,76,36,31,239,18,115,248,219,241,235,211,211,216,208,5,131,121,34,146,22,119,39,39,4,218, +203,142,51,233,112,49,236,6,62,167,179,77,229,203,97,150,96,125,254,201,57,231,142,255,0,105,35,167,191,61,15,96,107,153,39,98,75,37,128,232,114,9,31,158,45,71,167,76,103,7,24,205,70,205,54,15,201,167, +28,158,9,47,130,79,60,15,178,240,121,25,234,115,235,142,0,46,253,170,236,14,102,60,158,246,146,143,168,7,205,99,200,244,110,56,60,212,77,117,120,220,137,163,39,254,188,228,7,25,60,241,32,200,63,161,245, +170,190,100,195,160,211,135,94,138,78,79,124,226,211,159,112,79,111,165,70,215,76,6,29,116,242,58,96,70,135,175,81,153,44,198,56,246,3,215,181,0,90,51,223,54,72,150,62,189,224,96,72,62,153,159,39,158, +185,231,61,135,52,207,62,248,100,151,133,136,193,207,144,234,125,142,124,243,159,83,140,118,170,94,106,49,192,131,79,25,245,68,235,233,149,178,250,17,146,121,228,243,197,72,60,166,235,22,158,61,48,142, +48,57,199,221,180,110,231,130,61,104,2,226,221,94,5,59,188,162,56,24,216,163,4,30,6,12,204,51,156,228,227,56,237,205,56,95,93,47,65,16,247,28,31,126,67,129,201,3,57,234,78,71,57,170,13,20,13,255,0,44, +236,134,61,86,102,227,235,246,49,159,110,63,30,112,91,229,219,131,183,203,177,39,158,130,80,122,96,100,11,35,232,125,121,250,154,0,209,251,85,203,147,205,191,39,161,126,220,99,172,163,159,110,191,142, +105,159,106,187,232,100,178,0,12,140,183,35,242,144,243,232,58,242,114,49,138,162,34,143,248,98,182,206,59,25,189,113,218,200,99,215,160,228,241,235,74,168,195,57,142,220,103,145,137,110,212,158,1,201, +197,190,51,249,117,233,232,1,104,207,114,73,43,53,170,144,121,33,134,62,157,64,60,112,57,56,166,153,174,73,57,186,128,125,31,4,227,216,72,185,193,238,15,74,175,134,7,253,92,99,166,118,79,113,159,79,226, +135,191,224,56,227,221,65,96,14,99,110,253,101,114,62,156,198,56,254,116,1,32,55,36,255,0,199,208,57,61,16,147,140,224,3,159,53,179,219,177,0,118,7,154,121,19,14,62,212,73,28,225,143,57,236,7,204,199, +63,135,28,241,193,170,108,92,28,44,109,208,231,50,149,28,246,4,41,60,99,147,140,123,147,208,89,102,82,0,243,64,60,252,179,200,113,245,206,57,61,50,71,174,113,220,2,211,37,195,12,155,163,223,32,50,131, +233,140,113,159,110,156,100,224,96,84,126,85,209,0,9,88,143,103,140,126,35,63,200,158,49,206,1,168,205,204,195,56,19,156,103,131,112,0,250,100,191,229,142,122,227,189,64,247,183,0,224,135,3,142,90,229, +50,57,200,234,217,35,183,76,103,189,0,89,48,94,28,230,78,56,192,243,97,227,175,36,151,35,211,61,56,224,251,71,246,91,149,206,101,36,140,125,201,32,199,98,9,59,152,231,235,252,249,170,141,123,59,116,44, +190,184,157,88,224,103,140,9,215,63,76,211,126,209,112,51,150,61,127,190,113,250,79,144,51,193,192,192,232,14,70,40,2,233,142,108,99,115,54,8,63,52,144,131,198,15,63,119,142,113,156,247,24,193,6,144,37, +200,236,199,185,221,52,43,255,0,160,200,51,248,246,0,244,197,80,55,19,158,189,193,7,19,62,79,76,240,102,24,24,199,182,121,166,121,210,156,140,28,228,231,15,39,76,122,137,179,192,3,158,56,231,165,0,104, +109,187,201,2,6,36,241,145,113,30,122,243,129,191,7,183,124,245,198,105,24,94,143,249,98,227,63,244,246,138,51,159,65,158,167,131,215,3,0,86,105,150,126,220,143,105,102,82,62,153,155,3,211,175,36,224, +100,80,143,49,56,47,48,207,247,102,156,96,251,126,247,7,219,167,20,1,125,158,244,244,140,19,215,254,62,212,251,103,28,227,29,48,0,239,156,226,155,230,106,1,178,96,221,198,64,55,3,113,237,201,232,125,113, +128,120,237,140,26,102,57,79,241,220,142,115,134,154,92,12,19,158,119,224,112,56,4,254,28,226,171,53,182,236,159,180,76,9,206,49,44,195,39,159,79,166,71,57,61,168,3,84,201,120,122,219,128,127,235,180, +126,190,203,219,208,246,227,4,96,84,126,117,216,39,247,92,244,3,204,85,57,250,132,254,71,166,114,64,21,152,182,44,122,92,78,121,207,15,112,115,158,199,25,57,235,199,25,206,7,29,44,173,131,129,159,54,224, +227,213,174,15,161,207,40,71,35,212,244,250,140,0,88,55,55,93,224,36,142,254,119,29,1,28,133,56,234,9,60,227,20,130,226,229,186,196,6,1,233,114,192,241,212,1,229,227,208,30,72,235,158,5,87,54,229,122, +201,47,39,31,122,92,255,0,232,190,7,169,231,25,250,97,194,4,4,254,241,193,239,153,28,2,123,255,0,203,19,143,167,56,238,121,160,11,107,45,206,57,35,30,243,146,112,56,61,109,200,57,193,60,228,250,227,138, +112,150,80,78,231,143,131,207,239,21,186,156,114,13,161,35,158,79,92,126,28,84,16,70,71,18,177,236,65,121,71,215,145,109,207,97,244,250,12,56,197,24,92,249,131,130,48,115,43,116,231,28,90,30,73,207,113, +145,158,148,1,107,206,108,227,125,177,233,247,151,118,115,244,178,32,250,243,200,60,118,167,137,88,156,131,105,243,14,190,78,227,159,95,248,240,39,142,189,70,70,71,28,99,60,69,15,36,202,172,122,30,38, +4,122,242,109,112,121,200,224,143,212,211,76,113,12,225,162,199,163,25,179,198,113,210,213,61,127,250,248,160,13,63,57,120,5,173,178,49,247,97,193,63,135,216,70,15,126,156,118,244,169,68,178,1,145,36, +60,251,21,199,226,182,125,78,58,159,207,177,202,64,131,144,33,108,255,0,23,155,114,58,251,8,49,128,71,184,245,205,73,152,241,254,174,17,207,105,230,199,28,243,186,223,131,142,157,176,58,142,192,26,59, +217,255,0,229,165,190,225,193,59,165,206,15,98,62,198,78,121,250,158,227,189,0,73,218,75,96,70,121,59,199,126,228,216,147,208,243,215,220,3,138,203,103,135,186,167,78,130,121,65,207,29,49,15,191,83,237, +210,163,253,201,206,84,142,121,34,234,227,61,7,24,251,62,58,119,193,160,13,173,178,145,128,214,108,115,199,27,190,135,63,96,28,100,14,112,121,29,51,192,140,165,202,245,54,196,250,140,168,206,125,13,142, +64,224,227,241,25,56,200,202,204,67,163,201,232,72,186,185,247,227,254,61,192,207,81,215,39,166,56,166,153,209,120,18,92,99,175,23,18,227,144,15,25,128,253,15,245,160,13,61,151,71,128,240,131,236,207, +219,182,69,134,7,124,2,122,243,138,141,161,186,60,249,176,3,146,127,214,28,227,140,245,180,30,158,153,57,38,179,76,202,221,37,185,192,60,98,115,193,233,200,104,151,3,234,61,134,105,192,19,210,75,159,79, +248,248,63,252,104,246,201,237,142,58,100,80,5,207,46,227,167,159,24,61,182,200,65,233,199,43,110,7,191,60,115,207,20,223,34,224,140,137,147,61,179,51,127,75,115,219,211,61,250,231,2,174,199,63,242,241, +116,2,255,0,211,86,110,228,158,68,43,250,241,156,245,6,157,178,83,202,205,117,193,3,38,83,198,59,3,179,35,220,100,231,39,167,57,0,148,193,117,158,101,132,142,164,121,210,224,3,255,0,110,132,19,193,244, +60,146,115,154,99,37,194,143,245,150,231,253,217,100,200,25,207,65,105,219,177,36,117,231,190,98,97,56,200,51,92,245,201,253,226,145,215,156,225,62,158,192,158,51,205,56,9,65,31,190,185,36,131,198,240, +11,96,156,128,76,68,156,224,231,142,188,14,156,0,46,203,146,14,38,128,100,142,178,205,248,112,182,185,247,199,92,250,243,148,217,114,6,68,209,131,158,162,75,158,91,161,31,241,235,215,32,123,156,14,157, +104,45,32,233,36,160,247,27,145,179,147,144,9,48,142,196,100,140,146,122,112,77,38,110,15,32,200,59,103,202,133,137,224,122,192,71,243,233,233,154,0,114,181,224,56,18,110,57,3,59,166,124,123,115,108,72, +7,30,156,241,239,83,102,243,28,130,192,231,164,82,176,30,189,109,128,193,201,206,122,250,113,80,136,238,78,114,37,108,243,197,173,190,1,236,72,22,195,244,61,255,0,32,199,50,242,35,148,244,227,236,150, +196,117,236,86,0,65,192,200,221,239,211,184,4,187,238,199,59,9,201,199,16,77,159,98,74,218,156,114,15,208,231,240,126,235,146,48,34,145,187,15,220,76,0,227,190,109,7,183,191,182,121,170,219,164,31,122, +25,137,24,35,253,18,35,212,117,255,0,81,192,7,0,244,31,82,120,119,218,31,188,82,143,102,182,132,123,129,145,26,224,250,241,147,211,61,40,2,82,110,70,7,144,112,71,252,251,204,84,119,192,205,184,30,189, +1,39,241,205,72,162,97,247,224,97,207,252,251,49,3,28,224,3,18,156,246,249,176,15,183,21,95,237,88,235,20,157,63,134,40,143,167,76,66,115,144,59,231,7,145,72,46,21,143,250,153,73,39,254,125,212,145,207, +95,150,220,224,100,243,237,156,99,173,0,92,218,207,128,21,151,61,49,104,231,167,124,0,65,244,56,39,3,245,176,163,111,222,14,114,58,155,41,121,31,151,83,156,145,192,207,165,102,249,160,227,108,18,12,159, +249,246,39,29,113,210,220,103,243,207,244,112,147,0,230,55,7,184,251,33,32,30,50,115,229,169,245,227,2,128,52,140,170,50,114,87,253,235,9,58,140,31,66,54,241,206,63,174,75,76,145,30,178,132,245,221,97, +63,3,240,28,126,71,252,40,239,207,38,22,28,14,5,166,59,245,231,107,28,245,207,61,1,227,168,12,209,127,207,38,7,56,230,216,227,140,245,253,248,227,249,103,165,0,88,121,45,242,195,237,80,115,140,238,179, +184,94,131,142,72,206,114,126,189,253,169,85,161,233,246,171,124,117,24,138,113,212,228,244,0,119,39,147,207,183,74,174,101,140,131,149,3,144,73,242,100,94,153,57,56,184,193,235,215,183,215,162,9,162, +234,24,143,251,101,32,39,183,95,180,103,140,156,116,227,242,160,11,185,64,62,91,139,108,17,252,81,203,140,15,81,230,129,143,76,224,210,124,189,13,197,161,238,3,71,41,30,195,62,112,60,15,115,211,166,51, +84,89,145,142,67,169,207,24,49,202,79,174,14,233,199,208,114,64,231,4,240,41,165,130,140,102,48,61,12,39,211,158,77,200,227,219,255,0,215,64,23,89,136,255,0,150,246,185,246,130,225,190,152,196,164,96, +241,158,199,211,166,89,35,201,199,239,224,247,204,55,3,215,128,11,99,223,168,239,222,169,135,4,96,61,186,242,0,204,74,185,224,96,156,234,3,158,188,140,123,244,34,148,78,84,253,251,98,0,192,202,68,15,62, +135,251,75,147,142,49,199,208,244,160,9,203,202,115,137,237,0,35,161,18,2,59,116,50,41,227,167,175,7,30,241,132,152,146,76,246,36,30,131,56,32,158,120,12,196,115,223,143,202,162,121,247,113,230,91,12, +245,5,99,234,113,255,0,81,18,115,248,251,14,56,166,44,139,145,251,200,20,242,71,10,1,228,122,106,7,174,122,119,29,177,140,0,78,96,159,140,75,100,78,59,178,176,30,252,228,145,131,158,167,220,3,205,53,173, +231,110,175,101,129,221,76,106,112,65,227,239,14,157,249,239,211,61,25,246,134,28,11,136,64,24,24,13,140,117,224,47,219,198,127,46,113,128,40,251,73,233,246,160,15,60,137,2,231,254,250,191,193,198,125, +50,123,17,206,64,30,45,166,32,228,219,227,175,250,184,219,131,220,146,220,247,239,143,196,83,126,204,7,222,123,96,61,213,64,30,191,117,143,60,99,174,120,165,243,164,198,22,225,79,161,55,49,15,78,223,110, +231,159,151,219,168,230,156,37,144,156,153,145,179,156,98,230,28,231,142,255,0,218,25,199,3,28,158,253,49,64,16,155,101,31,199,110,112,72,200,126,158,184,228,96,115,192,193,28,154,119,147,8,63,59,195, +200,206,60,253,159,204,119,25,252,123,228,10,155,207,144,241,231,236,28,231,109,220,71,244,251,105,207,229,249,210,9,24,228,27,166,32,122,78,135,60,251,206,220,254,35,233,215,0,12,9,108,122,155,83,208, +124,215,168,88,231,140,227,7,211,190,61,184,205,13,4,100,6,81,108,195,253,153,208,224,240,123,40,7,60,241,193,236,0,233,82,135,7,25,186,145,78,70,51,58,17,223,61,36,57,237,233,199,61,71,11,191,0,103,80, +114,58,237,243,65,35,145,233,184,143,92,128,71,95,106,0,173,229,170,142,82,60,118,218,209,182,51,129,146,114,8,57,200,245,235,199,2,149,85,15,2,40,135,251,242,109,61,125,152,2,79,126,112,51,156,117,171, +98,83,142,47,216,99,160,50,32,39,175,36,236,96,49,142,164,103,208,158,48,198,144,183,75,242,121,35,230,149,7,56,255,0,174,35,62,135,169,228,243,205,0,71,185,87,164,112,147,237,40,29,56,227,150,232,113, +145,198,71,228,36,18,33,25,48,71,215,31,241,240,7,226,51,131,211,183,175,94,180,129,177,143,244,216,137,36,19,153,87,35,57,237,246,102,228,2,59,99,140,145,70,236,158,110,225,56,4,134,44,199,4,17,220,88, +31,99,212,115,207,166,0,19,206,76,133,91,112,113,243,2,110,193,233,212,130,87,25,61,79,56,253,49,34,207,207,207,110,88,114,127,215,66,195,28,2,1,57,198,120,237,147,207,78,208,23,95,249,251,135,118,9,206, +65,61,255,0,233,192,31,115,147,198,123,228,154,107,237,35,254,62,160,36,156,140,162,28,224,113,140,217,19,192,250,118,233,138,0,185,231,168,56,91,96,1,3,63,189,131,168,252,115,249,143,126,185,166,155, +153,14,74,218,151,255,0,114,88,184,192,61,213,199,63,174,125,120,170,43,30,72,253,252,88,193,36,133,139,159,160,123,16,71,211,250,211,190,204,167,159,180,197,147,158,54,64,51,245,38,203,29,201,3,35,235, +232,1,103,237,78,167,45,102,224,28,224,60,248,255,0,218,254,248,201,224,146,122,114,2,139,208,127,229,213,131,14,112,46,194,14,121,29,101,32,126,159,137,224,83,251,36,36,147,189,75,17,252,63,100,207,110, +255,0,101,78,7,160,206,51,219,138,83,104,152,225,178,122,156,152,58,253,84,46,120,227,156,80,5,147,119,32,7,109,188,131,167,203,246,213,207,99,199,239,190,97,237,215,160,228,230,153,246,201,28,133,54, +119,7,177,255,0,77,3,255,0,106,240,15,108,244,24,28,138,141,109,3,100,145,145,192,24,17,28,250,114,24,30,49,142,220,241,82,11,48,57,7,111,60,228,66,6,48,121,110,189,143,167,233,64,14,243,207,83,109,48, +239,131,123,31,127,172,196,131,237,142,212,44,204,199,152,136,192,228,53,220,13,158,71,252,244,148,254,24,233,158,132,243,73,246,80,58,76,6,115,206,203,99,143,76,22,198,51,211,57,255,0,123,0,230,148,91, +247,105,128,39,161,49,91,14,152,232,193,72,198,61,15,177,235,64,14,50,134,57,216,7,175,250,117,168,4,227,169,31,55,127,200,116,30,177,231,118,7,0,115,194,223,89,231,191,31,119,240,198,59,112,42,65,111, +24,60,204,57,239,136,186,158,9,218,33,252,56,57,235,154,152,67,110,163,253,122,142,56,45,208,231,35,162,168,239,244,231,191,160,5,109,160,119,96,8,35,254,63,108,179,140,244,229,112,221,136,227,159,83, +138,114,236,28,25,153,125,49,115,166,150,238,56,221,15,228,73,205,76,86,1,210,123,99,219,37,228,29,56,201,11,184,247,232,49,158,227,61,91,251,156,16,183,22,199,190,209,246,172,103,144,71,8,122,244,4,140, +144,61,232,1,187,80,156,27,137,142,121,193,159,77,198,51,212,159,32,250,241,143,126,6,115,74,22,44,100,200,196,158,163,237,26,112,235,140,28,139,108,19,237,192,233,218,162,217,23,36,205,8,3,156,15,52, +147,208,147,150,129,143,255,0,95,219,21,27,71,6,115,231,198,114,15,85,144,149,239,142,33,7,234,54,255,0,67,64,23,68,80,54,62,124,28,14,178,233,236,125,248,48,175,32,118,231,249,16,191,187,83,133,96,79, +32,101,236,56,235,211,0,126,3,29,253,13,101,149,132,231,50,219,176,25,251,177,73,147,236,79,147,201,254,99,3,56,226,162,48,198,192,224,64,65,227,152,220,31,98,48,7,99,158,71,111,165,0,108,140,158,112, +199,147,247,126,196,216,7,183,7,142,253,190,152,230,152,210,200,58,7,35,176,100,181,110,231,182,241,199,183,235,154,197,242,33,28,6,69,111,96,224,122,96,19,34,243,143,166,79,30,180,195,111,144,126,114, +51,158,66,146,7,190,126,209,207,225,140,247,205,0,109,125,162,64,7,238,193,25,199,17,65,142,249,56,19,158,79,161,3,143,173,70,215,111,192,16,71,215,167,149,9,231,185,35,205,57,254,125,5,99,53,185,3,6, +124,130,14,50,61,59,96,221,142,127,35,250,226,31,179,184,39,18,227,28,241,19,49,231,29,133,249,227,183,60,247,227,169,0,220,123,150,57,2,8,200,233,254,165,7,94,223,45,192,7,166,71,232,78,42,185,187,149, +65,2,206,3,159,88,162,39,166,51,150,186,254,185,227,175,60,101,121,82,255,0,207,87,3,251,194,220,99,166,112,55,106,35,131,208,254,99,173,46,201,7,91,182,29,112,12,104,48,121,233,255,0,19,46,153,198,78, +126,153,235,64,23,205,236,163,254,93,109,135,110,98,136,117,236,115,114,70,59,130,56,232,56,192,168,26,250,126,49,29,176,231,159,220,65,207,226,101,63,167,185,244,205,96,178,103,63,109,35,39,156,36,59, +128,207,80,78,161,39,95,94,65,231,183,69,41,47,59,111,167,227,169,13,104,160,241,207,31,109,32,103,29,59,244,29,133,0,75,246,217,121,196,86,160,250,249,86,255,0,152,7,112,235,158,61,133,68,111,36,60,24, +237,216,231,144,32,181,198,125,201,94,196,113,211,140,103,29,41,54,72,56,107,251,131,234,119,90,231,175,253,124,224,1,233,198,79,61,113,77,222,195,143,182,220,190,61,237,246,140,99,61,46,8,246,231,61, +9,224,208,2,253,170,66,126,229,176,3,161,49,90,129,223,145,251,146,51,232,58,143,76,84,109,117,41,206,4,7,211,17,89,117,3,209,161,62,167,130,113,239,222,156,103,11,201,186,157,123,99,116,3,56,255,0,182, +199,167,168,192,233,215,20,166,238,60,31,244,153,201,237,255,0,30,143,159,160,46,217,56,28,18,59,227,29,232,2,7,150,228,255,0,12,120,235,143,35,78,7,28,247,251,62,79,230,7,57,7,57,166,172,179,114,8,137, +72,232,124,173,63,61,255,0,233,216,251,12,30,79,61,234,199,218,78,56,154,232,240,120,88,236,65,62,157,9,245,236,71,25,227,174,25,246,166,231,253,34,233,126,191,96,0,244,192,193,201,235,235,193,52,0,213, +149,143,223,145,87,215,16,216,15,229,105,243,30,131,215,142,7,106,42,65,116,221,218,237,187,244,180,110,190,155,112,56,252,125,56,162,128,60,1,99,80,14,217,207,126,225,122,246,201,144,99,39,252,104,249, +151,164,217,227,144,36,85,247,4,159,48,140,112,115,239,206,7,115,236,236,122,94,16,51,208,219,149,252,49,145,156,14,135,244,167,139,121,51,197,210,145,158,241,16,127,63,56,17,219,57,234,57,227,52,0,213, +50,147,145,56,228,241,186,225,87,142,158,167,219,56,193,29,9,3,138,147,19,2,51,60,89,206,49,246,248,199,190,112,206,7,78,122,127,133,56,90,187,117,185,82,59,31,45,122,125,68,164,247,250,251,154,81,104, +120,6,228,14,184,27,14,14,63,237,166,78,51,158,220,19,235,154,0,85,243,14,15,155,31,94,218,133,182,123,228,96,177,255,0,245,212,201,230,14,151,106,171,158,139,127,15,169,207,70,199,208,128,127,30,149, +23,216,144,31,154,230,50,78,7,42,163,174,7,59,164,56,235,223,35,212,100,10,145,44,99,102,226,120,135,29,74,112,79,115,144,8,198,113,156,231,39,165,0,78,38,42,64,55,69,137,60,15,183,195,211,191,88,216, +126,163,243,169,214,228,167,1,212,231,129,155,184,91,158,58,226,212,251,123,245,235,80,13,56,96,225,161,124,12,244,35,140,117,255,0,87,180,99,212,144,1,199,61,234,100,211,31,168,251,62,56,31,48,139,249, +159,94,122,142,121,224,241,144,7,253,174,126,170,209,12,127,211,120,91,167,160,54,160,251,243,219,62,152,43,246,201,249,204,131,191,79,32,243,211,63,241,236,115,129,192,227,158,158,245,34,105,146,103, +39,200,25,61,254,204,160,247,36,99,0,254,156,117,237,137,254,192,157,30,75,126,59,102,216,1,248,9,123,228,96,227,233,64,12,91,169,8,4,203,158,128,145,26,28,142,189,13,186,131,215,140,158,252,138,176,178, +147,140,238,110,153,31,100,140,147,212,240,66,47,7,142,62,152,207,24,96,177,181,63,199,14,70,51,151,180,192,57,247,148,247,3,29,115,219,60,19,50,217,90,1,147,37,184,231,57,205,144,62,135,60,247,245,253, +7,112,11,17,206,131,1,162,151,25,7,6,205,72,227,174,1,7,142,122,158,70,123,118,176,37,66,9,22,236,192,113,205,130,147,158,115,192,145,78,62,157,242,6,13,83,22,182,184,31,233,22,252,116,83,61,144,29,241, +193,35,252,49,220,231,6,202,91,91,140,31,58,211,216,155,155,34,71,62,199,142,255,0,215,212,0,89,73,7,95,177,7,3,183,216,156,15,78,64,115,233,158,156,145,222,167,14,24,124,186,104,201,29,237,38,3,223,128, +192,245,206,79,83,239,212,83,17,219,169,255,0,93,107,193,24,253,253,184,251,221,57,36,12,103,158,156,140,99,140,209,182,200,18,68,214,153,234,127,127,106,115,142,157,65,39,176,235,129,216,103,6,128,47, +130,87,59,180,224,160,247,251,45,194,231,56,228,147,41,29,114,121,200,62,213,50,186,129,131,102,131,175,252,177,148,99,211,147,41,63,92,129,138,203,197,152,255,0,150,182,205,244,154,223,166,78,1,218,167, +183,124,140,115,245,164,197,166,73,89,109,198,115,129,246,184,128,62,156,42,118,252,0,61,193,197,0,109,44,144,142,150,177,146,79,247,164,92,28,14,131,45,206,72,244,233,158,130,172,44,168,6,227,102,156, +119,195,28,118,206,118,158,156,103,24,39,138,231,149,96,39,62,116,88,25,24,91,177,142,216,199,200,125,122,227,143,229,97,77,184,192,243,212,17,212,155,129,235,254,204,71,131,140,244,245,199,52,1,188,183, +10,8,197,170,131,236,211,41,235,216,4,245,199,78,163,185,35,21,33,186,86,255,0,150,56,199,7,106,220,57,29,120,200,136,243,245,253,13,98,172,214,195,31,190,207,210,225,192,233,215,2,215,24,246,25,62,181, +46,251,98,63,214,69,146,127,137,158,83,249,27,78,157,115,208,143,115,205,0,107,139,130,7,22,242,30,156,148,186,56,39,167,2,216,224,122,243,158,190,149,42,206,248,255,0,143,118,234,48,12,119,101,71,183, +48,96,253,125,114,50,71,21,142,30,219,147,152,142,122,144,172,59,115,255,0,46,36,251,251,126,84,160,219,231,134,239,220,41,247,232,218,112,200,224,12,118,235,208,154,0,216,223,33,198,45,144,19,192,221, +28,195,243,221,110,115,233,201,29,70,56,38,167,95,53,185,16,194,59,127,168,99,233,158,176,140,15,124,243,206,6,43,16,52,106,64,5,135,24,59,98,7,242,255,0,64,254,71,232,106,96,34,110,119,76,7,4,226,217, +207,211,238,89,30,15,177,29,241,197,0,108,108,115,141,214,241,182,49,243,11,70,61,51,220,42,143,99,199,183,76,212,169,20,132,128,182,191,47,61,44,201,199,57,24,200,29,1,244,3,0,115,89,41,229,131,195,202, +70,57,255,0,66,152,231,62,226,204,3,208,127,34,106,202,52,35,170,202,220,224,15,178,74,163,7,183,54,135,60,99,56,198,58,26,0,212,217,42,243,246,49,245,251,24,92,158,221,100,3,57,246,7,147,205,74,18,94, +246,42,73,61,236,145,189,250,25,73,24,31,203,60,214,80,242,137,37,45,193,108,142,76,12,172,79,115,147,108,164,158,221,59,244,167,136,99,45,147,24,7,190,99,57,237,220,196,57,24,224,30,71,226,40,3,79,202, +98,115,246,8,143,124,181,158,222,160,112,2,184,3,29,58,246,29,106,79,36,140,3,103,106,157,200,48,16,113,234,51,55,113,198,121,206,56,57,39,25,171,12,121,192,81,140,28,5,143,182,56,3,56,224,125,63,2,42, +79,38,21,236,1,250,32,206,50,127,138,65,249,31,92,1,64,26,139,4,100,156,199,8,192,63,118,56,240,58,113,150,148,129,199,108,246,231,28,211,252,168,187,20,24,193,192,141,1,62,131,11,33,206,58,250,99,159, +64,115,162,88,71,93,188,114,62,72,143,28,118,23,67,156,158,120,252,58,213,181,91,124,253,212,201,199,222,133,79,160,224,253,169,79,215,147,158,125,13,0,88,219,8,225,149,70,49,146,23,13,193,237,153,88, +12,142,135,159,229,137,2,192,199,3,204,228,240,119,31,232,199,60,142,192,245,197,68,34,135,35,152,193,236,73,68,246,201,221,119,140,247,192,30,254,213,58,199,17,199,205,14,6,122,53,168,233,211,27,174, +24,140,100,115,207,191,97,64,18,44,17,99,231,124,3,211,115,231,39,62,172,135,244,207,190,57,165,88,160,251,166,226,69,235,255,0,45,184,3,57,198,60,178,122,147,244,205,47,145,6,8,221,8,201,199,204,214, +153,3,215,239,129,223,249,227,28,210,172,49,175,221,186,183,95,96,45,134,115,215,145,33,252,122,142,184,25,160,4,48,219,174,127,210,101,25,198,113,35,31,199,2,45,222,157,190,157,115,82,131,104,156,27, +153,249,238,36,36,241,142,135,102,7,78,249,3,240,200,98,164,61,174,109,216,159,84,129,136,62,156,201,142,122,247,62,221,114,224,145,156,31,180,68,64,224,109,138,1,142,113,212,22,235,254,32,118,200,4,131, +200,99,242,207,118,78,113,195,3,143,196,38,15,124,231,177,36,224,117,153,74,128,49,45,225,29,62,235,158,58,96,159,40,245,245,4,123,113,80,162,196,50,4,138,125,149,98,231,223,228,4,159,207,28,244,205,77, +181,118,241,32,228,31,189,28,135,3,142,155,98,193,244,232,57,224,245,160,9,87,4,129,186,232,159,246,86,124,244,239,136,58,30,7,62,249,53,56,80,57,19,93,12,130,56,73,71,25,224,115,15,80,15,225,207,35,60, +231,237,0,130,36,136,231,187,121,137,129,211,129,229,130,15,92,241,192,30,153,161,78,7,203,229,18,63,139,118,65,207,29,226,36,14,191,92,96,99,57,0,26,202,0,198,100,156,156,1,200,148,19,255,0,144,198,115, +248,143,106,144,4,24,203,72,122,142,22,108,131,220,2,21,125,73,239,143,214,178,60,199,31,242,205,9,29,126,78,63,239,160,131,145,207,184,192,205,33,184,112,78,66,113,201,27,67,31,203,60,243,216,127,74, +0,220,194,30,54,76,79,96,82,232,227,233,144,122,242,121,35,167,0,230,158,35,141,178,12,110,123,17,229,220,28,250,112,70,71,61,71,127,200,156,65,120,123,225,240,57,253,208,28,115,140,124,202,79,160,235, +216,122,211,69,227,240,4,50,30,185,196,0,99,219,153,186,100,254,3,60,116,192,6,247,217,119,99,17,56,244,37,102,3,244,143,147,245,247,205,40,180,32,231,203,35,234,183,3,219,169,139,28,126,63,67,200,172, +79,180,185,193,49,62,125,74,68,59,146,121,51,14,191,79,97,129,74,46,220,228,109,3,30,177,39,62,191,114,227,25,252,7,110,180,1,180,109,64,63,50,47,94,194,124,250,28,2,138,188,123,17,77,54,96,227,247,57, +231,63,242,209,178,7,78,73,24,250,103,223,6,178,77,212,140,0,218,128,99,24,22,136,220,240,79,38,236,12,241,158,156,251,115,79,23,51,96,98,39,250,173,164,7,232,72,251,81,61,255,0,31,80,40,3,67,236,234, +9,205,178,176,231,57,70,97,223,63,242,212,30,112,122,122,28,250,131,236,240,147,143,178,182,51,252,16,55,94,135,161,218,8,200,29,79,94,156,17,84,62,213,38,0,34,101,3,161,58,116,36,158,153,201,23,128,240, +73,234,79,2,162,55,153,234,242,250,255,0,200,62,37,24,227,169,254,209,235,201,244,232,48,6,56,0,211,48,68,58,91,207,129,198,68,45,220,242,70,88,96,125,71,80,115,210,152,99,136,17,136,230,56,28,102,60, +115,212,114,102,92,143,78,195,166,51,84,210,229,78,112,210,146,123,255,0,103,144,58,140,243,246,226,14,112,113,131,158,252,98,159,231,48,198,35,144,238,231,34,208,130,50,63,235,236,242,120,61,15,61,197, +0,76,209,68,58,199,33,207,32,113,199,24,255,0,158,249,94,157,122,15,90,102,216,6,1,89,51,216,13,165,187,241,131,41,39,61,242,185,254,173,223,158,12,82,19,201,255,0,143,71,227,7,208,76,78,7,32,241,207, +183,56,105,201,251,177,200,15,64,62,198,231,62,231,247,135,39,167,108,159,110,13,0,75,182,220,145,152,238,136,61,49,28,71,35,223,18,143,196,2,78,58,117,165,88,173,137,201,182,186,36,119,17,131,143,67, +204,189,122,114,49,200,239,205,87,44,224,255,0,169,148,224,28,255,0,162,30,191,66,192,224,246,239,239,206,68,109,44,132,231,200,144,96,103,254,61,202,125,15,81,252,254,189,176,1,116,45,178,146,69,165, +199,61,55,32,207,25,255,0,108,17,223,62,156,210,255,0,162,158,77,188,195,175,0,182,121,247,223,143,235,142,132,86,121,153,192,59,145,144,112,9,41,32,250,242,174,59,250,228,99,168,52,223,53,142,112,8,244, +63,191,199,211,134,61,185,62,188,14,1,160,13,6,75,98,50,45,167,35,182,89,136,231,56,28,204,163,32,3,147,143,173,71,254,140,58,219,75,235,141,164,159,248,15,239,14,15,94,48,120,206,5,85,83,35,17,128,15, +211,237,67,243,224,142,248,234,59,119,232,236,74,78,64,3,129,198,233,177,158,223,121,6,114,7,57,56,233,206,51,128,7,145,104,122,90,204,217,60,252,164,96,156,145,242,156,231,243,250,102,147,253,12,96,125, +137,178,78,14,98,45,207,229,199,76,227,3,156,243,80,51,78,58,28,122,252,174,126,156,224,30,115,220,1,159,65,138,140,201,112,9,2,64,189,178,99,126,127,38,39,7,220,31,240,0,181,139,67,255,0,46,33,143,111, +221,48,237,207,68,96,114,58,228,227,223,131,150,180,86,221,173,2,231,60,108,112,56,245,194,14,188,115,193,244,227,25,173,231,92,130,51,50,28,31,73,7,231,137,15,215,238,159,167,52,11,137,139,96,206,131, +140,144,21,142,63,239,169,129,199,30,156,119,238,104,2,86,75,81,203,70,128,245,57,71,57,207,29,72,94,255,0,158,106,22,22,3,171,1,216,1,27,55,92,115,208,243,219,167,225,77,251,68,231,56,157,136,28,224, +2,195,57,231,128,217,207,64,48,15,35,30,148,159,104,184,56,253,227,144,122,241,140,118,232,206,184,29,240,71,227,64,17,177,211,212,252,178,18,122,159,221,176,25,206,48,126,92,126,132,126,35,5,134,75,30, +160,168,199,57,49,176,28,103,175,238,152,19,219,25,201,61,170,87,158,115,206,101,3,176,43,6,59,14,165,207,245,231,235,81,181,196,160,15,248,249,198,114,126,91,61,188,30,132,19,159,167,175,60,208,3,11, +218,183,73,98,201,236,120,24,237,156,219,96,28,117,227,25,234,120,205,52,8,128,59,101,182,32,247,98,164,14,120,24,242,65,207,61,7,0,156,210,155,137,79,241,92,145,237,29,153,28,1,253,194,58,117,228,158, +221,186,71,230,182,114,239,114,63,239,210,158,192,116,144,129,142,222,184,247,57,0,107,132,28,121,214,190,167,3,174,123,113,23,7,216,100,140,103,142,5,70,66,131,145,60,1,187,3,19,55,62,217,139,35,176, +225,143,29,185,171,27,129,231,125,209,207,97,44,100,247,236,178,244,61,186,143,165,40,42,9,5,47,9,199,77,208,126,64,180,185,228,99,142,121,234,7,25,0,168,101,42,121,158,220,242,51,155,121,135,24,246,64, +0,245,231,166,121,205,55,237,65,122,11,70,60,244,134,65,198,61,212,246,235,232,115,211,189,204,32,228,219,222,54,122,13,246,248,233,232,36,56,193,198,122,126,52,163,4,101,173,46,128,235,243,60,92,103, +24,224,204,0,61,51,128,49,142,77,0,83,251,107,156,126,234,204,246,203,68,195,233,143,147,161,236,48,127,10,112,187,98,57,130,207,167,56,141,250,241,211,113,3,39,29,127,250,248,156,136,14,127,117,48,207, +80,100,183,97,159,246,65,145,190,167,241,62,213,92,136,75,101,109,228,56,199,83,23,215,35,229,0,130,79,169,231,161,160,7,27,165,32,230,40,87,145,184,5,192,207,29,178,7,211,183,175,25,164,243,237,200,63, +185,70,231,7,7,140,251,128,253,250,142,58,125,50,95,136,136,249,173,36,224,99,47,211,174,15,62,98,156,227,35,208,103,24,164,101,132,0,13,161,244,39,203,67,238,50,26,225,71,111,95,202,128,34,243,162,28, +253,159,140,143,249,234,23,25,39,168,147,28,140,96,100,103,167,21,34,207,6,113,228,48,231,39,15,40,3,30,131,204,56,57,25,235,147,208,211,127,114,9,255,0,70,98,120,233,20,95,135,75,182,232,61,71,167,56, +168,202,167,32,91,72,50,48,1,134,6,235,200,192,89,185,29,122,240,115,145,158,40,2,200,158,28,147,229,77,158,49,137,229,83,244,206,254,221,56,224,28,96,115,78,223,27,242,208,206,115,253,235,194,156,2,59, +51,231,211,4,245,227,210,179,217,59,253,156,227,159,249,97,30,226,125,241,41,57,228,100,96,254,116,129,64,235,9,13,159,226,181,94,58,117,27,201,57,199,63,134,104,3,71,16,156,156,78,1,231,254,63,212,250, +30,6,121,237,223,156,19,207,96,45,166,78,126,208,15,65,254,146,15,177,224,62,59,245,32,138,205,104,240,73,192,39,31,116,91,176,32,118,199,36,116,39,167,243,226,133,137,155,162,72,7,63,242,234,205,211, +28,131,188,31,195,142,114,49,156,10,0,208,113,109,233,63,28,103,206,69,39,211,7,44,71,81,140,14,64,200,239,76,11,7,80,175,143,70,184,102,31,94,0,25,254,89,234,106,151,148,216,32,249,138,57,251,214,197, +121,206,51,204,157,0,29,70,238,254,188,33,132,158,67,74,8,61,68,65,125,113,140,131,236,48,126,148,1,121,158,221,87,12,36,80,8,233,112,126,156,12,113,216,99,215,161,228,212,77,37,129,200,47,41,198,78,60, +245,56,192,255,0,109,201,252,136,30,184,170,155,28,158,30,228,147,212,0,23,159,112,160,19,211,158,188,250,147,75,229,74,6,51,63,209,154,81,145,206,73,253,219,122,224,116,199,90,0,149,164,178,206,85,231, +60,113,251,232,199,78,79,73,184,254,184,227,214,162,55,22,75,212,200,64,227,230,185,140,100,247,201,50,241,158,131,219,25,224,81,229,73,207,95,112,82,76,115,207,7,236,252,245,238,70,9,247,205,55,203,207, +36,74,51,253,211,142,71,108,24,27,29,177,233,156,122,208,1,246,171,33,213,91,56,227,109,212,36,17,235,180,76,79,7,249,251,82,11,203,32,113,251,236,28,133,34,116,61,51,199,223,36,129,245,255,0,235,73,228, +177,7,6,69,227,63,235,23,143,76,15,39,223,212,123,1,156,211,60,137,15,12,101,57,244,104,155,61,50,121,94,122,100,142,61,120,160,0,221,90,118,55,29,120,196,241,131,219,240,234,14,73,199,191,90,81,119,6, +51,190,225,72,61,174,163,44,71,94,49,129,219,169,255,0,235,208,45,134,56,121,71,212,66,9,199,176,235,199,231,211,222,159,179,3,146,196,103,31,114,18,120,200,30,220,125,73,30,252,208,4,111,119,17,7,51, +93,28,241,254,182,38,207,226,103,252,122,113,233,214,163,23,59,179,182,89,198,127,188,201,158,7,24,196,164,143,242,125,141,181,78,49,191,4,142,140,176,113,223,166,224,0,245,207,24,201,39,7,135,8,178,79, +204,157,121,220,45,193,29,254,233,99,215,215,4,14,212,1,2,220,202,164,98,105,72,246,98,15,185,226,64,122,99,190,126,185,169,126,214,231,31,60,153,237,150,114,121,61,6,75,116,60,243,144,70,51,223,10,209, +168,251,179,64,50,57,12,45,15,61,59,227,167,255,0,91,145,209,164,50,240,179,90,96,129,214,59,46,223,71,31,211,60,117,0,80,4,137,116,199,171,201,237,132,102,200,30,229,114,122,116,206,61,185,53,39,218, +20,14,36,144,17,215,247,82,244,245,249,98,224,158,114,121,247,21,8,73,58,253,162,192,125,99,178,56,233,142,172,195,235,146,1,252,6,92,84,227,230,185,211,178,121,192,130,200,156,12,119,7,175,62,188,14, +162,128,30,46,206,49,230,200,113,234,146,227,156,118,49,142,156,1,156,140,244,231,170,253,177,248,249,131,12,245,40,195,25,245,30,88,199,124,99,156,3,207,60,194,54,1,196,182,108,123,1,111,109,211,174, +71,28,224,118,4,15,76,227,37,185,108,96,53,161,28,255,0,203,8,1,60,250,46,71,233,200,227,210,128,45,53,219,30,171,25,56,227,8,236,127,13,200,195,183,78,59,243,78,91,165,3,45,28,95,138,72,15,115,206,32, +101,227,61,240,61,59,10,207,49,179,16,65,182,31,238,164,99,61,6,112,20,12,251,19,159,230,90,96,151,214,220,228,114,54,158,56,56,231,204,30,254,221,137,231,0,3,88,222,70,0,59,34,25,238,17,201,239,198,62, +200,79,62,185,31,167,49,157,65,49,254,173,27,182,90,5,39,158,156,24,23,161,246,246,244,172,179,111,33,28,125,155,35,160,40,228,241,145,206,37,193,231,190,63,62,105,190,76,217,199,250,62,220,225,177,20, +153,43,236,119,30,115,245,246,236,104,3,88,95,46,79,200,167,63,244,236,0,30,156,44,89,237,215,62,248,226,165,251,119,28,69,25,35,166,45,70,127,15,149,115,215,185,227,147,140,102,178,4,46,48,49,24,227, +159,146,65,206,114,56,46,59,30,248,239,142,105,68,95,55,49,171,17,208,226,66,62,160,121,188,227,208,224,80,6,168,188,151,156,71,16,250,90,129,142,70,70,60,192,50,58,247,207,124,138,5,211,158,177,69,201, +201,205,178,231,234,127,121,201,233,158,57,60,145,199,57,187,71,56,182,93,216,193,36,78,51,212,103,34,113,199,78,131,39,183,78,20,7,0,1,12,99,161,25,50,130,78,123,226,81,207,208,254,92,100,3,76,78,8,207, +148,135,147,156,192,23,142,199,137,115,248,1,211,138,26,114,199,2,40,198,59,249,125,125,122,201,237,235,208,118,201,21,77,17,248,37,45,122,231,115,79,112,8,35,216,200,71,25,207,112,58,3,198,42,202,150, +3,4,90,145,158,243,204,123,147,211,118,6,62,152,231,232,40,1,60,197,36,141,144,100,118,109,199,63,240,22,152,168,227,183,24,25,197,38,228,192,196,40,57,254,0,71,175,63,45,194,131,249,158,122,26,149,89, +65,201,107,97,216,236,152,146,0,60,130,26,54,62,188,243,199,36,227,154,112,152,100,16,232,112,112,126,96,78,6,122,254,232,228,117,28,1,248,16,114,0,130,38,192,34,4,3,57,203,59,169,201,239,205,211,242, +78,71,126,6,51,158,4,162,54,193,37,16,0,49,147,112,227,156,2,115,137,27,113,57,0,131,140,247,228,208,215,32,96,135,245,56,45,40,7,211,27,118,131,142,189,58,227,216,20,23,138,163,27,136,228,17,153,39,32, +12,115,158,15,242,236,125,178,0,132,100,225,142,223,165,203,169,252,74,56,252,142,59,103,181,10,35,235,191,241,23,83,28,30,63,218,25,39,220,228,1,197,59,237,104,199,34,101,67,142,114,101,206,48,56,195, +66,122,117,252,51,158,180,158,120,201,217,116,7,208,177,60,240,72,219,15,24,235,202,241,252,128,16,42,1,159,60,99,61,231,148,28,122,103,206,29,120,0,158,122,103,61,105,251,194,3,182,70,60,227,11,117,41, +56,60,228,127,164,112,57,236,6,72,224,99,146,229,121,27,3,237,68,246,224,76,195,39,235,110,0,235,253,236,14,113,158,40,59,212,28,220,227,61,188,150,111,212,196,113,211,160,231,156,26,0,143,126,112,124, +201,134,79,31,188,157,191,2,86,224,146,73,35,131,200,207,230,25,20,128,5,197,194,16,114,10,189,193,7,215,131,57,0,228,100,28,131,208,119,205,5,88,255,0,203,96,217,199,88,49,220,96,103,201,233,147,158, +255,0,149,69,137,250,44,224,224,237,229,88,243,212,100,121,61,58,245,193,193,61,58,208,4,222,119,57,26,141,218,128,57,83,35,142,125,114,207,223,60,231,56,32,231,61,8,210,227,174,165,112,119,103,163,131, +207,94,155,137,199,80,6,79,81,156,99,152,54,222,100,124,208,28,30,24,36,173,129,158,251,98,60,145,207,167,183,24,164,197,209,98,51,104,78,71,80,224,227,219,117,185,192,228,15,199,29,122,0,75,187,113,226, +250,229,184,228,121,76,199,7,140,253,245,207,36,12,1,143,175,52,187,9,227,237,183,96,118,2,219,28,231,63,243,215,223,24,35,240,168,196,55,76,6,223,178,122,240,139,198,114,64,203,90,103,252,245,245,79, +179,220,112,75,67,142,49,204,99,191,108,89,142,153,36,231,28,100,30,180,1,46,217,64,63,233,151,99,111,253,57,128,15,110,162,76,159,98,65,236,120,52,40,97,214,246,236,158,57,251,55,215,251,204,195,244, +238,125,170,33,13,194,247,140,131,212,153,19,28,244,36,24,134,113,130,58,112,79,24,228,20,100,32,116,66,7,82,36,132,140,251,147,26,244,228,156,144,78,121,57,198,0,39,40,196,18,110,174,143,25,27,173,1, +253,75,15,235,156,83,76,44,72,63,106,144,231,61,109,192,32,123,225,192,30,192,244,247,239,84,171,122,167,7,129,189,80,116,238,66,224,122,28,19,158,196,211,76,96,242,205,110,51,216,202,223,150,71,80,49, +140,224,125,112,120,0,190,45,164,28,139,137,56,57,194,219,195,250,225,134,71,78,167,158,14,14,41,124,137,120,196,83,54,0,207,250,42,12,158,252,137,115,212,250,14,61,43,59,202,132,253,244,180,111,97,52, +196,251,96,238,94,121,239,79,88,236,152,225,224,183,207,7,112,158,69,28,123,179,182,61,179,147,206,112,57,160,13,1,12,152,195,91,72,57,206,77,186,14,8,228,99,205,201,224,250,227,158,115,205,41,136,175, +252,177,149,113,199,202,35,64,51,143,226,222,120,0,246,28,119,60,213,37,138,196,146,4,81,100,14,113,119,144,70,125,3,143,94,79,83,234,13,72,97,178,239,28,120,255,0,175,201,64,252,113,40,228,251,115,239, +197,0,76,21,112,7,149,51,96,1,131,52,107,198,78,56,243,23,0,31,160,32,116,228,210,132,25,226,222,92,140,158,46,224,79,203,117,200,200,231,233,158,152,234,107,121,22,191,193,4,109,233,139,217,207,211,4, +204,15,95,92,231,182,69,42,193,30,113,246,92,46,62,242,222,220,227,29,120,11,55,35,29,56,206,57,61,57,0,156,134,0,145,109,54,121,233,127,108,49,142,56,197,207,230,79,79,124,230,152,119,99,254,61,38,36, +231,174,161,109,201,255,0,191,254,188,247,247,205,55,236,240,131,255,0,30,207,242,159,250,8,93,96,246,200,221,56,3,56,247,199,173,27,32,31,122,7,30,227,82,184,82,121,199,31,190,39,175,29,243,64,14,220, +221,77,180,227,142,8,190,132,253,79,250,225,199,92,156,227,169,227,179,76,216,39,247,83,116,233,246,200,48,49,147,212,222,47,108,117,36,12,115,235,82,121,118,253,82,11,162,79,57,75,249,206,126,164,220, +18,78,61,122,12,126,10,18,17,159,244,107,213,63,245,246,205,212,245,249,174,143,31,94,79,61,58,16,10,230,64,221,98,144,117,200,23,214,192,158,7,99,126,59,103,159,94,121,168,90,65,156,13,224,12,117,187, +135,61,206,62,93,64,231,25,3,223,174,120,25,188,209,70,113,133,190,83,142,211,14,15,110,147,247,245,237,207,82,1,166,121,9,140,31,181,140,119,45,35,158,221,113,114,1,56,227,32,28,14,0,224,208,5,81,57, +30,185,227,134,187,78,158,167,254,38,71,220,224,96,17,222,131,113,232,137,144,57,62,126,239,67,140,127,106,30,113,207,65,208,14,249,171,13,4,3,129,246,162,59,102,13,192,241,142,173,113,158,122,142,252, +156,131,76,242,97,199,63,105,232,58,219,1,158,156,141,183,96,242,79,233,142,198,128,43,253,169,20,124,200,164,19,208,187,129,199,176,191,96,79,208,140,112,78,122,82,253,174,220,231,228,78,78,8,195,183, +215,3,237,158,158,135,143,90,159,100,43,142,101,80,59,189,166,238,125,57,186,193,29,6,91,177,25,245,168,153,98,63,242,208,174,7,107,24,249,207,112,126,209,215,234,114,59,208,0,37,181,234,82,51,156,158, +97,118,60,99,210,253,113,232,112,164,30,156,10,149,110,45,6,65,88,243,142,113,108,254,157,1,55,167,156,103,235,239,222,184,142,44,156,78,231,254,220,144,122,240,8,148,224,125,78,15,235,75,177,65,249,95, +143,250,240,132,247,238,65,98,56,28,245,246,231,144,1,100,79,101,255,0,60,213,142,120,62,73,92,147,130,120,251,86,79,97,128,192,99,3,214,158,179,219,19,149,141,1,199,95,179,178,156,12,247,251,72,206,57, +207,39,189,83,40,167,39,120,24,39,24,211,129,3,24,28,109,67,223,29,48,71,126,166,154,35,82,126,241,111,101,211,229,94,121,231,229,66,1,237,211,159,230,1,164,46,45,142,55,44,79,142,184,73,1,250,124,211, +145,220,112,57,224,243,154,67,45,163,240,19,104,57,229,118,140,17,235,153,193,29,127,31,195,154,155,20,140,2,248,193,28,105,243,103,39,61,252,162,59,3,212,96,145,215,180,102,33,207,250,193,142,255,0,102, +153,127,18,62,206,49,146,51,140,253,49,197,0,91,45,105,130,126,108,30,152,104,151,142,159,243,220,158,184,231,175,78,249,167,43,91,99,128,216,206,48,101,139,60,31,70,145,135,110,185,4,99,175,74,167,228, +18,6,37,198,127,189,12,224,245,247,128,254,64,115,145,156,128,105,203,110,114,115,56,235,255,0,62,242,103,243,242,1,61,49,159,99,239,64,22,75,194,9,249,95,36,243,153,209,126,156,172,188,231,60,115,142, +127,38,52,200,188,135,8,56,255,0,151,220,31,113,247,142,57,245,193,236,65,230,161,107,102,61,39,218,58,255,0,168,184,201,206,64,3,109,184,29,59,156,245,56,198,14,17,109,100,206,126,208,216,199,3,236,247, +28,244,227,30,90,14,221,71,183,174,104,1,254,120,97,196,160,119,201,212,142,120,199,184,199,212,128,125,15,74,174,210,75,252,50,175,254,12,115,207,61,140,128,19,211,35,32,244,207,21,41,182,151,188,204, +7,124,91,220,31,175,59,114,49,158,57,25,199,110,105,191,100,115,255,0,47,115,12,99,129,20,163,156,117,27,143,230,78,57,28,99,60,128,69,230,202,14,94,82,122,228,127,104,99,60,115,255,0,45,15,229,131,215, +243,67,40,98,72,32,183,169,190,65,211,185,59,122,14,59,140,140,227,218,199,217,38,224,253,182,126,112,57,136,228,116,198,65,81,145,140,122,14,57,38,154,214,179,14,90,246,83,130,127,229,152,201,199,60, +146,216,245,0,228,103,7,29,40,2,175,152,192,131,149,235,252,87,146,117,246,40,189,251,247,253,40,222,88,240,163,129,255,0,63,147,142,164,145,159,144,144,127,150,121,169,217,38,198,13,220,184,231,254,89, +161,246,234,100,95,207,39,175,230,207,34,64,50,103,145,135,94,34,128,240,125,65,159,113,206,121,0,28,119,160,6,153,28,12,31,43,158,159,233,183,35,29,58,98,53,250,112,127,165,55,124,167,37,100,132,115, +208,221,92,159,95,239,118,207,94,115,158,180,166,57,7,1,152,241,128,76,49,130,72,234,78,36,35,191,56,227,30,248,168,204,78,9,253,228,139,158,78,32,143,142,220,18,125,123,224,244,245,224,128,47,153,112, +51,187,203,144,103,168,154,99,144,65,0,242,64,62,167,169,250,140,211,124,233,114,79,148,188,31,239,177,200,247,203,117,247,199,184,206,114,19,15,200,36,177,3,175,145,14,123,227,233,198,125,79,231,204, +111,8,198,124,198,7,218,37,4,103,24,225,35,4,31,81,223,183,165,0,60,77,46,14,232,160,0,247,50,49,192,233,140,9,84,103,30,163,142,131,166,105,143,38,114,54,64,59,227,124,156,96,245,255,0,92,57,29,249,227, +234,106,51,22,113,153,51,223,144,115,142,184,206,208,15,35,131,156,131,198,58,138,107,66,164,140,236,32,131,222,64,71,35,251,174,61,125,58,247,20,0,134,82,58,8,126,138,243,127,33,114,0,192,227,128,7,3, +28,226,154,103,198,115,28,68,115,213,228,83,208,116,31,108,4,227,61,7,29,79,106,107,197,23,241,50,3,142,243,93,14,135,24,61,71,95,76,242,58,250,194,208,35,116,145,15,39,165,205,225,201,199,76,168,206, +7,30,192,28,242,56,160,9,140,238,9,34,8,122,140,101,156,158,252,159,244,162,126,156,96,28,99,32,12,21,95,202,85,24,222,64,60,130,183,90,142,63,0,177,147,146,122,140,31,99,234,80,7,128,102,220,96,109,69, +7,179,93,205,128,59,124,202,217,25,250,143,97,200,52,229,91,76,240,98,63,246,249,112,204,57,207,27,131,14,190,131,189,86,91,148,193,253,202,246,199,238,167,36,140,245,0,149,3,211,39,242,53,56,154,54,200, +242,72,199,31,42,74,185,61,127,190,6,70,125,61,178,78,69,0,76,22,216,253,215,140,250,15,180,78,196,254,33,71,211,159,198,164,88,225,63,197,2,142,219,165,185,110,217,25,32,14,221,112,122,227,53,18,201, +23,104,165,224,30,72,148,241,131,142,142,56,234,123,142,49,220,97,203,34,158,60,167,62,229,102,7,147,236,14,15,212,129,199,6,128,44,45,157,185,108,151,178,36,119,63,105,35,62,227,142,160,129,143,161,169, +62,207,8,3,13,167,144,121,255,0,85,118,221,15,168,35,159,76,250,125,5,66,10,28,229,36,29,121,219,43,103,182,120,140,245,199,110,188,142,156,83,195,14,14,92,127,219,23,28,253,90,51,142,127,94,48,15,80, +9,86,222,2,114,205,103,233,133,183,187,32,117,201,63,55,57,3,142,122,213,132,134,221,65,196,150,189,63,231,218,227,169,250,134,207,228,113,236,106,186,133,60,3,54,15,28,198,87,191,92,139,114,56,7,167, +61,62,181,58,196,195,144,179,183,252,0,28,130,63,235,212,28,250,28,145,64,10,5,176,206,90,217,185,192,41,107,112,123,228,127,203,1,145,223,185,206,6,125,39,72,161,108,97,226,201,237,246,73,249,237,198, +84,30,61,48,113,192,226,154,177,169,25,107,89,88,231,157,192,250,99,28,91,3,223,156,125,41,235,29,177,25,54,71,175,31,41,110,231,140,249,61,7,126,252,122,231,32,19,172,9,218,56,72,7,130,116,247,99,199, +190,229,56,239,223,57,39,53,58,68,128,231,202,128,240,78,78,157,40,32,99,39,172,164,14,216,199,95,206,169,98,217,127,229,198,32,7,170,158,113,219,63,103,35,167,224,122,159,121,84,218,30,182,80,140,14, +202,114,58,115,242,91,245,239,140,14,78,78,113,154,0,208,80,128,158,32,25,237,246,93,132,126,114,100,118,60,255,0,35,86,86,72,215,31,44,121,193,231,98,246,255,0,129,28,143,124,113,238,122,227,102,205, +184,251,26,117,229,140,179,46,49,158,120,139,60,241,212,14,189,134,77,55,204,181,83,197,160,247,6,121,250,103,61,151,143,195,63,76,102,128,58,5,154,34,121,140,96,231,59,85,0,237,140,252,224,244,245,207, +94,167,147,79,243,225,83,149,139,113,244,34,60,96,103,253,162,7,211,223,165,97,172,214,229,121,180,92,12,242,110,174,112,51,200,227,111,0,251,96,115,156,245,195,254,209,111,128,162,8,148,115,214,230,235, +24,250,158,49,207,92,246,231,161,160,13,165,186,83,140,67,192,228,1,229,109,3,220,100,0,51,158,163,215,223,18,172,128,242,34,35,241,132,3,200,228,159,57,79,110,131,191,78,156,224,139,168,129,3,202,140, +12,156,31,180,92,114,115,208,254,240,142,122,242,160,99,174,57,20,162,233,70,10,172,11,254,245,204,196,142,63,219,207,39,166,62,190,148,1,208,121,178,1,202,33,39,166,90,31,108,14,37,39,167,182,123,1,79, +243,203,118,141,123,12,24,7,94,189,248,199,191,7,219,38,176,197,195,127,12,144,175,78,4,228,28,99,142,177,54,62,159,202,166,91,185,58,253,162,48,49,211,206,31,143,2,0,71,185,237,232,121,20,1,178,179,56, +194,171,66,7,78,126,200,199,36,250,178,231,28,231,25,56,57,199,2,156,38,144,147,243,67,200,57,1,44,248,247,220,57,56,193,231,29,187,226,178,150,105,136,36,220,167,28,0,24,183,231,139,99,207,24,57,233, +216,210,137,230,224,249,235,215,147,180,18,122,228,124,214,167,62,156,227,168,230,128,53,140,178,15,226,140,99,7,238,90,103,39,156,143,148,119,207,113,208,253,42,69,105,142,8,146,46,248,5,45,0,250,96, +12,246,200,200,238,121,199,92,181,186,144,240,101,200,237,136,20,147,140,255,0,18,219,15,204,126,32,129,78,51,115,252,121,30,176,41,60,115,222,0,71,28,131,129,233,131,64,26,234,110,121,196,150,251,72, +198,72,181,235,244,44,189,71,184,61,234,84,19,244,47,105,201,254,35,105,143,81,201,148,224,115,206,49,142,71,94,184,254,115,17,140,72,112,56,224,46,122,227,159,47,140,227,166,120,252,113,83,36,195,24, +100,151,29,71,204,221,177,159,249,100,65,246,247,35,138,0,216,67,50,156,98,197,135,76,52,150,192,99,253,146,28,116,57,198,73,246,29,170,202,187,100,102,11,12,158,132,75,108,57,239,208,228,31,78,59,245, +29,241,86,104,199,38,41,128,29,54,177,200,39,235,24,193,253,123,212,190,124,64,241,21,219,103,213,228,4,122,158,0,29,122,96,231,191,208,3,108,16,15,49,89,99,3,164,176,15,161,229,198,9,228,147,128,121, +237,82,164,136,7,17,217,144,59,125,162,5,231,143,73,199,126,135,25,233,244,172,53,184,135,169,182,185,56,192,226,105,243,211,61,1,237,145,156,147,219,233,82,173,212,3,147,97,118,79,98,36,155,167,92,19, +149,61,121,28,122,250,226,128,55,146,68,206,12,86,103,161,199,218,162,3,7,29,254,211,215,159,94,57,244,56,176,178,70,63,229,218,204,231,210,101,115,199,113,139,225,223,177,3,56,244,53,128,183,112,147, +197,133,231,67,210,121,129,29,185,249,206,123,113,207,61,122,115,40,185,183,111,189,167,222,14,78,55,75,32,252,119,18,15,110,113,142,189,137,52,1,184,100,0,103,236,118,199,131,156,24,216,241,198,112,215, +109,156,156,30,65,164,18,15,226,176,128,15,100,139,60,14,184,251,81,224,231,167,229,233,89,43,119,6,64,251,12,195,24,255,0,150,175,158,189,114,219,187,96,114,0,231,39,214,167,23,80,28,3,167,78,91,129, +195,131,206,73,224,152,200,252,121,235,201,205,0,107,41,200,193,177,136,243,212,36,89,245,199,18,150,227,61,58,118,61,42,85,13,140,139,5,235,198,35,201,199,183,239,135,111,76,244,231,35,56,203,19,192, +7,252,131,46,15,208,199,212,245,24,40,9,235,249,142,9,20,241,60,3,174,145,49,244,201,70,28,123,4,61,255,0,67,140,250,128,106,44,114,159,187,110,200,114,71,22,234,121,235,213,174,9,24,239,199,56,39,3,173, +79,28,87,32,227,202,113,238,176,66,7,174,118,155,129,150,252,185,227,158,135,37,102,139,24,26,36,140,79,113,187,61,73,201,196,36,30,1,231,36,158,113,145,82,249,176,128,9,209,102,62,254,84,167,219,0,172, +32,231,175,61,127,35,64,26,254,69,227,0,2,220,96,114,0,128,30,190,233,112,79,25,193,224,251,1,64,134,237,121,84,157,143,109,214,228,31,66,63,227,231,3,212,118,61,48,107,45,100,183,108,147,164,76,188,116, +217,114,7,28,12,225,48,63,5,233,142,166,166,47,3,30,52,153,112,71,101,152,244,224,28,178,143,83,244,238,7,112,13,32,183,248,0,44,163,208,249,74,167,39,160,5,165,96,57,231,167,175,6,156,171,169,28,31,222, +140,17,247,137,62,135,144,184,57,192,231,249,158,107,49,76,93,23,71,148,17,211,253,98,247,227,31,47,35,24,199,227,130,106,194,2,48,70,151,113,255,0,125,200,48,62,153,0,129,254,247,184,61,40,3,68,46,160, +57,218,252,227,39,50,224,158,57,57,111,115,142,112,78,56,205,56,155,222,75,238,4,14,187,143,25,233,252,100,231,142,135,147,250,85,12,190,114,186,108,227,158,166,73,151,129,142,72,89,15,81,144,58,244,25, +226,148,9,200,63,232,87,10,58,49,15,41,252,183,72,15,97,158,113,236,14,9,0,188,101,188,0,19,35,99,29,209,137,193,255,0,129,1,140,123,244,239,144,49,32,154,111,226,144,28,14,114,167,57,247,224,142,123, +231,216,103,181,80,86,153,70,209,107,114,24,99,28,204,123,140,144,68,217,201,199,94,121,245,233,83,131,46,0,104,46,148,156,245,153,253,71,247,174,193,28,122,17,250,208,5,163,49,35,239,115,254,232,199, +97,211,3,31,137,237,232,41,155,148,54,90,52,231,251,193,7,78,231,43,158,255,0,66,120,207,0,83,9,112,56,142,125,196,115,251,211,128,15,25,0,222,99,215,7,175,126,59,160,243,6,79,149,112,73,193,31,60,109, +233,217,175,137,35,30,223,81,214,128,44,44,145,156,145,20,60,116,24,132,131,158,153,202,224,254,88,246,233,71,238,27,147,20,60,243,202,68,121,246,194,129,212,100,115,156,241,216,85,98,102,200,253,213, +192,193,234,76,88,228,158,153,189,206,113,158,112,48,122,147,129,151,137,100,28,109,184,30,193,225,231,184,39,55,227,215,168,237,199,60,138,0,152,45,144,63,52,80,253,62,207,16,227,158,167,28,99,63,159, +92,14,105,127,208,115,141,144,46,79,252,240,183,201,28,116,192,235,193,39,183,78,188,154,140,202,221,26,59,134,61,71,22,196,147,207,173,235,126,191,160,20,207,151,36,180,87,88,110,120,251,47,211,60,93, +12,122,144,15,81,142,134,128,38,81,100,114,86,24,201,3,156,69,22,56,62,129,48,59,231,145,207,79,74,113,91,76,229,98,78,49,199,151,24,7,4,16,118,134,29,57,36,99,167,56,235,80,110,141,65,37,46,113,220,17, +108,14,63,11,224,125,62,190,156,154,77,240,145,180,197,49,247,219,15,31,143,219,240,125,248,207,56,245,32,2,98,144,103,136,226,92,18,70,213,140,117,24,236,227,183,174,58,250,116,141,140,35,144,202,189, +185,218,127,69,147,30,216,244,231,29,233,133,33,227,17,73,200,193,56,136,159,196,253,184,142,223,166,48,114,77,48,162,19,129,20,221,242,49,30,70,58,244,191,224,126,4,254,166,128,36,243,32,92,131,50,175, +3,164,77,145,223,0,44,128,129,147,216,28,243,206,115,81,249,209,17,149,188,101,25,28,8,51,145,158,120,103,39,158,196,47,24,238,51,74,34,24,226,41,207,166,228,140,143,199,23,199,241,199,208,82,152,215, +35,247,83,41,234,64,219,142,221,190,216,58,99,32,31,92,208,3,150,117,198,69,252,137,212,115,6,14,120,35,7,114,254,35,4,26,5,193,36,129,170,207,206,120,16,184,201,232,48,60,192,48,51,220,253,15,90,102, +212,12,56,152,99,63,120,19,207,213,111,8,56,244,235,159,78,232,86,60,100,179,129,211,254,91,131,156,240,112,47,15,190,114,56,228,242,58,128,72,110,95,254,130,247,128,12,112,33,148,125,122,202,71,78,253, +253,113,76,55,91,121,254,217,188,3,60,134,92,158,125,132,220,103,211,104,235,206,42,48,209,70,71,207,33,235,209,110,206,49,158,135,237,184,193,28,231,234,49,156,146,225,112,139,199,250,67,119,192,75,172, +243,198,63,227,237,135,124,103,143,82,58,26,0,79,182,134,192,254,216,185,97,200,251,140,199,244,152,129,235,220,3,142,72,234,255,0,182,32,4,141,95,81,200,192,1,35,37,120,60,0,4,227,29,49,247,122,250,241, +72,102,67,209,103,227,158,82,236,144,15,174,38,110,59,19,143,127,122,79,56,46,48,28,117,234,151,45,145,143,115,193,254,126,157,128,2,155,214,60,127,106,223,183,108,24,92,242,127,237,186,140,31,98,14,113, +207,90,111,218,164,193,11,125,168,49,35,146,22,69,198,125,0,188,24,60,131,211,174,114,48,104,251,74,140,18,120,207,165,194,144,122,247,36,15,126,49,193,56,192,20,211,124,135,33,94,37,193,224,151,156,30, +113,208,5,97,130,71,7,161,57,227,189,0,52,205,112,121,251,86,160,119,119,249,243,140,245,226,231,32,247,57,234,15,4,241,81,180,179,158,13,206,163,239,135,144,31,67,255,0,47,99,159,110,59,244,4,210,181, +217,56,63,104,31,79,54,224,12,14,114,115,19,99,211,60,117,193,244,163,237,1,192,204,177,131,128,114,110,38,29,255,0,235,217,135,67,211,36,122,130,51,64,17,3,33,7,247,151,204,125,90,71,83,223,28,125,180, +15,200,99,218,163,102,155,185,185,61,71,205,62,115,232,48,111,212,231,167,67,199,92,117,204,134,118,29,38,78,9,57,23,18,19,159,161,177,207,67,212,242,122,15,117,23,51,227,139,148,24,207,252,188,227,183, +7,155,30,7,7,35,57,29,250,208,4,59,166,200,0,200,50,56,249,203,30,122,96,182,162,71,83,211,142,167,189,60,37,201,231,124,227,7,140,108,236,63,235,244,130,123,159,229,142,174,50,78,126,245,212,56,61,218, +224,99,211,254,124,49,237,249,243,214,163,102,184,237,125,111,207,93,179,32,61,9,228,253,136,46,51,208,103,175,166,40,1,238,183,68,16,25,250,117,42,192,241,219,63,107,96,113,234,6,61,61,234,24,46,114, +15,95,64,23,7,241,255,0,72,7,191,76,14,253,59,57,154,112,8,58,132,124,255,0,114,104,9,252,15,217,64,28,142,163,255,0,175,81,153,38,25,11,168,73,142,231,204,183,99,223,248,190,196,78,6,113,144,190,248, +224,16,0,253,183,35,128,89,70,8,57,66,70,0,232,63,124,115,234,121,231,31,74,64,179,117,221,17,36,119,82,57,231,174,46,84,159,196,12,118,168,191,124,196,227,83,148,96,103,253,108,67,191,127,244,16,58,117, +63,253,106,80,242,40,5,181,54,110,64,255,0,143,136,15,174,126,83,105,144,57,224,12,146,123,30,69,0,74,76,217,199,250,47,226,15,78,71,63,233,7,25,25,30,254,188,100,64,239,112,185,32,89,122,245,63,47,3, +210,112,51,236,121,4,254,20,141,51,131,159,237,7,61,65,195,196,112,7,94,126,206,7,175,166,122,115,76,50,103,59,175,159,30,167,200,32,243,199,34,33,199,56,237,145,212,131,212,1,143,52,135,59,214,200,125, +11,243,129,192,56,159,56,32,142,7,166,50,69,71,184,145,130,182,99,190,15,153,128,71,161,50,250,17,159,151,211,165,14,195,168,190,207,57,35,16,241,206,8,35,167,56,198,114,78,51,140,117,168,153,194,242, +111,10,12,231,42,99,24,228,115,144,59,15,160,239,235,64,10,196,1,194,216,250,157,178,73,234,57,230,94,72,235,200,199,244,131,41,142,99,180,39,190,28,143,76,253,230,36,228,125,59,243,158,174,46,64,32,94, +57,200,224,59,70,220,12,116,62,156,250,142,216,238,105,191,104,8,8,251,75,1,158,9,9,216,123,16,121,234,79,211,175,52,0,224,208,96,6,130,217,177,199,250,237,160,246,193,198,79,67,234,5,38,235,38,255,0, +150,54,61,120,6,224,147,207,252,7,36,130,6,56,3,142,244,211,114,173,214,229,64,193,234,87,233,218,67,252,136,60,98,152,103,143,175,159,25,30,187,65,253,11,131,156,116,4,14,152,28,1,128,7,22,176,83,255, +0,30,246,153,232,118,60,140,50,114,121,194,158,120,244,25,3,146,57,52,121,250,113,227,236,241,16,6,126,83,33,3,60,127,116,122,255,0,147,81,155,152,199,32,239,207,79,244,96,224,126,82,103,60,142,157,123, +115,200,79,53,27,144,128,123,27,80,184,231,176,103,31,94,249,245,230,128,30,39,211,7,34,212,18,115,247,82,71,199,81,238,57,193,199,92,243,218,166,243,172,1,249,109,164,28,2,113,3,145,192,227,63,32,24, +235,216,156,1,214,171,9,143,56,137,136,207,252,250,196,1,227,167,250,209,159,195,144,120,169,133,193,3,31,102,127,113,246,48,248,247,218,36,110,249,60,126,116,1,40,150,212,0,124,137,0,24,225,109,194,17, +220,227,40,119,123,227,158,7,106,127,218,109,120,253,221,215,169,2,30,48,61,64,193,7,31,79,92,85,127,180,142,127,112,121,236,116,254,14,125,203,103,167,56,28,127,50,191,105,108,18,109,16,228,28,1,167, +33,62,231,36,117,30,164,129,64,23,5,213,152,83,185,46,71,175,238,57,245,198,210,65,200,29,72,4,112,115,140,82,125,174,207,0,1,120,56,227,253,24,227,60,2,57,127,78,249,224,245,36,98,171,45,195,183,2,213, +176,0,28,89,66,7,81,216,171,116,192,39,140,30,231,173,60,121,172,114,182,114,241,130,72,180,143,24,200,238,182,231,25,199,176,199,211,144,9,205,204,39,149,107,207,247,69,172,88,7,60,12,153,143,24,245, +61,49,158,244,195,114,15,221,107,226,8,31,242,194,209,64,29,79,45,49,232,121,29,186,254,21,217,110,115,197,148,252,240,15,217,87,175,97,141,128,113,211,166,120,61,250,161,142,228,112,109,230,83,215,38, +221,49,140,227,36,121,67,249,100,115,143,112,11,6,118,198,85,239,78,61,18,211,28,113,212,92,31,95,64,115,248,208,38,152,244,107,176,59,146,150,189,122,159,249,106,199,223,243,239,85,12,83,12,102,7,199, +28,152,250,125,0,65,131,248,96,126,60,41,89,128,56,138,85,61,176,93,7,126,8,8,122,247,198,125,113,215,32,22,124,217,179,143,62,232,117,200,63,100,0,251,145,231,47,65,211,143,166,115,82,6,156,16,69,196, +227,183,34,216,14,152,232,38,228,122,131,140,226,178,157,238,247,0,34,144,99,57,38,108,116,235,144,214,231,129,192,239,235,215,38,149,90,232,228,124,253,179,254,147,18,131,207,127,244,23,192,7,143,92, +241,156,228,80,6,145,251,65,96,124,246,36,116,6,59,115,239,216,190,61,186,245,250,225,79,218,207,252,181,61,250,45,176,245,57,224,41,254,127,64,43,59,23,61,74,51,19,212,125,178,49,208,246,197,134,120, +56,60,113,158,190,148,135,206,24,44,132,119,249,175,228,199,62,203,167,145,198,58,251,156,16,58,128,94,38,245,74,168,185,219,199,241,53,184,35,234,127,150,121,227,32,102,133,55,75,247,239,34,28,115,153, +99,61,125,50,113,244,233,254,25,198,103,94,209,168,233,198,162,196,231,175,25,178,24,60,127,158,206,91,162,79,204,199,168,0,11,214,235,255,0,128,68,243,249,245,233,192,160,13,44,207,222,242,46,70,112, +101,3,143,160,35,250,254,180,187,110,27,145,119,111,129,142,187,118,242,61,242,51,211,57,63,143,74,162,39,82,79,4,246,230,237,138,147,142,115,155,16,121,63,151,67,158,165,235,63,247,98,234,127,231,228, +31,110,166,207,156,244,198,72,62,227,154,0,209,88,238,7,252,190,218,99,28,128,83,57,237,140,47,124,227,28,117,60,154,70,89,186,253,174,3,211,59,114,115,248,231,30,132,225,125,49,145,200,166,110,165,232, +32,63,67,114,8,60,251,89,142,190,128,245,237,197,57,93,223,150,128,41,61,112,193,177,255,0,146,235,233,215,3,250,208,4,196,56,35,253,34,44,251,103,167,35,166,112,51,206,48,71,126,244,229,36,255,0,203, +210,116,231,12,221,126,190,104,224,2,61,243,233,210,171,21,126,208,6,0,96,238,103,0,251,141,168,51,208,253,125,128,166,148,114,64,91,97,207,25,9,33,237,128,121,81,159,118,224,158,220,80,5,188,140,243, +125,140,122,46,65,237,207,250,72,231,142,61,63,74,112,96,223,242,254,79,210,40,200,232,113,214,124,123,244,231,143,194,162,195,41,28,196,163,147,214,55,206,120,56,3,3,30,158,221,199,122,145,109,103,255, +0,158,107,140,103,253,94,15,168,231,240,235,239,201,160,11,57,56,194,223,18,65,231,16,196,51,199,166,246,227,167,60,30,152,53,30,233,1,249,111,28,30,191,234,151,61,6,14,72,39,211,167,76,142,180,162,202, +82,63,213,64,113,234,209,129,237,212,31,204,244,231,233,78,251,29,218,228,5,182,24,61,55,66,58,118,225,148,231,57,234,127,30,185,0,69,150,64,73,55,242,116,61,149,126,160,225,49,236,51,248,246,203,190, +210,221,239,166,35,175,85,232,125,204,100,115,200,198,15,24,236,120,67,107,115,199,250,129,237,230,196,49,215,142,28,240,125,120,238,120,199,8,109,102,35,230,123,112,56,249,124,216,143,227,141,217,7,233, +207,28,244,160,7,11,146,121,23,147,113,199,38,60,245,231,159,37,129,252,143,110,156,98,85,187,96,115,246,167,228,119,146,5,233,215,239,90,158,62,152,32,84,95,102,218,50,94,1,211,131,60,106,114,8,231,131, +158,188,0,113,142,167,173,40,136,14,175,25,192,207,203,58,18,65,244,249,176,122,103,3,24,239,129,138,0,159,237,141,255,0,61,156,129,234,246,173,129,233,147,96,122,254,88,226,143,182,54,8,0,54,70,126,253, +186,231,254,249,211,78,120,207,29,121,166,249,75,142,36,199,25,193,184,137,72,224,158,158,110,127,145,7,60,30,199,238,192,195,58,177,199,67,115,19,122,30,3,78,14,122,119,31,143,20,0,239,182,74,57,17,231, +230,231,18,196,6,122,245,26,126,112,49,201,227,220,145,210,65,125,49,7,48,30,131,254,90,66,199,159,76,217,224,242,7,225,206,61,107,159,32,156,18,57,233,134,133,241,236,64,159,219,185,247,227,169,76,194, +189,73,35,61,118,166,56,233,255,0,47,64,112,125,187,138,0,186,47,164,193,2,0,65,234,29,108,250,251,110,183,83,199,39,57,252,41,70,161,32,206,235,56,136,231,3,203,179,224,96,99,157,132,30,156,231,7,243, +170,33,173,15,83,35,30,128,5,132,227,235,155,163,211,235,207,115,197,63,54,163,163,92,40,224,241,28,93,57,207,252,188,224,250,130,61,254,180,1,104,106,39,144,108,35,35,7,131,21,174,15,63,245,200,158,125, +58,96,10,120,212,28,114,182,86,203,129,192,54,246,135,25,250,197,239,250,230,170,109,182,99,159,50,233,135,247,76,105,207,65,159,150,231,129,232,120,247,6,156,209,91,158,147,93,14,14,6,200,143,191,123, +161,199,61,251,224,103,154,0,182,186,133,198,126,91,91,126,114,8,251,61,177,235,216,108,92,31,192,100,113,210,147,237,247,121,203,91,66,0,234,77,180,3,105,228,117,33,113,145,158,132,103,191,81,85,68,81, +28,31,54,127,108,219,194,49,198,127,231,228,14,113,215,234,73,199,52,52,16,103,63,104,156,117,224,67,31,83,156,240,46,70,61,250,100,244,235,64,22,190,223,41,57,49,196,58,224,44,16,115,215,60,121,235,248, +99,173,56,106,29,137,128,116,201,54,208,142,70,56,200,186,56,29,122,156,241,159,90,165,229,198,112,60,235,147,142,194,20,29,123,103,237,153,25,28,117,199,233,135,172,59,126,228,247,164,118,204,79,142, +122,146,69,238,50,58,231,167,214,128,45,27,165,110,67,90,100,112,50,145,40,237,255,0,79,71,158,221,71,35,4,117,168,204,199,191,216,136,29,63,135,63,80,46,113,223,158,8,201,239,197,64,65,31,242,218,239, +35,60,22,156,31,192,45,222,51,207,181,40,243,128,56,55,39,105,192,222,111,125,185,194,222,122,99,24,199,108,129,154,0,157,37,32,117,183,83,219,247,175,199,78,120,152,168,31,83,158,125,169,254,118,78,13, +196,64,114,56,114,217,3,176,255,0,73,235,201,201,224,116,53,1,123,142,128,74,114,57,39,251,64,118,231,131,168,31,160,10,61,78,121,168,203,207,158,21,201,7,184,190,7,243,55,228,146,61,212,226,128,39,222, +8,195,93,195,131,216,147,192,24,60,98,235,156,103,185,61,122,144,69,70,68,89,230,91,71,238,65,46,78,9,236,62,210,71,76,224,101,126,153,20,207,54,231,63,234,228,108,116,253,221,233,219,142,14,74,222,126, +60,156,244,233,72,101,152,103,48,75,156,242,81,47,71,76,118,107,150,61,177,235,129,206,120,192,2,226,212,3,131,102,72,206,56,39,142,217,97,116,120,231,219,7,174,58,210,3,9,200,255,0,66,60,228,227,112, +3,174,79,50,182,73,233,192,36,246,163,237,23,29,4,18,231,253,168,231,57,246,193,155,56,199,35,140,117,207,178,172,151,4,228,219,182,64,207,48,205,249,243,39,191,245,205,0,35,121,93,190,198,113,201,251, +237,192,231,220,99,147,159,90,104,147,159,149,109,9,92,30,97,14,112,72,232,193,48,122,146,9,7,241,201,21,63,159,50,140,52,48,15,247,162,193,227,220,231,159,199,63,141,63,206,144,142,177,250,145,229,70, +221,127,222,3,208,112,127,28,227,144,8,22,237,83,134,91,110,252,27,69,25,61,198,60,188,246,233,142,120,235,205,75,246,160,195,132,179,83,220,125,134,34,73,200,28,150,139,7,175,124,125,123,25,67,200,65, +229,7,160,251,53,153,57,25,254,240,36,31,99,130,113,144,123,82,229,216,224,180,61,63,138,219,79,7,160,245,7,140,244,227,245,160,10,158,107,114,86,43,66,115,159,249,7,192,122,145,199,250,131,207,166,120, +198,114,125,92,146,220,147,196,22,132,251,88,219,100,99,216,219,103,215,211,62,253,237,132,36,1,152,79,115,136,108,87,219,160,97,198,79,31,47,3,38,151,105,235,190,35,211,159,34,203,63,159,158,1,244,200, +199,61,187,0,10,235,37,222,115,229,91,129,235,246,27,49,235,142,68,10,71,25,238,63,152,169,69,197,231,0,20,94,216,91,91,101,227,57,227,16,254,36,103,129,142,185,169,68,77,156,249,177,174,122,31,42,215, +158,160,142,46,135,230,49,199,225,83,11,99,255,0,63,17,129,254,196,113,12,255,0,223,58,136,198,51,220,115,212,80,4,2,91,178,62,249,201,254,237,181,171,14,135,25,13,31,243,239,145,197,52,203,123,144,1, +102,36,245,91,107,33,244,39,247,61,72,61,78,1,57,199,60,213,177,110,15,30,114,147,207,221,9,193,247,255,0,137,142,125,56,29,57,233,214,153,228,158,138,204,113,253,197,0,227,191,221,213,70,51,232,0,224, +113,211,128,8,177,120,121,101,148,231,0,124,150,139,245,231,29,137,244,236,6,72,36,211,118,93,30,4,83,183,31,194,246,128,231,191,221,60,112,56,198,121,245,205,74,32,152,31,186,204,61,208,125,121,7,87, +0,231,158,184,239,198,121,50,249,82,158,124,190,192,127,171,28,114,70,112,117,76,103,140,228,103,158,135,165,0,85,17,221,99,33,46,199,60,129,44,42,61,177,181,176,125,242,61,251,226,164,84,184,81,141,183, +163,167,252,182,79,66,56,253,230,49,235,199,64,112,59,9,76,82,127,207,55,24,224,21,139,249,109,213,57,253,113,131,218,163,242,238,59,71,41,30,241,30,71,111,249,137,176,255,0,62,134,128,1,20,172,50,82, +240,227,214,224,142,125,246,220,160,201,244,57,235,244,164,216,227,143,38,244,247,226,234,79,254,73,108,115,198,57,227,36,96,10,93,183,45,247,160,36,17,207,238,7,183,93,218,134,78,125,49,252,170,51,28, +227,159,179,32,228,0,13,191,57,255,0,192,220,17,211,160,160,5,40,199,254,93,239,135,115,254,150,248,199,191,250,64,234,79,78,160,231,215,37,134,7,99,255,0,30,215,132,99,24,107,185,128,231,233,49,237,140, +228,224,140,18,51,205,5,110,135,252,185,198,217,207,222,128,243,215,36,127,164,190,125,114,62,190,134,152,124,252,140,233,240,251,19,108,72,246,228,207,200,32,158,1,206,78,51,210,128,3,106,249,24,183, +189,0,159,225,191,188,199,224,22,229,87,223,56,231,24,29,179,27,90,176,39,247,23,163,60,97,174,111,95,57,235,207,218,72,60,99,215,159,204,169,243,91,173,140,32,2,0,204,56,3,63,91,130,1,199,110,56,252, +77,42,135,233,246,27,49,142,6,96,7,63,80,46,48,49,211,7,240,233,200,3,13,180,252,1,29,218,251,137,47,91,32,118,36,200,113,244,201,60,241,142,180,211,105,49,228,155,174,63,235,177,231,60,228,52,156,241, +199,174,79,56,25,165,111,52,103,253,14,208,103,210,221,72,201,207,76,92,113,140,126,185,237,81,51,62,71,250,37,144,24,60,152,24,246,60,224,76,123,99,184,201,231,154,0,86,182,236,86,228,253,124,192,6,126, +178,48,244,235,245,244,168,254,203,198,66,57,60,242,88,177,245,238,49,198,61,125,241,158,136,119,103,63,101,177,31,237,27,118,252,177,230,125,115,200,36,116,245,166,110,147,146,33,178,92,131,247,109,228, +227,159,119,227,175,184,60,3,156,112,0,125,146,70,24,25,30,196,55,212,99,10,7,60,246,198,13,55,236,93,155,104,228,125,228,124,116,239,145,159,169,193,250,243,64,121,87,170,219,158,189,32,35,211,140,110, +30,254,254,135,154,83,113,39,100,180,3,29,12,36,253,122,185,62,188,12,115,248,138,0,99,217,32,25,196,7,3,143,148,158,157,254,100,198,58,116,228,100,117,25,196,102,219,254,184,21,28,241,10,144,58,115,159, +40,250,131,159,235,83,52,239,198,62,202,56,234,32,99,143,83,243,77,144,71,65,206,7,96,15,72,188,249,65,56,120,71,112,69,187,30,191,87,32,116,30,166,128,5,182,193,36,37,177,29,201,138,49,158,192,255,0, +168,201,224,14,153,30,253,233,12,96,15,154,43,86,7,176,17,140,12,158,167,200,227,159,207,61,169,26,123,159,249,236,59,244,179,114,115,211,208,227,190,8,207,94,42,22,150,224,158,101,207,39,36,219,58,246, +237,198,58,254,128,245,238,1,55,148,58,253,154,208,142,163,230,67,129,208,30,34,0,28,28,31,203,185,166,152,27,4,139,123,48,56,60,180,126,157,129,141,143,110,152,56,7,177,226,162,89,38,236,204,62,145,184, +254,81,146,58,112,114,59,103,28,83,188,201,191,190,199,7,31,55,152,61,114,0,200,63,135,110,198,128,15,38,64,188,91,218,142,152,11,229,17,234,112,124,144,49,156,231,158,122,253,26,99,59,126,107,104,189, +254,120,151,63,76,197,219,174,14,120,250,100,184,188,196,12,190,57,25,198,225,211,221,156,30,191,76,158,115,81,151,144,144,55,129,158,164,201,46,113,156,244,18,224,100,250,247,237,154,0,99,109,80,127, +209,215,211,239,194,113,255,0,144,127,173,48,56,207,250,165,24,239,152,0,63,249,3,158,189,243,143,108,212,165,36,60,150,36,116,206,249,71,175,76,54,113,147,216,251,242,6,106,54,73,79,33,216,112,79,222, +152,231,254,250,206,58,244,39,60,96,80,2,137,19,0,152,129,227,180,177,28,159,94,97,80,59,143,160,7,214,129,58,12,131,24,80,70,63,214,70,71,62,184,140,156,159,97,212,243,129,193,102,251,149,56,25,255,0, +129,75,39,35,232,83,143,196,245,3,28,113,65,150,227,161,139,119,114,68,207,207,30,201,211,249,99,189,0,35,92,219,113,146,217,244,87,80,7,29,15,11,223,219,3,25,250,148,195,60,253,224,112,65,231,247,178, +30,61,176,140,120,235,130,65,231,29,168,160,15,158,3,217,14,182,46,72,234,90,56,202,159,67,159,52,227,129,206,122,231,28,83,204,150,61,244,230,199,113,177,120,28,113,196,254,220,112,121,199,3,34,156,81, +24,28,222,50,245,3,116,144,112,126,164,113,236,15,167,56,226,152,86,49,215,80,12,125,230,180,32,243,216,51,41,198,1,227,166,57,20,0,245,22,3,13,253,156,235,238,85,135,76,243,242,207,212,247,32,47,78,115, +82,163,89,228,133,176,115,212,229,164,144,12,158,163,6,124,159,94,0,199,124,247,172,188,156,165,218,251,102,75,62,122,244,38,67,235,142,114,123,30,213,33,51,39,63,106,79,127,158,207,104,231,25,206,255, +0,231,208,158,134,128,45,3,7,63,241,47,56,231,171,201,140,123,109,156,49,25,61,50,122,156,142,225,223,185,39,2,204,46,14,115,230,204,0,233,158,124,242,1,250,243,211,235,84,214,89,121,31,109,181,231,61, +77,155,28,224,122,78,61,200,39,220,117,6,166,87,144,240,110,236,8,245,205,174,65,61,51,182,224,254,93,58,117,231,0,19,171,70,57,22,200,63,224,115,16,50,123,225,206,1,201,199,229,83,172,136,79,22,112,231, +212,60,223,207,121,231,185,201,31,159,21,88,59,22,33,175,52,225,140,112,26,215,32,123,147,55,60,99,56,198,58,98,158,174,122,11,173,53,189,11,61,168,207,254,69,62,189,49,159,90,0,182,174,1,200,182,78,57, +24,45,180,117,3,150,108,159,110,126,135,154,157,29,179,242,218,69,248,150,255,0,235,240,125,50,120,235,206,107,60,77,48,31,51,232,248,28,100,139,86,30,128,143,152,245,56,233,158,125,113,77,55,110,8,253, +230,146,49,208,108,182,111,203,10,72,31,150,7,208,224,3,97,101,148,30,108,212,129,128,63,123,54,61,1,201,140,129,233,198,65,253,106,97,112,224,127,199,156,39,35,156,200,237,215,142,240,244,29,189,250, +214,66,222,76,64,31,241,43,60,241,251,136,9,192,7,161,84,99,158,217,3,142,59,226,158,46,103,238,250,113,227,143,220,197,233,211,62,71,25,232,120,35,240,160,13,111,53,216,225,172,32,29,240,88,147,199,28, +133,131,147,140,115,145,206,51,212,84,168,227,60,216,219,3,233,186,76,143,160,16,99,25,231,160,250,247,172,81,120,199,129,253,158,79,57,30,66,113,234,114,34,207,31,128,31,133,74,183,42,122,139,30,113, +247,109,199,97,211,34,22,61,115,236,58,158,230,128,54,75,100,127,199,164,29,120,207,154,65,60,244,197,190,57,246,34,151,118,120,54,150,248,239,197,200,239,219,247,3,61,207,167,233,89,171,117,24,31,118, +211,167,252,242,148,116,245,2,223,25,233,140,15,165,11,116,167,36,71,108,78,113,149,183,149,189,79,95,32,31,208,30,125,51,64,26,160,71,255,0,60,34,83,142,254,126,211,131,200,201,136,103,234,15,60,126, +2,176,25,2,24,73,246,55,67,211,210,31,94,253,63,74,162,183,42,196,2,96,95,66,182,238,252,254,48,99,62,217,4,119,60,138,157,110,16,96,249,196,122,98,200,17,131,233,144,73,245,245,24,207,108,208,5,145,26, +147,150,182,132,158,224,79,116,191,143,22,199,175,24,235,219,212,210,249,17,183,6,222,33,140,255,0,203,123,163,215,211,54,135,129,158,9,36,231,52,196,186,140,125,233,229,192,245,177,80,115,193,3,59,1, +239,237,199,122,155,237,118,248,193,185,145,71,253,123,55,39,254,2,167,60,241,207,113,214,128,26,182,72,72,111,45,51,235,230,92,174,7,177,107,96,14,113,219,39,30,156,84,203,96,128,131,128,9,199,73,103, +35,190,51,186,1,223,56,228,123,15,85,91,155,115,140,76,231,190,126,205,33,244,25,193,140,240,48,126,159,94,150,69,204,7,31,191,144,14,184,22,114,103,159,113,17,4,243,208,127,74,0,135,236,100,116,111,252, +126,78,7,176,49,145,239,211,184,201,237,78,91,126,185,29,15,25,144,245,199,7,144,56,231,241,28,12,10,156,92,219,128,49,52,228,250,253,137,192,235,211,112,180,98,121,245,252,120,205,56,93,65,212,201,113, +201,232,182,224,122,118,123,18,195,130,61,0,235,211,168,2,36,11,145,201,39,29,12,199,215,28,12,231,242,236,106,194,68,120,3,111,167,250,194,79,231,223,63,95,229,66,220,91,242,69,197,238,15,240,253,158, +223,0,99,24,230,204,17,143,67,129,215,175,119,253,162,35,140,61,217,61,127,227,222,223,183,171,27,2,61,123,147,244,160,5,242,80,224,182,236,246,34,70,43,200,7,211,7,183,56,244,199,90,176,145,192,8,220, +206,163,39,238,144,222,184,36,146,58,126,29,113,154,132,92,47,66,211,115,198,77,189,176,199,227,253,154,73,206,71,110,41,115,19,114,68,237,201,224,36,3,140,251,105,124,123,241,131,211,232,1,104,199,107, +144,60,249,73,3,56,10,152,246,0,25,208,142,156,254,116,241,28,3,145,51,228,131,130,68,99,191,92,125,175,25,224,129,220,112,58,138,170,12,61,210,231,25,227,247,54,124,143,83,157,49,79,243,231,175,122,153, +68,45,192,91,208,122,156,91,233,228,245,227,31,232,33,135,245,237,201,160,11,137,228,175,89,217,71,108,164,120,61,57,0,92,19,147,142,185,192,39,167,34,158,13,177,227,207,108,159,96,120,231,160,23,35,158, +115,206,122,125,49,83,100,100,253,219,226,59,102,218,196,126,36,155,76,126,85,40,134,34,112,169,118,164,255,0,211,189,135,94,167,145,106,163,156,122,14,114,122,154,0,184,175,8,31,44,231,140,12,31,151, +140,227,32,249,231,245,231,241,197,56,74,153,24,157,122,240,75,161,246,227,50,131,219,56,35,142,185,29,161,91,76,227,15,112,59,97,160,178,111,203,108,64,147,140,116,233,158,72,52,171,102,123,201,35,3, +207,252,123,91,142,153,238,168,122,253,50,58,158,216,0,155,127,204,49,114,15,108,9,81,122,231,210,224,3,235,206,78,127,10,145,100,151,36,125,161,115,239,58,103,140,118,55,36,14,189,0,233,138,98,219,168, +254,41,72,29,132,49,243,143,81,176,99,143,67,198,56,62,147,136,84,143,187,56,235,146,98,198,0,199,112,192,103,159,110,221,59,128,2,105,151,63,233,67,35,129,155,152,199,230,5,193,227,60,14,157,58,102,164, +75,155,192,120,157,49,156,156,220,196,57,207,63,122,83,215,158,216,198,57,167,164,72,6,2,185,61,201,140,228,15,114,103,31,168,247,207,90,153,96,221,206,211,255,0,2,37,120,234,50,22,224,244,201,245,4,115, +198,104,1,130,238,245,121,51,219,156,129,193,184,132,158,185,28,22,99,199,168,253,57,20,225,123,119,211,204,135,216,121,232,73,233,199,4,99,183,65,156,26,145,109,15,116,143,25,254,41,28,127,232,37,191, +17,250,131,213,255,0,103,76,115,28,56,29,196,178,30,120,63,196,157,191,207,106,0,98,221,223,241,131,8,29,191,210,192,207,183,220,124,113,216,253,57,239,96,221,222,158,175,1,35,130,5,228,71,168,60,113, +9,239,145,211,60,131,142,194,49,110,7,72,98,96,122,98,105,7,168,199,250,130,15,161,227,161,224,10,144,65,22,48,109,99,36,103,254,91,228,113,223,155,102,31,78,77,0,61,110,174,142,50,97,61,199,239,179,200, +57,60,172,31,94,248,60,30,123,78,151,119,64,224,172,7,57,198,102,207,211,147,0,198,78,125,122,17,199,21,26,197,1,24,251,26,118,231,237,9,212,115,198,235,63,65,198,15,29,185,230,156,109,237,240,63,209, +85,122,253,233,237,184,57,255,0,175,80,59,127,60,244,160,11,2,234,99,212,66,222,155,88,28,241,140,103,201,39,235,140,3,145,248,11,120,231,131,28,89,25,39,56,102,63,93,176,145,219,156,244,207,81,85,133, +181,183,0,199,15,60,17,230,219,18,49,198,6,44,206,63,62,79,60,245,163,108,35,32,65,24,29,14,215,132,99,24,227,34,201,122,123,30,217,192,160,11,139,116,48,50,136,164,156,156,5,198,115,198,115,9,39,61,56, +198,120,231,181,31,104,92,251,99,35,104,141,126,128,17,2,246,227,39,62,132,116,53,80,73,10,127,203,5,108,14,50,97,108,117,236,45,70,70,58,140,159,79,122,122,205,27,14,32,80,9,236,176,174,58,244,253,192, +39,183,92,255,0,136,5,229,186,236,25,192,198,122,169,244,244,92,231,166,56,30,195,173,56,222,32,224,239,110,112,114,87,176,245,96,185,207,3,182,122,3,235,72,50,143,187,129,233,145,0,28,140,119,80,126, +152,97,254,15,14,112,51,38,73,201,202,152,177,208,115,216,118,56,231,211,2,128,45,253,186,32,127,213,185,231,57,219,14,7,185,34,76,103,143,95,241,166,157,66,49,201,136,99,61,127,209,143,175,4,180,132, +253,58,116,239,205,65,184,168,199,156,163,175,222,201,35,191,0,74,0,245,227,3,57,199,76,211,9,126,215,81,129,215,150,152,115,198,56,23,64,123,240,114,113,197,0,88,254,210,183,193,13,8,207,76,151,177,81, +248,101,179,248,140,140,231,25,199,40,53,27,92,255,0,168,66,65,200,44,214,39,232,1,101,32,143,112,73,252,58,65,230,74,163,139,184,15,63,222,186,7,211,254,126,200,253,9,61,134,113,79,243,174,15,75,161, +129,200,195,221,12,244,193,230,240,96,245,247,35,7,60,226,128,38,254,210,183,35,34,40,120,198,71,153,96,14,61,176,135,61,49,201,227,174,104,254,208,183,237,12,57,206,48,101,179,3,25,246,81,140,245,198, +126,156,212,98,89,14,67,95,178,250,131,37,199,244,189,39,240,231,215,214,152,73,98,51,170,0,7,99,36,224,247,4,103,237,45,159,124,231,167,3,173,0,88,93,70,223,36,125,150,221,186,100,179,218,227,169,201, +4,62,121,237,158,61,205,56,222,194,223,122,202,211,28,156,134,178,199,226,88,103,61,123,112,14,114,70,69,86,57,94,127,181,73,201,207,202,211,159,115,192,186,95,207,32,96,254,53,19,92,30,7,246,164,132, +103,238,168,156,125,7,252,126,103,57,61,115,211,211,173,0,91,251,84,71,59,109,109,71,124,25,108,50,115,237,229,159,92,243,207,67,218,143,180,15,249,247,181,24,29,218,203,244,33,6,48,121,252,70,115,222, +129,159,36,147,168,78,7,61,76,152,237,211,125,238,64,250,147,215,29,122,52,220,175,221,26,156,153,192,200,1,207,227,255,0,31,77,211,35,147,142,252,117,192,6,152,152,176,7,200,131,156,131,182,59,82,48, +58,103,247,99,36,118,198,120,193,36,244,167,239,115,194,196,137,128,49,136,160,57,199,178,174,113,223,142,79,67,235,89,94,114,158,186,172,164,100,253,232,73,198,56,61,110,61,179,72,215,49,129,129,169, +202,71,168,182,7,216,114,110,114,59,140,0,63,14,180,1,172,76,228,224,70,252,1,202,193,26,129,130,15,104,247,30,50,56,60,12,240,15,38,6,19,177,232,72,207,42,65,56,192,199,64,6,79,182,71,24,7,28,154,202, +55,49,127,21,252,141,199,123,96,1,231,167,55,39,235,219,165,66,215,48,3,255,0,31,76,78,72,3,201,1,178,59,229,174,64,227,220,254,35,173,0,109,5,149,65,60,113,140,103,35,234,73,220,223,144,239,232,120,45, +217,46,57,63,142,233,120,231,156,97,134,14,71,81,142,78,56,21,148,46,1,192,91,139,158,156,237,138,49,207,225,120,15,185,7,167,227,72,215,15,147,137,238,8,247,4,28,231,166,126,222,185,252,64,228,31,76, +208,6,139,23,83,243,101,176,58,239,148,140,158,112,48,216,206,59,17,147,236,122,70,102,144,12,121,121,246,41,46,78,63,222,117,61,123,231,0,240,73,0,10,163,184,48,230,73,228,35,162,239,96,51,239,139,227, +215,234,126,157,169,67,182,121,89,123,225,76,172,49,244,2,243,57,227,25,28,118,232,40,2,223,152,14,50,156,228,241,182,64,6,122,224,239,111,195,56,231,243,49,180,216,7,17,28,99,184,149,71,227,251,192,57, +231,156,30,152,170,236,238,70,54,79,207,93,178,206,120,60,224,226,248,123,156,129,147,76,220,23,254,88,93,156,17,130,36,184,35,61,207,203,122,65,250,231,183,175,20,1,107,237,39,254,121,142,57,80,100,153, +112,123,114,100,192,227,32,99,158,42,35,114,217,199,145,8,60,231,117,196,138,79,28,228,9,65,63,134,114,121,62,213,94,69,98,115,109,120,78,49,145,36,163,175,61,77,217,207,97,244,224,242,42,32,99,224,253, +154,244,100,99,5,229,99,199,115,254,146,78,61,179,207,20,1,160,46,199,252,240,183,244,255,0,95,41,24,192,228,229,253,14,70,15,61,198,5,52,222,17,247,96,131,3,191,157,41,57,237,145,191,3,29,58,131,158, +220,154,161,145,147,139,123,207,251,238,99,239,255,0,61,250,114,126,131,142,128,84,76,99,57,223,5,208,235,147,155,134,245,199,73,27,142,57,3,174,8,56,227,32,26,75,126,224,127,171,135,147,211,231,36,103, +145,201,99,156,246,3,220,243,221,77,244,156,126,238,30,58,150,86,232,6,57,228,147,235,147,159,92,214,73,107,65,214,27,156,145,201,16,220,113,193,239,158,121,236,115,192,234,40,243,109,215,59,99,186,232, +113,152,46,184,207,209,72,207,212,241,215,216,128,95,123,183,36,231,236,227,254,5,32,252,126,240,250,113,144,59,99,60,70,215,77,208,27,96,120,28,200,127,2,50,9,3,185,57,60,140,28,213,35,52,36,156,45,201, +35,142,109,238,143,242,25,199,225,140,245,224,211,124,216,179,196,119,4,250,253,158,236,16,7,160,217,156,119,201,60,243,218,128,45,181,219,3,134,107,76,115,159,223,39,224,50,223,174,56,199,175,104,154, +238,34,112,69,145,224,244,154,62,113,235,142,57,61,243,198,9,39,158,97,51,168,198,32,114,122,13,209,92,131,255,0,162,255,0,169,250,158,200,102,36,241,12,163,223,101,224,30,157,151,28,103,143,97,220,113, +64,19,11,152,123,27,94,48,127,214,35,99,175,184,207,248,113,138,79,54,23,206,18,2,63,223,65,211,24,56,15,159,115,143,202,152,175,41,233,28,189,128,226,240,123,127,14,56,228,146,79,3,175,169,11,182,98, +120,142,65,156,245,107,156,113,238,199,57,238,122,122,244,160,7,102,0,127,212,68,72,7,159,48,116,201,238,28,140,100,119,227,0,243,218,163,127,40,143,248,242,134,76,145,201,144,46,58,158,167,113,32,99, +28,118,52,239,222,158,169,211,61,69,195,103,28,144,14,6,49,249,99,159,65,80,59,78,115,182,18,125,243,56,235,235,201,207,124,241,158,157,141,0,70,203,24,56,22,16,247,227,207,57,199,175,250,179,220,99,147, +239,138,21,35,39,230,211,208,143,81,42,17,235,128,25,70,70,71,67,206,48,114,112,69,12,110,64,32,218,169,61,70,126,210,125,125,35,199,175,4,243,250,84,97,102,229,141,154,131,212,157,210,19,142,188,16,51, +159,192,241,248,96,2,103,134,22,24,251,20,96,246,27,193,63,66,85,70,58,103,142,113,233,77,242,34,31,122,205,120,235,243,205,145,208,228,97,31,156,240,49,207,110,135,21,25,121,71,2,213,119,17,147,145,43, +100,118,251,160,30,216,29,48,79,76,115,77,45,57,57,251,42,229,73,193,242,229,39,30,184,56,231,211,175,174,7,112,9,188,171,98,113,246,82,189,242,191,106,32,19,235,254,140,189,58,147,147,72,109,227,39,62, +68,152,7,160,55,10,113,234,51,8,201,237,143,79,78,181,14,249,65,255,0,87,143,92,195,32,62,191,197,38,7,110,114,71,161,52,25,164,3,6,220,30,122,249,96,143,166,214,206,122,17,215,31,94,69,0,74,209,66,51, +136,164,65,232,124,246,110,131,146,12,24,61,120,253,79,164,76,171,159,148,14,255,0,242,199,60,118,25,49,103,3,174,126,185,7,60,55,207,61,69,160,4,14,134,20,35,146,121,229,134,120,198,6,58,130,51,206,105, +12,206,65,219,111,48,193,224,11,116,3,184,237,42,158,152,252,61,114,8,0,126,197,35,150,43,201,229,173,176,0,25,200,206,208,125,51,199,36,112,51,193,112,142,50,121,120,200,239,155,86,39,24,234,62,112,125, +201,3,25,227,36,98,160,50,203,208,69,48,247,251,49,36,227,110,120,243,199,0,100,103,169,227,29,169,67,57,229,146,113,144,122,90,175,226,64,123,165,199,29,121,231,159,66,64,4,226,59,108,228,72,167,129, +243,45,187,140,127,232,67,143,167,4,30,13,41,242,20,131,230,175,29,51,28,219,187,116,56,29,187,114,42,169,24,36,145,118,172,113,207,217,16,254,162,228,129,219,166,115,245,160,182,252,12,221,30,153,63, +102,80,120,231,188,216,24,232,48,112,62,153,160,11,70,120,122,111,207,214,41,9,29,56,228,245,244,4,143,90,80,193,143,200,232,87,60,102,23,80,51,232,124,240,72,31,65,140,116,224,85,64,168,160,13,215,167, +175,72,161,1,184,57,192,243,143,212,0,15,31,142,83,247,64,224,173,209,60,31,152,91,46,115,234,25,255,0,152,193,238,7,112,11,44,88,31,153,97,56,233,155,119,108,243,206,49,49,192,231,28,231,167,66,6,106, +51,180,158,35,181,35,0,255,0,199,148,185,231,158,112,199,60,122,250,123,156,52,34,28,126,238,81,128,48,115,111,140,123,144,195,62,249,62,231,221,172,145,131,156,62,71,63,43,219,130,14,123,144,88,231,249, +123,80,5,149,137,59,197,0,4,142,150,51,227,142,51,193,56,227,140,116,30,164,84,254,68,103,0,27,112,79,79,244,25,179,216,245,35,169,236,59,247,4,86,112,88,215,146,172,248,236,103,140,31,192,12,246,7,158, +189,120,233,83,7,94,7,148,189,7,38,230,0,70,7,76,50,250,123,224,3,212,12,80,5,211,106,131,4,180,75,145,206,219,57,0,207,226,59,122,30,125,200,197,30,75,47,250,183,140,15,246,160,92,227,190,65,96,121,25, +198,64,227,60,228,85,79,57,19,162,198,15,253,127,89,131,239,193,83,207,110,158,184,233,72,38,113,247,124,146,121,224,223,217,115,207,57,111,32,156,228,122,227,31,76,208,5,191,42,111,88,27,56,228,91,175, +63,142,240,125,56,232,120,244,163,200,156,242,4,75,146,115,136,0,193,224,224,159,55,250,143,199,180,38,89,14,15,145,108,112,78,79,219,237,9,231,235,16,231,167,78,7,113,74,37,144,3,152,45,206,125,111,109, +14,113,244,136,145,244,60,227,20,1,55,145,112,167,153,1,207,32,121,96,99,215,31,190,39,145,142,156,99,211,187,196,19,156,124,233,237,152,144,17,211,143,245,135,0,243,147,140,224,118,170,194,225,198,79, +217,237,199,166,46,237,73,231,183,250,144,121,234,79,191,56,233,78,243,152,159,245,49,19,201,255,0,143,187,115,142,131,131,229,241,239,235,154,0,181,228,220,0,72,101,3,191,48,118,199,56,36,30,163,61,15, +208,243,81,31,182,47,221,27,135,167,218,33,92,250,227,104,0,103,169,24,254,89,166,44,238,223,242,238,56,199,204,151,80,224,99,175,42,160,30,131,128,121,36,122,212,159,105,147,254,121,117,239,246,132,206, +127,22,57,224,100,244,231,191,83,64,17,52,186,128,32,8,217,184,193,197,220,88,227,244,227,35,190,15,215,38,144,79,168,3,254,161,198,114,120,185,143,177,227,146,132,3,156,247,231,3,60,211,205,196,160,253, +207,167,239,129,199,228,220,227,161,227,159,196,82,27,150,108,226,54,110,78,126,121,179,158,152,33,84,14,190,132,142,189,113,192,4,235,53,241,235,110,64,39,60,220,198,79,126,120,132,241,215,159,78,135, +131,74,30,237,121,242,7,35,146,103,227,147,142,54,196,59,143,195,142,106,1,57,31,122,221,186,99,57,185,254,69,72,39,254,249,254,148,241,112,58,249,110,189,248,107,129,208,12,130,9,24,250,140,3,235,193, +52,1,46,110,155,173,176,228,115,251,217,112,0,36,158,145,123,244,4,96,159,78,105,223,191,4,6,180,137,179,223,124,164,240,113,147,136,114,125,56,207,227,80,249,201,131,143,59,168,193,18,92,224,116,227, +30,96,199,94,57,231,61,200,20,7,140,129,251,217,151,61,132,147,117,207,36,147,115,207,226,58,126,24,0,180,166,65,201,182,10,50,8,193,144,99,142,113,251,144,65,250,140,241,211,165,76,142,249,27,162,32, +14,131,51,19,245,199,146,9,31,129,244,199,122,161,229,197,213,154,225,128,235,182,73,178,125,137,251,86,1,3,175,110,158,163,10,18,212,240,94,237,126,142,231,160,198,112,215,124,242,120,199,230,115,64, +26,138,221,63,118,196,12,3,196,249,246,206,96,199,39,240,53,56,8,122,160,57,231,45,20,204,0,233,131,182,14,254,156,245,57,197,99,172,22,100,228,205,57,36,114,124,196,60,250,144,102,200,234,6,119,14,51, +210,165,251,38,158,64,59,174,51,255,0,93,54,143,207,207,35,56,61,168,3,75,108,71,248,19,4,112,60,153,176,71,94,141,106,7,127,94,255,0,133,48,197,24,57,17,68,9,29,161,144,156,244,233,246,101,25,199,94, +15,175,34,170,11,43,35,206,235,190,184,39,206,64,56,235,128,211,250,99,183,60,226,166,91,59,35,207,155,118,8,28,15,58,216,14,79,247,124,209,147,249,17,205,0,75,182,62,165,66,245,35,16,63,94,227,253,71, +243,233,244,52,224,150,249,3,115,38,65,221,155,113,250,22,132,103,174,123,12,31,166,34,251,37,166,15,239,103,7,142,124,203,102,35,223,6,240,117,207,191,78,153,20,171,107,105,131,153,38,32,115,130,214, +199,191,80,5,222,125,178,15,190,1,198,0,38,41,110,120,18,183,24,231,200,85,200,207,83,251,158,131,175,67,140,118,233,75,246,120,136,255,0,94,132,242,112,208,156,231,158,128,65,211,28,246,60,224,84,126, +69,168,198,12,135,182,114,152,252,150,227,24,206,122,231,30,181,32,138,216,30,8,29,79,40,141,158,15,82,110,71,60,241,199,111,124,80,3,133,162,240,114,167,25,25,91,121,63,248,200,60,244,228,15,126,58,167, +216,201,57,5,79,57,207,217,92,145,211,158,66,145,142,115,158,125,186,82,253,158,6,232,99,232,127,229,146,115,140,113,143,52,159,233,140,116,238,166,4,25,196,105,129,220,34,145,206,113,157,175,206,125, +9,224,244,233,64,12,251,35,131,149,36,142,159,241,235,129,144,7,76,184,192,252,127,62,207,88,28,99,59,128,7,180,110,9,246,31,191,92,3,234,51,215,175,122,102,17,88,126,229,15,97,132,70,207,127,226,36,255, +0,223,71,31,94,242,18,188,19,107,24,4,14,26,222,220,147,219,35,44,9,200,29,122,117,244,2,128,31,185,211,248,136,193,63,197,112,114,51,254,205,198,0,246,233,215,61,57,60,217,58,143,156,30,57,146,239,57, +250,125,167,159,98,49,215,190,106,63,220,131,205,156,68,99,63,241,239,2,250,100,237,23,64,246,237,131,212,0,58,1,124,150,4,155,36,7,174,4,72,171,207,210,225,176,61,49,248,245,160,9,68,210,175,252,176, +67,158,79,239,174,193,239,145,242,206,113,199,94,7,215,176,65,60,135,254,93,21,185,224,249,215,103,167,251,211,48,247,255,0,235,84,97,97,234,52,248,179,142,188,123,228,128,101,3,56,29,56,228,31,165,1, +33,108,230,201,1,246,72,72,244,206,90,117,253,127,144,160,11,66,226,117,233,167,171,112,58,73,57,227,142,6,101,56,31,207,63,133,6,230,67,130,218,121,82,58,252,243,12,100,243,131,231,123,1,208,116,227, +154,166,109,237,179,205,153,28,96,237,251,56,36,231,161,63,104,96,7,76,251,14,128,83,60,155,113,144,182,210,140,122,45,169,199,81,143,245,202,71,28,147,235,235,216,2,247,218,128,228,216,48,3,32,178,188, +216,198,79,92,72,79,126,114,50,65,239,156,211,13,218,103,155,16,7,124,201,55,160,61,115,206,71,57,199,175,227,91,100,0,99,200,185,200,244,75,114,62,159,241,242,0,237,140,158,135,39,140,84,162,24,159,238, +218,78,48,79,204,69,184,201,237,192,188,92,96,245,233,239,223,32,10,110,224,57,205,171,41,28,225,101,124,142,190,160,113,235,201,29,125,42,35,115,109,147,155,103,39,24,198,124,195,156,247,201,28,31,108, +253,78,120,155,236,171,200,242,88,103,57,80,201,215,215,41,124,121,25,198,49,223,235,79,91,100,232,35,157,79,39,137,27,25,227,177,187,108,254,157,243,156,240,1,9,158,215,143,244,41,136,255,0,102,4,7,175, +4,146,172,113,244,32,118,36,131,138,103,157,108,114,5,171,224,246,217,27,118,227,39,203,247,61,122,251,118,179,246,99,156,143,181,18,58,96,156,241,219,153,207,35,161,57,207,28,118,192,182,238,164,28,95, +3,254,202,175,110,220,202,78,51,142,191,173,0,84,50,219,147,255,0,30,211,15,113,20,64,103,240,136,103,183,175,0,140,250,55,125,160,235,5,192,255,0,117,121,35,7,60,1,142,157,120,198,79,62,181,160,35,145, +114,66,223,118,225,162,7,185,235,137,152,231,142,253,7,74,114,180,195,3,101,255,0,29,66,194,115,201,61,195,227,244,61,61,133,0,99,153,108,7,221,134,235,215,140,33,201,62,135,32,250,231,144,79,24,52,223, +54,200,159,248,246,184,110,71,47,180,96,250,158,56,252,186,116,227,174,224,146,227,44,63,226,96,171,206,6,214,3,156,245,196,188,118,207,202,63,12,80,242,207,198,5,199,252,13,228,254,133,177,156,117,35, +25,207,92,80,6,33,146,207,129,246,121,255,0,6,36,15,252,116,143,203,250,156,129,172,250,139,73,73,247,0,130,58,244,217,212,142,65,245,231,158,251,30,116,216,249,132,255,0,240,23,184,57,199,76,254,233, +192,199,182,112,63,86,53,193,0,6,55,96,30,184,251,73,31,155,90,128,15,191,211,60,96,128,12,144,246,141,156,90,28,250,236,198,14,58,110,216,65,252,249,24,28,113,74,77,184,199,250,35,19,142,51,40,0,31,97, +177,78,51,217,125,64,207,25,173,6,184,97,157,178,94,40,207,59,188,222,113,244,136,12,243,223,29,135,173,48,93,48,206,30,239,191,118,193,244,224,199,249,254,67,168,200,5,64,208,231,155,73,6,123,171,177, +24,30,248,63,168,24,238,61,30,54,114,86,9,0,228,243,187,160,237,200,207,110,123,83,154,225,9,32,188,217,61,78,31,208,96,19,229,129,219,143,65,192,244,48,179,197,207,239,37,231,167,51,245,239,192,66,51, +239,198,72,232,71,32,2,126,73,24,141,198,112,112,66,56,39,140,18,8,56,250,241,211,234,42,85,46,7,17,40,30,187,32,206,123,103,130,79,124,231,156,245,170,121,140,128,86,71,255,0,129,51,227,25,234,50,126, +135,215,25,226,159,189,71,71,31,152,192,235,215,130,123,250,0,122,208,5,207,54,64,62,236,96,241,147,229,68,79,83,215,229,35,175,183,80,51,220,25,86,89,250,13,140,112,58,65,23,96,113,252,32,113,142,49, +207,56,198,43,59,204,25,192,149,129,207,27,91,215,184,202,227,131,233,239,199,20,226,87,159,223,77,238,114,188,116,232,60,196,7,168,25,56,227,145,147,64,26,134,91,131,216,14,227,109,178,183,94,192,131, +208,245,232,197,113,233,197,55,125,231,80,24,142,127,229,216,40,250,28,161,28,241,193,63,143,53,158,88,112,12,243,49,231,25,242,129,246,31,61,208,207,229,142,61,169,195,32,103,124,135,191,45,111,147,237, +129,114,196,17,199,24,201,244,226,128,46,121,215,120,28,0,123,255,0,163,41,35,233,132,231,240,3,39,7,30,144,72,247,68,228,17,211,146,214,131,235,193,218,57,31,221,227,61,50,13,48,33,98,65,12,163,3,168, +139,158,185,228,206,190,192,30,79,208,10,120,137,128,249,124,225,235,177,173,114,20,119,249,174,187,117,198,48,40,2,44,93,30,113,144,120,226,22,94,61,112,7,95,211,222,163,38,117,228,161,61,71,48,204,0, +253,56,235,158,185,201,252,173,128,221,55,207,156,127,211,145,60,242,112,90,235,211,29,79,7,183,82,23,97,32,101,174,51,220,150,177,207,183,73,155,167,126,128,123,142,128,25,205,52,227,147,20,156,255,0, +177,112,7,66,114,48,8,60,12,245,245,224,212,126,124,221,162,233,200,200,185,79,92,156,241,142,157,59,227,168,226,180,204,99,24,63,106,57,232,4,150,135,168,238,21,207,127,199,56,246,53,11,192,79,221,138, +232,228,113,185,162,247,199,43,42,245,235,216,142,157,49,64,20,13,196,203,199,146,115,131,209,174,71,224,7,63,253,126,58,140,84,38,230,227,170,196,64,35,28,205,58,12,231,25,228,12,143,174,63,51,87,218, +25,129,193,138,112,15,35,47,7,108,1,247,238,0,246,244,224,254,49,152,152,146,10,202,57,3,59,173,243,201,62,151,4,99,183,28,114,125,64,160,10,31,104,186,99,204,99,183,91,169,177,193,206,58,143,76,231,142, +125,241,151,125,162,231,180,123,176,122,11,187,142,50,59,225,185,199,245,25,25,171,166,32,6,60,198,0,227,172,145,228,17,254,236,252,118,56,24,166,121,42,121,50,158,157,12,241,143,124,115,57,63,150,115, +219,154,0,133,110,174,84,231,202,110,217,63,108,186,206,7,175,35,63,143,231,79,107,185,57,38,55,83,143,249,250,156,243,147,234,227,191,78,120,63,65,72,99,67,130,103,10,7,76,204,167,243,196,164,96,123, +103,156,128,122,225,173,26,19,197,202,147,220,44,196,28,250,255,0,172,206,127,42,0,111,246,132,192,129,137,179,206,73,187,152,15,166,223,52,147,211,156,103,241,25,32,251,124,135,25,146,68,39,248,90,229, +193,255,0,199,228,231,233,158,253,184,164,104,79,252,247,80,59,226,225,212,159,111,245,195,60,123,129,207,32,252,162,171,188,64,2,77,194,175,94,77,219,12,119,228,249,224,227,219,32,231,56,232,5,0,72,215, +19,54,113,36,141,131,156,253,164,245,245,226,92,158,51,220,228,118,57,168,140,147,100,130,247,4,227,129,246,179,237,219,207,199,108,231,61,71,98,6,99,8,156,110,190,3,185,197,217,36,118,198,62,212,112, +50,79,94,79,3,183,13,63,102,4,3,123,147,206,8,185,80,73,200,238,110,185,245,245,250,208,3,185,224,153,110,128,56,36,11,178,64,60,246,23,0,247,228,126,189,232,164,219,110,192,237,187,124,241,159,244,149, +32,245,224,126,248,140,30,252,241,208,115,69,0,124,255,0,230,202,167,4,76,75,122,133,28,115,206,3,169,63,174,49,211,25,167,9,36,245,147,216,146,199,159,124,202,56,231,176,237,198,105,171,36,228,124,237, +0,60,99,13,14,71,28,231,230,39,147,156,252,222,221,233,124,217,65,0,205,108,0,232,60,200,129,207,94,119,49,32,30,58,15,196,231,128,9,146,71,224,254,240,156,28,237,25,3,175,31,235,179,192,24,207,215,145, +83,9,136,254,11,147,140,242,49,128,71,61,231,63,158,125,59,85,69,152,156,183,159,111,147,128,127,210,96,228,115,145,143,196,113,192,247,228,83,195,110,7,18,64,71,168,186,132,227,57,28,128,9,245,31,135, +110,192,19,52,242,100,15,46,236,119,63,60,88,239,198,62,208,51,199,175,248,82,11,130,15,43,112,49,253,230,183,247,227,254,62,249,200,236,220,159,175,52,36,108,65,218,241,114,71,34,88,0,234,58,101,71,92, +247,199,29,79,98,225,19,227,135,143,131,128,69,213,186,250,116,80,164,251,117,252,59,208,3,60,252,156,110,149,121,224,159,32,158,15,168,185,108,117,234,49,79,243,28,99,253,113,231,25,6,17,193,255,0,183, +165,206,125,7,167,228,165,38,61,10,57,232,1,186,63,136,249,99,111,78,184,246,62,180,229,89,7,116,36,96,159,244,166,35,129,143,249,225,156,99,249,240,125,0,20,76,49,243,43,242,58,21,131,62,223,242,246, +64,239,200,205,73,231,198,57,242,95,60,242,18,33,239,218,224,146,127,175,114,57,166,6,147,156,164,111,237,246,151,199,233,30,122,243,67,60,131,238,69,24,200,199,55,19,227,175,251,48,31,175,7,235,140,224, +128,56,93,199,202,249,115,119,201,10,153,237,216,204,192,115,207,221,30,134,156,110,163,236,179,15,82,74,131,208,142,196,123,140,110,231,166,105,170,110,78,1,72,243,199,250,183,156,142,114,63,231,158, +115,211,156,99,241,193,169,83,237,156,227,203,0,3,130,76,231,177,235,149,237,193,60,131,244,52,0,193,116,164,112,175,129,158,174,199,242,11,199,79,199,160,29,170,204,119,17,17,247,95,215,254,91,176,200, +207,64,55,31,199,24,206,50,79,34,133,75,204,103,205,182,95,194,110,49,201,228,47,56,233,238,122,99,154,51,125,156,11,184,71,176,251,64,4,100,246,193,201,250,128,13,0,89,73,212,156,44,78,222,135,109,209, +232,73,224,5,193,60,140,122,142,185,239,105,38,57,0,65,40,244,42,183,171,220,30,129,91,147,140,241,199,38,179,213,239,8,199,219,33,4,115,247,101,110,122,16,126,82,57,198,49,250,158,113,42,173,243,48,63, +108,129,187,241,29,199,184,199,49,158,220,112,14,51,214,128,47,27,150,206,12,23,0,131,193,205,231,78,253,83,25,233,192,197,74,179,28,99,23,11,156,99,63,110,201,62,223,46,15,57,228,100,244,28,246,165,228, +222,30,126,218,156,116,196,119,3,131,207,31,187,201,233,143,167,60,115,137,4,87,253,175,148,142,122,173,218,131,215,175,238,57,57,250,251,28,102,128,47,173,196,128,252,179,92,167,124,1,121,129,211,175, +201,131,215,140,245,57,197,88,19,92,145,133,189,186,0,227,143,46,119,24,198,51,131,22,122,123,158,160,96,129,138,203,16,95,112,90,238,35,238,5,209,61,135,123,126,56,247,7,158,184,53,32,134,237,6,13,208, +7,177,2,225,129,231,174,62,202,121,199,98,78,59,103,25,160,13,33,53,225,32,13,66,239,28,140,139,89,219,60,113,221,122,127,62,216,169,68,183,100,12,220,222,184,25,25,251,12,192,159,166,79,114,121,228,231, +35,158,195,49,86,113,195,221,18,61,68,119,3,156,117,199,217,193,62,185,0,118,233,154,148,71,48,31,45,196,158,220,74,1,252,12,36,227,223,25,199,67,138,0,210,6,249,129,219,45,233,24,201,221,107,140,126, +12,217,252,253,248,169,67,94,143,189,113,50,228,113,152,98,207,30,198,65,238,7,214,179,35,142,114,7,239,151,25,228,150,148,2,15,28,129,7,215,169,192,3,173,74,32,155,36,9,33,3,143,188,247,92,145,254,237, +185,237,199,24,250,129,154,0,209,18,92,130,1,187,185,57,227,152,161,198,62,158,97,29,62,156,115,158,148,224,210,146,79,218,39,4,116,196,17,156,250,103,13,192,237,193,198,59,30,212,22,57,84,13,207,24,7, +209,174,143,228,13,190,113,223,130,1,207,230,240,24,127,203,192,224,113,145,63,94,167,170,114,115,215,32,122,113,205,0,104,1,62,127,227,225,241,215,63,101,77,220,116,35,47,142,249,192,56,239,140,212,171, +13,195,227,247,215,4,116,193,134,60,99,233,246,140,116,39,175,215,165,102,147,38,48,100,143,24,244,96,79,94,72,33,125,51,223,215,25,226,156,140,202,113,231,70,163,25,231,31,94,165,51,142,255,0,92,14,184, +20,1,170,45,230,238,211,50,144,127,229,130,19,158,7,37,110,8,193,193,253,112,58,26,148,91,30,55,36,188,247,49,119,244,57,147,3,249,113,236,43,48,75,142,179,199,207,31,54,208,123,112,51,248,99,211,28,96, +3,79,86,4,253,248,15,127,153,129,232,71,166,63,14,157,59,231,20,1,170,45,80,224,149,100,57,228,44,103,161,227,160,98,56,244,36,159,97,212,75,246,88,0,4,201,32,233,199,146,167,39,183,4,18,127,30,64,227, +166,107,39,123,46,0,107,115,130,70,1,39,147,142,64,86,24,231,140,245,206,58,230,172,11,150,81,131,176,128,58,40,82,9,201,60,147,40,228,224,119,252,61,64,47,24,237,198,63,123,49,57,232,44,217,187,156,242, +34,199,126,221,189,59,185,33,182,57,62,109,199,190,96,145,121,239,199,147,143,166,58,118,233,84,210,233,200,192,45,215,168,88,185,206,7,119,199,111,110,188,147,83,11,169,0,192,201,198,50,24,66,15,28,140, +98,65,158,132,224,18,125,56,160,11,203,21,191,25,150,86,246,104,121,24,35,160,218,51,219,39,60,246,235,86,209,44,148,115,60,195,63,220,132,17,219,140,17,199,78,63,175,90,201,91,233,129,251,128,140,16, +9,43,208,247,226,83,235,156,103,168,56,53,50,223,76,48,68,7,158,191,40,25,228,113,128,204,61,243,140,156,113,201,24,0,211,3,79,206,68,147,30,188,27,108,245,232,126,232,30,167,30,196,158,185,169,2,216, +30,75,205,158,57,54,209,14,158,165,148,227,223,7,156,15,90,166,183,178,145,254,171,177,24,11,33,108,140,113,194,96,224,241,211,4,142,51,130,105,226,246,227,248,98,99,200,234,146,0,121,3,57,242,137,199, +114,125,57,205,0,91,242,180,208,56,145,193,255,0,174,80,145,156,158,197,134,62,131,233,215,154,120,93,57,72,196,164,16,59,164,0,14,221,230,28,156,228,253,71,168,21,88,94,92,247,136,12,14,153,148,96,247, +200,48,122,246,206,126,189,154,111,238,50,1,206,14,7,44,199,233,133,54,167,0,30,59,241,248,208,5,252,89,255,0,13,193,85,246,88,7,242,159,61,125,51,223,154,120,75,81,192,185,151,156,103,6,5,199,208,153, +199,65,146,125,61,241,138,160,111,36,61,85,49,142,75,231,29,14,62,237,177,61,79,65,211,39,191,5,194,238,64,8,49,218,251,22,134,67,144,115,201,255,0,68,7,144,7,169,201,199,65,64,23,192,182,224,139,137, +207,169,253,203,129,207,241,1,54,61,15,67,244,233,73,229,90,55,38,230,127,251,241,23,0,142,216,144,158,185,224,158,184,206,57,197,69,186,153,242,161,45,70,58,226,7,199,126,131,236,248,199,169,61,115,156, +10,144,92,206,15,72,7,127,150,220,30,122,127,20,36,227,166,125,243,198,58,128,78,96,128,17,182,234,114,15,79,221,67,239,199,223,98,58,99,175,95,74,95,38,33,200,184,155,35,214,24,177,245,206,252,244,231, +161,39,161,30,177,125,166,224,13,187,160,25,206,7,151,18,227,234,191,101,198,112,57,60,231,140,147,71,218,37,234,76,39,24,251,169,31,25,227,169,181,199,63,92,125,8,197,0,56,136,215,165,205,193,62,171, +26,244,56,199,1,184,63,82,49,142,59,212,130,94,63,227,230,241,178,59,197,129,144,64,24,36,158,184,29,15,225,198,42,31,58,70,28,136,199,166,26,17,158,159,194,32,30,188,14,51,145,192,226,158,102,231,130, +220,118,3,120,24,207,65,228,182,49,159,160,52,1,33,144,183,11,37,227,123,121,99,3,223,60,241,219,0,103,223,173,24,147,39,112,185,35,190,96,7,191,98,20,99,131,215,156,227,223,33,22,96,220,98,118,56,206, +86,23,193,29,78,2,219,167,28,227,174,71,7,32,28,83,252,242,191,243,240,0,237,229,207,158,115,140,98,38,35,212,14,15,29,59,144,4,1,70,50,36,192,28,230,3,140,16,51,206,1,39,142,7,110,71,106,176,19,32,21, +14,125,150,221,151,24,236,121,30,190,135,31,165,68,46,228,229,79,219,84,129,145,133,149,127,32,208,177,247,233,207,160,6,165,23,39,7,39,80,57,206,126,73,24,126,63,185,199,94,249,206,57,238,40,1,121,31, +192,221,1,56,89,1,29,64,60,50,246,228,254,35,214,143,53,151,159,42,102,35,60,6,152,14,56,39,134,4,3,245,24,3,24,237,76,55,160,241,139,227,192,198,99,155,24,235,146,69,184,57,244,201,61,241,223,40,111, +144,130,25,46,242,70,51,228,220,55,92,245,204,120,3,191,76,131,212,229,137,32,10,211,201,222,25,84,250,121,151,67,0,119,255,0,89,248,243,199,108,250,162,207,51,30,18,80,87,32,147,53,215,39,141,195,239, +30,135,39,249,158,180,198,190,135,210,224,227,159,154,222,228,103,175,126,1,35,211,4,254,148,195,123,8,229,149,242,79,123,107,150,57,227,146,2,48,228,250,231,158,253,13,0,88,50,220,146,48,28,119,4,207, +115,187,223,25,97,235,215,63,137,233,81,150,185,39,4,203,147,158,143,113,193,227,213,201,233,207,76,254,85,9,190,132,237,253,220,124,12,29,214,146,131,206,121,249,237,201,7,175,66,6,59,245,165,91,193, +212,44,0,118,45,1,201,193,227,135,132,241,215,177,62,184,201,200,4,225,238,198,112,215,88,193,233,52,195,39,167,25,43,142,190,252,14,105,76,151,217,225,174,87,3,188,236,120,231,169,227,182,122,245,237, +205,85,55,132,147,150,181,193,255,0,166,72,79,79,67,106,114,61,57,227,185,233,77,251,74,158,3,68,9,254,236,80,131,142,195,2,1,142,252,158,57,246,57,0,123,75,118,167,230,150,227,158,230,118,227,161,233, +176,245,235,140,142,122,243,81,137,174,9,63,191,159,191,252,183,61,61,9,5,79,208,17,144,49,218,154,242,231,146,203,219,144,177,14,167,208,166,59,250,14,253,56,194,9,177,212,43,122,16,246,248,199,161,202, +130,50,51,193,94,51,207,161,0,119,153,112,221,103,159,219,18,169,234,56,25,108,30,51,239,207,169,166,236,157,185,19,76,91,253,232,79,28,250,171,19,211,160,4,117,224,154,66,202,216,62,88,235,201,243,32, +29,207,97,17,231,254,5,158,48,123,211,64,99,247,98,108,116,27,90,22,250,117,139,39,183,3,168,60,99,6,128,37,242,230,32,22,154,224,96,144,14,248,126,128,96,39,24,193,252,115,199,52,24,50,1,221,114,121, +28,238,139,32,117,233,232,121,236,64,224,115,197,68,89,129,251,151,0,244,224,68,79,224,2,174,64,232,79,227,192,166,146,253,190,210,188,117,43,23,95,193,129,0,224,240,49,223,154,0,148,219,241,242,139,140, +113,156,152,65,63,129,67,220,122,30,190,226,162,107,112,62,240,159,140,228,239,128,228,103,218,60,224,143,108,244,61,57,45,222,227,130,38,97,198,3,121,68,224,250,110,144,145,239,142,252,122,138,104,103, +231,247,23,71,190,87,200,234,126,178,231,7,208,228,112,8,20,0,195,111,18,159,185,115,244,221,16,31,136,16,19,244,195,1,248,140,5,9,30,78,216,166,207,64,76,144,241,147,142,141,18,244,207,61,65,250,210, +179,204,0,196,55,10,51,143,158,72,241,142,252,9,73,246,244,193,239,192,168,218,118,206,26,50,120,198,11,198,15,56,198,115,158,7,212,119,207,122,0,86,137,70,78,201,193,224,125,235,113,131,223,165,187,12, +31,246,178,62,128,228,180,2,63,134,229,189,51,44,3,3,158,203,108,49,199,65,142,131,168,239,25,155,56,221,18,40,231,146,203,193,247,218,167,245,4,83,67,182,50,86,53,231,7,5,78,48,15,60,198,7,63,92,117, +193,60,228,2,76,147,157,201,117,206,122,79,17,250,142,45,193,206,113,129,156,231,211,154,107,5,35,131,114,8,199,38,120,73,247,224,199,207,30,192,112,73,38,155,246,128,50,11,47,81,255,0,45,98,83,158,51, +158,158,190,254,167,32,83,55,43,54,114,172,122,128,110,173,201,57,237,130,248,29,120,198,48,1,29,58,128,53,192,200,5,38,29,242,101,128,242,58,231,17,147,207,111,110,125,204,108,145,227,230,18,96,156,242, +209,243,128,57,225,58,119,224,15,64,113,128,39,44,19,56,66,125,10,220,91,100,147,219,150,83,218,162,103,36,127,168,151,3,210,75,86,231,191,33,242,126,191,83,222,128,34,47,106,191,47,239,134,63,219,0,99, +35,3,112,144,15,67,200,30,152,29,144,189,169,235,44,163,39,238,249,137,207,190,126,209,193,36,250,246,199,0,230,145,188,178,57,138,113,140,253,233,98,198,125,70,24,243,206,50,79,35,169,239,80,238,128, +12,24,165,60,143,227,94,167,253,214,206,120,236,71,78,104,2,77,150,153,200,150,98,114,48,60,200,136,35,174,120,186,83,199,94,189,59,118,14,88,44,78,73,73,201,234,73,145,91,183,112,47,128,3,166,56,254, +181,92,155,112,114,182,179,55,3,163,72,71,230,135,61,192,39,167,110,115,74,36,78,130,218,110,248,81,37,218,227,191,56,117,28,113,248,28,116,52,1,103,236,186,127,222,104,230,4,14,210,196,167,235,205,233, +235,207,78,63,90,83,107,167,145,159,42,108,242,1,103,70,35,29,176,46,185,207,35,36,241,215,60,243,69,157,185,255,0,68,152,140,159,249,109,56,4,99,29,89,177,219,166,115,211,38,163,220,207,156,88,57,231, +251,243,183,126,15,13,142,8,236,9,35,62,248,0,190,96,177,82,1,182,149,128,30,168,113,244,41,114,79,79,67,158,128,122,20,11,167,255,0,207,187,169,231,32,202,87,7,191,203,246,145,200,199,79,229,200,172, +253,206,15,252,120,184,35,24,37,110,155,167,124,170,159,229,235,248,198,236,249,5,172,155,61,56,91,224,65,201,3,39,142,59,122,122,156,208,6,155,125,136,0,4,110,49,235,56,238,113,208,204,78,58,115,145, +211,158,6,105,64,137,134,213,7,131,222,124,12,28,247,59,249,237,232,7,235,144,70,113,155,66,160,116,249,47,88,142,253,135,182,58,158,196,26,105,13,156,45,187,112,62,233,138,239,159,124,182,9,29,72,250, +28,250,80,6,215,148,128,103,201,200,37,65,31,104,94,51,244,139,60,125,113,245,34,151,8,57,251,57,29,113,182,225,207,110,64,43,24,3,212,231,175,211,57,198,6,109,184,22,238,15,80,118,222,115,239,140,145, +211,166,125,187,154,79,223,55,30,81,39,29,24,78,167,158,217,216,78,57,245,56,199,126,104,3,100,186,40,44,20,41,255,0,106,121,179,158,59,53,187,227,3,167,175,60,156,26,135,206,32,128,16,185,32,255,0,203, +195,16,79,211,236,203,158,189,8,206,121,198,122,103,24,103,224,136,100,199,170,180,239,211,31,236,30,78,125,48,7,110,244,209,20,224,242,179,14,189,99,152,142,120,193,11,18,156,96,30,127,30,153,160,13, +47,49,142,72,133,85,177,195,25,66,144,15,111,154,33,233,255,0,214,235,72,95,160,102,10,127,235,233,71,108,231,136,88,14,184,231,145,211,21,67,100,217,25,105,64,235,183,101,208,31,76,148,97,147,233,253, +51,149,84,115,159,157,135,28,238,251,80,227,190,112,159,92,246,250,103,128,11,69,253,26,70,228,28,11,180,35,240,255,0,70,31,135,98,113,215,165,69,189,177,255,0,47,3,7,60,93,68,62,152,2,37,200,192,24,231, +129,249,85,114,136,78,124,210,57,206,75,221,3,211,182,99,228,126,160,254,20,224,136,9,205,192,94,120,195,92,174,220,125,19,25,228,114,122,227,39,24,197,0,74,37,92,31,248,249,60,142,183,145,17,244,32,169, +61,143,124,113,207,61,88,211,227,25,75,178,51,222,225,79,76,156,140,12,130,7,78,152,199,24,233,74,4,93,174,227,239,247,174,46,57,199,78,137,145,140,12,130,113,211,177,197,59,116,103,159,181,193,145,158, +178,204,249,39,234,7,30,196,131,156,115,197,0,67,246,130,72,194,93,227,36,127,199,215,108,241,238,51,233,131,248,117,41,230,242,91,203,190,201,224,133,185,28,241,156,31,144,147,156,99,175,183,173,72,118, +30,69,228,61,129,7,126,115,140,156,15,49,70,7,61,251,115,131,197,43,52,63,197,125,8,238,50,189,79,61,127,210,6,114,125,126,189,134,64,34,18,3,255,0,44,111,249,35,239,76,78,7,3,31,234,242,125,120,61,233, +11,71,159,153,110,193,29,127,122,217,7,56,61,20,28,113,211,30,189,121,204,226,104,84,2,117,43,96,61,51,134,3,36,158,5,200,62,253,48,121,60,14,73,230,90,19,147,168,194,121,231,230,99,199,3,130,46,251,231, +32,103,169,29,232,2,48,246,227,0,45,225,110,127,229,172,157,251,127,170,29,122,224,228,30,125,42,81,228,103,238,222,125,12,146,49,237,219,96,206,126,159,78,248,99,75,110,63,229,253,48,48,64,85,220,120, +206,51,155,177,248,17,199,36,112,115,152,196,208,130,64,188,98,59,17,17,61,187,98,236,231,56,228,147,219,242,0,184,130,19,147,229,221,17,142,141,184,140,15,251,96,115,212,100,116,246,233,153,66,64,195, +63,101,156,228,146,72,4,96,231,161,2,207,128,123,115,142,156,30,106,154,204,135,35,237,114,19,254,236,131,158,122,129,114,65,29,14,114,125,105,249,7,63,233,45,140,245,219,46,62,185,251,79,7,129,238,56, +233,197,0,92,91,107,102,193,251,61,194,103,174,84,241,158,227,22,99,63,137,3,191,61,42,117,182,181,61,33,156,129,207,42,199,39,161,200,22,131,30,135,223,167,90,205,219,27,99,117,211,96,28,103,203,157, +179,201,231,43,112,217,228,144,63,94,188,166,219,125,192,253,182,67,140,158,82,228,144,79,110,103,227,62,185,61,59,10,0,212,251,61,190,112,176,200,203,207,6,36,3,167,161,183,28,14,227,32,28,115,197,72, +182,176,28,159,179,129,129,156,4,143,245,27,23,63,94,15,78,59,86,94,96,4,237,187,147,176,255,0,83,116,115,216,114,37,36,99,174,57,3,215,174,29,186,22,255,0,151,169,152,99,159,221,221,30,120,3,3,118,113, +223,61,7,83,158,224,26,98,222,216,112,109,243,180,119,88,79,61,122,24,152,142,254,164,250,211,132,54,255,0,243,230,135,167,222,138,18,121,237,254,168,115,147,217,126,189,43,49,100,133,114,4,196,96,127, +207,27,181,61,189,100,3,63,207,167,24,57,118,248,219,254,94,72,60,117,134,235,223,28,137,187,246,0,28,245,160,13,47,42,215,156,89,219,175,187,194,153,199,177,242,185,35,223,29,253,105,162,43,126,190,77, +168,0,244,242,128,199,175,221,78,49,219,156,231,173,81,86,11,210,242,33,254,244,55,124,127,228,96,115,208,250,118,207,112,255,0,49,200,39,237,214,196,142,159,184,186,56,30,132,249,132,28,113,237,198,122, +113,64,23,68,86,195,144,182,170,51,208,43,118,245,10,132,243,208,146,9,161,132,43,130,173,110,0,224,229,174,20,246,232,54,40,252,135,234,107,61,166,113,199,219,45,219,142,162,27,193,248,100,18,71,126, +132,19,216,82,137,101,57,253,228,109,219,112,130,248,238,235,159,155,36,158,189,127,174,104,2,233,146,51,193,123,96,59,16,243,19,199,39,248,49,147,158,48,78,58,100,241,144,75,0,56,51,91,140,127,181,54, +63,244,81,63,65,142,157,189,32,19,77,215,17,49,24,25,49,223,122,0,72,206,236,118,224,12,227,60,83,188,217,9,36,197,8,28,100,121,119,132,227,212,102,62,57,201,4,103,0,143,122,0,178,110,32,239,52,57,61, +132,178,140,14,195,253,64,254,189,58,210,125,165,113,133,154,17,212,143,223,92,55,79,117,183,0,14,189,79,83,249,215,51,12,133,107,120,136,24,32,24,238,27,251,222,202,125,187,253,14,121,144,72,132,103, +236,208,224,28,224,36,202,72,231,183,205,156,103,3,3,235,233,64,19,139,150,192,255,0,74,81,158,203,53,198,7,112,126,104,113,245,244,235,64,185,144,28,11,214,60,244,91,153,178,121,7,145,181,115,233,198, +15,29,142,13,68,172,131,165,172,124,3,209,37,25,244,249,138,12,254,31,254,167,52,208,227,13,104,15,247,190,105,87,29,177,242,198,223,92,115,219,60,26,0,180,183,115,145,205,212,192,240,6,110,110,6,125, +127,128,231,220,131,140,122,26,119,218,167,201,255,0,74,156,240,71,201,115,116,61,58,145,30,49,199,124,103,208,154,162,103,179,92,19,100,229,135,241,9,95,140,251,178,1,207,78,249,231,56,163,237,54,96, +100,218,74,61,252,236,143,204,161,61,187,113,235,158,64,0,186,179,200,126,245,196,229,79,118,185,119,57,199,92,48,192,250,227,245,230,159,231,115,143,180,203,237,135,32,231,183,62,95,60,227,161,207,61, +56,205,103,153,236,78,127,209,241,199,83,39,92,244,57,48,114,125,71,229,192,225,190,117,129,206,109,134,125,68,192,140,140,99,0,194,185,237,200,29,187,138,0,215,19,62,48,46,38,24,227,253,126,58,30,120, +218,15,63,203,167,122,60,217,65,3,207,185,39,211,206,45,215,253,209,207,78,165,71,92,86,95,153,99,147,136,228,25,228,133,117,60,253,60,178,195,131,215,0,103,175,28,83,199,217,143,3,204,25,255,0,166,165, +115,129,223,22,237,249,142,127,26,0,209,243,100,200,204,183,89,29,6,78,59,116,202,30,6,112,127,144,20,141,40,227,230,188,207,24,37,192,206,122,117,82,8,231,220,227,143,99,79,16,2,14,233,143,160,51,200, +84,119,251,162,215,190,125,137,29,77,46,248,185,249,156,1,199,51,144,15,253,245,110,163,159,79,212,243,64,23,22,66,199,59,239,15,108,7,78,164,122,152,27,185,254,188,98,145,201,228,110,188,233,219,203, +36,1,156,28,139,112,56,245,227,183,181,64,165,79,79,48,231,60,9,83,212,115,205,185,207,226,112,122,99,174,101,18,123,202,8,206,63,121,17,25,227,130,124,140,100,254,120,253,64,27,185,242,62,123,176,7,168, +131,158,156,252,209,143,97,248,158,61,100,83,39,241,77,112,0,61,2,89,96,115,200,63,186,60,250,122,122,243,79,220,122,169,152,146,114,65,49,243,232,7,250,40,252,189,59,243,82,172,146,131,214,112,64,235, +190,44,126,36,196,58,99,215,184,61,168,1,128,191,247,167,207,174,235,80,120,60,140,144,160,231,131,144,58,142,156,83,240,237,128,94,97,233,151,181,231,241,39,63,65,131,239,154,148,79,62,8,18,206,48,48, +114,208,16,125,137,104,248,235,207,66,59,156,212,139,115,114,8,5,164,60,12,238,120,114,57,199,56,131,63,158,121,207,39,131,64,17,8,24,224,101,177,254,212,150,205,156,122,144,184,236,113,245,192,233,138, +127,146,87,171,168,3,4,130,240,243,207,160,140,244,231,191,78,164,231,137,5,213,209,192,86,193,244,38,22,56,60,140,229,23,223,208,250,224,83,197,197,246,64,243,23,211,1,99,28,241,211,230,247,228,251,26, +0,128,66,73,4,75,16,227,60,155,114,14,56,35,30,95,95,196,156,158,121,234,255,0,42,69,4,153,96,32,255,0,120,70,65,250,15,40,245,250,12,122,158,180,247,150,247,161,153,135,174,4,103,242,32,228,31,195,30, +253,170,63,50,232,253,233,220,159,82,173,239,211,107,142,59,246,246,233,64,13,1,129,249,165,135,147,200,97,31,4,251,27,114,7,92,113,130,59,117,225,248,60,31,50,223,167,101,141,176,71,3,59,109,179,198, +62,184,231,166,41,203,246,182,25,73,100,60,224,229,36,32,127,228,92,103,235,208,126,146,121,87,224,31,222,96,28,19,152,155,56,247,253,248,56,245,233,248,115,144,10,172,72,63,235,33,57,29,225,99,199,60, +124,182,96,243,142,157,187,122,211,55,62,62,250,227,182,216,100,228,15,97,104,73,252,71,177,236,42,255,0,145,113,130,76,236,61,71,150,195,7,241,184,56,61,134,14,210,15,227,76,49,78,6,12,129,128,201,193, +94,8,30,237,56,199,229,233,223,130,1,69,158,65,208,130,56,255,0,151,89,125,61,63,179,91,166,123,123,227,158,173,55,44,163,7,102,58,227,236,115,3,156,1,215,251,57,121,60,142,189,14,72,198,72,191,178,98, +184,221,30,62,98,14,23,128,57,60,153,59,113,158,127,157,55,203,148,3,185,75,96,228,149,104,193,61,61,38,60,246,29,126,157,69,0,81,55,140,70,1,221,158,152,182,147,31,64,13,138,158,163,0,115,236,123,149, +23,115,41,255,0,86,196,113,143,244,105,176,125,56,22,231,159,167,56,237,158,182,14,7,6,214,86,62,190,124,74,7,167,13,159,196,253,115,193,166,12,30,62,193,59,30,51,254,145,1,24,238,113,207,67,236,40,1, +159,218,18,129,202,72,1,236,45,111,1,255,0,210,112,64,207,166,50,62,180,223,183,74,127,231,167,254,3,222,174,70,51,222,30,160,224,228,145,232,57,24,169,76,104,120,251,4,128,142,121,150,14,252,231,37,27, +240,60,14,61,168,242,143,36,88,168,247,51,89,147,207,95,249,98,112,122,123,228,240,104,1,130,238,110,153,147,168,227,203,187,11,223,158,128,158,221,112,51,249,212,171,115,32,28,130,14,115,159,46,232,28, +241,156,252,202,115,239,232,125,49,77,49,168,60,89,22,35,176,158,217,121,246,34,17,159,83,140,28,244,52,153,199,75,7,35,174,60,251,108,103,63,245,207,39,175,175,175,60,156,128,60,222,72,196,97,136,198, +57,102,185,30,216,0,147,143,174,123,242,125,28,46,231,206,124,242,160,241,195,207,158,120,28,151,198,79,212,14,231,7,21,22,92,228,27,39,246,34,230,216,30,249,251,177,62,123,96,131,223,61,71,8,86,96,15, +250,44,234,7,31,235,226,63,129,194,0,0,247,35,28,80,5,175,181,221,48,218,46,152,224,113,131,49,32,115,216,191,56,233,235,245,200,166,137,239,122,253,166,92,103,25,43,59,117,250,30,51,142,73,7,156,103, +128,51,84,137,142,64,130,96,64,35,253,114,246,57,232,163,56,57,60,247,227,62,207,65,121,130,81,29,51,192,205,193,201,235,216,5,245,200,29,57,160,11,98,234,235,149,251,116,128,251,172,159,142,55,3,130, +56,29,134,112,15,122,70,154,118,36,127,104,74,73,245,47,142,120,60,18,79,185,224,125,120,170,204,151,224,114,216,29,179,41,206,65,39,143,159,241,239,207,224,105,155,175,212,125,224,65,35,63,189,112,125, +243,251,209,158,167,160,30,135,158,104,2,222,235,161,131,246,249,95,131,208,177,24,62,216,201,207,248,231,24,20,187,238,136,25,189,147,140,12,8,223,62,128,112,188,253,121,235,207,90,169,230,223,14,188, +14,192,77,32,207,62,243,127,76,14,245,11,79,117,208,8,112,58,238,153,207,185,251,215,13,147,158,184,3,29,168,2,235,79,114,132,1,117,115,238,48,71,184,36,108,39,28,114,51,208,117,207,84,251,69,209,249, +150,234,224,118,57,71,126,163,56,226,62,14,125,9,31,133,103,25,46,27,56,54,106,72,234,205,33,31,76,36,202,73,25,237,249,226,140,220,231,5,172,152,147,142,151,13,140,241,211,237,42,14,113,142,78,59,138, +0,191,246,155,188,243,115,118,222,160,198,234,72,61,121,219,147,158,49,131,146,105,134,123,163,214,91,178,8,227,106,156,228,159,77,156,30,123,250,14,249,170,217,147,3,113,177,7,29,12,51,3,145,216,159, +183,113,215,166,127,14,192,7,143,191,104,57,207,202,147,156,114,1,233,122,58,114,61,185,235,64,18,153,91,0,52,215,221,57,60,39,81,200,229,71,67,235,200,233,158,57,99,18,217,195,223,55,184,100,7,36,158, +225,9,62,184,28,228,140,212,103,110,6,94,220,255,0,187,28,153,193,199,7,23,103,211,215,62,180,138,176,14,113,30,49,201,242,102,199,174,50,39,57,30,252,112,51,154,0,113,103,206,55,106,7,191,250,192,114, +127,21,237,211,142,48,115,140,154,97,117,28,20,191,98,9,234,203,239,232,163,24,206,71,39,215,61,50,242,177,242,51,24,28,231,16,201,156,103,29,76,224,231,158,113,197,33,88,64,229,200,7,176,87,199,61,191, +215,28,126,157,186,80,3,48,135,150,143,80,61,49,137,221,125,248,218,24,112,125,71,168,206,8,203,63,119,158,127,180,0,231,43,246,153,65,61,127,216,61,249,24,29,133,59,22,185,229,156,231,39,129,32,234,73, +228,153,142,79,94,59,142,113,220,166,203,17,156,153,186,115,133,110,157,59,202,70,79,4,251,242,0,29,0,35,96,135,36,54,168,160,250,92,75,211,146,114,76,67,57,61,250,246,57,21,19,121,40,65,13,171,14,216, +23,45,255,0,198,24,250,112,79,215,53,51,71,167,5,57,73,201,236,74,168,224,103,254,155,14,135,30,253,207,173,64,87,79,28,5,156,145,252,62,118,15,108,30,38,60,123,30,63,16,69,0,64,222,73,57,18,106,224,117, +230,102,24,25,207,4,64,6,126,188,240,40,202,116,89,181,95,167,156,224,246,233,136,128,28,123,113,216,158,13,35,125,132,127,12,188,127,211,203,46,9,231,156,220,47,211,61,243,145,193,166,131,166,12,100, +40,233,157,215,49,146,79,28,12,220,140,147,236,221,123,147,197,0,6,65,156,121,218,167,92,243,36,231,29,120,56,135,177,30,185,233,248,33,145,79,38,227,80,24,29,228,184,25,237,208,64,79,24,236,56,239,215, +145,155,79,25,3,201,0,127,126,226,5,99,144,51,140,222,12,99,190,78,123,245,36,213,87,125,52,103,59,51,207,221,184,128,123,140,1,124,127,92,158,221,56,0,19,180,216,228,92,93,116,234,211,92,227,175,25,2, +215,130,79,95,78,158,148,85,67,38,155,252,36,1,192,0,60,46,7,28,146,5,232,39,60,140,231,215,175,25,40,3,199,252,153,72,255,0,87,63,78,155,151,158,252,230,127,203,60,246,192,233,74,45,70,65,104,238,51, +199,221,117,28,247,28,200,115,254,29,251,138,166,214,220,127,20,160,231,130,103,144,146,123,255,0,203,70,253,115,206,15,39,52,191,102,76,242,215,44,49,192,12,228,96,145,199,32,253,7,0,254,28,80,5,179, +26,169,251,151,126,196,201,25,235,219,39,169,60,125,58,83,74,175,77,179,100,142,242,197,220,231,4,52,108,72,252,72,198,78,14,42,184,134,53,198,60,241,245,112,184,245,60,31,255,0,95,165,59,201,140,158, +75,228,241,243,57,39,219,57,83,140,241,223,211,208,80,4,133,72,4,226,80,61,166,136,16,113,215,30,82,159,108,96,122,100,211,118,171,118,187,250,137,161,62,185,24,216,6,61,143,80,6,122,138,105,133,65,225, +194,156,30,170,50,9,28,127,11,103,30,128,116,207,56,228,74,144,169,7,253,33,114,123,24,162,233,131,221,173,200,227,175,183,60,156,226,128,27,229,161,227,23,88,199,57,242,219,166,51,141,177,243,211,32, +117,231,28,103,20,190,84,57,228,93,243,143,225,227,208,116,140,1,249,142,191,81,78,41,2,253,233,1,110,197,98,182,199,191,63,103,0,246,200,199,94,152,167,41,143,254,122,18,0,200,34,218,208,250,231,33,173, +123,115,192,206,58,227,52,0,221,168,188,21,188,32,113,156,129,252,193,3,211,24,36,116,62,210,7,82,188,11,252,241,214,225,19,142,189,0,201,250,147,200,60,123,75,152,8,25,147,0,243,205,157,150,58,231,131, +246,38,207,182,79,32,83,191,118,70,86,84,244,199,216,237,1,57,193,28,13,59,158,228,231,158,244,1,31,218,24,14,26,244,118,249,174,240,61,199,14,123,123,98,163,50,150,39,38,224,14,73,38,232,231,57,28,240, +216,62,223,40,231,36,226,172,20,83,141,166,2,127,186,214,145,14,70,127,187,97,143,76,17,72,3,12,1,228,30,128,126,230,60,242,127,235,207,28,15,124,251,14,104,2,16,216,235,37,201,231,39,108,229,142,58,14, +68,131,175,161,233,193,245,21,48,148,99,1,239,20,96,255,0,203,121,79,82,123,6,3,31,134,57,199,214,85,89,64,36,8,14,63,233,132,91,187,14,49,104,8,245,224,158,255,0,131,195,94,18,0,142,18,1,233,228,47,28, +244,56,178,35,39,156,115,235,211,184,5,117,149,135,73,46,143,253,188,184,207,35,216,227,156,118,57,63,142,101,18,200,220,9,174,64,62,183,142,164,19,215,172,88,7,31,159,24,57,192,169,67,93,129,196,10,125, +132,81,129,207,92,145,104,9,200,169,4,151,189,5,161,227,214,49,183,159,127,179,231,7,252,1,226,128,32,6,232,99,23,115,168,231,131,123,23,3,232,200,79,211,3,156,143,173,72,13,211,16,13,212,167,29,154,238, +62,112,56,39,22,205,199,124,227,229,253,76,160,223,100,230,219,3,212,162,0,8,247,16,3,140,245,239,233,156,26,144,53,239,24,129,72,61,139,96,119,233,132,65,145,201,236,120,7,210,128,35,242,229,224,180, +204,64,7,56,186,220,79,3,24,198,159,206,7,212,12,115,158,42,96,178,28,1,51,228,96,113,58,241,199,161,211,185,252,123,250,26,122,181,255,0,252,251,68,113,216,200,171,158,153,251,210,1,211,167,242,39,164, +235,53,234,253,232,34,3,28,226,123,97,143,196,204,0,199,242,224,156,230,128,24,169,48,198,233,28,3,234,246,196,250,240,90,199,249,14,158,184,21,101,99,144,129,153,6,0,254,39,183,81,207,127,150,192,246, +198,115,143,199,154,111,159,49,254,5,7,218,123,19,207,211,237,35,142,253,186,82,121,210,224,228,33,233,200,123,28,246,231,63,109,76,254,0,103,146,69,0,73,228,57,198,36,67,223,2,104,206,113,238,44,215, +242,62,255,0,132,169,4,185,234,15,168,223,27,12,28,247,48,47,167,28,251,84,43,33,234,210,70,152,32,224,201,97,239,212,157,72,30,135,142,56,207,110,210,9,226,60,25,98,63,83,105,245,228,174,172,7,24,250, +158,194,128,39,17,56,198,118,253,6,195,192,224,231,129,199,30,132,28,250,84,225,182,224,178,33,61,62,228,103,143,92,100,31,212,129,212,14,181,85,101,181,254,43,155,100,62,132,194,71,167,4,107,25,228,245, +224,156,125,42,81,61,162,255,0,203,253,183,61,62,104,49,128,59,31,237,129,142,59,224,246,239,64,23,3,168,198,213,28,242,120,136,113,128,58,110,108,142,156,31,212,212,235,54,8,249,176,58,252,170,141,145, +192,193,6,225,7,79,207,159,108,82,23,86,227,165,221,187,3,198,79,217,241,199,113,255,0,19,128,79,227,215,130,115,214,156,47,45,251,92,91,228,247,221,110,190,248,194,234,109,215,156,140,100,99,138,0,210, +89,50,14,103,4,19,198,96,64,6,61,74,220,147,253,0,56,207,28,56,50,228,230,227,103,169,8,227,145,215,132,155,39,215,143,254,189,101,155,155,124,3,246,136,114,79,80,83,175,254,7,99,177,57,3,168,235,222, +149,103,139,35,253,34,216,3,208,179,15,94,7,23,140,114,63,92,243,200,160,13,108,144,70,219,215,96,79,240,165,208,239,158,190,113,25,200,63,78,122,99,153,209,164,224,139,169,24,100,240,96,185,97,237,144, +37,57,239,219,168,62,181,146,183,49,227,6,123,79,98,38,113,223,158,69,201,28,118,252,199,188,226,120,79,252,182,180,36,246,51,220,3,223,184,124,231,232,127,2,113,64,26,190,97,56,6,237,65,228,28,193,116, +190,189,78,227,223,177,228,224,245,34,165,70,46,72,91,200,134,127,217,189,39,241,35,167,60,103,57,207,110,107,23,124,45,210,75,112,79,56,55,83,168,62,184,221,156,131,207,27,115,234,71,21,48,33,112,20, +217,158,58,11,185,58,115,211,49,227,140,247,237,207,92,208,6,200,141,142,51,121,27,99,176,55,227,61,122,227,191,29,48,51,248,154,121,141,134,7,218,7,191,58,129,207,25,255,0,158,67,3,175,92,103,32,96,154, +198,92,150,25,72,1,25,228,93,201,207,78,129,99,198,122,3,207,36,28,98,172,8,227,63,121,109,135,108,155,151,245,35,167,148,127,250,252,80,6,152,137,121,205,194,47,29,197,240,239,142,190,94,254,228,96,113, +207,28,115,74,35,81,210,230,60,176,198,4,154,146,250,1,255,0,44,247,99,241,227,211,144,78,122,67,24,7,247,144,168,199,36,92,74,112,61,194,195,208,122,99,7,165,74,171,8,31,235,33,57,3,57,185,153,120,207, +82,74,2,120,25,63,47,227,234,1,117,98,221,144,46,128,63,236,203,125,206,63,237,159,166,125,9,245,245,148,64,123,220,122,28,153,239,120,198,71,35,102,113,143,126,157,125,13,85,242,135,1,225,0,245,11,115, +41,36,140,116,229,78,49,244,206,71,175,50,5,129,187,169,36,156,98,102,237,238,210,114,63,18,15,126,104,2,208,133,78,72,185,67,208,28,77,118,188,117,57,202,143,175,126,252,100,112,229,183,198,72,153,184, +60,21,188,186,231,208,144,193,128,198,6,71,7,159,198,171,109,65,208,146,58,127,173,39,159,127,152,140,142,196,113,143,94,77,61,20,145,141,128,244,225,136,98,64,29,126,85,252,79,95,174,114,104,2,207,217, +229,28,171,57,233,255,0,45,228,231,219,62,89,4,143,126,62,188,101,190,68,189,132,128,246,63,104,45,207,97,143,44,3,250,117,231,208,52,32,108,6,10,15,166,31,142,58,125,241,232,15,111,204,211,132,8,58,128, +49,193,24,112,61,248,222,113,193,206,113,211,158,115,128,0,162,41,206,114,73,231,28,202,120,244,228,12,14,189,254,189,234,83,111,46,51,187,25,207,2,105,6,73,246,17,250,131,146,51,235,239,85,154,218,60, +228,47,185,228,12,143,169,32,15,126,122,245,233,71,147,23,25,142,51,211,147,34,254,56,203,31,234,120,20,1,104,91,204,73,198,88,145,208,74,236,71,67,145,186,223,175,92,140,254,125,41,194,209,198,9,73,177, +131,157,211,96,122,115,152,113,211,29,125,249,233,84,188,187,110,226,32,61,164,67,199,97,247,189,253,61,72,200,226,148,71,102,184,202,161,63,239,130,15,124,96,156,116,233,147,237,158,115,64,26,34,220, +46,49,27,251,230,88,184,193,31,222,182,198,50,113,215,29,62,149,40,138,76,140,64,204,8,206,76,214,103,191,189,185,61,122,31,233,154,204,197,182,48,177,71,207,63,192,122,227,253,174,127,15,175,209,195, +236,131,33,173,224,115,211,144,7,243,224,251,123,30,135,147,64,26,70,22,199,48,227,28,228,203,102,115,220,228,27,49,143,168,233,211,3,165,32,133,15,13,10,28,14,155,173,73,206,71,247,109,70,121,231,215, +142,65,6,179,72,211,199,91,75,102,35,147,196,96,250,241,251,213,30,156,99,32,246,244,64,218,119,252,250,68,79,25,62,100,0,142,156,225,165,0,158,156,242,123,3,64,26,162,56,1,5,161,108,30,225,109,128,233, +211,63,99,61,126,190,252,116,51,1,104,63,229,153,7,3,24,54,237,142,79,253,67,115,158,120,37,143,3,169,197,98,9,172,0,218,45,144,147,158,15,217,91,128,79,64,24,244,29,78,78,122,210,249,182,96,113,4,75, +142,205,12,13,142,188,255,0,172,228,122,147,143,160,235,64,26,205,29,147,96,152,100,102,39,140,121,29,65,3,167,216,23,175,110,15,60,3,198,8,98,178,28,125,146,67,201,199,250,133,35,3,158,77,142,73,239, +208,145,145,207,60,100,121,182,68,130,22,48,57,228,90,198,73,28,228,241,55,94,253,115,250,209,186,208,231,17,111,235,214,194,35,207,79,249,236,216,200,56,36,15,94,57,228,3,91,101,186,244,128,141,195,248, +154,46,49,235,186,195,145,219,229,60,126,28,163,125,156,12,52,41,147,145,192,66,72,246,97,102,49,232,122,228,242,71,97,152,175,108,70,12,42,167,183,252,75,226,115,142,72,201,220,15,83,235,143,79,112,173, +171,112,241,15,109,218,127,167,124,169,199,76,119,231,235,154,0,182,97,181,57,204,61,112,65,2,67,250,173,170,228,113,219,240,61,114,195,5,136,56,48,113,211,63,233,89,62,217,251,62,0,252,115,233,207,21, +87,22,64,115,18,2,56,226,196,122,140,117,117,36,123,28,99,167,181,32,22,67,161,140,250,226,197,142,50,121,24,243,14,78,122,250,147,214,128,44,181,189,143,4,91,146,15,25,243,110,178,51,207,7,201,95,215, +24,57,28,142,42,63,178,218,17,196,12,15,64,198,226,227,129,223,131,23,61,185,254,102,163,223,102,65,201,140,158,115,187,78,111,203,130,125,250,3,207,3,61,105,190,101,137,56,62,64,25,234,108,46,144,231, +175,85,10,6,122,147,147,207,24,160,0,219,91,3,242,199,131,156,231,204,186,32,241,223,228,95,113,220,246,29,133,48,219,193,212,69,207,76,11,203,149,39,167,108,40,252,57,169,196,214,24,224,194,112,72,226, +11,160,8,234,57,4,227,158,184,3,142,160,211,183,89,49,200,142,62,78,14,82,244,147,207,65,130,71,92,127,60,156,80,5,67,18,3,254,169,87,156,159,244,233,178,15,226,227,142,0,28,116,231,142,233,178,60,17, +177,79,24,255,0,143,198,233,212,242,91,30,189,61,206,112,5,91,255,0,66,57,2,8,193,39,156,165,224,199,39,215,4,96,251,253,105,2,218,242,21,35,192,235,134,190,206,61,200,116,32,156,119,199,62,184,205,0, +103,178,47,104,78,65,198,22,243,168,35,253,163,207,78,51,200,198,64,233,134,50,184,200,16,50,251,139,168,122,30,152,37,199,92,231,235,207,189,104,50,219,140,98,37,7,144,0,146,248,30,59,228,204,6,120,192, +234,120,36,242,77,68,203,23,85,73,51,142,126,123,204,126,4,77,199,35,176,193,239,156,80,5,66,100,4,1,230,47,0,127,199,229,169,24,250,51,129,131,233,207,211,209,155,167,36,252,204,59,129,246,187,30,127, +241,237,216,228,227,175,3,175,28,90,103,9,202,198,73,28,103,117,225,30,185,57,115,201,237,142,123,125,24,94,83,141,168,185,236,12,183,128,227,182,126,112,63,66,49,216,116,32,17,109,148,143,189,32,3,60, +155,155,22,227,29,121,101,235,143,94,56,231,61,88,99,156,140,7,39,36,115,246,139,15,81,215,50,227,156,245,199,28,126,51,230,231,35,228,24,24,255,0,150,243,126,63,122,77,221,51,207,127,64,115,76,102,188, +24,192,10,58,127,172,149,189,59,249,248,57,244,33,113,142,61,104,2,171,219,203,158,102,72,250,28,27,157,57,179,215,7,30,112,198,8,236,0,39,144,58,84,126,84,156,134,188,143,3,130,22,123,35,142,157,71,153, +142,14,61,127,83,86,76,247,138,73,7,29,134,119,100,231,167,37,155,129,245,29,242,57,193,97,188,189,57,0,228,156,2,55,169,199,0,142,6,72,237,192,193,61,51,64,21,90,221,73,36,221,33,231,169,154,204,245, +246,14,188,130,114,49,156,158,195,138,65,106,188,226,229,62,161,45,223,129,146,122,73,207,108,250,227,7,142,42,127,182,223,119,50,0,7,85,143,204,32,227,169,223,244,231,243,7,61,33,55,183,192,146,30,80, +49,208,91,199,252,182,231,60,113,129,142,188,154,0,99,90,168,63,53,200,250,24,213,64,239,143,150,78,157,177,140,142,196,117,45,48,68,48,76,177,16,58,238,140,158,185,238,36,39,140,227,143,167,214,67,125, +115,203,121,142,72,63,197,4,96,142,249,227,4,123,144,6,0,206,120,197,43,94,204,70,76,146,131,216,172,8,121,4,244,249,199,3,235,223,156,30,160,16,152,161,24,193,183,39,7,25,142,66,58,15,238,200,8,252,134, +125,129,229,165,35,24,63,232,160,0,71,250,155,140,143,108,169,99,140,251,30,248,227,163,205,219,244,50,94,55,178,90,35,3,201,198,49,38,122,15,126,127,135,131,76,55,164,31,245,183,192,244,255,0,143,18, +122,12,14,4,152,244,228,251,240,123,128,51,42,58,155,49,232,90,59,209,144,71,96,56,29,1,224,126,148,224,225,78,65,181,231,176,91,224,50,122,142,216,29,61,49,235,76,107,214,227,247,250,129,246,22,4,131, +233,199,207,143,78,199,243,21,25,189,57,59,94,244,231,251,214,69,79,39,56,249,138,227,183,208,123,16,0,4,141,49,57,59,99,244,202,37,230,61,48,73,97,145,211,183,78,254,145,153,166,39,229,17,103,28,19,246, +172,17,223,128,225,135,190,127,26,105,187,56,35,125,206,50,9,13,100,132,12,250,254,251,63,150,61,122,211,126,214,156,229,216,227,159,154,208,39,113,211,19,28,31,210,128,31,231,93,140,224,219,159,76,189, +210,99,175,3,115,227,143,196,130,56,205,53,94,237,137,220,246,106,0,36,102,226,224,99,215,168,110,190,131,142,227,181,40,189,132,255,0,203,72,249,61,10,74,123,96,156,249,152,28,245,235,207,76,84,77,124, +163,238,188,64,224,100,1,39,61,120,198,246,234,50,113,140,224,12,243,64,18,238,189,232,183,86,105,130,56,19,200,56,198,6,51,25,57,199,25,235,249,208,98,212,152,229,111,109,198,125,38,114,59,127,211,35, +159,175,248,213,83,122,6,48,240,182,127,188,157,61,242,204,51,249,30,104,251,113,110,214,132,129,131,202,41,250,113,156,30,123,17,211,138,0,176,208,234,32,113,124,132,119,81,56,28,255,0,192,163,29,186, +28,17,192,205,71,246,123,236,157,215,168,15,251,50,90,144,1,231,188,101,135,108,254,85,23,218,78,15,205,100,73,25,199,152,139,144,70,71,0,103,233,131,216,122,84,70,114,122,11,15,163,76,51,130,58,144,78, +56,224,240,64,250,117,160,11,130,218,236,99,253,49,121,224,101,45,200,224,145,252,49,12,231,25,227,56,227,38,158,182,119,68,227,237,113,19,158,158,84,124,142,49,210,34,8,31,137,28,250,19,89,230,86,25, +253,221,150,14,122,78,135,215,31,46,227,208,116,224,96,251,142,98,50,70,114,166,27,92,128,51,137,24,244,245,42,15,29,58,242,63,19,64,27,34,194,228,99,51,65,156,130,72,134,49,199,167,17,241,244,227,29, +143,163,191,179,100,234,211,31,81,178,56,8,227,130,50,66,147,215,161,206,127,32,49,76,137,206,216,224,24,237,230,57,206,49,212,108,98,57,250,224,244,28,115,19,49,201,43,26,28,228,127,172,151,29,49,215, +203,35,142,71,79,199,154,0,221,54,0,3,186,103,61,122,64,139,207,35,130,16,231,219,158,158,188,10,136,89,142,65,121,73,231,172,121,39,7,208,99,28,240,122,250,99,140,28,101,56,233,12,39,215,121,124,227, +146,79,250,174,159,207,143,90,144,205,129,143,42,14,127,186,100,24,61,70,48,132,31,66,79,167,210,128,53,197,181,178,159,156,77,244,48,56,24,245,201,111,168,237,159,92,210,249,86,163,32,7,3,60,238,139, +56,246,31,57,32,119,231,56,60,246,172,124,163,30,65,24,227,229,50,224,231,29,48,171,199,29,177,235,211,171,191,118,56,216,199,61,243,33,56,231,215,183,113,252,198,40,3,91,203,179,29,11,250,240,165,112, +121,233,137,23,252,227,2,154,99,131,160,50,224,119,12,84,130,125,113,41,238,48,78,1,199,208,86,103,150,8,207,204,163,174,0,31,136,249,144,123,100,115,233,237,78,17,175,171,227,166,14,222,57,246,81,145, +142,62,152,250,208,6,135,151,104,78,11,220,134,207,57,33,134,57,239,129,129,158,112,65,61,71,213,194,43,18,112,103,156,100,156,19,179,3,219,229,132,244,245,60,246,30,212,4,45,128,81,143,224,234,160,31, +196,31,192,116,24,246,169,60,166,232,88,183,25,63,112,247,245,8,73,61,249,32,125,104,2,219,69,102,135,139,169,70,121,206,223,192,127,203,163,100,231,182,79,174,0,52,208,150,172,114,46,223,220,100,14,121, +236,108,6,7,227,249,113,85,252,180,63,120,12,30,199,200,32,244,232,10,30,79,224,57,198,105,194,21,97,133,224,119,192,183,36,246,233,142,120,62,191,134,122,128,88,242,237,185,255,0,76,3,158,238,153,63, +93,214,35,3,211,39,61,200,199,4,217,0,224,93,99,208,153,237,199,62,231,236,36,227,166,121,237,158,167,136,5,168,60,245,233,203,36,56,235,211,133,206,121,233,236,121,228,84,235,110,59,44,71,25,251,209, +174,122,116,202,68,253,177,211,3,160,234,104,1,124,149,206,77,247,25,63,47,157,9,231,177,249,108,48,63,241,236,244,224,112,84,68,221,175,48,8,24,35,15,215,129,200,211,207,166,113,215,218,147,200,4,156, +199,111,158,14,12,77,158,48,71,34,16,65,224,228,245,3,177,165,11,26,228,53,189,187,112,57,217,56,250,243,128,185,237,253,40,1,124,185,1,207,219,217,135,80,2,28,103,175,63,241,47,0,253,222,167,243,237, +82,126,252,231,23,110,220,117,216,163,156,224,96,253,136,12,126,7,147,212,241,77,83,111,142,109,162,25,28,13,183,127,205,91,25,245,227,175,160,20,31,179,3,134,183,136,15,239,108,189,198,127,34,71,175, +224,125,178,0,165,46,137,4,79,59,103,184,219,142,125,49,98,63,145,0,245,28,82,5,186,24,5,238,79,97,134,69,207,94,121,211,250,250,14,79,225,209,227,236,188,1,12,71,167,35,237,107,147,212,12,152,248,231, +249,112,77,74,177,66,70,86,24,136,224,14,110,176,125,193,10,59,118,4,19,212,244,193,0,96,142,92,101,254,211,128,48,114,202,71,94,191,241,228,49,235,193,198,58,103,154,118,215,207,11,47,3,25,242,145,179, +237,145,102,49,235,207,215,6,151,202,92,99,201,132,243,208,155,131,145,133,29,10,146,167,190,123,227,131,193,202,121,105,199,250,34,119,25,15,32,192,231,166,98,221,215,156,103,167,28,247,0,144,121,157, +188,210,192,99,6,12,241,207,66,52,238,58,158,135,3,128,78,77,59,108,160,18,97,145,255,0,237,212,231,216,140,217,12,31,83,215,185,4,241,85,154,21,4,145,109,143,92,72,249,60,140,228,27,124,122,231,158,252, +145,72,144,32,32,249,46,14,115,146,203,242,142,248,255,0,71,108,240,120,224,245,24,193,160,11,170,100,193,204,51,47,251,208,108,250,116,179,25,3,28,100,100,117,160,54,8,205,188,187,186,231,202,113,143, +67,149,177,110,191,167,115,77,16,161,3,33,84,227,63,125,63,92,217,19,140,117,207,32,250,227,52,225,10,227,254,89,142,56,220,99,228,227,61,126,195,207,182,58,251,116,0,10,99,83,201,141,148,115,243,121, +115,113,239,143,176,112,56,231,110,51,211,147,197,32,72,199,68,92,251,197,114,79,185,207,216,215,215,212,254,162,148,46,210,63,122,7,95,148,60,32,100,118,193,180,3,36,224,30,156,28,227,32,130,191,62,126, +249,224,103,253,100,35,142,153,226,32,72,29,1,254,156,208,2,237,81,208,66,8,198,3,67,113,252,132,43,219,29,185,231,156,243,65,115,211,117,150,113,215,109,210,159,64,6,0,32,140,99,130,8,238,6,40,243,92, +28,121,152,25,227,50,166,78,56,207,8,195,28,17,198,15,24,32,114,41,226,124,156,52,140,120,192,204,200,7,94,57,17,175,95,175,183,126,64,24,61,90,75,85,7,7,229,158,249,7,176,198,238,128,245,207,29,62,181, +40,92,227,107,219,16,58,226,123,243,142,61,165,0,100,245,32,103,0,119,161,37,135,156,220,178,159,250,234,156,103,156,3,212,241,215,35,60,246,169,4,246,220,255,0,165,156,227,168,116,57,231,217,15,92,140, +245,29,248,197,0,70,85,84,12,205,110,163,174,68,215,131,35,185,230,224,158,188,244,200,35,158,244,240,34,228,155,155,95,198,226,232,18,122,144,70,227,211,252,242,70,100,55,54,227,0,95,129,219,30,98,147, +158,0,227,96,201,227,160,200,193,231,57,168,30,238,1,140,106,14,121,61,60,182,25,28,117,36,244,247,0,31,110,104,2,194,8,177,254,182,196,158,159,53,197,200,30,220,150,80,63,32,113,235,142,29,152,84,228, +182,156,61,197,204,223,159,205,47,166,115,192,60,245,231,38,151,218,163,4,255,0,167,176,63,69,231,39,140,96,115,200,57,0,240,61,120,168,205,244,75,141,215,97,249,193,223,2,54,6,121,254,18,122,116,235, +234,121,224,128,106,137,34,96,64,123,19,131,140,173,219,129,248,159,61,78,127,30,112,113,154,112,154,32,112,77,137,199,253,62,75,156,254,23,56,224,113,192,238,122,245,57,31,109,181,31,49,186,94,122,133, +179,66,125,186,91,147,199,227,223,175,90,103,219,173,137,56,185,198,125,44,147,167,78,71,217,120,60,231,36,143,126,212,1,188,25,31,37,90,220,3,142,69,203,56,247,3,116,224,112,123,146,73,199,214,158,3, +112,84,219,247,225,165,140,255,0,57,206,64,239,236,120,57,24,174,127,237,177,103,63,107,192,235,205,158,120,227,174,34,24,62,196,122,253,41,227,81,133,115,254,150,88,99,27,126,198,192,30,152,60,90,103, +182,120,224,123,242,40,3,120,171,31,189,246,64,72,29,39,182,28,244,254,39,126,185,199,225,215,165,53,150,49,130,77,169,39,183,219,45,61,191,233,155,126,88,206,120,60,98,177,6,161,17,251,147,47,190,109, +92,140,250,224,194,152,62,159,151,61,133,190,140,147,153,35,61,112,62,202,189,15,7,113,43,158,156,96,15,165,0,108,190,7,79,177,129,130,70,111,173,135,124,1,247,84,96,245,28,113,211,218,160,109,199,160, +178,227,60,125,190,215,167,36,0,121,193,199,39,144,0,239,212,138,66,234,35,145,190,60,231,161,128,129,219,210,44,123,228,158,113,214,167,73,145,184,204,100,113,145,229,41,29,192,224,243,212,28,112,15, +111,122,0,113,4,16,12,54,196,145,212,95,90,224,96,125,51,211,3,128,113,206,113,197,33,87,206,68,16,116,231,253,42,22,4,244,236,20,231,142,113,223,36,103,60,206,155,24,116,139,113,35,145,28,96,158,122, +227,175,167,92,158,217,60,98,85,70,7,229,72,123,96,101,64,207,224,195,30,195,25,29,187,100,2,150,36,108,21,181,180,36,103,25,184,132,146,7,111,153,15,29,79,92,250,158,51,78,242,228,231,54,182,103,174, +48,109,186,231,185,42,164,255,0,35,215,61,198,146,171,142,162,219,174,48,21,113,158,224,252,235,156,250,115,211,140,227,52,245,132,18,48,44,199,29,118,227,24,244,249,206,51,200,239,233,142,148,1,151,200, +235,105,104,24,113,128,214,217,24,227,7,230,198,112,48,113,207,166,13,41,111,75,120,115,233,152,113,147,159,66,115,239,215,158,254,154,162,7,36,96,219,17,131,145,176,109,192,244,220,192,113,142,51,207, +208,102,164,22,242,12,101,237,64,199,79,45,50,56,206,114,28,251,243,140,115,64,24,251,228,92,108,182,143,158,184,88,136,232,59,249,139,131,223,183,29,51,156,5,47,41,60,195,16,235,210,5,224,131,207,38, +83,201,244,206,14,127,45,212,183,207,120,14,70,6,0,35,3,167,81,237,233,238,71,74,144,90,149,39,2,217,207,31,192,128,241,156,227,120,193,29,243,130,57,244,52,1,134,24,128,9,137,65,245,22,177,242,58,247, +153,121,193,199,227,207,24,169,20,169,232,161,73,227,13,101,110,195,0,118,205,193,231,167,185,230,182,12,91,64,220,144,142,58,168,135,159,193,99,62,188,245,61,8,201,234,210,25,136,24,139,25,244,193,233, +198,118,67,254,79,127,80,12,210,128,128,25,97,237,193,177,180,4,156,228,112,211,48,39,191,32,30,189,115,154,144,24,148,15,184,49,158,150,86,93,123,143,150,79,203,234,61,235,64,2,56,96,51,158,0,145,151, +184,199,88,142,49,207,94,56,197,52,169,39,136,203,115,140,153,0,231,160,31,44,13,159,212,231,215,129,64,20,75,67,130,115,156,227,143,179,90,32,60,112,56,148,31,124,0,122,251,114,221,201,145,132,13,199, +0,91,219,242,59,100,7,115,208,242,115,248,113,87,255,0,120,164,126,229,152,15,238,72,248,231,233,106,6,113,140,254,120,205,70,102,94,246,238,121,239,43,128,78,112,121,22,227,211,214,128,42,110,82,120, +143,29,70,62,205,7,36,224,246,80,196,103,190,120,25,57,164,219,184,237,49,228,115,156,218,198,14,125,7,204,63,30,189,249,171,38,226,18,57,178,147,140,228,172,215,0,115,140,103,22,228,125,56,199,212,230, +162,51,68,122,90,92,227,28,127,164,74,63,47,244,51,219,220,30,71,83,212,1,162,24,216,128,98,82,79,56,251,58,15,175,27,193,207,63,159,90,115,66,131,63,185,57,0,117,181,3,234,120,46,112,126,158,152,207, +90,140,223,34,158,109,110,192,30,151,23,56,246,28,90,224,227,158,220,103,30,134,143,182,64,220,155,121,198,127,189,113,119,239,255,0,78,227,7,140,227,0,16,9,24,235,64,11,177,129,249,83,111,184,133,189, +199,24,129,186,123,246,247,226,130,202,0,25,114,49,208,69,113,193,39,3,145,108,58,14,120,39,3,142,41,13,229,184,206,109,100,228,158,151,23,121,252,71,144,122,140,123,15,92,115,76,55,182,103,254,89,74, +8,227,30,101,209,56,31,238,217,63,110,216,200,198,59,98,128,36,35,32,49,105,0,24,227,203,187,24,60,14,166,61,167,61,136,227,56,234,56,165,242,163,63,121,230,4,140,31,146,236,31,192,44,12,15,126,163,3, +60,251,87,107,173,56,0,90,25,129,207,222,221,118,123,129,222,196,119,233,208,227,183,122,65,113,166,231,152,174,122,247,150,224,14,184,254,43,44,143,195,61,115,146,77,0,88,88,160,57,204,183,96,129,129, +152,47,70,121,60,243,108,1,246,228,99,156,143,80,195,9,207,239,238,72,25,39,229,187,28,250,17,228,41,244,4,243,207,122,173,246,141,60,244,142,227,28,144,60,217,7,211,27,172,142,79,126,114,127,0,73,82, +214,124,96,78,156,119,153,79,127,70,211,207,231,211,142,231,128,1,105,109,224,57,253,245,202,158,249,134,102,239,254,224,199,56,252,122,244,164,242,99,4,1,45,193,28,241,228,78,189,51,130,73,66,50,115, +156,113,223,173,69,186,12,127,203,92,14,50,76,7,30,220,89,40,201,199,29,49,250,82,238,132,243,151,39,161,249,96,232,120,239,109,215,0,243,159,235,64,10,98,136,103,18,92,122,96,194,227,158,114,114,97,207, +230,223,151,117,22,241,17,243,52,231,191,48,72,65,232,56,196,67,60,116,228,114,50,59,84,108,23,174,201,27,191,202,176,126,96,139,126,59,142,163,32,250,84,56,36,18,109,110,152,123,125,152,125,48,90,223, +166,120,224,156,250,245,160,9,218,8,8,227,205,29,78,69,177,25,227,169,5,134,58,122,19,238,71,68,88,162,7,239,72,120,63,122,16,48,122,119,246,39,131,211,210,171,176,57,249,109,111,177,234,30,208,0,59,159, +245,106,190,254,132,31,94,42,51,230,96,1,111,124,7,115,230,233,227,60,255,0,186,78,112,120,252,185,61,64,45,180,81,231,1,135,67,214,52,24,4,122,99,31,134,1,231,39,218,35,18,129,192,143,28,242,99,133,91, +219,0,103,240,228,123,138,143,247,160,99,236,151,68,244,231,251,63,36,30,249,217,159,92,147,249,117,166,21,152,255,0,203,180,227,253,225,167,224,247,28,170,47,24,232,24,96,228,253,104,1,229,99,3,0,196, +51,220,199,27,48,35,253,221,185,252,65,198,9,236,5,68,254,82,247,141,189,64,133,49,130,61,199,94,163,60,243,223,185,102,217,200,193,134,227,184,194,181,129,207,92,114,8,192,61,122,100,103,158,113,76,48, +54,126,104,110,215,253,217,109,135,227,242,158,57,246,62,216,198,8,4,108,214,156,230,52,36,28,17,178,16,127,35,128,49,223,234,65,226,163,221,105,208,64,50,113,143,145,20,118,60,225,192,201,200,245,24, +235,237,63,217,201,31,234,47,193,0,227,231,182,60,113,220,140,243,142,156,31,80,105,60,140,158,98,190,24,29,229,128,0,79,168,192,200,247,228,224,10,0,172,235,0,206,96,28,224,100,170,156,115,237,47,76, +250,125,51,140,212,100,91,17,143,179,41,198,50,118,228,103,211,62,104,0,99,140,114,7,183,107,190,83,5,235,116,59,231,114,19,255,0,125,4,32,28,246,7,131,233,210,154,98,124,125,251,156,28,100,176,92,142, +227,159,36,146,78,70,115,211,147,210,128,40,52,118,228,103,236,202,61,63,116,228,224,247,31,190,35,7,158,113,199,24,61,40,171,141,3,30,12,151,0,158,152,143,119,39,143,225,182,239,200,239,140,158,131,161, +64,30,48,81,156,103,237,16,19,159,225,105,114,58,245,205,248,199,32,224,246,206,49,158,75,76,50,247,158,28,17,193,102,144,119,246,212,179,232,127,46,42,190,84,140,43,167,64,50,38,201,198,15,247,100,108, +250,240,57,30,180,121,103,3,24,97,211,153,136,235,142,228,156,158,50,122,116,60,28,102,128,37,251,57,36,19,117,110,7,63,122,89,59,240,112,14,162,163,24,235,244,234,79,1,162,223,25,197,221,166,63,219,146, +83,145,215,7,58,137,39,166,122,241,81,50,99,130,160,159,81,62,72,239,223,63,167,76,231,28,83,192,31,119,5,189,49,42,28,15,161,129,251,30,188,227,156,31,64,9,69,186,143,249,109,165,184,61,201,148,231,215, +57,191,63,135,76,156,210,152,98,0,143,55,74,4,31,70,25,3,167,31,105,57,250,244,207,214,171,144,205,210,34,125,48,81,143,190,51,103,142,222,212,20,108,115,3,158,191,194,188,250,96,139,76,103,56,233,211, +7,158,57,0,177,229,162,247,177,61,8,43,191,158,185,228,76,71,215,147,147,140,247,194,132,136,231,34,211,57,199,44,220,241,223,247,192,228,103,24,227,24,32,213,112,184,28,71,40,36,112,6,48,125,120,22,153, +233,131,130,125,251,242,225,9,110,25,103,31,240,13,216,28,227,254,93,49,254,28,231,165,0,60,136,20,253,235,62,253,152,142,153,28,249,205,142,132,12,255,0,62,136,12,10,114,62,198,73,35,156,158,56,200,225, +159,36,159,175,211,182,67,104,132,0,124,240,79,92,198,221,255,0,221,179,200,245,198,48,7,20,162,194,38,228,180,195,140,231,201,184,207,66,8,57,179,29,125,58,119,206,56,0,15,15,24,234,182,71,185,36,160, +231,183,118,252,56,254,100,212,234,234,189,22,207,158,164,11,115,215,211,49,228,231,252,227,138,136,88,192,57,223,55,191,238,37,233,234,75,91,175,243,207,210,165,93,62,34,72,89,38,61,57,251,52,167,0,251, +121,35,129,158,121,32,158,123,80,4,203,54,51,242,217,243,212,149,131,57,245,226,0,49,207,65,129,156,243,78,251,64,200,199,145,158,191,242,238,7,65,199,49,231,169,228,231,250,80,52,248,206,1,121,240,0, +7,253,14,98,50,15,251,168,115,234,15,65,211,181,57,116,168,8,36,204,224,123,218,92,103,56,207,65,39,94,59,227,249,80,3,214,224,158,15,151,223,164,150,253,186,241,229,142,113,211,183,79,108,188,74,132, +253,253,189,192,253,203,14,59,19,230,160,30,131,243,231,154,132,233,208,12,255,0,166,30,157,173,110,51,144,125,76,199,7,56,61,49,199,225,79,93,38,22,255,0,151,137,8,60,143,244,107,128,50,71,253,116,200, +56,244,56,198,51,140,156,128,88,6,34,127,215,168,39,160,17,194,255,0,160,187,28,254,28,243,83,166,211,210,228,129,233,246,120,128,4,246,226,228,47,78,114,77,86,93,46,217,64,253,233,39,175,17,220,14,49, +207,73,27,28,123,12,28,231,154,144,88,66,58,75,198,71,240,93,30,113,199,0,156,14,49,193,250,80,5,145,192,56,184,144,145,255,0,76,34,35,28,228,241,114,199,7,142,188,99,29,105,126,117,192,55,44,71,78,45, +144,159,252,118,94,58,113,212,131,156,119,166,11,52,92,98,78,135,131,182,235,57,245,63,189,95,204,142,63,90,65,110,84,130,8,232,121,41,116,15,29,242,183,32,243,206,50,51,158,152,227,0,19,2,123,207,112, +65,60,226,207,112,35,158,62,91,133,250,14,7,225,79,14,7,27,167,97,255,0,94,67,36,125,13,238,61,122,244,253,42,63,46,67,192,149,184,238,13,233,4,30,6,51,114,58,100,99,7,31,133,72,176,146,1,51,14,164,159, +154,244,16,63,25,248,207,62,190,252,140,208,4,177,176,206,64,157,113,220,216,68,122,30,185,55,192,250,99,7,159,81,83,137,87,60,181,193,32,147,197,148,67,7,223,253,60,243,199,63,253,97,85,2,118,251,64, +35,169,2,107,172,241,236,215,35,184,199,233,234,42,97,26,30,12,142,79,175,218,46,10,143,174,110,128,237,212,28,31,167,20,1,109,38,206,112,110,72,236,13,180,42,59,228,127,199,219,99,219,31,136,3,6,172, +44,203,211,19,147,239,4,32,125,1,243,137,57,31,145,227,158,244,134,208,56,151,28,14,178,57,234,79,173,222,79,60,142,156,1,193,165,249,216,12,78,1,239,159,55,4,231,174,62,212,114,123,30,160,158,51,198, +8,5,243,118,137,213,36,124,118,196,11,255,0,161,76,6,62,160,159,211,14,89,209,241,251,151,4,231,36,152,7,35,233,113,142,189,123,17,237,154,164,4,220,102,224,16,121,42,55,140,253,115,116,122,114,122,3, +79,81,46,6,230,36,241,200,144,142,56,207,91,190,253,240,14,48,58,246,0,210,73,33,28,121,82,144,14,73,196,4,115,235,182,236,1,143,126,184,57,227,20,239,50,3,212,58,142,192,249,67,167,25,35,237,108,125, +72,224,2,73,247,170,74,14,62,102,147,30,191,104,0,15,199,237,68,12,99,184,237,211,181,41,142,60,141,210,103,39,189,220,103,159,83,254,146,79,167,169,247,28,80,5,220,219,17,247,228,24,236,172,51,244,226, +227,212,103,29,8,235,223,15,6,12,12,73,56,3,60,153,167,81,211,209,110,72,228,243,192,60,241,199,124,242,176,143,227,70,227,167,218,67,12,103,190,46,113,143,127,94,213,34,8,70,9,242,207,67,129,43,117,244, +249,110,79,67,147,158,252,158,5,0,95,9,1,206,37,184,30,184,154,228,142,48,50,112,217,207,115,134,36,240,1,233,75,228,194,64,196,247,29,255,0,142,228,129,212,128,1,144,30,128,14,51,223,29,241,84,188,57, +194,152,65,206,126,105,101,227,145,217,110,15,212,117,0,100,243,208,72,166,34,121,107,102,235,156,207,116,160,129,208,103,204,228,253,59,251,228,208,4,198,4,192,11,53,208,24,0,97,174,123,14,220,244,207, +76,245,28,122,208,33,92,0,101,188,207,36,237,105,190,189,212,146,7,242,224,250,210,15,178,156,19,246,76,241,255,0,47,55,39,167,110,103,92,227,182,122,114,113,142,175,6,195,60,136,137,35,144,46,46,72,252, +0,184,199,110,0,207,20,1,42,192,171,200,184,188,35,175,6,95,231,179,39,31,254,170,118,198,0,98,75,211,140,245,91,128,78,8,207,252,179,57,200,206,58,103,61,249,195,86,27,6,28,44,96,131,215,204,185,39,56, +234,50,204,79,176,25,250,243,203,197,165,153,25,6,28,3,212,172,207,248,96,2,79,29,78,71,56,206,104,1,202,142,122,73,124,87,208,60,156,231,182,25,6,113,206,122,254,102,165,81,32,224,27,194,64,234,210,2, +15,226,119,99,174,6,113,215,29,184,133,109,173,135,64,132,15,75,123,211,220,96,2,20,142,49,244,207,229,83,172,54,163,31,185,137,143,24,205,181,238,127,244,80,199,224,79,175,169,160,7,134,148,117,223,142, +63,184,121,24,0,156,174,58,118,224,246,245,20,237,210,147,195,185,231,144,203,30,49,233,247,211,219,147,146,9,201,239,70,200,65,226,4,249,186,102,11,188,14,153,198,232,8,30,249,199,165,72,33,83,146,33, +131,30,134,25,187,100,131,143,179,227,215,60,250,12,246,0,2,180,170,15,44,64,224,177,72,241,129,245,152,244,252,71,124,99,53,48,158,65,212,169,228,140,52,49,55,94,156,239,200,245,193,207,39,223,132,242, +15,240,219,70,217,29,68,114,3,237,210,44,247,255,0,60,229,13,180,171,131,246,56,142,78,1,49,204,63,3,136,187,18,122,140,125,69,0,88,75,167,236,34,207,81,251,136,143,95,164,128,1,244,25,221,248,226,79, +180,92,30,66,91,184,60,255,0,169,65,252,156,18,112,127,46,217,228,211,22,243,19,242,216,91,57,235,151,19,19,143,197,23,7,211,3,211,146,120,10,45,238,87,56,176,179,92,117,39,204,82,112,123,140,224,122, +16,70,125,48,15,32,26,30,125,193,31,234,237,6,79,35,236,217,62,249,4,255,0,60,158,73,233,214,64,242,245,17,89,158,58,125,144,31,199,27,179,245,7,60,251,113,89,103,237,42,70,108,172,136,232,65,121,70,126, +187,91,35,57,224,131,158,157,113,78,6,228,0,69,157,154,243,218,119,3,216,141,228,227,243,62,254,192,26,38,89,115,205,189,135,254,2,48,228,118,206,27,31,167,61,125,212,73,33,235,5,176,231,162,193,34,143, +126,79,7,61,176,7,177,53,154,62,214,216,2,222,213,71,168,155,61,253,68,138,191,253,110,71,188,130,59,194,120,75,113,219,31,104,81,140,122,3,54,121,24,192,205,0,104,135,113,130,109,45,136,56,229,162,144, +227,190,51,180,231,61,123,241,208,118,161,164,110,2,219,90,12,250,194,221,251,100,197,237,199,39,29,243,205,82,43,124,159,193,17,29,130,220,31,113,200,89,254,157,78,56,200,29,41,11,221,175,33,66,156,129, +197,195,158,51,219,18,55,57,61,51,215,28,0,40,2,209,50,183,63,103,178,35,57,24,141,212,159,196,70,48,122,116,199,78,71,28,180,164,175,199,217,173,192,3,248,119,255,0,88,207,183,30,153,56,56,226,175,218, +174,212,115,35,0,73,228,79,32,199,230,204,15,113,145,232,0,237,64,187,187,225,140,243,143,117,157,216,99,184,220,59,116,35,4,30,153,160,9,132,88,206,235,40,206,8,193,31,104,224,159,101,80,49,211,167,39, +60,245,168,158,44,255,0,203,162,115,144,62,121,65,199,252,11,30,252,242,127,62,15,237,11,161,192,186,188,30,226,89,78,121,29,188,192,61,241,211,208,103,163,77,253,227,116,189,189,199,253,117,35,32,251, +25,58,126,57,227,131,64,8,81,199,2,207,143,105,164,57,192,199,3,61,58,250,247,62,148,42,74,58,90,178,159,250,234,228,128,71,127,151,175,212,140,122,10,147,237,151,108,49,246,203,174,79,32,190,254,167, +185,220,125,207,39,166,49,156,114,25,111,9,226,234,115,156,243,188,168,235,158,185,96,126,188,113,199,25,160,4,9,54,0,40,192,245,25,146,65,232,7,34,54,239,219,60,100,19,197,5,102,200,255,0,88,122,240, +37,152,123,103,34,34,9,39,167,211,215,154,60,203,236,224,220,78,216,32,231,121,60,119,224,70,114,123,119,246,168,221,239,14,73,150,115,219,36,156,123,112,99,233,159,66,71,211,129,64,14,111,60,113,229, +75,201,63,242,222,81,248,130,32,39,147,143,207,158,244,155,230,83,143,42,96,120,251,183,83,12,114,7,107,126,131,182,56,207,126,105,152,186,99,195,187,117,201,100,200,227,215,247,121,198,15,108,243,199, +52,255,0,38,228,242,18,66,58,100,91,134,3,255,0,33,140,245,60,130,113,232,58,144,7,249,215,35,162,92,156,14,215,147,227,241,196,0,241,223,211,167,108,82,25,239,8,56,138,228,227,63,242,255,0,113,142,56, +207,48,118,244,235,219,214,147,236,215,164,113,20,185,237,155,96,63,241,237,135,166,121,7,166,122,83,126,193,124,122,197,158,135,152,80,140,159,102,183,114,49,156,245,224,129,158,244,0,130,91,230,228, +197,117,146,72,4,94,206,72,250,145,6,122,123,158,189,205,56,11,191,226,138,239,167,63,233,55,12,122,247,38,208,147,211,143,155,156,113,77,251,13,232,255,0,150,96,15,67,10,15,94,152,181,95,95,241,160,218, +223,40,226,37,32,15,226,93,184,227,212,91,246,250,130,79,79,64,0,245,91,146,64,242,110,207,99,139,171,178,122,123,89,99,216,227,185,35,131,210,54,142,228,0,126,203,122,121,39,155,139,195,156,125,109,64, +57,207,92,15,214,143,46,228,28,52,74,15,3,63,33,0,113,211,247,88,231,159,238,156,158,7,74,63,122,50,10,40,234,114,61,184,231,0,0,61,72,206,120,244,52,1,7,149,117,147,139,75,128,79,118,150,232,123,127, +207,191,62,216,198,223,166,105,26,43,211,192,183,156,131,208,22,187,250,245,242,71,98,63,195,21,41,15,146,113,23,174,76,164,31,200,50,145,142,252,254,29,195,75,147,198,216,251,31,150,225,199,61,72,32, +75,199,211,156,159,94,224,16,27,91,210,115,246,75,158,9,224,45,243,14,153,233,229,144,113,223,3,0,100,30,166,152,208,221,169,35,236,115,254,43,114,57,236,62,120,128,227,234,59,250,113,43,176,235,148,29, +137,251,92,128,123,96,249,160,119,63,92,114,8,2,169,179,166,239,154,104,64,201,235,121,46,126,164,130,216,207,57,193,233,192,207,52,0,141,109,35,17,155,57,115,158,91,108,167,212,118,76,14,7,182,123,12, +117,4,8,7,207,109,34,145,255,0,76,100,4,99,35,146,80,18,51,156,103,57,234,70,105,124,248,84,99,206,135,56,36,102,105,156,30,157,72,24,24,245,35,61,71,108,82,121,241,114,76,182,228,130,112,162,103,199, +184,206,211,200,29,6,50,125,71,52,1,27,199,8,227,200,147,184,225,118,158,252,253,244,56,7,60,145,207,78,149,89,145,1,226,9,186,142,129,73,239,140,135,155,176,239,140,241,212,241,86,158,120,200,251,177, +48,235,242,72,219,142,72,3,7,104,35,140,115,199,76,242,72,204,34,225,87,34,52,221,254,245,196,170,120,207,240,169,35,168,245,29,15,52,1,87,17,169,25,133,201,238,9,137,78,59,127,203,66,121,207,211,61,51, +208,33,104,192,43,246,119,201,29,124,196,7,244,56,57,247,24,236,125,236,25,229,3,11,108,91,220,75,112,65,192,231,185,207,126,131,143,161,201,136,77,63,56,177,7,140,12,9,155,184,63,220,35,57,7,175,226, +59,208,5,125,241,103,38,210,115,142,14,217,97,30,196,1,187,35,215,183,78,180,158,100,68,255,0,199,189,223,29,188,232,143,31,132,156,227,161,224,31,65,205,78,90,233,242,69,142,7,178,57,234,14,9,62,94,71, +211,60,227,39,218,54,55,67,39,236,30,228,21,144,47,160,233,31,94,15,221,231,168,205,0,68,76,13,210,218,240,99,31,242,212,19,212,224,99,204,200,199,31,158,120,205,51,100,121,202,199,120,188,156,156,177, +32,243,193,33,192,207,95,175,106,156,27,131,207,246,98,30,125,36,228,117,206,74,3,207,248,244,52,31,180,176,4,233,49,21,28,242,178,175,83,206,72,237,248,241,219,0,80,4,27,99,24,230,251,57,206,4,146,128, +61,114,22,92,17,233,206,122,112,14,40,42,15,86,189,199,78,22,66,123,247,201,224,115,158,61,61,42,92,220,224,255,0,196,161,27,159,225,150,227,183,76,149,29,248,227,145,147,131,216,84,44,243,147,147,162, +166,51,211,117,201,245,255,0,166,121,236,115,255,0,214,160,7,6,84,4,111,188,246,204,83,48,231,168,200,35,156,227,168,224,119,201,228,47,146,127,127,114,48,79,30,93,214,57,4,127,207,65,208,103,160,228, +103,61,6,33,38,87,227,251,34,53,25,231,2,236,145,249,196,65,32,113,193,31,94,245,9,86,206,6,155,22,113,147,185,231,0,125,1,192,57,238,51,199,110,57,32,22,183,147,128,110,39,198,120,253,213,199,211,3,231, +36,142,189,187,113,156,154,14,206,247,51,158,114,115,5,227,15,174,68,164,117,255,0,103,31,76,213,82,143,130,62,199,24,28,158,174,71,185,3,158,159,65,219,57,197,68,119,39,63,103,136,15,127,52,15,67,200, +24,206,51,219,235,235,64,23,188,208,185,34,230,94,227,6,13,65,73,231,63,195,145,250,158,71,169,225,166,126,115,246,149,236,78,232,239,201,63,64,64,193,30,135,161,245,226,179,204,172,78,22,8,57,61,119, +203,147,207,190,6,79,7,28,253,115,209,22,89,87,143,42,32,15,60,60,195,241,39,175,211,7,62,153,236,1,160,110,14,67,23,45,199,80,183,202,0,198,57,218,27,140,117,245,237,158,148,198,187,126,248,60,224,110, +55,188,159,248,28,67,112,252,79,21,76,204,253,215,63,70,148,227,57,238,73,60,245,32,103,159,122,137,167,144,131,136,200,7,24,249,103,39,215,146,35,56,30,167,39,174,65,160,11,166,226,108,228,71,25,206, +113,255,0,31,64,96,247,59,109,184,254,135,30,132,211,90,230,239,56,242,33,101,255,0,122,239,166,56,57,107,124,117,233,158,190,245,158,36,156,158,120,95,76,92,0,125,142,54,115,140,156,142,120,30,213,32, +105,129,36,225,176,56,1,238,6,71,184,50,117,25,39,140,251,158,212,1,99,237,51,129,205,168,39,25,194,188,227,167,60,147,104,221,113,239,130,1,239,203,190,209,114,64,198,158,216,199,252,245,151,39,223,63, +99,0,159,99,208,228,118,57,131,237,18,140,225,7,190,94,227,159,252,125,137,239,211,57,207,184,168,205,195,146,113,28,135,220,53,216,29,243,252,36,14,123,145,239,144,0,52,1,99,237,23,3,63,241,46,159,39, +185,151,235,198,90,205,179,223,190,125,187,20,251,68,205,201,211,238,63,239,242,122,145,145,186,200,14,58,129,156,227,145,142,181,87,237,7,28,197,55,168,2,91,243,159,192,68,0,244,3,131,218,158,179,187, +112,98,185,3,182,22,251,156,117,36,249,88,233,199,248,117,160,11,30,116,156,255,0,196,190,232,100,28,109,154,212,12,241,144,51,103,201,224,103,144,71,61,248,165,89,102,200,38,206,237,125,205,205,136,192, +199,0,131,167,28,122,114,113,219,175,90,235,51,30,5,181,193,35,161,34,239,158,131,39,49,12,100,242,79,167,110,114,28,37,144,127,203,164,205,159,70,187,92,131,215,36,195,208,112,121,235,140,14,122,128, +88,221,35,28,155,107,145,219,2,231,78,227,62,135,236,96,247,201,192,28,142,227,52,19,32,60,219,222,99,254,190,108,8,60,147,255,0,62,203,208,30,158,167,147,199,49,172,173,209,173,102,80,114,56,123,174, +199,56,229,84,96,231,191,29,199,179,150,80,122,219,48,29,112,94,224,227,35,183,67,233,156,247,227,20,0,245,218,126,245,181,200,35,159,248,250,211,240,115,143,88,137,193,39,190,79,113,83,110,92,16,96,113, +192,192,107,203,2,64,193,198,0,140,116,244,39,142,70,59,84,59,193,28,194,232,65,206,124,203,147,129,244,57,30,220,100,242,123,115,80,22,4,144,85,185,28,144,110,27,30,199,247,45,200,237,150,206,123,114, +9,0,184,90,51,214,60,99,160,19,89,146,79,126,171,248,145,248,138,4,145,1,196,103,156,117,123,44,31,175,200,9,207,235,235,85,84,5,57,44,64,192,35,62,121,30,159,243,203,143,126,58,143,174,101,1,78,126,80, +115,206,118,207,250,18,170,59,242,63,2,50,8,0,22,132,136,64,2,36,3,222,107,65,250,20,29,59,3,239,234,105,68,169,193,62,90,227,142,77,131,14,14,112,62,92,254,99,142,135,24,34,171,133,78,165,20,243,145, +137,100,94,58,19,243,119,236,51,199,191,25,167,109,140,140,152,230,29,142,30,66,63,12,3,142,231,183,83,201,160,9,26,104,120,200,136,144,49,202,219,16,0,207,92,12,241,245,39,240,232,121,144,28,110,75,124, +117,32,197,11,3,207,80,23,118,122,143,111,90,140,71,15,115,112,163,216,205,147,248,236,94,127,44,15,94,234,82,32,14,37,185,193,61,1,144,30,115,253,236,241,199,92,17,198,15,122,0,152,73,2,131,132,181,199, +108,217,161,200,206,122,146,9,4,117,227,128,59,14,142,243,225,24,226,208,18,71,75,88,136,7,62,132,158,125,14,64,233,210,171,4,136,0,124,203,222,248,33,25,134,62,161,71,169,200,231,168,250,151,130,152, +35,205,191,35,63,243,205,187,140,30,171,211,60,247,224,119,205,0,79,230,192,196,229,237,129,25,192,22,137,233,207,34,101,35,128,15,175,167,92,83,213,161,4,97,237,192,233,255,0,30,139,237,216,220,125,61, +64,25,206,120,204,72,209,103,36,106,12,48,58,0,15,30,191,40,245,29,199,63,172,203,60,74,48,82,252,147,199,36,224,251,28,119,232,64,60,240,13,0,88,204,76,57,158,211,39,129,254,137,211,28,99,137,128,227, +39,158,253,250,80,62,206,49,186,123,51,206,54,253,152,3,206,58,102,225,72,60,100,228,145,199,78,149,7,218,34,24,1,110,215,61,115,184,145,223,158,84,254,191,157,47,157,8,25,103,187,29,122,228,143,200,184, +56,235,247,135,56,207,168,32,23,20,91,19,187,117,161,255,0,182,33,79,79,69,187,35,233,140,3,215,62,179,171,65,158,18,216,246,200,141,112,126,152,187,4,231,142,252,125,107,52,221,194,9,196,215,4,14,1,39, +104,3,28,158,101,61,61,71,30,152,198,75,214,246,223,157,211,76,78,49,242,72,156,116,235,185,142,15,94,78,49,233,218,128,52,214,120,83,162,69,129,156,226,6,193,193,236,86,239,167,175,110,56,60,213,149, +191,129,71,40,65,39,39,0,142,157,120,251,87,99,158,189,121,224,241,88,107,123,102,122,220,92,130,123,121,145,17,140,123,103,249,15,168,60,213,133,185,179,39,253,124,252,227,172,138,49,237,146,120,253, +125,125,104,3,112,93,193,192,2,78,113,209,165,231,241,91,130,71,94,227,129,140,140,115,64,184,143,144,169,112,78,63,231,172,248,36,156,245,19,30,71,229,200,24,172,83,61,153,36,25,230,35,57,31,190,140, +245,56,7,166,123,113,215,191,190,92,39,183,24,197,204,189,59,146,216,231,147,196,71,161,24,60,243,223,32,145,64,27,2,101,221,204,18,158,120,38,89,88,113,159,89,115,158,113,200,206,58,156,1,144,205,22, +79,250,60,164,116,59,30,83,145,199,32,25,198,71,212,142,159,137,199,251,66,115,178,233,143,60,12,198,7,95,246,237,216,142,61,6,7,56,200,166,249,153,192,251,75,140,117,30,100,35,7,35,159,248,247,81,140, +145,215,223,165,0,110,249,209,224,226,210,118,198,57,6,231,243,24,144,142,221,121,3,3,165,52,204,6,15,217,103,81,192,25,243,247,99,158,49,184,231,142,125,142,51,88,190,126,220,98,105,9,207,57,154,221, +186,158,127,229,137,227,244,227,142,212,9,216,183,50,202,163,31,223,135,63,142,45,152,31,94,185,35,222,128,53,204,136,199,253,68,224,243,142,46,185,247,32,73,207,110,64,207,60,226,145,113,131,136,238, +48,71,247,174,20,131,129,192,5,137,29,178,8,193,232,120,2,179,4,167,180,151,4,28,224,229,72,199,111,187,102,6,8,207,83,199,57,227,154,144,74,253,183,16,58,110,44,56,245,200,180,255,0,61,189,40,2,243,35, +159,187,28,184,36,253,233,103,227,166,112,48,65,246,193,199,29,106,35,111,33,28,197,47,92,255,0,175,148,14,125,204,124,15,231,215,175,90,166,121,151,140,196,79,163,187,15,207,253,8,159,243,154,140,79, +57,110,18,38,233,210,70,0,96,116,249,109,51,193,30,159,200,138,0,189,246,124,114,201,54,7,24,50,147,248,159,221,19,244,200,28,245,245,165,242,226,3,152,229,192,254,238,236,224,241,212,64,115,223,57,199, +81,206,77,83,51,78,112,26,8,91,146,1,251,83,41,7,28,227,117,170,142,61,253,251,102,129,36,189,224,139,30,166,240,176,201,200,199,22,231,223,167,39,166,120,228,2,209,242,144,159,221,221,28,114,113,36,160, +122,112,68,56,25,61,57,35,223,25,167,171,196,58,69,117,216,143,244,153,58,243,212,52,64,126,100,145,215,169,197,83,1,155,56,182,181,60,242,4,204,121,247,197,184,61,255,0,14,121,231,135,236,115,255,0,46, +150,131,235,36,231,140,127,215,19,142,158,135,140,14,164,96,2,224,151,145,152,174,87,142,247,46,164,227,221,71,83,201,224,31,127,66,190,112,206,68,55,39,158,215,174,9,228,122,140,227,142,157,186,227,173, +81,242,95,36,139,91,3,215,239,73,49,57,199,127,220,126,148,241,19,144,127,113,166,174,61,230,36,122,156,249,73,140,116,207,56,25,0,231,154,0,186,46,51,157,208,92,250,255,0,199,247,3,215,25,198,57,250, +103,233,74,179,33,63,234,238,151,215,23,204,217,231,140,5,126,122,140,241,199,228,43,55,202,117,60,69,167,125,21,228,39,220,227,96,236,64,228,113,145,159,74,112,142,108,241,21,143,35,61,31,63,143,183, +66,79,167,56,199,52,1,164,46,85,62,81,13,219,3,192,38,118,96,120,207,118,29,135,94,157,8,57,163,237,164,19,139,75,151,234,6,89,185,238,79,5,189,241,219,190,113,214,146,199,32,193,104,236,186,243,150,147, +156,245,24,44,1,7,223,129,158,189,106,67,176,31,245,118,100,14,152,10,126,131,150,231,166,48,79,65,233,64,23,22,246,65,255,0,46,151,42,112,79,15,235,248,30,71,97,146,123,247,160,93,221,19,255,0,30,183, +24,235,204,193,125,122,97,79,92,147,235,199,76,85,80,99,201,253,213,167,24,207,238,215,185,255,0,124,12,242,59,254,184,201,190,217,120,120,161,245,59,87,3,35,167,252,182,0,227,177,235,211,241,0,189,246, +169,176,7,217,166,25,244,184,124,240,58,255,0,171,25,207,215,56,198,64,231,34,221,73,147,152,37,201,244,146,82,125,249,9,143,94,6,125,51,197,83,251,69,169,251,177,140,244,249,124,188,247,233,153,57,207, +182,79,74,144,92,219,255,0,207,7,206,48,114,45,72,199,36,28,179,140,119,193,231,63,78,128,22,62,211,32,228,91,76,79,76,238,149,187,99,180,100,156,17,220,14,79,126,5,39,156,199,39,236,179,115,131,141,183, +31,167,250,47,191,32,159,229,81,253,170,37,233,11,231,216,219,129,129,254,236,221,61,136,244,30,152,153,111,163,35,155,107,147,254,227,193,130,57,224,145,48,231,168,193,207,61,59,80,2,137,137,28,90,206, +70,127,231,148,252,227,221,173,113,248,231,158,153,28,210,137,1,199,250,36,227,215,239,175,242,143,32,250,96,113,223,147,77,55,112,140,31,178,220,116,234,94,44,250,99,253,113,245,231,142,167,130,41,166, +234,220,156,11,91,197,239,242,152,223,7,3,142,38,207,7,183,95,212,208,4,254,104,36,133,182,156,96,245,222,252,227,167,84,198,125,114,120,207,3,181,40,145,187,193,113,255,0,125,177,24,233,206,23,176,199, +60,103,160,30,181,141,202,28,98,222,248,1,254,208,7,158,255,0,124,244,207,78,153,234,120,161,103,28,13,151,163,219,114,130,61,207,255,0,91,60,247,160,11,136,200,71,54,215,67,7,57,11,146,125,56,43,207, +191,92,228,14,220,135,7,32,67,112,59,130,98,143,191,174,228,39,211,168,56,228,158,249,172,103,110,2,173,225,233,157,210,30,1,250,41,244,231,159,76,30,104,51,72,57,219,113,158,71,51,55,78,223,242,197,189, +241,130,123,242,59,128,88,195,30,4,51,100,244,196,112,3,206,123,249,36,30,190,158,244,8,101,228,121,87,35,30,139,106,127,15,154,37,62,163,218,160,23,115,116,221,40,3,140,121,215,29,186,231,100,3,31,135, +30,252,138,13,204,199,143,52,227,60,110,146,236,175,94,121,48,115,211,62,135,212,113,64,22,132,82,15,225,184,238,15,252,121,240,121,206,126,94,56,206,64,29,179,199,36,171,69,51,100,15,52,131,211,115,90, +122,247,200,29,7,126,14,123,85,19,44,132,228,201,30,58,101,164,152,14,156,243,246,101,235,220,158,217,56,52,155,228,237,53,161,231,181,196,153,247,206,45,143,67,147,211,242,201,160,11,126,92,195,0,156, +99,143,189,109,147,207,24,194,176,39,30,132,159,64,121,166,24,228,39,146,48,14,57,54,255,0,174,84,18,59,99,60,250,213,111,50,113,255,0,45,45,240,72,227,206,144,158,231,189,174,49,142,255,0,160,167,7,152, +128,90,91,101,193,200,195,74,217,228,231,133,179,62,189,14,58,17,210,128,38,49,48,200,249,51,212,18,80,113,248,40,250,147,156,116,245,200,64,146,144,73,48,12,116,204,200,58,129,147,243,3,212,241,140,113, +214,155,189,192,63,61,171,231,143,152,75,207,4,140,226,219,35,211,61,186,115,154,103,152,236,122,218,227,211,100,167,30,191,122,53,207,24,198,236,99,61,248,160,9,150,41,177,147,246,114,56,228,92,68,115, +245,32,2,59,2,79,52,241,20,153,224,194,15,81,137,163,60,250,140,204,131,216,227,158,48,123,84,27,152,228,111,128,142,120,16,144,49,248,254,61,51,235,154,140,196,173,193,145,88,250,8,50,127,82,113,223, +140,143,127,112,11,91,28,99,152,201,63,244,213,79,62,163,23,13,207,61,142,61,5,32,73,51,207,151,245,243,61,50,9,229,193,224,245,227,249,228,212,251,58,145,213,136,236,86,21,24,239,142,7,65,211,219,167, +165,49,160,64,6,90,110,157,124,168,241,248,2,253,57,245,227,220,80,5,214,71,97,192,132,247,36,200,120,235,235,38,126,135,143,106,22,55,199,250,180,237,252,68,143,160,253,233,233,219,159,195,185,201,48, +12,146,68,216,61,9,181,129,189,115,203,16,49,207,190,59,154,105,129,64,227,61,58,27,123,97,212,227,7,12,56,245,32,143,90,0,217,49,76,127,133,0,30,132,134,245,24,204,167,191,92,99,173,52,197,55,32,56,92, +245,195,166,127,87,224,231,191,39,244,198,27,66,188,231,105,61,1,217,110,161,122,117,204,163,243,252,59,84,38,213,206,72,207,79,225,251,49,39,62,159,233,74,63,34,9,39,223,128,14,133,162,155,160,148,245, +227,230,83,143,169,224,145,248,254,35,173,87,104,166,3,155,135,4,158,8,12,70,56,227,62,120,25,235,207,24,232,71,76,225,139,59,142,70,249,48,123,1,107,234,112,121,186,108,227,56,3,147,232,41,77,148,228, +156,52,163,184,201,131,7,169,228,111,192,244,234,127,92,144,13,54,138,227,63,241,250,70,59,31,148,145,235,159,49,143,61,115,244,224,1,204,98,41,50,115,126,71,99,151,144,254,64,147,219,143,255,0,86,42, +143,217,47,65,226,70,110,189,76,3,25,35,191,152,71,92,30,79,110,59,154,67,5,254,126,247,67,208,181,190,125,58,180,216,252,251,113,64,26,6,37,0,249,151,163,35,56,39,61,127,22,4,147,212,228,158,216,43,205, +70,81,71,204,183,167,232,0,35,24,35,163,74,61,50,122,142,51,180,117,20,204,87,217,251,177,103,32,100,181,177,39,183,252,245,96,57,198,112,14,15,28,115,78,16,223,1,243,4,0,231,238,188,0,125,120,227,240, +4,156,246,197,0,78,252,131,254,155,128,61,112,167,208,243,188,142,122,228,30,121,3,0,145,69,64,82,241,65,7,35,169,59,100,140,142,131,161,86,0,119,231,28,122,81,64,30,57,229,41,24,41,25,231,147,135,98, +115,156,100,229,128,245,239,207,28,246,122,194,131,1,150,60,14,216,32,14,126,139,159,82,71,28,241,206,41,197,128,254,41,255,0,239,220,88,29,134,127,210,27,56,30,192,15,95,70,137,113,144,36,113,142,14, +82,62,49,158,191,190,246,247,252,179,128,5,49,64,15,48,68,61,204,187,122,243,208,142,49,219,190,58,103,154,12,112,245,49,192,51,158,62,212,71,225,142,123,14,189,251,117,164,243,91,170,220,103,253,146, +145,227,241,38,67,248,156,241,235,234,158,108,192,113,58,156,17,213,217,113,223,28,57,206,8,233,215,181,0,57,126,202,159,121,109,134,7,39,237,50,115,142,164,225,57,207,83,131,219,138,112,123,83,143,248, +245,199,60,153,229,232,7,57,196,109,207,24,25,3,191,110,106,33,52,188,102,68,61,206,103,147,175,76,0,78,63,63,254,181,74,39,124,12,237,35,129,197,220,131,63,136,70,61,125,63,30,51,128,7,41,180,201,194, +192,70,78,63,123,35,103,185,229,160,4,31,82,58,99,156,230,166,204,3,7,201,131,212,150,124,15,67,199,148,73,244,29,127,165,66,46,15,93,199,60,227,55,82,145,206,114,7,238,135,92,146,71,31,226,25,79,7,49, +159,102,187,149,71,226,54,103,216,156,119,235,64,22,86,91,99,193,183,183,227,251,174,199,167,92,147,6,14,71,166,8,252,49,82,239,178,255,0,158,22,255,0,128,147,140,250,147,8,25,254,92,244,192,197,17,42, +12,2,97,4,224,146,53,9,71,254,202,0,63,67,142,188,246,167,121,240,131,254,178,221,177,143,189,168,74,192,119,62,153,250,3,147,249,96,2,232,150,204,19,251,155,124,113,141,209,169,32,31,83,229,31,195,11, +250,84,169,61,177,207,238,173,192,30,136,156,143,64,60,159,200,146,61,58,102,179,76,240,225,142,235,82,49,255,0,63,114,231,191,164,231,175,166,62,163,208,91,136,73,231,236,164,117,255,0,143,169,1,28,114, +121,152,0,115,220,143,192,80,6,183,218,109,20,227,202,140,240,62,236,113,103,243,49,15,230,114,120,247,167,139,171,115,194,66,71,83,196,112,14,48,123,152,28,159,200,227,174,120,21,150,37,181,193,201,183, +250,25,220,129,216,115,230,30,15,126,126,156,117,127,155,104,112,127,208,249,60,13,239,219,156,146,92,15,200,246,160,13,1,42,17,159,33,142,59,149,180,228,250,115,105,249,2,127,92,84,169,50,12,254,226, +65,140,142,22,196,130,115,156,2,176,41,39,215,0,158,43,44,189,158,7,252,120,30,113,254,185,137,4,253,93,120,247,206,59,14,148,192,246,185,249,70,154,63,237,178,124,220,114,112,110,87,156,123,28,142,121, +234,64,54,132,193,198,4,51,41,231,129,246,80,64,231,176,128,122,247,201,233,143,105,20,177,7,228,155,62,235,102,64,0,123,166,71,111,207,211,154,195,243,97,86,3,58,120,61,126,242,176,231,166,127,210,24, +100,117,0,242,59,115,138,156,92,32,192,89,116,229,57,28,97,91,30,188,9,113,212,12,227,25,57,235,140,0,13,112,242,144,118,172,199,142,152,179,238,59,131,11,113,215,35,232,113,193,33,195,237,60,230,25,72, +231,162,217,247,245,2,223,161,228,231,184,198,6,7,57,33,193,198,36,211,142,122,145,24,201,199,191,155,140,126,29,61,178,106,69,216,58,181,153,227,168,64,1,61,56,27,199,126,167,131,159,212,2,236,137,40, +195,27,91,131,199,79,42,221,129,192,246,183,231,158,164,156,116,237,129,76,81,57,233,105,114,1,231,229,183,135,142,189,66,194,57,24,231,142,159,78,107,252,135,157,246,189,50,62,69,199,62,163,121,32,117, +224,125,72,167,140,31,186,214,164,140,0,4,100,16,123,112,37,92,228,244,192,227,184,199,0,2,112,183,64,241,4,202,15,253,59,224,250,99,229,183,32,241,244,224,227,142,42,204,113,221,183,72,238,72,237,139, +126,123,244,253,216,35,31,175,3,56,28,86,84,152,114,12,100,127,184,221,58,244,243,142,56,56,207,97,198,105,227,237,25,225,226,7,174,60,156,227,183,247,143,175,56,246,234,122,0,89,49,222,117,41,122,167, +176,54,209,119,227,29,6,15,61,112,78,57,230,145,97,186,227,43,124,8,28,3,28,99,57,228,112,16,254,3,190,112,7,74,69,55,64,99,204,132,245,233,111,39,61,58,158,216,246,234,125,170,64,39,36,228,193,237,251, +185,128,56,237,143,47,131,252,253,120,205,0,42,199,38,48,82,240,145,220,198,188,19,147,146,22,14,189,57,253,8,197,72,99,155,105,59,53,18,51,146,81,16,128,7,111,245,11,236,50,72,32,244,167,42,200,51,184, +67,211,180,119,25,35,60,115,180,15,175,7,212,99,60,78,168,203,247,97,139,158,219,37,231,56,61,208,118,235,211,215,138,0,172,20,140,18,218,146,241,233,26,227,159,104,215,30,157,120,199,229,44,108,23,254, +91,106,91,79,81,231,1,158,191,244,203,158,249,199,189,89,62,104,233,109,0,192,24,207,153,147,129,158,209,63,233,207,94,5,76,158,113,228,91,91,251,124,210,140,30,167,164,11,235,254,25,160,8,149,208,30, +103,212,198,79,67,51,14,196,127,207,44,16,65,193,244,200,235,134,204,194,104,115,254,182,241,187,31,223,129,146,123,16,233,142,216,35,156,242,121,53,48,107,160,56,181,131,211,25,151,30,185,229,9,199,28, +3,200,231,20,158,124,152,203,91,218,143,83,137,91,142,156,98,50,71,25,61,190,153,198,64,35,243,96,234,76,191,86,150,54,57,62,152,92,231,63,90,114,92,89,231,156,183,110,93,129,29,15,37,19,61,241,146,63, +74,153,14,224,72,130,38,200,232,18,102,231,142,184,133,128,29,121,198,122,123,83,182,185,249,126,202,14,120,12,145,203,156,30,216,48,130,15,28,227,3,142,6,104,1,86,230,200,122,3,199,33,221,178,71,179, +197,129,245,253,113,79,51,216,30,70,220,245,63,49,3,175,252,4,30,79,126,58,247,52,223,45,213,177,228,48,56,239,111,43,142,123,127,171,39,232,49,208,224,226,128,37,57,2,218,67,232,4,18,129,238,71,238,207, +94,157,59,15,226,38,128,23,206,180,57,200,143,216,150,194,156,140,14,72,1,114,51,157,160,243,200,201,53,34,189,160,231,228,25,7,238,203,43,15,79,225,108,31,95,76,211,23,237,32,127,199,180,251,122,0,45, +229,56,235,131,159,47,191,160,235,199,29,106,85,19,103,38,11,164,111,85,180,156,145,201,227,38,32,7,3,229,57,56,61,122,98,128,20,27,62,120,79,196,92,30,56,244,110,195,28,231,158,159,73,84,91,0,14,232, +114,0,198,26,64,70,115,144,3,200,72,235,192,207,124,250,154,140,165,192,193,43,118,65,231,6,214,99,142,58,28,145,233,128,0,28,99,35,128,105,2,200,65,13,246,156,241,128,109,164,198,61,198,51,159,92,146, +15,167,114,1,56,16,125,71,170,57,57,29,127,137,137,39,174,59,231,159,122,157,86,212,103,230,153,78,71,73,157,113,255,0,143,28,99,167,76,15,110,244,150,57,15,83,40,231,157,214,210,1,142,156,18,6,51,140, +158,113,156,126,50,121,114,47,70,36,116,230,218,67,141,188,245,89,20,14,61,64,57,25,61,168,2,232,107,97,156,73,114,188,228,102,235,211,61,137,0,113,223,57,226,157,186,28,228,92,93,122,255,0,199,218,17, +131,237,156,118,236,50,51,234,14,41,168,108,141,210,141,196,227,152,28,12,245,228,249,231,143,212,1,233,82,172,140,191,199,27,17,215,228,144,99,30,167,205,110,56,3,24,20,1,100,48,7,43,52,248,231,173,194, +47,231,151,99,158,51,145,235,211,181,73,230,174,126,105,229,198,7,91,133,235,215,232,113,236,51,250,212,2,103,206,3,198,51,158,237,211,212,15,59,140,231,211,7,7,138,113,148,224,22,146,48,65,7,60,0,57, +231,57,144,147,235,232,62,156,80,5,161,60,96,127,175,220,72,227,124,192,227,146,59,140,122,241,199,92,142,245,58,221,48,81,137,98,81,216,11,172,100,251,1,129,207,24,62,160,28,28,115,159,231,73,252,55, +17,131,216,13,132,19,207,97,112,15,185,199,7,7,35,213,226,73,7,222,184,132,247,0,43,228,117,224,145,112,120,237,211,183,83,138,0,186,110,228,3,253,100,100,158,132,221,103,166,56,224,143,231,252,169,5, +204,164,253,251,96,122,252,242,73,215,183,204,9,63,175,212,129,85,68,175,131,251,212,110,125,31,39,223,38,67,142,196,14,120,253,94,183,14,184,196,138,14,56,218,123,28,103,166,0,199,67,156,126,184,160, +11,70,230,224,103,18,216,17,142,20,205,49,7,158,224,128,8,29,249,61,123,158,105,223,104,148,247,211,177,223,239,114,120,231,150,192,250,147,142,79,165,87,23,151,28,140,185,25,231,14,234,59,116,249,88, +103,63,81,207,3,209,223,107,155,188,108,222,191,233,28,227,158,197,20,227,161,32,247,199,52,1,58,207,46,120,109,44,244,206,124,227,129,200,232,6,51,143,175,183,173,41,145,185,222,218,96,60,16,9,186,255, +0,208,118,244,224,96,112,7,165,86,55,172,48,10,72,15,168,185,83,142,252,3,32,28,99,140,99,183,57,3,17,125,169,253,46,7,166,38,7,183,24,2,64,126,92,241,140,208,5,224,224,31,150,109,44,255,0,187,246,176, +65,236,57,43,206,51,216,103,182,105,222,100,216,202,201,167,251,145,246,166,60,119,229,176,58,224,113,223,29,205,81,91,158,120,243,178,71,87,184,60,17,142,72,243,198,15,174,63,26,86,184,224,110,105,14, +57,226,228,175,127,95,56,227,160,247,250,241,64,23,24,200,216,203,217,242,70,74,52,163,161,235,243,18,71,28,244,29,193,25,56,46,216,228,255,0,175,179,3,174,50,91,60,99,24,57,24,199,168,60,96,122,214,89, +188,234,1,159,220,27,228,227,211,172,156,156,243,147,212,14,252,26,85,185,147,170,25,186,96,237,188,131,39,57,224,102,97,128,57,227,175,61,0,28,0,106,24,164,224,249,246,125,15,100,25,25,199,82,159,204, +158,253,56,205,103,132,3,204,177,251,21,88,88,0,58,227,13,207,183,3,233,85,141,212,217,3,23,36,244,249,111,97,199,31,89,187,142,50,73,200,227,6,152,110,28,31,187,117,145,211,253,50,2,57,228,158,38,239, +142,163,28,31,165,0,88,107,108,228,9,241,255,0,108,147,7,242,254,127,161,168,30,209,137,36,72,167,168,251,131,158,57,56,98,49,159,212,251,210,11,153,70,48,110,64,24,255,0,151,168,136,228,116,194,202,64, +207,94,72,207,36,140,83,133,197,195,227,6,99,234,13,196,120,231,241,126,153,228,158,15,160,192,160,8,126,199,32,224,75,220,156,121,112,158,59,31,154,54,199,108,250,227,173,53,173,103,61,102,114,61,4,22, +189,58,17,147,110,73,63,152,53,99,206,184,198,223,159,142,57,186,207,61,15,202,168,71,60,142,9,224,244,38,152,210,221,156,5,220,64,236,102,103,32,122,99,202,7,182,113,156,158,248,232,0,42,27,18,65,45, +43,103,167,250,155,80,195,35,185,54,153,61,135,126,166,163,251,30,57,89,164,92,240,127,119,105,147,207,36,226,200,159,126,199,144,51,86,90,107,222,233,33,32,147,243,121,196,100,245,228,46,57,250,122,113, +192,167,9,47,27,239,67,145,220,121,87,13,208,100,231,16,246,3,185,247,234,104,2,147,89,177,251,210,73,32,235,242,219,64,73,192,246,177,111,208,118,252,4,31,101,193,200,251,64,206,127,229,128,29,187,5, +211,199,185,227,158,188,86,137,55,0,12,218,144,14,79,54,247,135,35,56,57,11,110,113,156,99,211,184,24,168,202,204,221,32,69,250,217,223,147,142,122,98,1,235,254,114,104,2,175,217,219,24,83,112,7,78,109, +230,60,140,156,140,89,243,211,235,207,173,53,173,92,12,17,41,61,183,91,76,7,94,114,77,144,62,188,114,51,197,89,49,92,127,207,40,201,28,128,108,47,206,15,208,219,128,1,227,161,201,35,3,28,84,76,147,47, +222,138,46,15,95,177,94,144,9,239,194,18,59,140,247,3,166,104,1,130,25,23,25,18,144,58,133,134,227,142,123,98,212,125,8,56,235,198,122,82,144,227,254,126,193,255,0,102,43,238,153,255,0,102,16,61,250,128, +70,49,64,66,70,74,160,35,63,118,202,252,140,224,231,254,88,156,250,243,207,243,168,154,54,99,157,185,25,232,52,219,179,211,167,45,24,254,67,174,56,160,4,96,70,114,183,237,142,155,83,82,80,115,199,63,187, +30,157,123,254,148,132,145,146,162,255,0,56,233,141,71,185,231,37,135,63,135,215,234,20,61,10,1,140,240,108,37,3,242,60,143,174,49,205,70,74,131,192,4,142,255,0,99,113,129,237,242,18,57,227,158,227,175, +38,128,21,150,66,51,179,80,60,255,0,207,45,64,126,91,99,56,25,199,92,245,28,142,51,89,247,143,224,212,179,208,16,151,253,120,207,88,6,51,156,19,219,7,145,205,72,206,196,144,89,241,130,115,246,121,136, +207,124,128,139,158,188,245,3,145,142,69,55,205,199,2,86,24,237,246,89,142,49,201,24,198,123,112,127,145,234,1,17,103,110,113,169,122,158,47,179,212,250,71,158,184,206,70,48,122,118,17,58,250,197,126, +121,254,47,180,169,231,60,2,214,228,231,175,13,248,241,82,53,195,130,75,72,197,121,198,45,101,3,223,162,158,121,56,62,217,230,171,181,226,175,241,224,250,139,107,130,115,238,22,35,199,124,241,211,233, +144,7,238,35,56,130,251,158,51,190,127,166,71,250,40,235,158,254,164,122,138,99,16,192,126,226,253,179,215,62,119,95,81,155,51,156,245,25,224,241,207,28,52,106,9,215,204,112,64,60,155,107,210,59,119,88, +58,30,189,113,199,80,41,31,83,35,24,145,198,50,114,45,111,6,73,193,255,0,158,42,125,72,227,175,76,140,208,3,120,7,155,91,211,212,140,231,219,131,186,203,131,235,200,246,237,150,109,126,2,217,220,227,31, +196,145,158,71,7,173,170,227,182,105,70,173,32,28,201,46,125,162,189,31,150,35,239,143,66,126,184,166,157,82,108,241,44,231,140,253,205,71,190,122,98,3,233,237,237,64,15,196,137,255,0,46,119,28,227,129, +28,103,183,39,34,215,215,158,58,103,30,134,163,50,184,60,219,220,40,199,67,176,96,243,208,125,156,127,137,35,161,166,157,74,225,190,236,183,160,129,216,106,32,115,159,72,58,113,156,115,216,245,166,13, +74,227,159,222,94,30,227,119,246,137,193,227,25,220,188,253,56,233,216,226,128,38,243,100,199,16,203,236,74,196,221,120,198,124,180,24,246,206,58,211,132,210,46,63,114,235,159,88,160,110,157,122,131,201, +235,156,123,103,214,177,213,46,135,34,91,160,51,207,55,216,30,248,24,28,227,211,158,248,166,29,86,228,31,154,123,158,114,126,89,111,184,199,94,173,208,127,159,96,11,198,229,187,70,216,245,17,219,12,245, +56,249,113,200,234,115,207,108,224,83,13,203,143,249,236,167,176,242,224,108,227,24,200,50,30,131,167,176,25,233,205,97,170,220,31,249,109,116,123,100,207,120,0,207,76,159,52,113,216,96,12,1,201,238,20, +234,87,63,243,222,92,146,48,60,235,198,235,142,127,215,244,29,15,7,24,228,224,112,1,56,188,153,115,243,72,185,206,126,88,151,241,32,72,113,234,112,61,15,65,82,45,236,204,48,110,37,29,121,13,8,61,207,121, +73,245,227,6,168,155,219,131,207,155,56,25,25,203,220,156,158,157,174,58,12,247,245,29,7,86,181,204,173,255,0,45,27,63,237,125,165,177,244,255,0,72,233,199,183,243,160,13,15,181,77,131,186,226,99,201, +231,237,48,169,235,211,229,201,237,239,129,219,21,19,94,204,56,243,228,61,134,110,178,58,142,224,128,122,147,192,255,0,235,231,253,170,64,112,100,76,122,21,185,62,185,63,235,137,221,235,140,142,115,130, +41,62,215,131,243,73,107,192,255,0,150,145,77,192,245,230,83,131,211,169,7,28,140,208,6,128,187,148,231,247,228,145,156,15,180,49,61,134,6,214,227,184,224,142,121,199,60,71,231,78,73,59,223,39,130,22, +119,25,233,219,119,113,219,208,244,232,42,139,94,175,36,73,96,65,61,224,147,175,108,97,137,199,78,65,57,247,60,212,127,109,32,147,230,88,31,97,13,200,199,60,112,1,92,3,233,156,147,158,58,80,6,153,145, +207,4,146,79,81,246,201,199,182,126,82,0,25,57,200,110,221,69,70,114,14,54,55,61,9,188,186,250,127,207,66,184,231,169,62,158,181,67,237,200,65,4,89,253,66,76,50,125,112,99,39,159,126,189,77,40,188,29, +163,182,3,216,74,79,126,131,104,207,79,243,145,144,11,167,126,49,177,8,199,27,174,238,65,193,199,112,73,36,156,247,7,140,142,49,134,18,71,252,179,136,159,79,182,206,64,199,4,12,163,28,224,118,239,206, +59,152,62,219,34,243,177,14,71,0,7,198,7,4,125,245,111,114,54,231,29,129,24,165,109,69,151,157,137,211,60,9,249,39,145,210,66,57,227,147,143,67,238,1,33,118,232,32,132,103,60,27,169,79,81,239,22,78,121, +35,208,119,239,77,50,56,4,24,173,143,29,222,70,32,99,215,203,250,245,28,227,190,5,67,253,163,48,231,201,76,113,200,51,129,211,3,157,252,19,247,113,142,163,57,200,197,60,106,51,48,255,0,84,192,116,192, +55,184,207,60,28,56,28,227,174,225,142,220,98,128,39,89,65,200,49,219,227,142,66,185,35,235,199,124,117,231,175,76,231,47,243,20,227,42,131,160,32,70,195,24,233,214,35,142,185,31,49,233,216,26,173,246, +249,137,192,142,231,56,206,229,55,156,12,244,255,0,92,61,120,252,5,61,46,238,219,36,45,232,3,56,44,110,142,73,3,60,25,206,15,29,129,235,212,228,208,5,133,146,53,206,85,7,24,36,196,79,29,135,250,158,121, +62,190,185,245,167,249,201,216,197,128,63,231,216,146,56,227,147,30,48,122,242,49,211,176,193,128,220,92,129,214,240,130,123,35,251,245,221,47,39,57,231,147,236,1,166,155,139,174,198,243,169,235,28,135, +166,1,32,35,55,229,220,208,4,255,0,107,0,241,36,64,122,125,141,70,8,228,96,180,56,63,215,161,200,201,167,11,246,24,1,227,61,192,22,17,177,231,142,241,244,198,58,1,142,126,181,2,207,116,57,243,238,84,156, +228,121,51,245,206,121,36,158,63,15,113,216,83,140,211,30,13,228,251,143,111,179,57,60,247,63,187,60,251,159,174,122,208,5,175,182,72,216,255,0,85,147,192,45,166,70,65,29,71,221,76,231,36,240,79,181,56, +79,49,31,50,192,217,193,227,75,97,199,94,6,59,116,198,113,211,138,168,26,224,242,183,211,14,159,242,193,120,246,32,219,231,143,126,188,254,50,129,113,183,254,66,50,231,191,238,35,227,215,254,93,207,94, +131,159,234,64,4,166,224,231,254,61,212,131,212,255,0,101,77,250,109,94,63,46,255,0,141,11,112,199,59,109,215,211,35,75,184,231,219,24,193,255,0,190,120,231,159,155,152,194,220,176,0,106,13,223,173,181, +185,56,199,3,152,129,199,94,220,123,226,164,88,110,88,255,0,199,250,131,147,247,173,96,35,145,207,68,238,61,207,215,208,1,76,243,14,5,170,31,99,164,204,113,219,159,145,121,206,56,36,231,29,120,229,4,215, +100,141,182,176,140,143,186,52,201,243,143,124,140,3,233,128,15,31,82,84,195,115,156,155,184,125,191,209,97,7,25,31,236,17,158,59,131,216,116,197,57,98,156,158,110,34,238,50,99,64,49,244,17,242,125,8, +3,28,14,57,160,0,73,126,127,229,218,49,215,7,251,54,110,79,126,144,182,14,51,215,62,153,167,131,168,30,126,205,27,99,211,76,184,207,230,45,200,239,143,240,205,56,64,237,214,234,223,234,85,6,48,125,10, +175,211,35,62,254,180,190,68,192,252,183,48,55,169,9,31,124,156,147,230,3,199,62,253,59,18,8,2,237,212,78,115,106,189,51,129,166,92,130,127,242,92,28,123,99,255,0,174,210,154,136,36,136,72,7,29,116,203, +174,167,147,201,128,156,122,242,0,206,56,34,165,22,247,4,0,38,133,134,9,192,142,44,96,31,247,207,161,235,220,231,234,211,12,138,126,103,141,135,115,229,71,142,123,96,72,57,60,228,227,190,59,226,128,16, +197,125,142,84,131,131,210,194,227,174,49,192,242,64,227,175,24,29,253,1,85,138,255,0,143,152,14,121,205,132,221,8,193,227,200,3,249,159,175,20,193,27,147,192,24,224,100,44,75,219,28,129,38,113,142,51, +140,103,154,145,109,221,134,118,185,231,63,40,80,7,174,78,224,57,39,167,210,128,23,200,191,201,38,116,28,112,13,132,189,62,158,73,25,247,192,61,169,190,77,239,221,51,167,167,252,121,79,131,201,60,102, +50,6,121,193,228,244,250,137,76,14,58,9,56,254,233,140,158,49,207,50,12,12,31,92,113,145,64,86,82,70,233,179,239,229,142,70,56,255,0,88,196,128,64,201,61,15,56,52,0,223,179,93,142,5,194,19,233,246,55, +63,142,26,50,63,30,191,64,106,61,151,74,114,110,99,4,12,31,244,38,192,233,217,80,117,57,193,32,244,60,244,169,153,73,201,204,231,175,221,17,48,35,36,255,0,207,80,61,72,4,125,121,38,152,3,130,65,91,159, +167,151,9,252,72,243,122,244,39,147,216,140,3,64,17,254,252,128,12,221,48,50,182,204,163,167,251,153,199,174,49,158,216,164,34,96,71,250,79,76,127,203,38,29,243,221,79,65,142,191,208,102,80,101,29,97, +187,97,234,18,17,199,231,248,245,228,247,199,20,201,91,0,49,182,187,231,251,200,152,245,39,114,129,207,208,242,65,237,208,1,68,142,188,189,200,60,100,110,183,97,211,182,74,140,245,228,12,3,206,65,28,211, +190,212,195,131,40,110,7,72,55,18,61,115,146,121,227,159,195,189,87,243,122,102,25,253,254,82,127,148,216,57,227,158,199,60,118,167,135,0,145,178,85,3,161,104,217,187,250,100,228,122,99,241,227,128,1, +55,219,25,121,18,50,247,4,90,128,127,32,167,60,99,167,78,48,112,5,56,222,182,51,230,76,227,218,2,58,140,241,251,163,129,233,242,243,199,99,80,121,168,1,37,79,76,157,214,175,140,142,156,137,57,206,78,78, +7,56,237,197,70,110,32,234,200,135,166,73,183,148,126,91,100,235,140,113,142,190,157,40,2,232,191,147,140,25,7,82,67,71,142,122,228,126,232,116,206,122,130,7,78,58,135,81,151,63,242,212,250,0,24,247,231, +129,15,76,244,224,12,30,252,145,68,92,91,246,17,142,255,0,241,235,112,127,44,62,79,35,212,119,247,5,69,197,182,238,124,144,59,230,210,232,126,155,206,59,114,7,62,217,228,2,250,106,18,18,62,91,147,129, +131,130,227,183,83,136,71,191,39,167,76,245,195,190,216,204,126,104,174,200,193,63,235,229,193,233,219,104,239,158,72,245,60,213,85,186,182,255,0,158,208,244,25,255,0,69,189,24,193,224,224,28,15,110,79, +62,180,11,171,60,224,220,192,50,71,222,182,189,63,158,64,61,57,231,160,252,128,5,223,183,56,24,17,221,15,65,231,202,113,239,192,29,122,131,244,207,112,90,111,164,36,124,183,96,118,255,0,72,153,58,227, +168,0,147,201,234,49,200,207,165,86,251,69,161,198,219,155,99,158,230,211,80,4,126,67,28,30,156,250,242,56,169,133,213,191,24,186,183,192,25,207,145,169,14,61,49,180,140,142,123,245,233,236,0,27,166,99, +243,27,241,233,254,147,114,64,238,64,192,198,15,191,185,193,205,61,110,72,199,239,46,135,24,230,234,236,243,144,57,3,3,35,215,159,228,2,27,152,79,34,230,220,231,145,251,157,68,117,207,64,84,15,200,112, +120,7,168,0,184,140,18,68,177,244,234,167,80,25,232,57,82,125,51,193,193,199,224,104,1,230,233,186,249,215,36,250,181,213,201,94,61,137,31,231,145,198,114,255,0,180,202,64,196,211,12,240,113,44,167,145, +192,56,46,114,51,159,115,235,234,145,220,198,220,121,209,231,158,2,223,158,157,143,39,166,57,228,231,244,50,249,138,120,89,80,250,124,183,235,142,184,7,229,108,254,28,224,113,220,0,1,103,151,130,102,152, +228,96,100,185,201,3,158,224,158,50,15,81,239,198,106,95,54,82,48,89,246,142,78,253,195,161,228,96,74,121,239,208,142,160,142,213,92,145,187,169,62,191,53,239,35,35,160,17,228,14,56,39,56,198,49,200,203, +112,164,252,209,6,227,169,123,190,158,131,114,123,159,78,212,1,105,90,76,159,222,16,123,102,55,97,199,35,7,204,233,208,131,156,250,243,154,149,94,80,64,105,92,131,211,16,19,140,12,112,75,176,60,244,24, +207,61,42,178,68,185,37,97,110,252,15,56,183,78,185,37,73,252,136,7,7,62,143,49,190,127,227,222,92,118,57,60,18,48,70,90,96,127,95,113,236,1,120,51,16,62,121,241,219,17,48,36,247,60,56,3,143,83,234,6, +104,46,195,171,72,122,17,156,130,58,158,50,88,118,7,174,64,230,170,14,219,225,155,143,238,180,124,140,142,48,110,0,227,29,243,206,104,0,99,136,238,135,61,91,236,238,115,236,90,102,199,174,40,2,226,150, +39,24,153,193,199,66,192,116,62,227,183,29,120,237,193,205,60,71,147,254,166,82,223,237,77,40,31,172,128,117,237,143,110,121,170,129,72,4,236,184,3,142,54,219,231,167,253,124,103,177,244,56,199,67,64, +69,198,118,221,140,103,0,8,0,25,207,92,220,99,223,161,35,233,192,0,184,96,220,112,214,242,224,99,63,233,51,240,113,254,204,131,39,167,95,79,166,16,195,24,39,247,19,131,158,113,115,119,211,142,135,237, +29,250,140,129,131,233,85,178,185,31,37,227,0,7,27,45,72,31,80,110,1,25,224,31,195,30,239,86,29,161,187,233,156,4,180,7,241,31,105,52,1,41,138,17,130,82,101,198,121,55,119,100,251,252,190,111,25,30,252, +242,71,106,113,75,124,124,222,118,0,206,12,247,67,60,244,27,167,28,147,211,60,119,192,231,49,249,174,79,16,223,14,184,4,89,16,51,236,110,127,150,63,90,140,207,32,124,121,55,100,117,193,91,33,233,223,237, +71,143,167,61,14,15,82,0,242,45,179,128,24,100,240,30,234,113,233,206,126,210,14,56,228,31,229,154,97,91,114,72,99,0,3,179,94,206,73,246,32,220,17,142,196,127,58,85,153,251,219,220,0,79,117,178,60,115, +211,253,35,61,186,228,227,211,52,227,35,127,13,189,201,207,124,89,30,231,179,93,175,3,158,163,39,31,141,0,11,29,183,100,181,233,195,121,242,54,59,255,0,207,82,115,244,56,206,72,28,230,165,217,8,82,75, +219,1,142,190,100,167,24,235,214,67,216,118,60,118,170,229,229,193,205,172,231,254,217,89,6,35,169,231,237,160,131,159,67,215,218,144,201,42,143,248,244,186,0,123,91,124,195,240,188,35,3,158,122,116,160, +9,193,132,16,4,182,167,219,115,158,167,28,6,127,208,10,113,54,231,1,167,182,7,29,149,178,62,128,201,199,97,236,15,185,205,97,35,182,113,109,113,211,60,155,80,7,168,63,233,63,208,243,158,221,24,76,163, +165,181,222,57,201,223,106,0,250,226,241,78,61,72,7,244,160,11,222,101,176,36,25,224,227,215,0,159,252,136,15,32,241,142,122,116,235,74,37,182,227,107,195,207,60,5,39,142,231,51,147,244,36,30,185,231, +173,81,14,79,6,218,232,158,188,155,102,245,207,63,107,3,29,58,118,207,214,167,1,71,88,166,231,140,5,180,61,115,158,151,185,231,211,211,143,168,4,198,88,114,7,155,24,233,140,176,80,79,160,10,217,231,174, +1,198,105,225,144,255,0,203,104,71,29,9,148,227,35,158,153,192,61,0,7,31,204,192,8,207,202,183,64,103,142,35,3,242,23,93,186,103,61,206,15,83,65,201,200,204,227,140,224,146,59,231,60,220,242,122,250,122, +245,160,9,200,137,177,186,88,207,25,192,138,76,103,142,248,29,122,100,118,245,29,32,62,79,3,206,80,0,237,20,167,243,61,65,231,174,125,179,198,74,124,223,221,144,240,112,68,141,250,98,102,238,127,3,76, +43,32,193,11,40,231,27,132,142,51,223,144,58,12,245,249,189,121,160,4,100,140,224,249,200,222,229,100,206,7,92,17,140,2,59,227,191,95,68,242,225,228,25,211,233,185,135,190,112,65,4,231,61,179,215,25,25, +1,249,185,3,229,50,158,167,27,152,253,120,36,158,135,3,57,254,116,121,151,195,128,146,18,58,19,128,58,123,156,156,240,1,218,121,28,113,205,0,65,136,58,25,149,142,78,0,152,231,174,122,136,203,14,188,99, +29,58,1,76,101,183,110,12,185,110,6,4,210,19,193,227,57,133,134,65,3,177,231,146,58,85,175,55,81,199,7,111,174,125,115,234,188,144,57,29,48,14,61,133,53,228,212,27,254,91,149,61,14,31,3,182,49,145,233, +158,8,4,251,10,0,169,229,196,120,222,74,140,140,52,146,47,94,196,11,76,156,113,142,113,233,129,197,39,147,15,25,49,158,115,143,54,108,243,142,153,181,233,193,39,57,246,29,105,206,218,128,24,23,146,103, +156,254,245,176,49,238,172,14,58,114,49,199,173,52,54,162,62,99,116,113,207,6,92,224,159,64,204,59,118,199,7,241,32,1,172,32,95,188,177,103,218,86,56,60,129,140,90,12,115,215,36,231,212,140,226,54,48, +17,145,26,158,120,34,121,0,233,232,182,216,199,225,207,90,155,125,239,121,167,108,100,97,93,84,19,211,130,93,219,29,123,103,145,140,231,134,25,239,64,198,251,192,122,12,62,64,35,61,0,31,142,114,49,156, +3,208,16,6,101,48,112,174,61,150,121,8,231,235,104,15,24,231,39,24,31,90,107,58,140,103,127,108,102,105,56,252,13,177,232,63,14,113,206,120,148,77,126,127,229,173,192,232,121,221,223,215,44,163,166,113, +215,182,48,49,78,105,47,8,195,60,185,234,121,56,239,147,134,144,251,103,160,206,114,57,228,2,176,151,184,89,78,50,15,204,237,143,169,22,248,201,193,198,121,252,104,47,184,125,210,72,57,221,251,204,129, +216,28,90,128,7,63,204,244,36,7,179,72,65,38,105,179,211,114,205,24,29,7,111,55,147,199,175,248,213,119,144,3,134,154,228,245,255,0,150,171,207,28,0,124,195,193,244,193,28,142,7,112,5,249,134,118,179, +12,117,201,144,96,146,51,187,22,227,57,245,200,250,241,69,70,100,81,209,174,137,3,39,50,156,123,156,42,31,234,59,96,81,64,30,62,183,51,49,249,90,44,115,210,73,14,115,216,143,177,244,31,80,58,129,210,159, +231,220,113,185,163,219,199,1,164,227,235,155,113,252,185,250,112,103,99,156,97,176,72,206,4,112,33,31,247,205,168,227,242,207,98,122,81,178,70,31,44,175,142,156,45,191,215,254,125,212,240,126,159,74, +0,136,220,74,7,31,76,6,124,31,206,2,7,169,192,3,63,133,47,218,31,169,7,160,254,25,89,121,30,214,196,240,50,115,158,61,58,10,120,142,78,50,238,199,63,47,203,142,253,14,200,135,60,142,156,28,100,247,37, +251,100,233,137,120,198,72,46,48,122,117,242,250,118,244,235,215,173,0,71,246,131,145,215,24,207,18,76,189,176,113,155,96,15,61,179,129,252,149,102,35,24,45,215,188,204,163,185,56,6,53,110,121,232,56, +239,210,165,80,248,225,25,179,156,229,177,199,124,230,46,120,31,135,32,227,188,128,55,82,138,0,61,220,131,207,175,238,9,244,29,122,117,29,48,1,23,218,91,128,75,128,50,64,23,88,7,140,231,230,133,192,247, +224,244,231,20,9,193,198,123,227,172,168,127,12,152,20,30,131,35,29,178,121,60,77,201,251,170,156,103,254,90,5,0,96,158,65,131,158,135,183,56,56,197,28,142,171,16,192,206,62,210,185,56,244,253,200,39, +183,255,0,88,230,128,32,50,227,60,70,57,231,116,136,71,39,156,129,14,64,199,97,158,70,59,212,162,225,127,185,11,125,88,17,250,196,9,255,0,235,244,24,169,134,8,224,196,125,154,118,199,183,240,0,61,128, +227,60,10,144,3,156,249,150,184,61,188,217,91,241,226,34,7,208,254,156,96,2,169,184,95,226,130,216,224,143,249,231,158,51,129,254,172,146,58,242,71,7,28,10,95,180,41,57,48,218,96,242,160,164,39,25,207, +32,148,200,245,235,159,231,87,0,24,255,0,93,111,220,124,178,206,61,178,64,183,57,35,25,200,252,51,221,225,80,158,110,32,200,28,3,35,245,231,169,107,96,125,250,246,246,205,0,84,89,34,207,49,89,103,158, +8,129,58,115,140,112,79,62,140,6,125,121,169,50,135,172,54,120,57,192,81,3,47,126,251,79,95,76,231,145,235,83,24,243,210,230,219,57,28,121,228,31,252,121,23,175,166,56,167,172,108,57,19,65,219,145,56, +227,175,78,23,249,143,78,123,128,87,13,26,142,35,179,239,247,162,182,36,253,6,194,115,207,28,115,219,165,74,175,8,59,76,118,124,127,15,216,227,63,168,128,103,215,245,35,166,101,216,71,91,164,245,255,0, +94,196,14,157,183,100,224,227,29,185,252,106,68,112,152,63,105,235,215,108,146,17,158,48,70,215,7,30,248,245,31,64,8,131,195,255,0,60,236,240,122,21,181,136,17,142,122,152,88,31,251,231,175,74,112,218, +196,1,20,12,121,225,45,225,7,142,249,16,40,25,233,140,117,227,138,152,77,187,24,157,139,116,27,77,193,239,199,33,201,25,224,224,100,99,62,156,184,201,32,25,221,43,96,157,184,251,74,231,160,234,65,231, +29,249,35,29,56,205,0,48,66,196,255,0,199,190,7,168,134,216,246,62,176,130,121,245,56,231,52,224,128,99,48,184,227,175,217,237,136,28,145,218,2,123,116,199,60,113,79,89,142,48,126,208,71,63,197,114,0, +199,39,170,175,114,49,253,41,219,199,99,48,231,248,158,115,216,115,147,133,199,57,234,0,160,6,121,45,193,216,48,217,198,109,209,49,219,157,150,164,126,120,200,224,103,146,100,16,237,25,4,14,58,8,201,35, +183,69,181,99,199,183,126,120,52,159,105,64,64,243,27,168,192,45,40,245,3,39,190,7,30,191,161,46,91,136,206,119,72,216,232,118,180,153,24,61,241,159,111,175,228,40,2,69,218,184,46,199,140,156,249,114, +14,126,130,209,70,58,103,156,243,206,0,21,46,245,32,225,151,61,201,89,198,71,60,127,199,169,244,29,113,254,44,243,225,61,38,117,24,201,56,113,198,58,128,87,146,123,99,158,252,12,83,132,138,192,21,185, +144,140,228,96,191,56,224,117,78,79,24,234,51,64,14,1,88,140,58,158,50,115,230,12,116,255,0,167,124,146,115,140,17,199,124,242,77,148,136,28,31,49,49,200,60,204,121,247,34,216,243,216,113,234,61,234,183, +152,72,35,237,50,159,171,241,207,166,73,233,211,24,231,175,168,165,10,1,220,110,37,239,199,99,192,228,109,29,184,245,231,62,130,128,52,4,92,15,223,68,15,99,139,144,63,31,244,34,14,63,250,222,148,255,0, +33,207,252,183,180,99,232,86,231,159,127,150,208,15,211,255,0,173,64,48,83,131,116,234,72,254,38,97,140,245,39,228,235,142,222,216,231,173,63,206,199,91,233,7,29,156,28,147,142,6,80,254,24,228,116,197, +0,91,16,28,157,207,102,71,3,165,202,250,158,8,179,28,103,60,2,49,200,250,200,144,32,60,139,126,56,200,107,174,217,232,13,186,253,58,243,199,106,170,183,39,24,251,117,201,207,28,54,209,211,217,56,199,110, +231,216,83,197,195,227,31,106,185,61,242,102,101,231,161,0,4,237,206,113,199,94,56,160,11,126,73,7,33,109,249,233,151,117,199,208,178,109,227,215,57,39,28,99,57,62,206,199,144,150,217,207,7,114,183,78, +228,149,32,117,246,233,192,206,51,87,237,13,255,0,63,51,145,206,1,158,81,219,174,118,119,192,29,70,61,13,2,226,227,28,92,78,71,253,124,202,51,223,160,140,116,232,50,123,115,64,23,5,173,192,32,136,237, +142,123,225,115,233,253,204,103,142,58,254,99,139,43,12,248,25,134,209,123,3,133,28,140,115,207,3,61,198,56,29,250,26,203,51,185,0,63,158,199,182,110,165,0,99,212,24,155,168,35,128,65,250,228,80,37,4, +255,0,171,147,36,99,155,233,7,124,142,150,140,115,145,235,198,71,20,1,174,34,144,129,242,89,3,223,10,14,61,248,35,160,228,228,243,199,181,48,161,4,238,138,219,254,2,16,99,167,92,221,167,234,58,253,106, +146,205,179,159,46,79,252,24,200,167,147,208,3,103,140,14,252,145,201,245,169,150,112,78,12,115,103,25,192,212,73,61,120,31,241,234,156,114,123,224,122,116,160,11,24,139,141,201,108,51,255,0,76,227,35, +191,7,23,131,57,239,212,253,123,185,76,32,127,203,161,35,0,228,68,49,245,205,240,238,78,123,231,169,53,10,203,24,25,54,243,49,28,101,181,7,32,251,228,64,70,71,35,175,110,71,38,156,46,33,24,221,102,222, +156,234,18,119,193,63,242,234,121,39,57,199,56,233,142,69,0,79,186,53,251,173,98,115,156,110,251,49,35,142,156,223,254,185,57,230,156,179,236,57,7,79,252,18,211,57,246,2,232,224,251,231,142,58,241,81, +45,197,183,24,178,114,70,14,69,235,156,115,255,0,94,163,57,237,130,15,78,157,228,23,8,126,97,101,49,238,7,219,156,122,246,251,63,81,142,185,56,245,245,0,155,237,59,121,2,199,167,83,29,168,28,158,121,251, +80,228,227,169,56,24,235,197,72,47,118,128,67,233,234,73,236,45,115,215,167,252,126,1,156,116,0,227,158,252,212,34,117,60,27,41,249,232,26,240,227,223,4,194,58,118,39,223,29,205,72,38,98,14,203,121,23, +216,221,110,39,7,7,147,24,207,30,153,239,205,0,56,223,19,128,101,177,30,131,101,161,227,142,153,189,62,227,160,250,113,64,190,56,225,237,27,142,66,165,176,206,120,228,125,184,115,200,228,12,115,212,99, +20,7,145,186,69,32,35,166,100,200,252,203,38,9,232,7,127,90,113,89,15,252,179,96,15,114,195,175,28,114,227,62,252,119,254,46,224,15,91,246,28,121,150,105,142,159,241,239,244,237,120,196,126,103,174,51, +197,60,106,18,156,15,62,215,28,19,196,32,113,143,250,120,96,61,72,193,227,147,207,72,140,18,14,4,113,224,246,50,1,142,121,39,7,3,156,231,175,94,149,31,150,196,96,172,10,121,200,222,152,61,57,56,25,231, +39,35,63,78,115,64,23,127,180,153,71,51,193,199,28,44,39,143,248,12,157,57,3,142,189,189,222,53,105,114,7,158,188,116,216,188,114,51,158,38,29,49,216,99,168,235,85,22,222,98,6,36,132,103,7,253,99,99,60, +117,198,222,58,243,223,240,52,125,138,236,242,37,131,31,245,241,40,0,113,201,37,177,248,231,208,114,48,104,3,69,117,41,14,15,218,25,129,207,67,38,125,123,79,128,78,50,121,192,238,115,65,212,92,96,139, +167,94,185,204,147,3,145,147,213,110,51,208,100,103,28,12,156,227,34,154,89,78,7,205,44,57,228,113,57,60,247,193,109,196,244,232,9,252,49,138,151,236,78,195,253,100,93,199,50,227,39,208,1,19,12,250,123, +227,156,226,128,38,55,242,17,145,115,59,118,27,101,187,32,143,248,20,253,243,158,7,62,252,96,251,116,156,3,45,207,61,139,77,206,58,12,125,163,60,158,253,241,223,131,81,27,23,199,250,213,36,2,48,36,224, +243,142,79,145,146,49,211,31,83,131,209,203,102,163,230,50,194,49,199,51,0,125,15,31,103,36,227,219,142,49,212,208,3,197,236,224,113,52,220,17,247,141,198,49,145,219,205,36,231,212,103,220,83,95,80,184, +232,101,148,251,15,56,243,233,143,48,122,243,142,125,122,98,156,109,99,234,39,133,78,6,72,156,156,30,223,242,228,217,207,208,227,25,228,245,60,133,25,2,100,56,61,4,172,64,231,60,131,96,51,211,175,99,201, +4,224,80,4,107,121,116,221,29,135,39,4,199,114,79,111,250,106,163,223,57,239,215,213,5,213,231,76,130,51,159,245,51,142,224,117,107,160,57,29,122,116,237,83,125,156,112,124,225,248,52,217,30,255,0,242, +14,254,191,141,35,65,142,124,210,65,238,76,188,99,220,217,0,115,131,199,29,123,156,208,2,121,183,196,228,20,255,0,129,66,71,211,173,209,239,234,163,249,154,140,201,123,212,136,8,35,178,124,160,245,228, +121,163,24,31,136,235,219,128,197,143,227,7,31,237,76,115,248,173,162,143,234,125,122,83,90,51,198,36,66,121,201,47,57,199,229,106,79,167,167,233,154,0,67,53,225,207,250,130,51,206,33,46,7,208,9,51,250, +245,244,57,164,19,222,224,29,144,250,127,199,184,198,71,160,222,78,125,78,122,250,98,163,100,144,96,121,208,140,100,28,189,215,56,24,232,45,134,79,61,122,250,82,252,248,193,158,0,49,198,227,122,15,190, +72,183,198,56,198,7,76,28,245,160,9,90,107,227,202,164,124,131,192,132,140,243,206,48,195,129,129,198,58,250,156,83,26,75,254,133,19,60,109,83,19,116,61,73,0,177,247,199,212,158,188,192,243,186,127,203, +123,115,206,56,55,164,103,211,254,61,200,61,14,58,145,223,190,97,107,169,23,172,240,12,240,65,91,238,153,255,0,174,61,199,175,25,193,200,57,160,9,204,151,224,255,0,168,67,216,159,44,145,211,176,39,60, +99,29,56,193,57,165,51,94,96,102,5,35,3,59,98,136,12,158,188,49,4,3,192,238,125,112,70,13,83,125,38,127,215,219,15,95,221,223,30,189,56,40,63,144,247,197,39,219,79,123,139,108,113,129,139,142,163,211, +56,62,191,224,104,2,99,113,116,63,229,217,58,156,225,145,71,227,133,97,145,236,115,237,218,144,220,221,131,197,182,62,132,254,28,8,27,32,224,243,206,61,121,166,11,213,28,25,172,201,232,63,227,225,79,65, +215,32,251,100,103,158,58,103,137,86,249,1,229,160,233,201,196,152,7,28,240,202,71,92,242,64,233,147,201,160,8,205,229,226,244,133,142,115,203,70,206,7,183,17,168,30,157,61,123,145,150,125,182,240,182, +12,89,43,215,247,46,0,231,182,64,60,241,212,140,116,226,165,251,116,57,255,0,95,108,14,122,128,192,131,158,191,42,103,215,184,227,61,122,82,253,190,2,127,227,238,33,223,11,246,146,78,123,127,169,97,192, +4,17,206,122,247,197,0,64,110,238,24,124,200,128,158,126,104,137,238,63,83,239,140,123,224,212,77,44,199,5,210,216,251,180,29,113,232,118,251,250,156,143,74,184,111,45,72,230,231,241,2,231,211,212,192, +160,145,208,14,114,115,216,82,121,214,172,192,155,151,224,240,73,157,71,191,34,44,103,175,5,178,113,233,212,2,137,155,32,133,75,126,189,161,29,126,134,44,12,123,227,61,7,74,64,249,235,229,46,48,78,97, +143,7,255,0,33,30,7,126,159,78,213,164,62,206,220,45,206,79,97,186,232,126,63,115,255,0,173,223,52,121,81,100,102,226,65,223,0,203,233,254,210,131,223,175,79,126,162,128,50,136,28,149,49,31,95,221,166, +9,235,211,201,63,168,254,98,140,100,140,172,36,96,114,4,67,147,219,155,113,140,254,64,158,164,147,90,45,20,67,39,237,18,142,223,55,152,217,244,231,105,192,57,255,0,56,53,9,183,221,210,230,82,56,56,30, +96,32,17,142,172,167,29,129,192,200,233,64,20,93,66,146,60,184,152,15,246,98,227,158,50,124,161,192,233,198,7,94,49,197,87,43,9,63,52,112,131,234,12,11,236,48,60,179,142,253,135,60,245,173,54,179,4,31, +244,169,84,112,57,18,96,227,184,27,15,60,158,112,115,215,62,144,27,4,201,2,234,114,79,39,228,147,4,116,234,200,70,56,255,0,60,10,0,162,97,182,60,136,80,145,223,205,136,99,143,65,111,234,125,113,131,159, +74,104,134,46,72,137,115,200,249,100,76,99,211,6,3,200,62,167,235,216,85,182,211,151,169,150,83,145,215,203,140,12,116,39,50,5,199,94,221,135,208,212,15,98,132,101,89,186,247,142,216,116,35,35,150,192, +200,232,0,36,246,224,26,0,140,44,107,143,220,182,121,4,249,136,51,255,0,146,223,143,24,193,199,214,144,136,207,252,178,200,29,252,224,49,207,36,254,224,116,233,146,71,56,237,145,72,109,29,115,181,163, +83,219,119,217,6,112,71,39,11,159,76,101,186,96,227,140,82,253,154,108,127,173,81,208,150,18,90,128,58,117,200,192,235,216,142,189,0,205,0,70,197,71,43,16,234,114,12,231,63,79,185,143,110,49,158,164,230, +154,229,143,72,213,65,235,150,126,188,117,194,17,143,76,254,135,172,134,25,7,6,233,120,255,0,167,155,48,1,246,199,110,184,228,158,192,96,230,154,35,124,243,113,25,193,239,121,105,159,195,145,143,254,184, +193,192,160,10,197,152,100,121,136,50,78,126,254,7,182,124,188,103,183,56,25,245,166,41,102,63,241,241,24,3,214,57,114,51,145,215,202,35,183,92,244,252,133,195,25,234,103,140,15,79,182,218,0,49,238,20, +250,142,252,142,217,205,51,10,189,102,183,207,57,221,119,108,192,231,234,167,56,247,207,110,153,160,8,179,34,156,139,165,110,248,11,112,58,14,216,140,17,248,224,142,122,246,97,150,101,231,237,29,121,229, +102,35,156,142,141,17,39,158,163,57,247,226,166,47,24,56,18,194,73,199,252,189,65,223,166,210,189,248,236,65,207,0,14,148,9,161,36,6,146,50,115,140,125,173,23,39,60,113,215,158,48,87,211,35,61,192,32, +51,202,58,221,3,207,117,152,115,244,16,16,61,242,125,169,166,123,140,252,183,8,73,31,194,210,131,219,35,111,217,241,253,114,49,214,174,153,32,198,239,49,0,227,254,95,163,25,245,251,201,215,57,235,233, +142,120,203,90,75,114,62,102,140,116,227,237,177,190,73,227,28,142,7,35,175,95,194,128,41,121,215,92,31,58,64,0,39,134,7,7,184,1,173,179,215,223,183,230,223,180,93,1,196,174,112,7,222,49,169,199,7,143, +244,83,233,219,255,0,213,96,155,44,224,136,255,0,240,38,17,235,220,14,156,255,0,94,105,158,101,161,60,149,99,206,49,115,158,121,192,0,68,123,19,235,156,99,57,34,128,35,251,108,185,229,201,199,7,247,232, +184,207,183,216,248,7,61,78,58,241,138,119,219,164,3,27,93,186,240,46,227,24,231,143,249,96,15,76,243,159,174,48,1,113,54,39,239,68,164,245,226,124,159,83,128,96,36,103,175,42,114,71,65,197,69,139,28, +147,228,51,122,102,83,208,227,174,96,78,158,167,28,250,102,128,31,246,249,7,63,100,145,190,183,128,100,118,254,12,96,244,237,140,230,162,58,131,147,143,177,57,244,205,220,103,28,250,148,35,61,50,121,237, +220,80,198,211,5,68,82,46,57,194,179,131,211,217,127,167,234,41,22,59,113,144,177,205,192,207,51,62,49,223,27,144,128,127,28,142,189,197,0,55,251,65,136,255,0,143,108,127,219,212,7,244,202,17,245,200, +228,254,33,166,253,249,197,176,199,94,46,98,206,79,80,65,155,24,250,103,185,61,106,216,142,34,126,85,113,129,128,76,136,120,231,25,249,65,35,35,240,166,152,198,73,59,128,207,247,208,140,116,238,71,30, +221,251,230,128,42,139,231,61,109,144,100,245,55,17,146,56,57,31,44,184,61,137,207,230,78,5,59,237,171,242,230,24,186,227,153,15,7,29,6,217,199,30,254,160,98,172,108,78,75,58,129,233,149,63,76,101,206, +15,94,153,207,60,208,22,30,130,76,125,89,61,49,198,79,215,143,127,174,64,34,55,100,242,35,128,14,216,51,158,216,56,197,210,143,92,244,235,211,213,198,125,195,253,78,9,28,127,173,35,143,97,120,15,183,110, +160,224,226,164,242,237,207,222,105,24,145,129,205,179,99,3,182,238,220,119,35,31,205,66,219,0,6,231,24,206,64,134,216,129,233,247,115,239,207,124,231,154,0,136,18,196,124,156,141,220,136,167,200,235, +143,249,125,236,70,6,79,28,158,188,83,194,18,120,200,207,0,136,166,252,207,250,89,227,241,252,169,195,203,31,118,118,24,231,43,29,190,125,242,48,125,125,48,127,58,120,97,140,9,165,61,57,242,109,198,121, +200,235,25,24,24,35,140,103,60,243,138,0,104,130,76,141,172,237,244,130,95,195,165,214,126,152,169,76,19,99,163,177,227,63,185,184,199,81,201,253,241,36,3,219,32,159,81,71,155,30,0,243,28,28,119,75,97, +156,241,208,38,120,252,15,229,154,103,152,160,143,223,62,15,96,176,12,19,244,140,159,126,8,234,57,160,9,214,25,57,220,143,142,192,69,57,199,95,89,193,228,100,117,231,220,211,188,133,199,40,199,61,132, +55,7,166,15,0,204,195,39,158,113,144,70,62,149,126,209,26,1,153,156,28,140,229,96,193,244,57,104,201,192,206,120,231,56,231,25,164,23,40,73,62,108,132,116,0,121,32,118,193,226,220,156,159,92,241,223,156, +26,0,182,45,209,112,124,137,7,112,126,206,253,206,73,3,113,4,146,8,207,113,197,53,173,251,132,144,15,120,0,29,123,3,215,145,128,126,163,36,244,128,204,15,33,166,32,255,0,182,15,211,254,89,129,244,199, +110,156,82,155,141,167,143,63,61,112,89,115,223,159,245,4,126,188,80,4,134,1,219,32,122,24,72,60,118,200,78,184,231,169,233,193,237,79,17,99,248,1,35,214,34,51,239,202,103,25,30,158,184,239,85,197,211, +103,59,165,24,236,101,69,250,112,98,3,62,156,30,115,238,41,226,232,144,9,105,27,211,108,145,147,211,182,21,115,128,65,35,140,12,231,138,0,152,46,8,38,52,39,158,118,224,122,114,76,68,113,156,245,28,118, +165,206,50,60,152,71,60,150,9,131,192,227,238,231,161,228,129,248,244,170,198,120,248,59,167,30,226,69,94,167,160,198,65,252,73,227,165,40,150,62,8,146,124,31,89,17,143,228,98,56,255,0,190,135,67,207, +114,1,41,97,145,136,173,58,255,0,211,60,227,31,239,113,212,117,28,122,116,203,184,235,228,91,118,60,21,7,166,63,132,55,39,32,251,117,24,28,136,124,216,199,27,231,61,70,7,148,65,252,208,14,127,76,244,56, +160,50,28,252,211,99,159,227,132,123,14,68,103,7,7,175,56,235,64,18,179,206,15,238,224,140,3,142,124,193,211,145,206,97,57,252,248,39,175,122,114,205,118,51,149,10,63,132,11,151,83,211,184,0,14,220,252, +216,250,147,76,1,123,121,216,199,57,146,50,63,244,1,200,233,199,60,113,79,70,42,127,229,166,15,28,188,29,126,141,19,113,198,72,31,134,40,1,226,226,241,79,220,24,56,249,190,221,46,113,220,109,35,29,189, +79,124,230,164,19,221,144,113,25,110,49,147,122,217,7,25,199,61,49,159,167,112,41,155,212,241,146,1,234,60,216,7,62,184,17,169,235,219,63,78,212,21,92,113,189,143,80,4,145,125,59,238,28,244,198,58,126, +20,1,39,157,122,48,124,180,239,242,181,228,156,247,61,24,99,216,247,233,237,74,46,238,248,204,49,131,220,139,201,207,7,61,63,122,123,30,223,74,174,99,7,7,203,148,123,137,211,131,216,18,20,129,215,240, +226,151,12,163,30,91,158,121,63,107,137,78,50,1,4,24,184,31,137,207,166,122,128,76,110,110,9,39,100,93,51,205,244,234,115,233,196,135,242,35,219,138,114,93,220,140,131,18,129,142,49,127,112,73,24,245, +109,221,241,219,3,223,138,140,202,84,175,238,164,81,215,229,188,183,7,128,79,25,140,246,7,167,224,105,194,228,175,34,57,206,14,79,250,93,176,3,182,121,136,129,142,231,215,214,128,38,55,23,4,228,3,238, +5,228,167,130,70,58,241,145,223,63,142,69,39,218,46,24,227,4,96,146,113,112,173,193,199,36,153,1,232,63,207,66,207,180,225,73,196,131,183,55,182,204,62,156,198,0,207,60,127,142,105,5,209,32,252,178,115, +220,79,100,6,123,18,68,64,99,158,64,199,160,206,104,2,99,52,221,177,158,159,241,240,15,232,37,192,201,63,194,72,199,110,41,128,204,79,33,115,208,131,50,28,241,215,30,112,7,167,98,50,62,188,70,215,68,130, +113,39,212,220,90,147,131,207,221,8,61,189,125,70,106,35,59,156,224,73,220,31,222,64,114,122,255,0,115,140,30,123,126,4,208,5,146,178,231,149,92,117,207,152,164,96,118,192,152,140,115,140,3,207,181,48, +110,224,241,200,57,57,67,223,31,197,33,227,158,160,245,199,181,86,55,50,253,221,164,231,57,207,217,134,120,39,169,140,247,247,62,181,40,154,86,3,14,84,123,24,142,127,31,32,128,115,232,127,14,115,64,19, +136,217,128,62,98,243,143,189,228,100,131,199,202,75,31,92,241,219,154,81,9,239,60,96,247,249,161,206,121,227,174,126,188,245,252,42,47,58,70,206,89,243,198,8,242,193,57,60,112,177,130,9,245,199,110,125, +156,90,111,249,233,38,0,31,197,219,184,192,219,239,199,30,135,35,168,4,171,110,167,147,117,131,142,131,203,207,29,50,122,243,219,28,116,207,36,82,11,117,61,110,164,56,39,143,144,15,94,238,51,158,112,71, +210,171,17,33,39,150,32,99,36,200,202,120,232,72,50,40,25,206,56,192,235,128,41,194,38,206,118,185,200,207,18,177,7,30,194,94,189,179,144,58,208,5,161,103,27,116,152,144,61,100,135,215,166,3,31,199,142, +189,121,52,130,197,73,63,190,60,118,223,3,117,231,141,204,167,211,182,125,59,83,86,60,103,247,114,115,142,12,215,0,247,201,0,72,6,73,192,238,127,19,73,181,112,126,75,145,147,252,13,112,64,35,169,220,101, +36,145,158,63,67,140,80,4,159,96,65,214,102,62,160,249,36,227,4,228,128,228,119,238,120,39,158,244,239,176,66,48,68,139,199,80,198,16,70,15,176,56,247,235,147,201,60,154,68,72,192,25,123,176,120,60,188, +223,78,20,204,8,199,63,81,219,61,108,32,132,143,191,120,49,142,68,151,28,140,156,241,231,184,192,24,36,146,115,158,7,90,0,140,89,167,4,76,160,14,187,76,100,14,122,144,20,17,235,198,113,235,214,159,246, +88,240,9,184,198,122,237,99,199,3,209,191,12,113,199,0,140,212,204,99,255,0,158,151,152,255,0,107,237,7,147,199,123,149,0,28,241,147,249,26,140,200,157,67,204,6,70,78,101,7,183,247,174,72,253,112,70,121, +232,40,1,190,66,0,49,114,248,39,212,251,103,39,126,120,30,248,231,211,20,245,0,103,23,19,183,39,160,35,145,223,153,66,227,234,217,61,135,53,31,157,14,112,102,145,115,143,238,158,114,50,6,110,73,61,122, +30,220,122,226,85,104,182,228,79,140,15,226,32,159,124,133,185,28,96,156,252,163,61,8,38,128,19,56,235,112,227,158,85,136,4,96,247,11,57,239,147,235,158,8,224,26,147,206,140,96,53,227,42,227,56,2,82,7, +110,54,203,156,244,206,122,112,1,3,52,195,36,106,70,47,151,29,131,36,190,157,50,38,3,4,100,255,0,119,175,56,52,198,154,34,121,190,135,39,61,20,147,223,35,6,224,96,228,140,113,159,195,52,1,48,185,182,192, +205,230,238,156,17,114,79,95,105,185,61,59,31,211,149,23,118,163,36,221,69,199,0,52,55,76,78,9,236,204,71,94,131,61,234,33,44,96,113,123,25,25,232,200,163,211,158,102,7,212,103,242,224,83,214,229,23,165, +205,185,200,227,5,7,124,118,156,158,248,0,251,140,154,0,152,93,219,31,187,119,8,200,224,125,154,225,112,61,120,112,79,39,140,0,77,47,219,173,137,25,190,135,176,25,183,185,24,252,230,25,247,198,122,254, +112,139,149,7,63,104,182,3,158,178,47,39,223,50,19,250,224,250,83,190,208,141,140,207,103,219,248,147,166,58,146,100,31,204,251,80,3,218,246,219,60,94,90,156,100,31,244,121,200,24,255,0,122,86,233,158, +79,210,151,237,176,30,62,217,99,140,128,51,109,33,39,161,233,156,253,122,251,142,105,235,115,16,24,51,90,131,208,237,146,35,215,219,205,239,232,9,247,169,132,200,121,243,96,218,64,193,18,128,113,235,149, +151,244,29,240,61,77,0,48,220,218,31,189,119,166,142,195,125,148,204,70,72,31,220,110,50,123,31,212,210,249,214,167,165,214,150,221,7,26,109,227,31,252,118,220,129,248,31,161,198,77,73,231,133,24,221, +6,49,159,190,24,158,128,117,98,188,12,126,56,199,188,130,224,19,203,69,219,248,163,63,66,1,97,223,35,129,216,224,158,148,1,84,201,8,192,75,141,32,228,247,210,239,243,239,247,108,216,250,113,233,131,158, +130,158,36,227,2,109,45,65,224,149,210,175,178,125,1,63,99,4,142,199,145,219,241,178,37,35,59,94,44,243,208,68,49,248,239,3,223,36,127,133,35,74,195,131,53,186,116,206,94,48,127,71,57,35,233,129,130,79, +78,0,35,14,135,173,198,156,78,56,206,159,114,189,113,199,207,102,49,158,59,224,254,20,252,142,162,227,75,3,208,217,77,199,61,72,251,49,207,229,239,143,72,204,128,228,139,139,113,211,24,40,220,158,252, +176,228,253,71,233,76,14,138,14,249,224,7,174,64,94,71,63,244,212,245,253,123,224,208,4,225,3,17,251,237,45,177,198,62,197,48,57,30,223,96,36,158,157,219,167,62,206,17,41,56,45,166,158,132,237,178,184, +57,207,76,15,236,213,199,215,61,184,61,72,169,230,192,160,159,180,197,159,105,17,6,61,241,40,206,121,207,94,167,220,212,79,45,185,255,0,151,177,146,79,11,114,157,126,166,98,125,128,232,7,74,0,209,242, +176,56,91,94,79,85,177,186,99,192,56,206,219,33,142,184,200,231,129,81,20,112,216,83,109,142,224,89,223,134,56,28,100,253,153,72,0,241,140,142,190,156,214,99,61,190,115,246,214,29,112,162,104,219,56,57, +227,51,116,235,146,62,188,247,99,180,4,12,222,114,120,59,101,131,167,124,102,85,36,254,36,140,250,1,128,13,66,179,0,7,250,50,251,152,174,134,123,131,134,135,235,193,61,177,235,72,203,49,0,25,45,187,142, +33,148,19,199,127,147,167,177,199,160,24,34,177,74,65,128,126,219,47,78,130,75,80,122,243,255,0,47,4,3,201,237,143,64,71,20,221,150,248,201,186,152,159,83,61,169,224,115,206,91,35,176,251,160,99,185,206, +104,3,100,64,221,76,208,143,111,34,64,121,62,200,122,242,56,61,112,125,50,52,50,227,2,75,124,14,65,16,187,28,243,220,168,39,219,211,29,248,7,27,116,3,129,52,135,232,208,28,253,0,0,112,15,76,244,207,76, +212,169,36,93,124,203,140,114,57,150,221,122,14,217,153,127,76,14,195,154,0,190,99,184,29,39,133,57,233,228,200,167,60,115,204,109,248,224,140,12,117,233,77,217,56,206,110,83,28,227,108,12,196,96,112, +79,202,167,166,48,7,66,49,201,170,155,226,251,203,45,200,207,111,54,221,137,245,63,235,201,244,254,189,13,38,21,177,134,152,175,108,249,45,140,245,200,23,32,30,121,198,7,167,24,160,11,44,103,206,126,212, +227,167,252,186,48,95,79,239,15,127,199,169,233,76,99,63,123,193,145,211,22,237,193,250,135,35,60,119,36,250,115,80,121,64,142,179,224,140,113,12,7,183,168,186,233,220,113,142,120,235,71,148,184,226,78, +135,144,109,237,193,28,247,34,232,159,110,188,244,231,184,4,202,39,231,55,65,135,61,33,140,140,242,48,11,6,228,247,231,167,94,77,49,146,227,254,123,177,3,28,8,45,199,7,176,37,50,123,18,78,123,122,211, +60,181,237,41,250,8,35,56,30,184,91,174,189,176,14,61,249,160,133,31,198,56,227,155,105,0,207,61,118,92,55,60,28,224,241,233,197,0,48,172,128,125,231,227,60,152,97,30,189,132,109,198,6,122,231,173,51, +47,219,115,96,144,73,133,1,29,121,3,201,193,231,176,61,127,89,11,129,146,68,100,244,24,181,152,159,64,48,46,51,199,83,234,126,181,27,109,234,202,195,211,22,247,24,35,143,91,165,25,228,244,207,28,147,232, +1,11,43,100,134,86,233,255,0,60,81,78,6,113,140,0,122,96,99,28,245,201,20,158,91,55,72,89,198,56,59,0,253,2,255,0,79,199,165,60,180,124,128,24,17,255,0,78,243,147,249,125,165,135,208,243,199,165,48,161, +35,57,92,115,195,91,78,172,120,244,18,31,161,231,131,140,116,160,6,48,96,63,227,204,3,254,217,199,227,247,65,244,25,228,117,252,25,178,82,216,54,80,242,115,213,78,121,234,1,7,142,184,60,103,166,123,21, +218,65,192,117,92,116,219,5,193,237,220,249,184,199,60,126,67,20,210,31,254,123,46,50,112,12,115,46,79,191,205,206,59,227,159,113,64,19,8,220,3,254,129,17,56,35,56,83,129,248,47,228,63,159,64,84,123,220, +30,37,28,103,27,62,208,49,216,129,137,87,167,0,231,168,231,32,113,69,0,121,198,230,228,137,20,18,56,200,139,140,30,126,93,202,7,167,175,94,7,90,110,102,25,43,42,103,128,112,145,103,143,92,56,247,244,237, +244,171,102,105,136,201,91,177,232,4,234,14,48,113,144,169,207,174,122,113,200,168,217,216,159,153,46,137,3,144,110,28,19,207,61,17,184,246,32,240,64,4,80,5,66,103,61,100,70,199,98,49,249,237,184,81,158, +189,69,10,215,28,2,168,125,14,3,99,61,243,246,163,250,99,36,242,106,215,152,135,131,21,209,198,73,255,0,73,126,221,71,54,228,254,68,122,99,129,75,187,57,196,55,44,8,234,110,219,191,174,109,48,6,125,71, +31,128,52,1,88,139,150,234,169,131,143,224,32,126,27,110,127,17,199,96,51,138,54,78,122,164,92,30,241,73,250,102,224,254,64,246,235,208,25,247,18,8,48,92,144,56,226,236,115,131,239,110,73,3,244,199,74, +96,70,36,98,43,144,9,199,252,125,191,78,131,129,30,73,252,61,0,160,6,136,228,200,253,196,36,156,240,80,128,120,198,64,51,227,62,189,177,158,157,151,202,127,249,227,10,131,199,220,79,175,241,77,235,223, +63,175,20,253,178,46,127,119,48,7,159,154,229,219,3,232,209,14,131,185,247,239,76,253,254,114,20,18,63,233,188,100,255,0,227,197,121,207,98,58,243,154,0,97,138,76,255,0,169,137,143,177,140,12,118,192, +243,142,78,71,167,79,173,74,17,199,5,84,122,13,177,245,199,82,75,54,58,245,227,61,113,73,251,238,11,34,15,118,152,15,204,43,129,131,216,156,228,116,35,57,17,48,221,252,48,18,15,83,40,57,61,248,220,217, +227,241,28,253,104,2,101,86,224,109,95,83,144,131,31,147,15,175,76,117,3,61,172,44,103,214,49,147,201,223,2,254,56,36,227,31,151,212,243,89,193,194,183,11,106,50,57,218,67,31,78,70,245,35,63,128,199,65, +74,29,9,203,8,151,143,238,176,57,244,31,189,60,142,58,48,198,6,51,64,26,37,20,17,254,144,128,245,229,160,32,123,2,6,61,123,231,129,211,154,93,137,206,111,57,224,225,94,219,7,220,147,144,57,56,57,231,175, +181,81,243,45,243,146,209,227,161,99,27,28,118,239,46,72,234,61,143,208,102,69,146,205,113,153,162,3,61,124,185,142,50,125,4,164,125,0,227,245,160,11,155,80,240,111,8,3,213,173,56,207,226,15,98,113,232, +7,4,26,81,12,71,31,241,49,11,255,0,2,179,206,7,124,100,159,97,248,85,113,53,135,39,207,66,59,98,41,177,140,244,193,148,158,189,14,122,28,147,201,167,45,206,158,122,204,164,31,250,101,48,31,137,243,24, +227,29,128,231,62,212,1,51,69,1,35,254,38,25,7,129,134,183,252,190,80,125,49,130,6,59,100,102,158,182,118,237,255,0,47,108,216,4,12,24,137,245,207,42,122,246,227,215,61,0,164,89,116,190,187,208,159,80, +151,68,96,227,178,131,250,158,113,199,188,162,93,36,17,153,80,100,119,142,239,242,249,136,3,60,30,135,24,234,40,1,191,217,176,30,126,211,146,121,25,91,124,142,14,114,48,184,244,235,250,83,211,78,139,57, +251,78,64,56,56,88,49,193,25,207,223,0,118,255,0,245,115,50,75,165,117,18,160,0,99,238,222,96,228,246,1,192,199,57,244,239,222,173,36,186,97,231,205,92,119,200,189,29,61,67,74,123,247,61,9,24,20,1,71, +236,81,241,251,220,242,49,251,152,37,200,244,3,202,199,94,50,49,223,145,222,101,180,80,126,93,231,177,34,210,5,237,147,140,68,64,239,243,100,158,106,230,253,52,28,137,160,207,95,154,89,135,225,243,54, +122,251,140,227,219,52,225,61,134,114,37,182,221,220,249,147,100,227,190,85,185,252,251,231,234,1,0,178,3,24,82,65,199,223,183,140,14,58,253,216,57,235,212,227,190,115,79,91,33,158,86,223,219,108,65,79, +208,228,2,126,156,243,215,181,77,246,187,80,113,230,66,70,71,221,107,150,245,198,119,49,31,161,28,245,167,253,174,18,127,214,64,157,62,243,79,215,223,130,58,117,231,129,198,40,1,171,111,180,31,221,196, +222,191,37,185,63,170,22,233,143,127,92,156,212,130,54,37,127,209,211,3,24,219,111,15,7,168,249,188,182,237,206,8,25,237,154,5,212,67,57,158,213,177,208,239,147,167,212,140,251,125,59,224,226,148,93,198, +189,46,173,199,184,102,193,233,212,16,49,254,121,192,228,2,80,164,103,48,129,212,255,0,171,140,99,56,234,48,48,56,207,110,63,10,126,226,49,184,168,0,227,132,94,7,24,192,30,131,169,201,235,140,30,149,16, +190,140,159,248,250,181,207,253,119,117,0,241,232,167,223,158,112,71,94,41,226,243,63,118,230,28,140,12,45,203,30,15,0,253,207,192,119,233,220,230,128,39,85,70,4,238,29,58,148,139,146,120,7,230,65,206, +115,212,158,156,250,83,196,81,159,249,108,188,246,17,219,140,159,76,147,142,15,36,103,215,168,24,168,126,223,42,12,27,152,199,31,243,244,217,32,247,32,71,158,164,243,215,142,185,205,56,106,114,228,98, +237,14,127,233,230,115,208,227,10,60,156,123,131,156,10,0,119,144,167,254,91,168,239,146,209,126,60,1,143,203,62,131,173,32,182,79,249,248,28,245,1,147,29,8,233,144,15,255,0,171,211,21,32,212,166,60,249, +185,206,49,139,153,114,71,212,199,183,249,117,239,82,46,165,32,206,38,65,234,26,114,115,255,0,144,135,168,24,247,235,154,0,129,32,76,156,92,73,211,156,20,199,3,29,4,163,128,122,1,159,124,224,26,144,91, +198,127,229,238,80,49,213,119,46,72,207,247,101,95,195,158,191,164,159,218,14,122,201,9,235,128,103,127,92,231,1,84,142,127,0,70,59,96,72,183,197,127,134,216,251,238,147,175,185,206,123,30,78,59,156,138, +0,143,236,113,54,9,190,110,56,249,166,153,127,51,246,181,29,242,1,198,122,14,57,165,251,2,28,237,212,122,145,140,92,92,31,76,100,27,227,158,156,250,231,184,171,67,81,144,156,121,80,176,62,146,191,35,167, +118,63,129,254,88,230,117,187,115,207,217,161,28,100,159,62,60,246,234,24,28,227,166,121,253,40,2,136,211,144,224,125,176,177,232,127,125,115,207,96,127,227,231,4,254,60,117,244,204,191,217,255,0,119, +23,4,175,56,38,226,241,115,245,43,116,9,56,201,228,131,144,126,181,105,174,143,123,72,15,169,102,140,131,233,243,121,68,113,244,36,145,143,106,81,123,30,66,253,154,212,28,245,38,53,231,142,230,48,184, +199,174,62,131,176,5,63,177,20,60,202,8,35,248,175,53,28,30,51,140,11,192,49,146,7,28,116,169,82,215,60,22,66,79,31,235,245,54,193,25,56,230,243,142,115,128,70,51,218,174,173,196,60,19,107,107,207,7,111, +217,216,100,146,57,12,6,62,160,241,199,29,169,198,116,57,255,0,69,183,3,183,22,231,39,7,61,87,191,182,114,9,35,181,0,64,32,85,0,114,121,35,137,53,63,207,38,233,128,198,120,7,241,21,97,45,208,143,245,108, +71,175,157,168,119,207,65,231,158,249,60,125,121,160,72,135,31,232,176,177,198,14,4,88,237,193,202,46,79,249,207,36,212,202,203,212,89,193,216,128,4,36,224,122,228,96,119,233,145,64,13,22,209,131,254, +169,136,207,121,181,33,233,199,202,224,227,29,121,63,142,104,16,196,15,16,55,94,210,106,67,159,198,66,58,244,57,111,173,89,243,65,31,241,231,17,235,209,162,92,147,158,254,89,28,113,201,207,214,154,64, +39,38,202,34,220,245,120,216,117,228,113,110,122,113,237,236,59,0,53,98,28,1,111,63,61,196,186,134,63,60,31,126,73,246,197,76,17,84,228,67,48,35,61,102,190,92,250,242,195,211,223,6,161,42,185,0,88,65, +158,122,49,207,182,2,192,6,51,216,31,233,81,114,15,54,80,142,252,60,171,211,167,88,128,7,35,143,76,112,70,104,2,240,3,35,139,129,158,163,237,23,74,114,121,228,110,206,49,192,227,0,231,131,193,167,133, +206,48,151,121,39,35,55,23,164,131,236,119,119,231,147,158,49,239,84,66,200,217,31,98,143,29,14,101,144,100,99,254,185,55,229,238,50,123,148,242,100,36,255,0,161,69,140,31,189,43,227,25,233,254,172,99, +166,70,0,226,128,53,144,50,231,11,118,79,61,110,110,128,193,244,59,115,237,201,231,235,154,86,50,183,252,179,186,32,96,127,199,205,199,29,186,152,201,252,115,207,61,69,100,27,87,57,31,101,132,117,231, +205,155,3,216,31,44,156,125,6,59,119,200,127,216,110,14,8,142,17,239,186,83,159,111,248,247,36,245,56,7,168,207,106,0,209,34,110,166,43,156,100,255,0,203,123,190,125,1,194,99,212,16,61,9,56,168,75,77, +156,253,158,97,142,71,239,110,88,129,158,227,203,3,0,243,211,62,254,180,254,193,112,79,40,167,29,192,145,186,122,131,8,60,119,227,62,189,232,22,19,18,112,163,240,141,206,79,63,222,76,117,62,132,242,123, +208,5,131,246,179,210,222,83,206,56,107,131,158,253,5,187,103,215,161,231,140,208,13,194,240,240,92,1,192,35,51,231,7,191,54,170,8,233,199,160,252,226,93,62,244,125,213,200,192,193,48,18,56,247,11,233, +208,140,122,30,121,10,44,181,5,60,54,211,219,253,25,137,36,228,224,102,18,56,237,143,233,64,18,25,165,29,32,155,30,230,225,125,241,242,218,224,246,250,17,140,117,168,154,105,177,147,107,33,60,96,22,185, +56,199,160,22,156,245,206,65,29,253,48,39,72,53,0,72,61,115,212,89,72,1,224,250,91,224,143,92,30,159,157,56,193,169,14,228,17,198,77,148,160,125,56,183,110,7,61,27,159,65,64,20,141,197,198,120,181,32, +116,193,107,161,156,31,123,108,126,184,238,123,138,107,220,92,145,197,171,228,158,161,238,127,60,253,157,123,30,135,235,219,141,37,135,84,4,18,224,99,24,31,97,155,245,255,0,68,124,250,99,61,122,130,50, +41,64,212,84,14,85,186,99,117,140,164,253,1,251,22,123,123,99,219,173,0,99,121,247,57,249,162,101,200,29,90,232,15,199,247,35,29,123,17,220,115,154,22,105,241,252,92,103,159,244,156,113,206,62,104,79, +61,178,114,71,191,109,119,125,64,16,90,52,62,187,172,238,215,234,126,91,67,235,232,48,70,62,141,243,111,73,24,142,221,120,234,214,215,231,25,224,158,44,91,7,255,0,173,156,80,6,111,157,112,56,27,179,206, +112,242,140,113,220,253,148,246,206,125,14,58,26,81,52,184,232,221,242,76,239,215,39,61,109,126,188,156,115,140,122,86,153,107,252,100,139,46,223,242,199,80,94,159,247,15,3,215,160,193,60,114,106,31,58, +235,163,27,28,175,76,69,168,231,166,112,51,97,143,199,175,228,40,2,160,153,201,251,203,239,251,233,58,247,231,201,3,140,231,24,232,14,7,106,92,204,192,141,208,145,142,243,92,228,129,235,136,176,125,251, +251,226,173,125,170,224,112,126,199,156,30,145,94,146,79,76,255,0,199,176,232,125,122,12,28,129,140,134,230,124,17,190,200,112,9,15,29,231,92,96,231,106,175,111,65,200,0,116,224,0,84,30,113,63,43,66,15, +253,116,185,254,176,127,250,169,118,206,115,204,71,174,70,233,177,142,48,112,208,140,31,97,235,207,53,49,158,112,113,230,233,170,7,253,50,212,24,99,182,10,196,121,200,35,29,176,122,211,30,226,81,195,77, +167,241,157,216,181,191,35,28,245,102,65,208,28,131,255,0,215,20,1,22,37,231,62,64,227,188,146,1,237,202,198,51,216,159,234,121,167,133,36,114,176,156,228,124,179,76,50,15,184,219,140,247,193,255,0,10, +136,221,55,56,154,199,168,233,5,240,39,183,67,30,125,62,152,239,75,246,146,188,153,173,50,121,32,219,221,143,92,96,152,59,28,115,159,127,106,0,148,42,231,30,68,68,103,56,243,110,48,9,30,190,104,39,62, +221,199,65,201,48,186,169,192,22,240,12,158,210,223,28,114,49,255,0,45,185,60,125,121,35,4,117,95,180,22,234,240,145,254,204,87,4,245,228,124,209,47,39,143,79,126,188,68,215,113,131,200,82,65,61,34,147, +35,130,58,24,207,57,245,193,207,61,168,0,49,129,146,35,85,39,131,176,234,0,156,103,128,68,199,63,95,83,236,41,133,24,244,143,104,236,12,218,152,231,185,192,153,78,61,112,8,24,20,243,116,172,1,84,115,254, +236,19,31,110,201,248,131,158,122,247,168,205,209,60,121,83,119,225,45,231,60,123,130,167,223,35,156,113,211,184,4,68,48,233,30,78,127,134,109,71,57,207,95,158,110,72,250,18,57,199,160,136,163,158,76, +121,246,243,110,216,128,50,71,252,182,200,247,32,130,63,74,156,220,144,56,134,235,29,114,34,117,32,112,122,109,97,223,208,119,239,192,103,156,204,127,213,106,29,59,91,146,57,61,121,64,63,62,120,237,212, +0,66,99,102,5,153,49,158,185,123,230,56,239,192,115,140,251,103,243,52,223,41,0,200,85,24,227,174,163,145,215,176,39,56,199,79,194,158,88,147,204,87,249,25,198,98,113,216,158,126,65,129,255,0,215,199, +186,31,59,3,17,95,129,140,13,176,204,195,243,1,72,253,113,235,232,1,11,68,58,133,3,25,35,43,123,219,142,172,59,30,113,128,125,120,168,76,36,100,41,25,199,113,54,51,244,101,4,255,0,245,255,0,26,153,196, +252,254,230,248,231,174,109,167,92,156,245,229,192,39,29,248,3,176,166,21,187,199,17,222,175,60,98,43,142,7,56,4,9,199,24,236,61,120,231,20,1,16,141,193,193,147,29,191,213,177,192,62,187,135,7,159,124, +243,144,57,164,242,159,166,245,35,212,161,252,56,13,219,191,61,251,224,18,242,183,141,146,82,240,99,31,49,134,227,130,58,28,9,199,57,60,156,240,123,250,179,203,188,36,231,237,61,115,204,23,24,4,244,201, +107,163,237,158,160,103,29,40,2,39,142,81,156,20,99,215,2,54,224,115,129,254,176,250,12,224,12,250,113,81,52,19,30,128,131,142,118,171,2,72,207,82,31,142,1,252,125,56,171,152,188,232,60,252,12,127,13, +200,3,191,69,159,168,207,24,244,239,76,97,123,131,130,121,206,55,125,177,187,156,227,247,248,39,57,207,76,227,3,60,138,0,168,176,202,48,112,78,122,227,206,66,123,245,18,175,176,231,190,122,145,72,209, +191,80,141,220,125,235,134,201,60,142,151,4,19,198,50,125,106,86,75,212,35,33,61,78,126,220,158,135,230,38,237,120,227,159,199,4,242,3,73,186,57,202,68,14,79,204,191,109,97,211,222,252,12,227,175,81,158, +113,222,128,32,97,113,128,66,202,6,115,247,231,3,183,39,253,35,145,233,145,219,232,106,50,178,246,50,3,142,8,105,71,60,250,51,113,159,229,212,246,178,103,156,12,31,47,56,35,253,85,214,58,147,212,234,28, +31,79,151,147,158,122,211,90,121,143,83,6,61,10,206,190,188,255,0,199,233,39,60,251,251,80,5,63,223,140,143,50,67,199,121,174,71,174,8,192,32,240,49,145,208,147,223,171,25,102,39,4,74,75,115,205,197,222, +58,245,36,167,31,128,201,231,182,113,127,207,144,117,146,223,24,207,250,187,130,61,114,115,125,212,228,254,61,112,5,52,204,224,241,53,178,243,247,140,50,96,227,147,207,219,135,83,211,175,29,250,80,5,15, +46,108,224,172,131,254,219,220,54,125,249,140,228,127,129,226,148,69,42,156,252,248,244,50,179,113,142,152,48,147,206,120,57,207,76,30,43,64,92,72,51,254,145,0,192,235,178,111,81,215,23,141,129,212,117, +235,131,210,163,107,169,79,6,234,5,227,178,74,115,208,30,183,71,191,29,59,125,104,2,161,59,72,0,243,147,247,254,97,198,57,255,0,82,125,62,158,188,10,99,190,62,82,241,41,61,70,17,115,215,168,107,118,207, +113,206,122,116,198,69,91,51,73,140,141,66,216,113,143,245,77,159,95,249,248,200,244,233,159,210,144,77,42,156,127,106,219,130,120,255,0,82,196,224,250,159,56,247,227,159,195,142,104,2,146,204,20,125, +248,135,92,129,28,25,60,245,201,177,57,62,156,243,212,119,167,11,128,112,26,88,134,14,50,86,1,158,135,156,88,129,128,61,49,212,1,237,112,79,112,15,26,165,175,78,241,190,209,235,159,222,143,168,233,206, +121,193,197,40,158,237,250,95,89,182,49,252,4,118,227,147,33,193,252,7,79,81,154,0,174,110,70,48,38,183,39,61,214,16,56,255,0,104,91,158,199,158,49,192,39,189,61,102,7,157,214,251,186,253,216,51,248,127, +163,250,243,142,188,244,206,77,73,254,152,220,155,219,79,79,188,65,31,129,144,255,0,47,79,90,82,183,157,239,173,48,56,229,148,142,125,126,102,207,32,231,241,239,212,1,22,116,80,3,73,110,7,56,202,196,122, +245,229,97,207,160,199,249,14,51,6,224,77,7,108,126,237,115,144,79,32,136,51,223,191,80,57,244,166,175,219,129,195,94,89,227,158,75,114,7,177,35,62,128,114,113,219,167,14,111,181,114,5,245,162,156,246, +0,228,140,231,239,14,115,223,216,115,64,9,231,96,129,246,155,113,235,130,83,158,123,108,24,56,61,56,35,57,61,72,163,112,126,126,217,0,201,233,231,159,167,86,92,125,71,255,0,170,162,104,110,137,7,251,66, +219,175,66,87,167,29,132,67,29,248,207,56,7,35,53,17,142,96,72,55,22,143,142,167,39,57,234,56,85,32,28,31,97,250,228,2,214,115,192,186,86,231,254,126,31,167,190,16,119,7,25,235,211,140,98,145,151,35,38, +117,231,29,101,152,3,206,7,32,113,146,115,158,62,163,138,172,81,128,230,91,114,79,28,70,204,123,123,99,31,92,119,200,233,74,8,32,169,104,142,63,233,138,145,156,122,21,61,15,190,49,192,62,128,18,249,99, +24,47,23,3,145,230,202,15,108,115,230,169,227,156,228,103,24,231,130,42,63,41,14,14,21,177,199,19,73,199,79,89,14,71,183,203,249,113,81,149,143,145,251,145,193,255,0,150,112,129,199,92,226,35,142,157, +73,227,158,113,154,96,10,50,126,78,252,136,226,0,30,59,152,185,199,0,80,5,175,42,48,55,124,188,14,71,153,39,215,251,216,232,49,215,52,195,12,12,58,237,25,227,37,216,119,228,147,38,56,231,177,239,158,188, +87,46,6,0,192,29,6,216,225,193,35,61,114,23,235,242,240,7,166,70,0,225,79,40,217,56,227,101,184,238,59,23,206,73,192,207,229,207,52,1,100,91,67,156,177,4,158,251,164,7,208,156,137,6,59,247,30,152,198, +106,83,107,11,96,0,172,64,198,50,236,122,118,30,118,115,232,64,207,81,207,25,161,189,249,34,2,192,244,200,181,228,103,158,11,168,231,161,57,252,185,169,146,71,28,27,1,158,58,37,145,206,49,216,220,142, +122,243,206,59,80,5,145,101,129,242,196,140,123,3,19,158,59,100,153,135,56,207,126,15,225,82,11,12,255,0,203,180,89,56,193,49,14,189,123,204,51,142,135,234,122,117,166,199,44,216,249,108,177,199,252,242, +179,199,28,115,155,208,49,215,243,244,167,23,152,96,139,37,3,161,37,116,229,61,199,0,223,147,219,142,70,65,206,64,232,1,42,217,50,158,45,161,207,180,113,2,57,193,82,126,210,184,231,161,233,223,131,86, +86,206,99,128,45,212,224,122,68,61,198,79,218,92,0,122,12,103,211,168,34,170,3,49,31,53,140,100,1,158,186,118,120,233,128,53,12,122,240,51,159,210,148,52,199,173,148,96,118,0,105,227,167,175,252,76,70, +123,103,32,231,211,138,0,187,246,59,163,255,0,46,209,143,175,151,145,234,56,152,96,241,207,35,130,71,97,77,251,21,208,228,218,198,115,254,194,176,29,187,92,14,7,92,158,152,231,4,243,92,77,34,96,11,96, +164,30,126,93,60,142,167,63,118,252,251,119,193,30,164,83,141,204,167,143,179,199,215,146,97,178,3,232,8,189,237,236,59,143,74,0,176,45,110,134,236,90,196,123,243,24,7,56,232,63,210,113,219,212,30,220, +147,194,125,138,227,3,54,113,130,123,132,126,73,25,207,23,184,39,175,65,201,237,200,204,31,108,100,36,27,91,81,219,47,21,169,206,7,28,139,172,140,253,65,207,83,222,151,237,5,250,193,105,211,180,81,112, +114,58,143,180,237,254,99,131,205,0,73,246,73,148,141,214,81,183,110,97,151,191,94,69,201,60,126,61,78,115,197,56,194,70,127,226,95,1,199,4,24,231,24,63,237,98,117,254,121,192,239,206,107,180,160,15,245, +112,46,112,112,22,32,48,113,199,14,195,175,61,73,246,206,106,51,43,115,145,110,184,7,31,50,40,234,79,57,29,199,95,240,20,1,103,203,110,214,54,203,193,200,41,115,215,142,187,46,199,94,157,120,30,189,228, +242,229,110,126,197,108,7,56,34,59,245,3,39,175,23,140,164,123,129,219,3,175,20,150,96,122,52,88,237,182,108,17,142,70,54,169,239,223,160,7,167,122,121,117,207,44,152,25,227,206,118,31,129,218,15,249, +24,207,56,0,156,193,32,57,251,37,176,30,190,93,247,95,98,110,20,18,122,228,31,112,40,242,100,111,249,117,183,206,73,24,142,239,140,127,219,217,30,132,145,140,30,181,16,116,239,34,174,71,252,252,17,130, +79,25,220,185,255,0,199,123,119,165,45,17,35,247,136,121,60,155,204,19,159,92,5,30,252,142,63,80,1,39,151,34,100,24,32,28,240,113,114,184,62,191,241,248,71,215,250,84,44,179,17,145,12,35,211,13,57,62, +253,111,125,199,29,123,241,205,72,191,101,57,4,198,199,28,1,124,128,240,113,144,15,7,61,58,31,98,77,56,44,39,133,84,30,226,246,16,122,245,206,15,62,135,129,200,228,99,36,2,177,89,215,145,12,56,231,254, +90,78,0,231,176,55,36,131,207,28,254,124,82,135,187,192,30,92,96,1,130,5,196,232,127,47,180,241,199,126,216,29,106,114,177,130,14,229,233,222,254,216,159,78,164,130,113,131,207,110,59,244,65,36,59,176, +100,135,223,117,245,175,248,227,31,136,234,125,78,64,27,186,237,127,229,164,96,19,130,4,242,17,207,99,254,158,9,30,197,70,71,60,142,168,30,96,71,239,130,242,62,236,179,143,204,139,166,207,225,223,160, +169,55,218,245,50,91,177,193,192,23,186,123,122,227,25,153,78,127,34,115,208,113,78,15,1,0,1,9,25,255,0,159,155,0,191,250,52,142,135,252,226,128,35,47,33,201,243,193,35,24,253,252,222,253,204,196,158, +121,235,255,0,214,21,166,254,41,56,227,165,205,214,15,167,2,110,216,207,28,14,49,82,6,180,201,12,45,120,61,126,215,167,247,206,57,243,121,233,245,36,208,94,208,228,255,0,162,143,64,111,172,0,238,72,226, +86,244,237,232,57,28,224,1,160,184,201,243,149,121,237,61,247,65,159,73,113,193,30,185,206,71,97,137,3,231,143,180,161,237,134,146,253,129,201,224,114,196,17,236,127,46,42,31,50,215,32,109,181,201,192, +226,238,208,243,255,0,127,120,28,0,59,103,212,131,78,38,6,232,214,171,219,254,63,45,115,158,227,2,82,78,7,176,235,210,128,44,109,3,172,177,16,59,143,182,142,223,222,195,96,228,227,129,208,224,154,149, +93,83,159,58,49,206,126,245,230,15,92,131,251,176,115,207,176,234,112,114,113,72,121,4,115,45,182,49,146,62,215,31,3,105,57,56,147,24,62,231,184,3,0,138,112,75,62,51,37,187,244,224,92,196,58,245,201,50, +145,131,198,71,231,233,64,26,43,60,125,238,34,247,253,229,215,161,233,251,188,12,142,71,191,111,86,180,202,112,62,213,17,200,3,150,186,0,14,188,145,111,215,60,103,57,198,48,42,167,151,106,71,15,110,56, +28,9,237,178,1,30,228,142,221,201,207,106,4,113,2,118,188,60,100,100,92,219,247,231,140,3,249,19,142,120,160,11,203,56,92,129,113,7,61,140,215,56,199,81,195,66,79,108,99,185,207,97,79,51,47,241,75,106, +121,206,3,204,164,245,193,200,80,72,227,158,128,158,189,106,151,149,3,0,12,208,112,114,73,189,183,28,30,163,5,91,39,215,25,30,216,167,44,48,224,237,158,216,16,78,49,115,9,198,61,213,123,116,250,103,185, +56,0,186,46,98,0,102,91,126,228,17,51,144,78,51,209,136,39,29,14,51,156,156,142,180,191,106,140,131,254,147,14,59,98,89,54,254,3,112,83,193,198,58,140,85,51,18,100,102,123,112,122,15,223,64,71,3,56,1, +144,114,72,252,206,126,138,177,46,56,150,28,143,246,237,199,229,128,6,15,115,158,252,2,15,0,22,150,230,15,249,248,136,224,118,150,101,31,158,15,7,29,143,184,28,96,168,185,136,176,83,113,10,228,247,185, +153,113,255,0,125,46,58,123,227,39,175,97,87,99,113,251,200,91,174,127,121,27,30,248,28,112,63,3,219,222,156,84,39,83,111,207,66,94,19,142,61,113,158,51,142,160,122,100,224,144,11,98,226,16,79,250,100, +13,147,198,102,114,188,19,142,64,110,228,247,29,201,61,194,249,202,121,23,80,224,130,70,37,206,122,116,202,118,228,242,72,228,1,210,170,111,227,27,237,113,146,50,36,69,254,92,117,244,4,224,231,61,41,202, +204,7,18,218,49,231,143,57,242,51,201,35,105,81,140,242,70,63,159,0,22,22,118,206,126,211,17,3,178,200,51,128,51,142,23,146,58,115,156,247,226,166,251,67,177,31,188,192,0,131,254,145,25,207,126,241,182, +79,183,94,164,117,170,102,70,231,112,180,97,193,7,204,184,97,215,168,196,153,25,235,198,49,143,74,64,237,247,130,89,174,50,50,141,119,156,250,147,230,130,122,247,0,115,142,113,64,23,188,254,159,233,50, +38,115,194,207,24,25,28,227,136,243,199,211,39,57,61,233,12,234,188,155,230,231,128,12,136,121,29,7,250,145,233,215,215,235,84,154,225,128,251,208,241,254,213,208,29,189,102,94,252,158,157,58,245,195, +69,212,188,16,240,99,146,9,146,227,142,189,54,205,156,156,250,117,39,222,128,52,62,215,24,31,241,252,248,61,196,177,175,254,58,96,7,63,143,227,193,160,220,169,7,23,14,216,57,230,123,65,233,216,196,167, +219,131,252,249,165,246,167,7,5,237,201,29,114,215,109,199,31,244,216,115,198,56,7,191,60,112,255,0,61,200,7,205,181,0,1,140,11,158,131,220,156,142,224,251,122,80,5,181,184,36,128,39,184,36,244,43,45, +169,56,232,8,224,103,211,25,239,248,212,130,232,141,219,165,187,32,99,146,240,1,156,127,215,65,130,61,9,232,112,49,145,84,62,215,32,255,0,150,150,253,192,32,204,57,252,115,142,58,100,254,30,129,186,155, +24,18,192,7,80,68,140,50,79,77,192,169,110,122,159,175,4,98,128,52,77,230,8,201,188,108,140,143,154,34,14,61,8,155,156,143,127,95,173,39,218,227,206,124,187,198,61,48,89,72,31,249,49,252,199,175,96,43, +63,237,183,91,113,246,136,6,123,134,36,227,158,185,24,4,125,8,244,62,172,251,101,199,123,184,1,7,32,171,54,79,30,160,99,142,131,7,215,158,128,0,106,253,166,48,78,33,155,241,5,240,79,24,200,149,177,158, +220,231,243,205,53,174,226,3,31,102,184,35,167,49,184,207,166,63,125,215,210,179,190,223,117,130,78,160,0,231,143,51,3,191,92,100,245,224,2,71,24,247,194,11,219,134,199,252,76,99,7,167,250,197,59,143, +76,158,65,227,24,227,0,96,228,242,104,2,219,93,160,255,0,151,75,128,51,252,43,131,193,29,132,224,231,183,61,121,231,189,49,175,79,27,109,39,61,142,232,156,243,233,145,120,160,1,212,99,32,15,81,214,21, +186,156,128,90,246,35,140,28,249,139,143,110,67,103,159,114,70,56,164,107,153,255,0,231,246,1,199,222,14,71,28,158,196,255,0,79,195,173,0,60,223,149,235,111,42,227,174,18,67,159,248,8,188,61,121,207,36, +241,237,154,105,212,206,1,40,192,115,141,208,63,215,140,206,73,201,28,103,159,127,88,126,211,112,63,229,246,48,7,57,51,48,28,122,5,112,126,159,46,127,12,97,13,236,217,3,237,224,12,117,87,149,177,143,251, +108,157,79,169,30,128,26,0,147,251,93,129,192,69,0,127,211,25,125,249,59,101,192,199,99,145,156,83,70,173,57,28,188,107,156,99,247,51,15,212,202,63,19,147,215,210,155,246,169,79,252,191,22,200,224,21, +148,131,147,223,23,201,239,212,247,233,199,41,231,49,3,125,203,19,232,162,227,223,251,186,145,57,201,192,245,239,197,0,47,246,172,227,254,94,35,25,207,6,27,130,121,62,210,229,186,114,115,211,147,71,246, +171,131,134,187,77,189,120,180,148,224,228,142,173,39,110,15,81,200,0,244,166,9,184,32,77,63,168,249,110,241,233,222,252,12,245,7,146,61,71,162,25,88,156,249,199,232,203,118,51,215,28,253,188,251,142, +163,167,214,128,30,117,108,40,205,220,99,254,221,88,28,100,28,255,0,173,97,200,206,58,253,0,2,133,213,128,0,139,228,94,199,22,82,55,234,51,130,126,189,65,235,140,212,94,107,131,128,199,28,255,0,203,59, +211,158,157,10,234,7,57,61,58,242,61,78,42,54,188,43,215,112,108,159,225,188,0,250,16,90,255,0,39,215,183,20,1,112,234,69,142,127,180,99,0,119,251,44,202,122,243,144,16,140,129,159,226,201,250,83,90,248, +49,255,0,144,154,30,160,131,103,63,67,219,36,1,239,207,225,158,13,103,155,214,36,144,199,175,119,145,71,190,119,106,39,61,51,144,115,207,25,169,5,225,199,204,115,223,10,204,196,241,215,39,84,25,193,245, +24,227,183,20,1,107,237,125,75,95,46,51,156,45,180,128,30,114,49,150,92,147,142,7,211,7,158,83,237,17,55,91,151,32,30,134,218,83,158,189,62,118,25,193,25,233,142,113,233,80,173,210,177,192,239,158,91, +98,156,250,238,58,175,61,58,117,61,251,98,67,49,201,200,132,244,193,51,42,147,245,205,243,15,175,60,118,207,4,128,52,207,106,167,37,153,243,216,91,73,207,110,74,190,79,83,140,17,73,246,155,31,249,231, +140,31,249,243,152,158,224,245,115,215,166,73,227,168,35,36,211,154,113,208,8,249,255,0,110,54,30,221,46,8,61,50,9,60,251,211,124,197,0,228,195,156,244,51,64,63,246,224,17,249,99,175,113,192,4,127,105, +178,3,38,55,110,188,125,150,84,199,126,192,231,175,36,245,232,14,69,66,215,214,225,190,85,101,201,0,98,41,253,179,213,57,252,201,30,156,98,173,9,83,251,214,252,250,75,108,61,122,230,108,254,163,223,210, +144,201,30,57,104,6,49,141,211,218,140,245,60,110,156,147,211,241,244,197,0,87,23,75,128,2,49,80,51,128,179,174,122,114,126,80,58,243,253,104,169,183,12,241,44,11,200,200,243,180,242,63,47,56,147,244, +35,25,224,156,209,64,28,71,150,7,95,63,61,193,186,141,113,198,120,221,108,9,227,159,207,181,39,150,7,121,113,239,125,23,78,120,56,136,116,224,231,63,128,170,97,227,114,127,210,227,39,161,33,109,193,39, +211,31,104,32,242,61,9,165,5,115,197,195,147,237,29,185,39,167,60,207,207,61,142,79,166,6,69,0,89,41,23,57,118,7,169,255,0,76,135,158,248,32,32,235,198,58,253,123,211,15,144,14,55,51,12,100,226,237,71, +79,95,221,99,31,143,99,207,60,66,71,203,146,206,121,234,18,208,30,73,3,165,218,143,240,238,122,101,152,36,18,36,96,112,79,204,182,222,157,201,191,3,57,231,177,36,156,230,128,38,205,182,56,220,59,156,93, +68,115,219,60,66,217,192,60,123,254,140,47,110,79,12,19,61,115,50,31,110,71,144,49,207,66,9,30,157,240,195,231,109,25,155,10,56,57,104,1,192,237,197,243,227,183,24,232,71,168,20,128,220,168,32,78,224, +18,8,2,88,128,237,217,110,79,110,8,224,142,51,215,20,1,32,123,113,144,103,140,28,142,60,198,35,240,11,11,129,223,184,239,143,103,226,19,140,78,156,103,0,110,98,115,244,132,103,28,99,168,245,170,95,190, +61,110,28,96,255,0,207,72,142,122,224,243,113,145,198,58,119,246,167,230,127,249,236,231,232,203,215,234,37,99,244,192,235,198,69,0,78,194,30,243,16,0,56,2,22,3,62,249,128,123,254,127,83,81,131,22,112, +46,88,127,219,6,108,15,248,12,121,233,237,211,156,154,102,38,35,253,124,128,246,196,199,129,212,145,182,97,140,243,156,210,129,116,49,139,166,35,147,204,236,49,233,156,221,127,78,79,190,104,1,255,0,185, +29,110,9,231,239,125,150,66,120,239,204,121,28,30,152,206,56,234,64,166,183,150,115,139,158,9,228,155,89,177,244,32,68,79,56,60,227,240,224,101,66,220,177,255,0,143,148,207,28,155,144,15,94,248,184,200, +245,228,253,70,58,184,125,168,0,62,208,156,227,145,116,196,123,158,39,32,118,199,24,246,39,168,4,126,84,109,180,139,176,6,63,231,210,86,28,118,193,128,17,249,254,185,167,8,97,235,246,164,98,14,14,108, +103,4,117,199,252,176,192,30,192,158,185,237,82,249,119,36,141,211,66,221,48,77,227,247,231,251,228,118,231,184,246,230,156,45,38,96,15,155,110,73,56,255,0,143,198,39,175,25,203,31,200,31,195,212,1,139, +28,57,7,237,41,199,97,97,49,227,212,157,138,0,7,175,4,84,152,182,24,196,188,158,132,88,186,253,14,74,174,1,250,253,77,72,182,82,145,131,52,11,158,205,117,43,126,120,147,25,244,233,223,129,210,164,26,116, +248,56,150,216,140,242,67,49,231,131,129,243,247,57,224,244,35,147,154,0,132,8,123,92,47,29,67,64,170,79,211,46,113,142,224,145,158,220,211,151,201,234,215,22,170,9,0,239,17,131,215,253,240,115,198,0, +235,235,232,102,22,23,71,63,188,182,35,32,224,238,207,234,73,206,51,211,140,116,233,154,148,105,247,189,164,183,7,28,229,98,63,143,204,51,236,15,29,129,236,40,2,48,150,237,156,93,90,30,156,129,25,250, +253,233,71,127,175,108,211,246,64,115,251,251,97,211,157,150,220,118,60,9,193,193,207,61,123,99,189,73,246,43,193,128,242,219,243,192,202,70,65,192,231,183,235,159,83,158,134,164,54,151,67,4,75,1,234, +50,45,99,31,200,114,15,124,231,175,110,132,2,178,197,108,115,153,237,240,79,117,181,45,198,56,201,184,224,15,108,242,57,61,51,96,71,106,49,150,183,96,49,252,22,158,188,143,248,249,56,56,57,35,29,7,181, +39,217,110,187,203,111,232,11,64,58,12,243,128,135,215,156,125,61,42,85,182,186,80,63,210,173,215,156,140,91,169,31,170,14,72,62,131,220,17,197,0,47,151,106,113,131,0,3,158,22,0,122,96,227,247,163,212, +126,25,207,108,72,33,182,56,204,209,241,207,221,128,118,246,112,0,227,156,118,39,166,121,104,130,112,127,227,234,12,245,7,236,144,3,143,66,124,179,129,233,211,39,34,156,97,184,228,11,184,15,168,54,214, +253,14,122,254,232,227,183,65,207,166,9,160,5,251,36,57,5,36,65,147,156,16,14,125,78,60,229,28,115,216,253,56,193,153,45,162,95,189,36,36,142,191,186,140,140,117,235,230,30,222,255,0,133,87,88,103,24, +204,240,54,71,76,66,132,17,193,224,65,147,250,244,35,182,106,95,45,242,50,109,143,191,154,128,131,199,39,247,0,227,212,130,62,190,160,19,8,237,241,130,98,35,39,229,16,198,15,167,81,48,193,35,140,156,129, +235,210,147,201,182,7,62,82,18,7,123,84,98,115,158,254,121,63,152,60,142,135,138,140,110,7,24,183,62,222,123,159,192,98,48,63,64,61,185,167,9,51,199,151,30,122,12,92,57,62,216,45,1,232,121,228,17,199, +92,226,128,29,254,136,49,136,99,7,167,252,123,117,252,156,129,211,175,39,215,32,10,152,61,183,4,66,72,233,145,11,131,216,12,96,131,235,158,14,64,199,174,98,12,67,100,171,96,28,28,93,21,30,191,116,91,115, +143,108,227,61,58,83,134,252,252,170,63,240,36,147,146,48,79,54,71,235,193,227,57,236,112,1,104,77,110,0,253,209,30,159,186,159,56,32,14,131,39,245,227,63,137,112,154,46,161,72,29,64,242,238,65,237,193, +7,159,99,145,248,213,80,95,186,177,235,242,249,165,135,190,79,217,51,140,123,99,184,235,145,34,190,211,204,82,240,57,217,36,170,59,244,197,151,228,223,94,49,208,2,199,157,23,0,163,176,207,64,38,233,232, +11,72,0,252,136,226,156,179,196,63,229,147,140,142,121,3,182,48,114,112,72,237,201,0,122,224,212,75,112,51,133,138,235,142,128,253,165,241,142,255,0,241,234,0,247,35,244,171,11,115,255,0,76,239,48,56, +12,18,98,64,207,109,214,196,146,15,126,49,212,118,52,0,190,124,24,192,142,80,73,61,227,56,28,143,69,25,207,3,219,35,147,154,80,96,35,113,142,231,174,63,229,150,222,79,169,66,7,76,247,25,235,83,45,192, +63,117,239,177,198,115,191,140,31,250,243,30,189,248,224,103,60,211,133,192,39,137,47,142,123,249,74,70,123,224,189,147,19,206,56,234,112,49,207,36,0,143,200,199,203,246,128,7,111,220,15,92,243,229,128, +115,142,50,125,200,207,2,112,145,185,31,61,200,7,147,204,36,119,231,36,168,199,94,222,184,168,178,207,141,178,94,146,120,195,91,161,25,238,50,45,70,121,237,219,156,244,229,193,38,25,249,229,30,160,217, +147,199,211,236,167,142,127,65,232,40,2,97,111,24,228,189,207,3,56,99,111,234,113,140,56,39,60,117,200,201,228,227,52,190,74,28,1,246,134,36,127,11,90,15,167,6,67,159,78,8,25,34,161,15,63,67,44,216,28, +241,103,183,39,211,13,10,31,81,199,115,218,165,71,152,140,121,210,246,227,236,68,16,120,228,157,157,190,164,113,208,208,4,139,24,7,24,190,207,160,123,46,189,62,232,148,99,167,108,14,15,74,95,46,16,71, +203,120,79,185,179,63,76,254,248,254,121,234,51,210,133,243,206,113,119,58,250,3,104,48,58,246,41,142,59,241,158,189,248,169,4,87,71,131,124,112,122,22,181,133,78,56,25,249,176,122,224,100,12,253,104, +0,9,23,79,46,240,240,113,150,135,215,212,92,40,43,211,160,231,233,78,88,212,114,177,94,12,113,208,17,129,200,225,46,191,49,131,199,175,66,162,41,79,222,191,0,12,227,116,113,96,245,199,241,100,228,118, +237,252,212,169,78,183,177,128,120,249,161,12,122,115,140,72,167,25,56,207,57,244,0,80,3,67,96,140,69,117,208,125,232,229,39,28,231,31,233,139,215,168,247,250,211,204,219,115,251,155,156,103,157,209,75, +145,193,238,215,216,235,142,48,61,59,147,74,133,206,118,222,199,143,83,108,56,237,218,117,207,167,231,142,156,79,137,56,205,250,225,79,79,179,160,235,140,15,158,228,245,236,7,167,225,64,16,11,133,192, +196,114,129,211,38,34,49,211,63,242,242,125,59,228,103,190,73,167,253,164,116,217,56,207,253,51,126,7,28,241,57,60,122,99,142,6,59,84,228,160,225,181,15,174,34,181,94,185,232,173,48,30,157,78,58,100,245, +160,36,44,57,191,97,193,201,242,236,72,246,249,69,200,63,215,216,241,64,16,137,129,193,197,206,51,158,35,147,24,231,158,31,39,62,205,254,52,255,0,59,147,204,216,35,156,161,39,35,61,140,231,24,30,163,56, +224,246,196,198,40,54,255,0,199,234,140,231,172,118,171,223,29,69,224,4,116,206,79,183,212,11,109,200,55,145,255,0,228,179,30,58,0,62,217,232,71,4,140,115,142,228,0,66,46,10,240,60,239,95,185,23,244,148, +183,124,242,71,184,164,55,7,145,230,76,59,253,197,7,167,78,95,244,250,116,205,77,182,197,120,107,161,187,212,121,3,159,109,183,196,231,60,227,110,121,61,115,202,145,98,114,69,201,61,58,172,0,245,57,224, +223,15,229,147,215,56,24,160,10,230,118,56,255,0,73,184,0,100,96,36,103,242,44,79,81,211,56,198,9,244,160,58,147,147,115,114,126,162,216,143,199,229,57,227,29,79,95,80,77,76,22,14,139,114,227,35,160,91, +64,122,30,71,252,76,50,51,215,63,204,14,84,170,15,249,111,40,200,231,113,180,25,28,140,131,246,163,248,100,228,119,207,96,8,124,197,193,30,117,216,39,3,42,109,199,63,140,68,122,116,35,131,193,228,211, +188,196,239,37,227,140,127,211,6,56,29,240,98,193,56,228,12,227,61,113,217,219,226,200,43,114,235,129,222,107,65,207,182,46,137,30,157,191,158,31,251,188,143,244,183,39,156,143,50,30,8,228,140,125,176, +142,158,223,135,74,0,136,76,14,0,91,236,99,32,249,118,188,246,237,24,62,254,185,32,246,163,207,244,142,235,234,99,128,3,143,83,181,73,235,220,243,239,131,83,170,169,200,55,79,131,208,121,145,156,122,228, +125,168,231,245,227,215,173,35,52,64,143,244,153,126,190,124,42,50,120,232,103,57,29,7,81,245,61,192,43,9,78,115,229,221,129,234,18,49,142,122,124,185,207,60,2,14,125,15,28,188,203,33,1,76,87,36,117,201, +66,73,25,28,252,128,131,142,135,56,227,166,7,53,41,242,75,99,237,4,14,188,207,17,227,3,39,62,122,227,168,201,39,156,142,120,197,38,212,96,74,220,17,239,246,164,3,229,28,15,150,232,241,223,24,198,120,61, +78,64,43,239,148,19,139,121,115,207,88,193,60,247,56,113,236,127,206,105,12,178,130,51,104,237,219,13,6,112,123,30,103,83,193,228,244,227,161,233,79,40,131,147,117,140,147,146,46,129,207,231,113,219,32, +158,184,247,238,210,35,200,6,233,114,115,199,218,73,31,164,132,14,189,115,199,24,199,20,0,121,247,92,109,177,92,28,243,246,108,31,92,31,244,192,9,207,95,195,29,40,18,221,176,255,0,143,84,0,159,226,132, +17,234,58,222,30,127,206,7,20,134,40,8,255,0,143,168,115,130,57,157,183,17,223,147,56,201,245,36,100,251,240,105,166,218,2,63,227,226,38,235,193,149,200,62,159,242,208,143,199,215,185,230,128,28,223,105, +28,11,88,114,65,39,22,224,19,248,139,130,120,250,253,50,1,195,10,92,183,222,182,132,14,121,48,176,237,192,35,207,29,122,30,113,158,228,245,132,219,219,169,36,60,36,244,230,227,3,241,224,224,30,153,237, +142,113,80,188,118,135,141,208,158,255,0,241,244,115,219,184,207,35,30,221,62,148,1,97,150,78,134,214,12,240,48,45,212,242,71,7,155,174,122,227,142,62,156,208,17,192,255,0,143,88,48,127,233,206,2,127, +28,220,15,230,123,213,22,138,221,176,60,200,87,168,31,233,108,71,110,57,136,142,159,143,115,238,213,130,0,113,230,64,51,208,253,171,169,231,175,200,191,95,192,228,208,5,239,45,137,207,216,224,25,206,63, +208,173,199,29,121,253,249,39,7,160,236,123,246,167,249,76,65,38,27,96,7,64,108,208,158,79,10,118,200,70,56,237,147,211,29,43,49,149,23,144,208,30,48,15,158,132,247,207,37,14,113,215,158,131,158,122,211, +55,48,201,95,39,174,70,46,34,28,243,220,41,224,113,219,62,152,160,13,19,9,232,45,109,184,239,246,117,83,200,246,201,253,7,67,146,15,86,125,153,185,38,214,44,19,252,40,65,198,120,56,17,28,147,156,122,113, +199,124,82,119,148,176,111,221,125,62,211,14,50,15,60,180,56,231,39,174,113,244,21,3,74,224,28,178,142,248,91,187,81,158,195,143,179,158,121,236,49,212,140,12,208,6,139,90,176,39,109,180,67,216,65,27, +31,204,199,147,207,183,245,52,195,111,32,57,251,58,1,158,155,80,126,67,97,61,48,49,200,24,228,244,172,215,186,42,0,220,203,130,114,5,229,177,25,247,2,221,65,231,147,219,25,250,209,246,217,15,5,201,60, +146,62,209,0,29,184,57,69,3,24,61,15,211,138,0,188,214,115,16,54,194,171,201,254,20,237,245,76,255,0,65,206,59,229,5,172,221,224,140,159,82,83,31,145,132,159,196,30,191,142,105,139,233,63,190,0,235,205, +196,13,252,227,63,128,206,58,244,226,157,253,161,39,82,241,17,145,140,201,1,227,140,14,128,30,253,199,20,1,100,219,204,56,41,8,207,164,146,99,174,57,217,106,122,143,81,192,252,234,35,110,227,59,150,217, +70,7,89,166,228,159,92,217,100,19,215,57,228,143,81,76,58,139,176,192,104,113,140,17,152,219,36,246,226,76,113,199,65,215,36,122,6,181,252,132,1,136,176,15,93,193,79,95,247,212,15,200,250,208,3,30,223, +158,68,7,215,18,63,4,117,193,107,93,221,7,7,140,253,50,105,190,76,132,14,35,92,131,130,37,67,128,112,58,155,99,233,233,215,56,233,78,251,99,30,2,197,193,234,28,18,126,191,189,219,249,99,183,39,154,105, +186,57,31,234,135,115,159,47,158,114,51,139,129,140,129,235,223,144,123,128,39,150,66,157,205,7,61,119,24,88,115,234,126,203,131,223,167,174,51,205,68,87,28,7,182,62,184,104,198,50,120,224,65,145,199, +39,249,129,205,76,46,152,30,144,100,143,239,63,60,103,248,47,71,95,203,159,198,131,122,236,122,64,79,25,6,75,140,28,3,206,126,221,142,56,239,245,29,232,2,139,166,58,53,182,7,168,221,198,122,255,0,199, +191,211,219,215,29,153,130,191,197,111,200,228,4,0,254,25,132,118,207,62,189,1,235,87,141,224,232,203,0,61,128,154,236,14,252,146,183,189,255,0,159,175,21,17,186,66,114,198,21,199,164,215,188,251,103, +237,163,143,233,158,185,160,10,111,230,31,185,246,126,122,228,133,199,166,0,132,147,219,24,24,245,238,106,34,146,158,63,112,221,184,144,228,227,211,253,27,60,251,255,0,141,93,107,164,32,128,99,11,140, +3,246,155,192,7,29,179,122,0,35,183,127,192,26,143,207,255,0,166,138,125,25,111,46,70,6,48,64,63,110,32,119,227,104,233,142,7,80,10,139,109,113,201,95,47,212,227,97,227,158,72,242,148,246,227,57,0,245, +4,82,121,23,125,3,71,198,7,240,130,1,207,28,70,51,146,122,245,24,235,220,217,251,66,156,102,86,193,57,56,190,155,3,254,251,188,206,79,108,100,126,180,52,177,242,124,249,151,129,149,251,100,152,198,121, +201,23,39,211,208,246,233,197,0,84,107,107,178,6,100,85,201,60,100,112,48,71,100,235,200,228,125,71,168,128,219,222,12,129,34,16,59,157,163,211,187,39,248,253,58,10,186,210,67,255,0,61,36,60,244,23,243, +103,111,190,37,198,79,191,81,156,31,69,18,67,142,178,30,123,94,76,114,56,234,89,143,191,124,251,140,242,1,158,109,175,251,176,3,57,255,0,91,17,30,167,254,89,18,7,78,249,227,243,112,181,212,6,8,145,50, +59,121,176,231,142,152,38,37,57,233,206,122,213,208,241,130,72,138,67,238,102,87,56,199,95,153,134,6,125,189,241,154,112,32,128,66,74,222,138,30,16,57,7,57,12,224,113,236,71,124,30,70,64,40,189,165,249, +193,50,237,237,159,54,30,132,115,252,0,247,192,227,212,145,81,253,154,240,12,155,133,199,66,166,84,36,19,233,242,14,123,224,31,199,140,214,144,219,252,80,204,115,207,88,59,228,231,229,155,24,237,156,119, +227,169,167,136,193,231,200,144,14,160,19,9,250,159,245,163,219,147,252,186,128,102,27,107,129,210,108,147,215,11,23,222,198,9,44,91,229,227,25,32,103,166,6,115,134,249,50,227,150,207,36,159,248,246,35, +29,199,44,78,15,208,231,245,58,162,37,60,121,79,130,50,14,87,3,177,231,205,61,187,96,118,239,129,71,148,135,248,88,99,187,24,248,235,147,247,216,231,159,97,249,208,6,88,64,57,98,205,216,16,214,126,216, +207,3,30,227,146,49,192,192,160,42,177,0,36,141,244,22,132,15,169,44,14,122,116,199,60,99,211,85,99,92,227,204,143,208,110,116,235,142,187,64,232,58,245,61,42,101,128,30,124,212,3,142,130,30,14,48,122, +158,70,125,143,62,135,52,1,142,177,70,114,12,115,117,234,169,107,129,215,159,148,228,245,224,228,115,207,189,61,99,183,92,238,89,121,25,63,186,140,250,115,185,24,242,115,198,113,143,76,154,213,48,12,97, +110,48,56,25,1,7,126,121,7,191,78,15,35,62,228,52,90,3,214,243,30,160,62,14,57,28,129,39,215,184,61,184,160,12,188,91,1,129,12,196,240,56,133,113,143,76,131,158,184,206,125,121,237,148,205,160,32,249, +119,0,245,218,109,211,3,243,92,253,57,31,92,245,213,22,10,121,55,91,135,92,121,239,129,207,28,43,228,241,215,185,231,176,164,251,2,14,77,204,121,206,121,184,126,57,232,3,112,0,206,57,7,35,131,214,128, +40,102,208,140,249,55,7,4,228,11,116,237,200,61,80,103,208,103,223,2,158,191,103,231,17,93,0,113,193,134,36,233,208,97,159,158,185,236,121,207,124,213,214,180,24,230,225,49,140,124,183,32,116,206,112, +55,40,62,248,31,208,82,139,81,208,92,50,241,129,155,134,56,62,248,114,0,244,199,78,156,80,5,125,246,224,112,236,160,14,240,70,113,239,145,32,245,234,78,113,199,25,163,206,135,248,39,218,114,63,229,144, +35,31,133,202,227,156,125,79,110,149,57,182,97,207,218,73,250,92,17,207,28,227,129,142,189,78,115,156,103,154,5,190,6,124,247,61,113,139,150,252,51,137,79,127,79,78,130,128,24,175,145,149,156,100,117, +204,69,64,231,142,147,183,97,211,177,239,218,156,38,99,255,0,47,35,175,24,36,12,103,254,187,227,142,63,152,197,5,48,51,230,200,49,206,126,216,195,60,140,17,131,244,235,207,56,244,167,33,114,49,231,176, +200,232,111,50,122,228,125,233,129,247,246,252,104,1,203,36,185,249,110,15,177,5,121,227,215,237,7,129,220,30,254,245,32,150,80,57,187,112,57,3,148,239,143,75,206,9,206,57,228,246,199,74,85,118,28,111, +39,29,79,218,87,166,121,231,207,60,119,201,60,253,120,167,153,64,7,247,210,3,147,255,0,47,75,128,8,57,31,235,189,14,125,49,200,199,52,0,11,153,6,7,219,15,65,193,116,224,250,96,221,231,245,252,142,105, +198,226,127,188,47,64,255,0,120,131,142,190,151,195,31,203,154,97,152,17,129,51,30,126,232,187,78,157,136,2,231,131,140,246,245,207,161,65,46,15,252,124,78,164,255,0,211,202,227,159,67,246,131,207,94, +152,207,82,13,0,79,246,139,156,3,246,212,206,49,193,36,103,156,112,46,219,39,176,228,158,121,57,197,70,110,47,15,75,230,36,103,128,175,211,167,252,253,174,49,147,199,65,248,145,76,105,9,32,27,169,136, +255,0,175,168,193,56,247,37,143,215,235,145,158,104,13,187,3,124,141,215,173,218,112,49,215,135,31,174,62,189,168,2,69,123,195,146,110,139,100,16,51,158,58,245,63,108,39,183,97,212,224,123,27,174,143, +89,219,253,210,199,158,189,63,210,199,212,114,79,4,138,96,84,94,79,156,122,31,150,235,35,191,95,155,31,76,103,167,230,161,80,243,153,1,236,60,210,223,135,14,50,71,175,124,243,64,18,226,229,148,31,52,183, +80,9,4,143,161,221,120,123,241,192,233,146,115,77,38,232,18,9,82,122,224,198,188,250,14,46,15,110,253,185,28,210,149,76,143,190,0,231,253,99,19,248,227,119,63,167,183,52,205,209,130,127,214,128,0,234, +210,30,254,158,75,122,250,253,113,64,8,77,209,7,228,83,200,32,132,7,223,57,19,240,120,234,127,1,142,142,2,236,140,8,137,245,2,50,127,60,75,211,182,7,31,206,144,20,61,24,140,244,200,184,35,175,125,176, +15,124,224,53,7,103,95,56,114,7,240,93,227,140,250,90,16,61,201,35,243,160,7,121,119,93,62,206,199,61,182,63,83,233,151,108,30,56,234,59,30,58,35,71,118,14,77,163,242,64,229,71,63,154,112,127,28,28,116, +237,73,149,60,9,147,147,147,145,121,158,125,49,105,180,159,255,0,87,29,158,8,7,6,88,137,245,34,240,156,253,126,200,0,227,223,183,214,128,16,69,118,127,229,197,137,237,242,198,122,227,35,24,110,188,245, +28,227,177,167,8,238,148,228,217,74,113,253,213,139,159,175,238,137,207,92,245,61,112,121,163,229,61,101,65,130,48,118,222,30,153,228,98,220,159,92,122,251,100,209,188,96,129,115,22,14,14,90,27,209,147, +215,169,183,29,127,16,61,78,104,1,60,187,131,130,214,83,3,215,38,56,189,15,32,155,99,245,206,125,125,169,134,59,142,166,222,69,199,125,144,253,113,255,0,30,217,246,250,103,56,230,165,231,143,223,194,224, +115,196,55,164,140,100,156,226,28,246,235,206,41,135,105,199,239,97,228,116,242,239,177,199,174,32,28,123,240,71,29,114,5,0,40,91,146,0,16,202,15,113,177,51,219,31,118,220,117,200,56,201,245,199,74,81, +5,219,31,185,48,235,247,162,95,169,198,97,227,175,127,90,96,141,92,224,61,183,108,254,235,80,246,244,143,57,25,245,25,231,142,69,52,194,20,146,82,23,244,11,14,167,212,242,121,253,58,125,49,64,18,152,46, +129,206,211,199,66,203,30,62,191,52,28,116,207,248,82,21,185,207,32,14,156,98,12,122,103,62,80,29,1,25,238,114,79,122,131,203,199,2,213,9,36,130,76,26,139,114,71,76,17,143,192,143,83,207,90,81,9,192,205, +178,145,216,11,75,246,24,234,58,174,48,115,158,56,206,49,144,8,160,9,130,202,6,89,155,211,27,162,28,122,240,170,71,215,143,78,70,41,12,110,14,119,182,7,29,65,199,177,42,78,58,224,115,200,245,235,81,152, +99,36,238,182,25,234,63,226,93,122,78,51,140,231,97,232,15,3,240,56,160,44,96,130,34,140,103,57,206,155,120,14,48,122,145,24,28,156,241,144,1,60,158,184,0,120,87,239,36,157,143,50,103,36,103,63,242,211, +28,231,211,142,127,23,199,27,243,181,129,97,146,1,147,147,128,59,103,215,211,243,207,53,92,178,18,115,110,132,115,210,194,243,60,117,198,80,243,222,147,205,131,24,251,41,30,167,236,87,92,122,142,97,57, +233,211,183,67,198,40,2,248,89,135,44,172,71,66,85,129,4,243,142,89,199,167,29,120,207,165,40,39,35,49,241,220,151,92,159,195,204,253,71,57,252,49,158,101,131,60,194,113,237,103,54,1,227,158,97,29,248, +28,99,167,74,60,248,58,136,14,113,255,0,62,175,192,198,57,37,70,58,227,28,31,79,96,13,109,209,167,37,19,211,135,64,64,206,56,34,79,168,224,158,121,230,147,205,135,32,144,0,4,144,48,204,78,120,207,250, +208,79,35,223,235,140,99,48,92,219,147,134,89,23,3,175,217,35,32,117,254,243,103,29,72,235,211,31,89,4,182,152,255,0,90,1,238,77,164,3,24,233,208,156,1,236,113,244,160,13,48,214,205,201,73,78,50,8,8,121, +39,190,76,140,14,50,59,158,121,4,12,210,19,8,206,212,152,14,71,220,45,145,211,147,188,17,219,140,247,206,122,103,60,201,104,127,229,162,156,3,214,218,216,103,233,243,12,115,216,19,159,94,180,205,240,118, +242,193,60,241,12,0,254,97,198,59,114,113,211,146,104,3,64,8,249,200,148,131,211,9,128,15,96,9,103,0,113,215,158,63,18,67,179,57,62,103,126,54,198,59,117,201,7,158,125,63,14,106,128,145,15,3,105,200,254, +236,35,158,135,143,180,117,231,176,4,143,208,47,31,80,164,96,144,48,96,239,233,155,143,79,234,57,230,128,47,51,71,131,243,72,56,233,242,224,116,227,134,92,241,156,96,14,105,161,173,184,221,43,131,238, +141,142,255,0,221,98,73,247,35,154,170,50,114,66,185,29,190,104,70,8,199,4,139,145,143,108,159,112,56,164,220,202,126,227,241,223,114,96,145,147,147,254,154,217,200,235,199,110,125,128,45,3,1,63,241,241, +129,158,48,179,227,62,135,0,127,245,186,246,20,165,99,63,242,240,79,32,12,27,195,143,175,183,211,24,205,64,29,216,100,137,0,7,28,50,143,167,63,106,247,233,232,50,112,105,217,199,79,48,146,15,30,105,3, +191,77,179,159,112,79,39,208,208,4,194,37,255,0,158,196,243,129,147,116,167,219,130,221,254,132,115,206,56,195,138,186,244,157,66,147,130,12,183,131,140,116,249,115,233,211,61,6,51,85,131,78,9,216,146, +28,245,34,226,67,207,161,196,195,159,199,35,142,79,90,93,247,75,201,134,224,156,245,251,68,227,32,158,199,237,139,249,245,199,176,52,1,48,243,71,89,225,199,109,211,223,224,118,25,35,62,167,142,157,248, +38,142,128,131,60,57,206,6,201,175,78,7,92,127,171,228,14,195,60,122,228,212,34,75,190,64,23,73,212,224,93,78,120,235,156,125,172,244,206,120,36,12,103,166,104,50,92,156,229,110,142,65,201,251,69,195, +251,228,255,0,164,31,127,79,204,208,4,225,128,206,100,136,240,57,99,126,123,247,197,185,36,227,223,142,248,167,130,78,49,37,168,199,115,30,163,238,6,15,217,24,114,57,207,63,90,163,186,102,254,27,174,48, +121,107,130,48,59,255,0,199,195,14,51,248,28,116,206,76,133,164,28,49,186,82,122,29,243,113,192,57,255,0,143,140,115,193,57,3,63,64,40,2,217,145,212,241,52,39,177,2,45,64,142,115,215,54,60,253,79,255, +0,90,129,51,130,55,60,60,12,113,22,160,51,219,31,234,23,249,112,122,10,165,243,227,253,125,198,115,200,195,158,153,0,252,211,140,253,14,6,7,6,154,217,198,90,91,179,199,3,18,112,1,193,60,93,158,7,211,215, +138,0,186,211,12,100,156,243,215,200,212,88,14,184,193,54,231,7,184,3,158,189,184,166,53,194,175,82,164,245,36,195,122,9,201,244,107,78,56,30,190,184,197,81,119,125,160,121,151,132,116,42,35,109,188,231, +251,247,92,255,0,223,63,134,58,160,112,0,13,246,163,211,145,20,103,241,57,184,200,62,163,156,254,52,1,111,237,17,185,232,48,57,63,187,188,94,14,123,155,76,118,228,15,240,167,9,161,206,3,21,201,237,21, +209,198,50,70,79,217,176,115,207,215,30,224,138,59,226,29,68,231,184,249,33,29,58,3,151,124,100,1,216,82,137,97,0,252,147,228,17,255,0,44,160,199,83,158,126,82,127,153,235,193,224,128,104,9,35,7,135,231, +39,1,162,185,3,232,54,198,163,167,215,38,165,251,68,68,5,47,24,60,115,155,177,156,116,254,231,25,62,167,232,59,228,153,109,250,136,102,246,62,76,57,3,159,64,196,103,63,143,0,118,20,225,60,69,120,134,124, +231,171,71,31,79,251,243,200,231,175,4,116,57,160,13,47,180,198,49,200,60,103,137,103,3,31,67,46,6,123,103,159,200,225,235,44,47,147,179,115,117,230,73,63,35,153,9,61,250,118,227,140,86,120,120,136,230, +218,82,71,172,81,227,158,223,115,36,114,49,211,184,231,32,5,6,34,57,178,153,136,228,145,8,110,189,121,16,185,245,235,248,208,6,136,84,206,18,46,64,7,30,113,198,120,200,249,139,30,189,177,238,15,171,72, +96,78,216,208,100,242,12,200,113,159,172,121,254,121,227,235,84,67,66,196,255,0,161,182,123,102,221,14,127,3,106,199,161,32,128,195,142,135,181,60,44,68,140,217,169,239,205,178,113,237,255,0,30,135,234, +113,208,14,253,104,2,216,220,54,131,246,112,73,36,159,58,60,227,140,140,109,36,227,183,7,25,198,59,83,246,19,200,104,61,243,42,176,255,0,190,124,145,207,57,239,233,214,169,180,113,156,31,178,50,227,56, +219,106,199,220,244,183,25,198,79,79,126,58,10,107,36,3,1,173,229,3,36,140,90,145,145,223,172,107,147,207,28,15,126,15,0,23,74,158,115,246,83,140,147,184,55,0,251,253,156,131,237,201,235,193,235,136,195, +133,24,2,216,114,121,85,13,158,78,120,54,109,200,239,206,125,170,153,91,114,62,91,119,207,63,242,236,7,35,142,62,79,243,214,144,8,179,204,19,1,234,32,82,71,166,6,1,207,233,207,124,80,5,178,123,3,22,125, +226,83,129,206,64,255,0,137,120,227,158,228,100,240,115,144,41,172,237,206,124,191,76,8,24,246,244,91,12,17,252,141,64,76,39,131,28,227,176,205,170,228,247,224,239,61,79,98,50,115,201,24,205,38,109,134, +7,151,56,199,31,234,35,3,156,243,146,249,255,0,61,249,160,7,153,176,79,3,61,15,250,56,57,30,163,54,39,31,66,65,232,64,29,154,178,130,10,239,85,3,168,54,253,207,126,44,48,57,4,224,144,9,207,124,10,110, +109,134,127,215,175,210,24,254,189,124,213,235,158,253,79,82,123,32,242,57,97,21,219,30,188,66,132,103,158,226,224,244,56,207,25,199,110,180,0,255,0,57,122,9,80,131,140,131,103,145,235,255,0,62,68,159, +199,215,161,236,166,72,199,70,87,35,63,114,221,149,121,62,135,79,32,147,208,116,246,29,106,49,177,142,26,43,213,62,130,222,50,7,184,99,40,39,24,63,79,173,30,92,67,168,188,28,116,48,39,211,146,46,1,24, +207,24,245,160,0,202,156,146,172,58,227,247,64,142,195,156,233,173,207,3,147,158,127,26,41,118,71,131,243,221,3,145,209,15,61,58,17,62,15,184,193,56,245,162,128,56,183,179,152,228,172,4,240,113,181,228, +39,223,254,90,183,190,0,192,61,6,115,81,125,138,126,191,101,155,4,227,34,71,199,224,57,233,211,134,231,220,224,83,206,164,227,254,90,220,158,56,37,45,50,51,145,208,243,208,142,128,113,211,35,146,198,213, +29,73,205,205,215,57,192,41,108,120,199,163,50,244,61,241,244,197,0,52,216,57,228,219,74,61,127,126,71,115,207,94,189,113,156,231,159,194,38,177,92,243,4,170,71,7,247,243,177,237,131,196,100,113,255,0, +2,238,123,211,255,0,181,164,228,9,111,24,231,162,197,111,140,28,246,243,186,112,125,253,193,232,195,170,57,232,215,185,235,147,20,7,219,128,36,98,51,254,206,0,61,143,96,4,26,120,231,16,220,0,115,130,101, +185,61,113,253,223,43,211,142,61,59,83,78,158,137,134,242,38,99,199,6,107,149,233,159,87,56,57,57,228,2,61,70,40,254,208,148,159,245,186,134,15,56,48,6,200,29,122,72,64,252,135,61,61,40,23,97,143,38,236, +231,57,102,181,201,232,51,159,156,19,131,145,212,145,140,244,226,128,28,177,132,60,91,72,79,253,119,156,0,125,72,46,57,30,189,248,227,52,16,6,127,209,101,57,39,63,190,145,248,244,195,30,126,160,244,237, +234,193,48,39,254,91,245,206,69,147,113,239,157,164,28,240,61,248,231,213,12,232,114,11,206,64,63,243,230,192,250,114,54,126,96,99,245,160,7,146,164,28,192,224,12,245,114,8,231,185,50,41,237,255,0,214, +166,23,85,228,71,143,64,101,147,61,198,72,18,183,63,215,60,116,202,121,144,146,51,231,1,234,109,72,60,243,207,78,115,142,56,231,60,144,77,75,155,114,114,86,67,199,31,232,114,231,30,191,43,251,254,67,61, +58,0,70,101,78,160,42,131,145,205,196,158,164,142,12,185,232,64,61,9,0,231,161,166,125,168,12,227,97,30,130,228,159,108,13,238,115,215,190,120,199,160,197,130,45,143,30,76,133,185,57,54,147,122,156,96, +25,15,166,1,63,152,200,20,121,80,31,249,99,39,56,198,45,231,228,156,224,115,32,235,159,174,49,145,158,160,17,45,233,228,166,204,140,99,55,49,130,63,188,9,50,47,65,212,142,125,114,56,167,253,190,76,28, +50,99,168,31,108,140,14,15,76,25,92,0,48,120,61,254,135,47,219,23,64,146,145,201,193,183,148,115,200,198,119,147,239,239,198,112,71,9,186,49,192,133,159,235,28,220,159,248,20,135,169,246,247,197,0,32, +189,184,56,35,202,228,30,69,236,4,158,221,120,192,61,179,235,212,103,151,111,184,115,150,17,96,142,247,177,116,231,253,179,158,163,158,156,17,72,39,9,202,192,203,159,72,228,31,83,254,180,117,233,156,145, +232,48,5,40,188,65,156,195,43,30,1,195,200,167,168,228,255,0,164,131,143,98,15,78,189,104,1,192,63,241,125,152,116,206,235,212,80,78,51,217,129,199,233,192,207,61,95,207,252,243,180,60,117,23,197,135, +62,187,75,28,156,112,6,50,78,112,56,21,8,190,139,45,155,89,219,220,72,195,159,92,53,217,36,251,145,158,73,227,169,121,212,35,60,125,142,98,8,206,119,203,156,251,226,229,179,220,28,28,144,5,0,88,82,79, +6,43,108,116,4,93,46,127,241,238,79,81,216,254,52,253,168,79,48,67,143,95,181,169,252,62,240,200,233,235,234,57,197,84,23,241,129,205,165,192,3,161,89,157,57,231,179,204,125,57,57,30,248,238,127,104,228, +113,28,232,115,206,110,21,137,25,63,222,152,28,142,65,231,25,160,13,20,182,183,97,243,44,35,39,5,126,210,167,142,14,112,38,28,122,114,121,252,13,72,44,173,249,37,98,32,100,113,112,192,245,228,16,47,7, +79,76,3,146,49,201,172,209,168,174,57,23,36,224,116,158,53,3,158,255,0,233,13,223,158,7,25,233,218,165,93,72,31,249,103,63,169,255,0,78,11,208,14,120,156,16,48,121,29,121,207,185,0,209,54,118,120,59,145, +70,72,4,249,164,245,199,64,110,250,231,144,71,233,208,32,181,211,64,201,61,115,144,174,195,212,158,126,218,71,185,235,216,84,9,169,130,71,50,40,207,252,255,0,130,125,242,12,252,31,78,127,149,76,47,225, +110,50,231,142,115,168,160,250,18,166,102,200,252,122,231,131,216,1,234,154,82,146,55,115,232,206,185,247,60,221,100,241,223,60,253,51,79,205,128,251,165,6,58,3,229,100,250,241,246,140,30,190,184,35,215, +4,210,45,212,99,27,14,1,206,73,189,139,32,119,61,27,168,3,147,233,142,65,21,58,220,43,2,68,202,7,124,221,66,127,3,242,145,235,208,114,78,0,244,0,140,77,104,135,3,119,253,179,242,84,115,142,230,126,249, +25,199,183,78,224,154,2,1,6,232,96,113,229,188,25,201,234,112,39,231,191,94,115,207,60,226,111,55,158,39,76,30,152,185,183,35,243,104,219,29,120,39,0,224,117,238,162,70,207,23,88,57,192,255,0,72,181,35, +57,206,56,140,100,158,113,140,123,30,212,0,139,60,96,140,61,240,32,17,207,145,236,57,38,110,79,28,244,239,197,74,47,74,142,26,249,128,244,120,72,29,184,2,76,3,208,240,73,233,129,140,228,6,95,249,248,4, +243,242,137,237,122,253,54,19,223,35,230,63,210,159,251,214,35,4,156,116,204,246,196,30,57,254,0,59,119,250,100,154,0,23,80,220,70,77,225,56,234,76,120,3,175,118,108,30,188,117,207,167,38,164,55,89,206, +30,224,100,127,207,72,115,255,0,160,158,199,168,246,226,148,35,144,51,142,192,19,45,153,201,39,182,224,71,81,215,60,123,81,228,202,216,219,184,142,62,233,177,43,245,201,143,60,227,7,160,62,157,77,0,72, +46,101,32,97,167,110,64,230,91,115,249,238,70,206,1,200,244,4,158,105,194,91,130,62,83,33,235,145,230,219,231,7,212,249,106,56,199,124,142,189,186,70,45,165,28,4,108,117,37,158,203,175,176,220,163,25, +207,65,142,221,177,79,16,78,160,13,164,130,127,133,236,193,207,211,204,63,200,247,233,64,14,243,46,142,57,185,231,56,2,226,0,113,219,162,17,248,14,222,216,167,129,51,144,25,174,243,192,226,246,14,9,30, +134,60,119,56,57,166,121,23,4,140,41,35,166,89,172,201,199,166,60,208,6,61,127,62,245,50,197,114,191,192,164,158,198,107,113,220,122,92,0,7,208,142,112,115,158,160,13,242,152,103,18,220,131,140,124,215, +182,184,245,25,6,62,157,41,60,167,228,179,49,245,6,246,204,115,145,156,252,167,234,0,29,57,237,205,177,246,165,231,96,7,31,243,241,7,31,95,244,147,159,166,63,30,41,11,204,15,205,2,177,238,124,245,63,158, +217,31,60,117,57,39,190,5,0,87,242,84,14,26,94,185,255,0,143,171,86,31,158,225,207,208,117,236,57,196,162,51,142,11,243,211,55,54,189,58,115,135,39,32,156,117,234,127,3,50,72,221,224,65,233,251,194,115, +233,215,59,177,216,31,207,169,169,150,99,184,129,10,128,72,3,12,185,200,227,0,168,32,140,244,206,57,29,69,0,85,10,227,140,205,223,129,117,107,180,128,125,26,94,122,241,208,246,235,83,168,192,31,235,128, +246,154,219,166,79,93,179,126,120,29,176,42,127,57,79,222,133,73,56,206,88,3,145,207,59,129,250,112,20,122,28,154,12,170,112,68,32,3,199,222,83,207,78,140,135,220,116,239,233,154,0,64,199,31,126,228,144, +63,231,230,47,98,120,243,242,56,231,160,198,49,143,73,147,36,103,117,209,4,240,126,209,180,254,107,32,92,126,39,181,48,75,25,192,242,65,234,113,190,53,198,125,115,9,31,94,167,167,0,224,83,212,169,199, +250,44,39,184,45,40,39,63,132,88,200,198,50,113,237,193,6,128,37,201,63,197,114,48,51,197,201,39,177,31,242,241,192,228,147,211,216,231,138,112,105,59,25,248,244,185,127,195,254,94,184,246,198,58,122, +117,174,197,23,32,90,193,147,255,0,77,119,16,61,112,96,60,117,228,3,159,78,14,16,34,28,145,12,57,63,237,46,0,207,253,123,254,128,251,224,119,0,190,29,64,27,141,202,147,255,0,79,147,243,220,240,183,132, +126,185,200,57,25,230,147,204,4,224,180,237,144,58,222,92,158,125,62,107,163,220,255,0,250,250,213,63,39,29,33,133,72,201,226,72,65,57,61,247,68,7,64,70,11,17,201,233,197,41,138,78,66,172,75,140,115,230, +219,96,247,200,56,92,147,232,112,63,14,128,26,43,180,244,138,233,248,254,27,151,61,57,234,215,35,185,245,227,29,41,87,97,229,161,189,30,223,106,147,191,92,226,228,140,125,14,115,200,25,53,151,229,205, +211,49,174,120,0,207,109,144,121,198,65,252,253,65,231,3,178,24,174,143,34,72,135,98,60,216,88,16,113,140,224,228,227,166,6,1,227,240,0,212,50,64,167,254,61,239,79,35,173,228,195,29,123,53,193,28,231, +160,237,235,221,172,246,231,173,165,235,31,83,120,228,127,233,71,242,224,251,86,102,203,176,79,239,109,184,198,114,83,7,158,224,18,59,245,254,167,151,15,182,46,10,203,111,234,118,144,163,167,94,188,123, +140,241,211,140,26,0,188,90,28,127,199,173,208,231,189,219,147,199,112,13,210,227,219,131,238,41,51,110,163,230,180,186,61,71,19,191,225,255,0,47,99,36,231,185,233,219,131,89,229,175,78,115,123,110,156, +116,13,207,225,153,49,156,126,29,243,66,201,115,199,250,114,146,122,242,191,159,250,209,232,9,255,0,38,128,47,249,150,184,57,180,185,25,236,102,99,235,223,237,71,7,174,71,167,78,40,18,219,113,139,71,231, +160,102,114,196,19,199,62,121,206,115,144,14,8,231,25,227,20,218,73,198,127,210,183,30,78,114,131,215,210,115,215,235,199,166,42,47,180,74,51,186,232,131,239,112,24,30,167,145,189,186,118,28,241,158,14, +77,0,104,9,35,39,155,57,134,9,193,89,28,126,31,44,224,241,207,81,199,60,245,20,166,84,80,75,69,34,140,103,231,146,224,146,64,246,185,234,7,167,92,125,5,102,121,225,179,186,240,18,7,32,56,4,243,206,57, +94,123,242,72,28,242,5,40,154,60,96,221,200,71,179,224,228,12,122,18,56,227,25,56,244,36,12,0,94,55,118,231,56,7,62,129,110,24,129,233,203,144,65,200,39,159,161,193,166,125,166,50,14,211,140,14,112,28, +122,159,226,98,113,207,110,157,56,170,38,230,21,228,92,204,78,57,2,86,25,30,153,49,182,14,58,125,59,113,74,151,49,49,36,207,116,163,218,231,3,255,0,69,15,94,231,140,99,29,112,1,108,178,156,183,156,58, +231,157,237,143,78,153,3,3,131,220,119,228,230,134,120,199,31,104,3,30,144,185,30,135,164,71,131,236,112,115,220,85,115,60,56,226,226,236,243,206,110,84,131,147,158,65,140,123,241,147,77,243,32,224,137, +103,108,243,129,52,121,227,131,156,167,248,228,250,154,0,176,102,137,121,55,103,254,253,48,252,255,0,209,201,199,190,59,117,235,73,230,198,217,63,106,45,223,30,81,227,208,255,0,199,175,94,78,114,7,231, +85,90,230,49,141,171,112,125,73,150,223,174,127,187,176,156,103,191,124,227,38,151,207,140,140,17,49,231,238,159,39,182,61,16,103,4,119,25,250,14,40,2,201,150,19,143,223,74,115,233,3,19,245,32,91,19,143, +166,58,240,120,166,129,17,63,235,28,145,201,221,1,39,191,35,117,175,124,242,48,120,235,142,106,191,218,96,31,242,202,82,113,158,18,35,211,233,183,242,224,158,195,181,56,92,196,57,88,231,244,225,70,59, +246,243,112,7,208,116,61,57,228,1,206,177,115,184,49,200,235,246,84,92,2,122,101,172,24,254,61,114,61,113,80,249,49,158,87,112,238,51,18,41,234,50,64,58,103,167,94,121,227,215,21,39,219,99,0,141,173,208, +114,192,15,79,89,1,245,238,59,12,158,181,24,189,18,30,99,135,24,0,134,77,216,62,191,235,113,250,1,249,80,3,90,221,71,63,47,204,121,27,92,31,96,118,88,46,50,112,7,175,56,20,223,45,20,124,202,91,175,252, +179,144,241,211,32,27,46,188,224,28,242,122,123,72,215,22,224,28,165,170,156,241,136,92,3,219,254,126,212,116,252,62,184,21,23,218,34,35,253,93,167,65,201,183,36,244,233,205,232,232,56,233,64,17,147,10, +156,121,77,212,114,85,190,128,255,0,199,175,29,58,100,99,182,41,26,84,29,32,206,122,28,176,60,140,244,54,192,123,246,254,84,227,117,22,71,238,45,79,110,109,155,156,3,235,122,122,115,233,223,173,39,218, +34,60,11,123,21,30,246,242,16,71,252,2,236,117,247,7,191,168,52,0,198,104,207,204,109,179,156,117,101,30,221,62,205,131,207,182,125,253,99,44,7,31,103,65,201,199,42,61,51,207,217,199,110,132,99,56,28, +250,202,211,64,122,67,167,147,143,249,229,58,244,227,189,209,232,61,206,113,210,162,243,67,112,177,216,12,30,158,68,141,212,127,215,226,255,0,128,207,189,0,40,115,206,33,143,31,240,6,247,206,126,206,79, +225,212,114,7,20,141,46,6,112,168,79,95,144,3,198,115,214,0,7,124,245,25,207,83,76,102,96,56,93,60,227,60,27,121,113,212,227,147,114,126,167,13,239,207,74,102,100,193,1,44,61,241,106,78,71,7,7,50,150, +29,193,193,25,32,17,64,19,173,192,24,27,159,142,234,1,235,211,254,89,231,57,231,168,24,60,103,131,79,23,106,185,31,57,7,253,148,252,240,97,57,193,231,131,206,61,77,87,30,106,174,124,187,108,119,9,3,128, +72,244,204,196,12,158,191,214,155,231,78,185,219,26,126,42,20,113,140,112,100,32,131,192,199,24,235,214,128,46,155,156,244,7,215,62,74,17,215,174,22,33,129,223,145,158,188,230,143,180,22,24,221,144,59, +152,58,125,15,150,0,234,73,250,154,163,246,153,87,25,72,131,119,228,19,200,224,156,74,15,108,240,7,65,131,75,246,135,56,202,162,142,48,65,199,215,146,231,190,59,119,238,69,0,90,37,136,25,105,0,56,192, +16,134,31,76,100,17,158,132,100,115,219,3,33,173,144,70,48,9,235,254,142,255,0,204,54,49,142,61,187,31,72,76,204,48,11,16,6,78,4,152,237,236,24,243,199,28,143,214,154,110,167,234,143,42,158,70,67,241, +142,152,24,140,96,113,158,58,244,207,106,0,155,205,36,224,72,217,246,183,155,159,65,242,183,76,122,114,59,116,164,51,200,51,243,18,120,224,219,75,201,24,61,216,30,249,25,61,63,0,97,243,238,207,89,38,3, +61,67,191,35,208,15,47,175,215,62,184,25,52,195,43,183,222,50,156,28,243,35,2,49,158,255,0,103,3,244,224,208,4,134,230,99,145,128,72,224,126,224,228,228,159,239,200,123,122,99,211,30,172,103,184,110,2, +32,231,4,181,187,156,30,123,239,80,7,208,250,119,192,160,200,72,31,120,253,102,147,177,238,4,32,30,123,228,17,238,105,165,207,65,215,254,187,76,113,249,196,72,25,237,235,220,103,20,1,19,44,216,230,40, +152,243,202,194,79,166,58,202,61,193,62,231,3,29,107,180,114,115,152,34,108,243,202,40,206,1,224,159,49,135,4,140,100,156,126,60,218,10,205,247,149,88,123,201,33,239,129,199,146,113,219,160,231,131,215, +128,187,99,31,242,205,15,111,148,184,62,189,77,191,57,227,156,227,174,77,0,103,145,48,233,103,17,28,30,36,69,57,24,236,36,24,61,184,7,191,6,154,101,159,189,148,68,227,133,51,128,58,122,249,135,159,108, +129,199,113,210,235,24,213,185,139,28,12,131,43,1,207,28,15,36,17,215,184,201,35,182,106,54,120,79,6,221,9,232,50,207,130,57,206,63,118,6,57,231,24,29,59,10,0,131,204,185,60,125,141,64,56,206,219,156, +117,238,14,240,122,251,128,64,231,184,161,154,228,244,180,62,199,237,104,189,120,228,25,254,156,117,206,122,17,83,108,181,60,152,35,244,192,125,163,57,250,156,113,199,65,158,160,10,110,221,57,73,205,189, +184,61,14,233,213,65,36,244,28,228,231,220,253,69,0,65,178,229,198,62,206,195,156,144,47,162,94,78,123,153,137,237,234,113,236,56,164,251,60,164,18,109,228,220,6,72,254,210,143,160,199,253,52,36,14,122, +100,99,56,207,74,181,183,78,32,148,183,180,4,113,159,180,6,62,199,1,135,95,113,142,156,118,164,41,106,70,90,43,80,167,145,182,85,57,31,82,253,64,57,63,167,124,0,86,242,164,28,125,157,179,208,31,237,16, +199,159,65,231,47,79,81,158,7,126,50,190,84,153,255,0,82,192,246,255,0,78,99,220,113,133,185,4,122,99,242,233,83,52,86,4,115,21,191,56,228,77,17,244,63,223,39,208,103,56,60,140,112,106,53,143,79,25,194, +67,142,159,44,182,199,61,142,1,36,247,233,237,201,232,0,4,130,41,63,231,140,135,57,36,45,204,175,129,216,31,244,176,115,234,50,122,227,39,186,136,24,156,24,101,25,233,243,76,125,50,48,111,121,28,247,56, +227,208,140,215,219,109,147,178,56,113,198,14,251,65,193,239,203,169,56,39,36,243,211,142,41,235,20,127,243,198,46,132,143,222,90,142,58,228,99,118,8,235,64,22,126,204,91,24,73,115,207,1,101,62,216,226, +243,39,175,83,142,125,49,72,45,73,24,104,228,62,207,20,173,187,7,176,251,104,192,246,207,60,100,243,196,6,1,146,4,72,7,108,75,1,24,32,130,49,192,233,129,234,125,59,212,102,37,82,15,146,132,231,56,47,31, +227,209,91,232,58,116,227,140,26,0,180,109,58,252,132,14,135,54,179,140,253,118,222,28,116,206,115,158,131,62,178,11,49,201,9,24,39,1,179,105,116,122,118,249,111,72,36,12,115,143,168,200,226,144,141,113, +204,40,61,54,149,57,200,207,101,25,250,0,59,241,199,47,85,24,225,93,120,57,3,102,9,199,114,98,99,198,51,128,24,116,205,0,92,251,51,96,113,16,207,253,56,222,246,199,115,115,147,156,246,32,119,39,209,194, +220,158,119,71,156,242,63,179,175,24,241,199,95,181,30,1,247,30,221,192,166,60,158,55,2,72,198,72,242,73,39,158,254,64,252,192,24,252,105,224,33,229,119,1,232,82,18,115,211,28,198,79,224,61,51,211,52, +1,115,236,231,143,150,54,245,63,96,185,7,60,31,226,152,242,79,126,131,158,13,6,18,184,253,220,57,56,201,109,54,83,199,113,192,56,60,245,36,245,36,99,180,74,99,231,49,54,64,199,88,135,231,181,56,207,182, +15,76,246,52,102,223,56,100,224,244,27,228,233,143,68,140,241,248,145,130,56,232,104,2,65,9,57,196,112,2,79,252,248,203,142,220,143,221,255,0,76,156,119,236,195,12,221,2,91,1,211,155,41,125,179,199,149, +215,174,71,184,231,142,16,53,135,63,35,2,127,217,185,35,168,232,124,174,61,51,199,29,199,6,158,6,159,199,200,78,6,126,228,231,4,114,56,242,143,167,78,185,233,214,128,20,67,46,57,16,240,122,45,164,189, +127,24,207,83,208,228,255,0,139,196,115,12,240,163,140,16,98,35,143,96,97,207,225,154,145,26,192,140,5,114,120,255,0,150,83,227,146,56,255,0,81,243,15,199,223,160,167,98,215,156,40,24,0,241,4,196,158, +220,230,18,115,235,223,233,210,128,34,34,81,198,193,143,104,0,56,252,109,155,215,169,199,176,199,83,4,99,229,231,222,36,45,232,120,16,40,235,207,92,244,207,90,152,165,168,254,5,115,255,0,94,243,228,125, +54,194,15,248,31,90,65,28,45,247,98,35,175,2,218,243,255,0,66,8,51,249,115,198,71,74,0,139,99,103,152,152,131,216,90,192,51,158,217,54,231,35,174,7,61,73,227,52,158,82,146,127,118,252,103,36,67,106,121, +39,211,200,4,244,207,108,116,227,53,101,84,39,38,34,50,59,193,126,163,61,206,66,18,113,199,115,219,140,115,82,0,175,194,166,72,207,221,135,82,111,94,57,140,244,244,227,208,14,148,1,76,195,140,109,18,40, +61,127,115,2,142,191,238,1,215,175,56,253,105,203,8,3,37,229,28,231,6,40,59,228,240,78,122,246,239,215,3,60,139,98,46,197,100,228,224,21,130,252,12,245,56,221,18,254,135,30,188,154,122,219,19,147,137, +185,235,152,175,121,255,0,199,122,99,191,110,222,180,1,93,22,60,227,124,163,25,207,238,109,79,167,28,183,212,12,109,198,61,58,60,165,190,62,102,61,184,107,123,113,211,4,30,61,187,143,196,18,121,177,246, +114,59,128,57,206,97,189,224,122,225,148,15,98,115,254,20,134,54,219,203,70,14,49,147,29,218,14,188,117,97,215,169,199,94,163,175,0,21,202,90,244,105,80,14,188,219,39,60,19,159,149,79,56,166,24,237,185, +1,224,36,158,51,111,30,122,117,195,32,253,79,189,89,217,199,51,170,255,0,181,139,163,156,99,156,6,56,207,190,62,148,152,92,241,119,16,56,57,200,187,24,60,240,62,124,231,212,156,117,199,174,64,42,21,131, +160,242,27,3,140,91,197,158,217,206,93,123,250,122,251,145,82,42,194,70,62,80,114,6,68,101,1,61,198,18,65,156,243,235,199,191,38,98,35,3,254,62,161,199,82,51,116,57,201,228,252,199,174,59,254,57,52,210, +214,248,199,218,33,61,112,119,92,15,99,130,64,234,56,192,61,125,185,160,8,204,40,65,253,228,99,166,50,46,142,6,123,109,144,227,28,3,192,207,7,158,241,152,35,232,211,65,248,53,208,39,211,0,158,15,62,167, +245,169,135,144,57,19,68,222,231,205,35,159,247,243,128,120,231,7,168,193,235,77,47,9,39,253,34,1,211,147,231,96,99,60,112,20,129,199,81,211,167,160,0,13,251,44,31,192,234,73,25,199,153,116,8,199,92,124, +221,72,60,1,143,83,214,147,236,106,65,195,1,147,213,166,189,28,254,12,79,31,128,236,61,213,228,139,32,44,246,132,231,254,155,241,145,235,180,158,223,204,119,197,66,196,176,226,226,216,113,198,26,115,199, +166,55,122,118,247,160,9,133,138,30,124,197,62,198,230,244,103,168,35,144,70,71,212,250,246,197,31,96,136,28,22,95,252,10,185,207,124,112,224,99,223,147,238,71,122,222,83,28,17,52,36,244,251,210,140,250, +140,48,62,196,247,233,201,164,16,73,215,205,183,28,116,38,96,223,76,249,103,167,57,206,59,208,5,193,97,1,206,231,80,114,126,237,203,19,236,78,36,30,253,57,235,220,212,139,167,65,212,92,227,168,63,233, +146,175,60,122,51,224,103,57,231,142,58,19,89,198,27,131,192,42,113,131,148,102,32,244,32,243,14,58,12,1,156,14,128,26,95,46,235,60,51,1,212,128,140,122,1,233,23,67,235,159,111,112,1,160,214,49,0,74,206, +172,127,218,188,115,215,60,97,128,7,235,129,248,102,152,45,162,92,110,146,47,94,38,140,250,231,176,28,158,185,35,235,128,42,161,91,163,146,36,85,61,14,82,65,158,224,228,68,15,25,234,15,81,205,52,195,122, +48,119,163,100,146,56,148,123,119,137,136,231,167,7,191,74,0,210,2,217,70,55,169,199,164,145,31,99,199,154,164,246,199,204,8,244,197,57,101,133,112,7,146,126,178,32,37,71,76,254,252,142,216,237,254,57, +127,103,187,200,36,134,206,14,118,187,123,240,62,206,125,251,103,166,7,52,227,13,239,56,141,177,147,209,9,228,100,101,143,217,58,143,167,78,1,227,52,1,169,230,66,121,62,79,124,226,120,201,245,193,31,104, +7,211,140,228,243,145,205,49,165,143,63,44,97,142,48,118,200,131,130,58,2,46,199,7,166,113,146,57,234,114,51,25,47,1,203,110,94,185,253,220,100,224,99,187,90,146,50,48,121,63,83,81,147,116,49,243,12,147, +144,10,90,140,159,94,109,122,253,7,245,160,13,6,148,129,143,45,135,36,227,205,94,58,156,115,120,71,78,227,63,143,83,25,154,94,66,70,220,244,219,57,0,143,160,153,187,114,121,231,142,184,170,128,92,245, +12,157,73,193,75,76,142,184,25,251,63,175,183,167,78,233,178,224,224,31,179,99,3,239,11,65,158,125,144,12,158,185,3,215,233,64,22,124,201,142,51,12,184,227,165,193,96,79,81,198,243,215,183,63,227,77,221, +41,7,247,115,12,115,159,55,140,156,227,0,191,94,167,131,158,252,240,42,185,142,110,62,91,2,70,115,255,0,30,107,215,146,78,97,39,39,169,245,197,39,217,238,88,238,81,167,243,201,1,244,255,0,126,187,173, +247,28,245,193,62,253,69,0,93,1,176,14,36,30,160,205,46,122,147,218,112,63,3,219,138,63,122,121,2,92,118,253,227,117,245,201,149,243,147,239,234,42,184,130,233,7,221,178,98,122,2,154,123,129,234,1,22, +231,25,231,146,1,60,243,154,70,138,240,241,139,49,147,221,44,151,25,61,120,139,24,227,158,0,254,128,22,182,204,71,14,224,142,131,121,39,185,62,135,24,60,114,65,250,241,64,71,92,150,121,185,227,179,122, +147,193,4,158,228,254,61,78,42,152,183,188,4,241,99,131,212,22,177,33,115,211,147,31,60,255,0,119,167,79,74,156,91,94,113,129,167,156,241,200,179,207,167,85,80,71,113,158,127,196,2,96,189,15,154,227,215, +42,15,124,127,207,47,235,187,212,250,73,192,255,0,150,195,57,233,229,199,145,232,114,80,156,159,110,61,134,106,17,111,125,159,185,98,123,96,125,157,50,71,251,177,182,71,94,122,251,227,154,119,147,127, +131,251,171,66,71,7,231,81,233,206,13,177,206,73,198,49,248,227,144,1,57,220,78,68,228,99,185,130,34,59,30,118,129,236,49,199,61,106,64,210,14,86,120,184,57,195,91,91,28,231,253,228,110,253,121,227,158, +113,214,168,130,252,30,96,136,103,248,128,13,156,224,129,159,177,145,131,199,167,7,143,100,48,223,231,253,68,75,234,85,71,60,156,231,22,60,231,147,207,110,9,197,0,104,43,203,199,239,160,25,231,38,214, +3,211,3,63,42,242,57,227,191,94,148,25,31,28,220,67,220,144,45,98,234,121,36,134,136,156,253,9,31,165,82,91,123,209,255,0,44,212,2,58,24,212,245,206,115,155,92,231,35,223,158,71,78,20,199,114,163,152, +33,224,224,228,199,30,51,211,35,236,189,254,189,137,227,144,0,39,243,95,60,60,120,60,228,69,0,250,228,44,42,113,234,50,15,83,207,96,187,244,18,238,199,35,247,80,224,3,198,7,238,192,61,250,245,231,138, +175,178,112,65,9,110,7,79,245,233,156,145,233,246,83,252,255,0,94,2,177,187,60,40,183,233,140,249,163,28,119,7,236,120,32,254,191,76,80,4,190,100,160,13,174,0,7,156,121,43,158,51,218,60,241,233,156,18, +113,201,230,152,205,112,217,38,114,61,112,240,177,233,254,212,103,158,7,76,122,138,174,198,244,30,76,57,39,140,78,131,158,189,237,9,239,159,195,167,2,153,186,247,45,247,115,207,75,136,249,30,231,236,121, +32,250,114,125,242,40,2,214,235,140,127,199,204,192,116,1,30,17,142,71,56,242,201,24,62,156,113,74,175,112,115,254,153,119,159,81,52,126,188,253,216,250,131,201,231,158,131,218,142,110,201,57,49,227,161, +6,104,143,0,142,8,54,160,159,241,239,154,81,36,160,114,202,163,60,226,88,192,63,135,147,208,231,177,199,63,64,0,46,159,53,142,126,215,121,142,122,78,216,62,255,0,44,96,103,61,179,248,245,53,27,111,234, +183,154,129,61,112,38,127,169,201,201,199,25,24,199,228,57,170,222,121,92,159,48,113,212,44,145,227,233,145,23,231,158,6,125,41,134,236,129,247,248,231,145,44,99,168,231,147,24,254,126,180,1,43,60,163, +56,184,189,62,230,227,62,249,249,136,239,237,219,174,121,40,179,206,58,220,222,174,115,207,218,192,3,212,157,175,159,207,167,99,198,106,161,189,207,30,115,129,145,210,120,255,0,145,65,200,24,29,121,254, +76,251,105,200,255,0,75,156,140,112,51,108,71,167,241,17,156,116,232,91,211,173,0,104,9,101,61,46,174,177,159,249,251,0,243,193,232,64,207,161,32,99,214,164,222,231,5,175,110,192,207,123,141,195,191,28, +15,175,57,60,250,230,178,94,249,70,75,77,59,15,165,152,224,145,128,7,154,9,199,25,207,61,9,29,48,193,168,218,159,226,155,39,169,219,103,215,156,31,245,224,1,220,103,131,219,173,0,109,135,235,254,153,57, +207,247,153,200,250,146,48,122,17,140,14,61,112,105,197,200,228,220,185,234,62,103,186,199,35,29,21,185,227,57,29,192,231,56,227,20,95,90,147,243,73,32,207,170,88,140,117,199,34,224,127,92,254,25,169, +22,250,208,114,101,147,24,29,13,136,31,95,248,250,83,248,159,110,180,1,171,184,46,15,218,147,241,251,97,245,227,7,140,253,122,247,233,78,89,70,78,102,183,30,188,76,125,113,144,92,30,71,168,234,7,21,146, +111,172,143,252,181,152,156,100,15,54,196,12,227,211,237,158,131,166,122,241,216,80,53,27,94,72,150,115,238,39,178,3,190,49,155,208,59,227,140,3,205,0,109,249,131,36,137,173,189,184,184,25,83,248,146, +64,236,115,207,3,210,156,24,17,143,58,217,71,161,243,254,189,193,63,160,201,237,210,177,69,229,177,57,221,115,223,24,186,178,56,231,156,145,116,120,250,41,28,247,228,85,132,187,182,36,252,215,89,245,251, +76,30,188,228,44,231,7,223,60,231,142,132,0,13,80,84,244,158,44,244,32,45,193,28,30,73,202,224,245,233,211,140,241,142,70,70,234,175,17,235,206,203,129,219,140,97,79,95,166,73,207,110,106,143,218,160, +60,4,157,206,49,243,79,24,193,244,39,206,237,207,7,63,92,147,71,157,9,201,22,210,3,211,45,58,158,184,232,4,160,15,99,223,131,206,113,64,19,48,145,121,204,69,128,199,11,48,227,232,83,241,28,103,244,166, +49,148,240,99,70,207,4,9,28,112,51,206,48,49,219,142,49,192,245,202,239,32,124,176,190,15,113,63,110,113,140,49,252,61,248,231,161,67,35,28,254,225,179,199,45,112,224,247,236,72,235,220,143,108,28,80, +4,68,176,198,97,99,145,147,251,214,63,175,153,131,212,158,160,28,119,166,177,3,57,182,144,158,114,119,161,57,207,124,182,79,29,50,6,56,238,5,72,93,137,199,217,152,145,211,247,132,250,224,112,65,250,113, +146,113,72,190,105,32,11,70,207,209,219,158,231,190,239,92,140,227,29,186,16,8,72,83,159,244,89,251,112,25,8,198,61,129,199,62,191,145,235,69,90,242,229,61,109,31,191,88,143,110,184,194,103,31,145,232, +123,28,148,1,192,253,189,73,236,61,64,183,144,117,29,192,32,144,122,158,79,208,210,27,213,57,193,140,115,158,109,39,232,115,223,4,158,122,122,228,117,226,160,205,217,0,139,102,94,196,249,183,24,235,208, +147,38,59,142,131,62,252,129,77,103,190,3,30,67,123,1,37,193,31,163,159,230,121,207,74,0,153,175,79,25,150,14,221,96,186,29,137,60,2,63,33,198,113,184,117,203,77,218,227,38,104,70,115,131,246,107,131, +235,158,119,12,122,245,201,56,245,193,128,201,117,212,194,20,245,230,91,177,156,242,50,112,195,183,94,123,241,205,38,235,130,62,232,7,218,107,128,78,65,227,2,62,184,245,254,70,128,44,139,152,251,93,68, +9,29,173,110,128,39,211,59,137,252,73,252,134,41,222,107,19,197,204,24,228,228,219,221,15,95,124,231,159,78,78,123,30,107,102,228,245,18,254,23,119,203,143,202,50,50,57,233,237,211,25,164,41,48,199,250, +252,247,255,0,77,191,0,99,254,216,112,71,98,125,15,66,113,64,22,196,211,242,69,213,185,4,244,49,93,140,143,197,184,227,161,7,245,200,166,180,211,117,55,86,203,206,112,98,151,175,111,190,227,145,208,28, +158,135,234,107,1,32,201,38,233,121,28,139,237,67,39,62,233,31,167,175,60,146,122,211,65,0,227,125,224,231,159,244,221,72,231,190,121,10,6,123,228,99,240,2,128,46,139,185,0,0,220,219,18,7,59,163,207,166, +72,221,51,1,233,192,28,250,211,62,212,88,241,119,108,49,212,41,10,79,254,69,30,222,222,220,213,114,125,37,186,80,121,230,242,252,224,142,115,247,211,244,231,169,29,233,65,42,51,231,72,84,227,42,103,189, +201,0,228,31,245,199,39,156,122,145,223,189,0,75,246,146,51,139,184,73,60,16,174,131,61,143,62,119,39,28,112,57,29,13,32,154,67,255,0,47,8,114,9,230,69,35,60,103,238,203,255,0,215,62,220,212,123,212,245, +117,224,143,189,46,160,73,62,216,144,158,49,216,145,143,81,205,30,104,28,172,145,103,36,99,205,190,235,156,247,144,14,123,2,8,252,112,104,2,113,43,117,243,35,36,231,144,231,0,255,0,223,240,51,199,94,224, +18,51,210,131,43,231,143,37,187,28,200,7,161,232,211,145,248,158,122,224,17,213,139,60,164,125,232,142,123,121,183,153,199,32,100,121,195,167,108,231,175,122,149,102,115,131,251,146,125,205,209,245,245, +156,242,57,193,234,59,242,104,1,60,247,7,149,182,83,158,78,84,227,174,114,68,167,241,35,3,219,38,143,62,70,60,139,98,73,35,137,35,30,191,222,98,71,126,159,208,154,121,184,153,113,129,111,237,136,103,108, +123,115,38,121,238,65,239,215,160,167,253,174,83,212,89,1,211,6,218,82,216,232,122,185,4,253,122,116,4,117,160,6,6,35,156,67,219,129,60,4,12,14,14,7,35,28,251,241,201,169,70,88,240,97,200,234,12,177,228, +251,129,229,228,158,57,198,59,122,0,85,110,101,98,62,75,54,193,207,252,121,175,78,152,203,100,156,122,147,144,113,147,82,44,242,6,200,138,207,211,38,202,54,39,56,245,127,168,232,6,9,206,104,0,84,155,24, +95,32,140,28,124,241,55,169,199,41,244,199,63,79,119,172,115,156,126,234,221,179,255,0,76,225,43,199,60,145,25,31,231,156,10,83,117,33,4,8,173,186,17,149,211,225,199,67,253,229,111,211,167,29,193,165, +89,39,35,113,138,2,188,31,150,194,216,103,30,159,187,28,245,231,35,223,189,0,63,202,147,32,60,22,216,235,254,173,65,237,233,11,12,228,19,211,30,160,241,78,242,88,140,132,137,78,58,98,60,113,219,6,216, +119,199,81,238,70,42,53,105,57,62,72,234,58,89,91,19,192,57,207,10,64,3,250,129,232,92,28,245,48,130,222,159,99,128,17,215,28,14,57,228,158,79,126,180,0,241,4,188,229,163,80,58,225,20,231,177,39,253,28, +113,215,60,14,132,0,120,166,253,157,129,59,102,143,24,59,134,208,61,176,55,70,112,65,238,48,79,24,2,153,230,190,72,91,114,78,7,75,88,193,245,25,192,60,250,246,237,142,185,104,146,96,120,183,148,156,146, +0,133,6,15,108,159,43,56,7,174,14,122,12,80,4,130,200,156,182,252,125,6,114,122,145,180,70,125,121,63,207,129,73,246,73,122,13,204,15,28,68,91,190,127,231,143,167,208,227,174,65,52,225,53,214,71,238,110, +135,7,238,32,3,62,160,249,64,96,231,212,253,112,41,194,107,177,140,91,222,156,127,189,142,227,146,137,223,4,14,189,240,58,80,0,182,83,100,150,71,35,140,143,45,57,228,14,134,49,131,211,168,250,226,156, +44,206,66,152,110,57,254,236,104,57,224,228,237,140,246,246,246,246,167,253,174,244,117,130,248,124,167,167,156,115,237,145,19,113,158,216,207,227,81,139,155,156,156,197,127,158,156,181,208,24,250,45, +182,71,174,51,248,80,4,223,99,81,207,149,112,63,224,24,233,211,172,39,158,167,7,28,122,240,105,69,168,200,203,92,46,1,3,114,38,62,159,52,8,72,198,8,234,51,200,231,36,181,110,156,117,138,248,117,255,0, +159,230,206,50,120,2,31,126,252,253,77,88,23,50,144,54,199,122,122,140,226,239,208,142,9,181,35,185,61,78,59,208,3,132,12,184,218,210,17,193,193,138,60,18,7,29,16,116,238,121,207,226,114,237,160,159,186, +217,198,50,35,140,231,62,167,203,236,73,198,123,158,131,34,149,102,184,57,59,111,115,207,105,142,7,127,189,106,15,81,211,7,24,252,42,65,44,231,150,55,216,238,90,57,121,207,29,126,202,6,49,211,156,231, +219,2,128,21,80,1,243,36,228,30,112,144,70,195,233,129,25,57,39,166,72,233,216,114,37,66,139,130,35,185,231,141,191,103,128,99,190,57,64,122,113,223,129,143,122,4,228,96,51,93,99,36,114,174,184,3,235, +109,192,63,76,122,156,244,145,103,143,119,205,246,131,199,83,207,24,236,69,184,35,234,61,51,64,19,44,240,247,142,224,46,120,197,188,76,121,224,147,180,47,227,134,28,231,29,205,56,220,91,158,60,187,146, +0,206,12,24,57,227,36,128,216,199,78,223,202,155,231,219,99,239,92,140,99,24,228,116,227,147,7,183,111,167,94,169,230,90,146,15,153,113,158,78,73,29,241,198,69,169,227,4,251,227,129,145,208,1,194,123, +92,242,39,28,115,152,137,200,231,177,83,156,125,71,30,153,205,72,179,217,103,0,203,238,68,49,251,245,220,235,131,199,98,59,123,82,41,129,134,11,92,99,30,169,140,243,253,235,113,248,231,215,29,233,225, +99,232,139,62,122,227,49,3,147,142,203,8,254,99,175,62,180,0,9,173,57,1,174,79,166,219,120,200,253,46,126,158,184,244,206,41,12,214,199,168,187,193,245,129,48,126,131,237,29,136,57,7,223,61,41,194,62, +71,55,93,57,195,33,199,76,146,120,238,123,126,84,240,132,227,155,179,129,201,5,120,199,76,16,51,233,200,207,113,214,128,24,36,179,7,63,233,25,238,62,198,132,122,158,69,198,122,16,123,231,24,199,60,59, +237,54,107,192,75,134,110,219,172,134,61,127,231,182,15,79,94,157,65,205,73,228,70,78,92,222,142,185,199,153,206,115,208,228,99,175,160,250,116,195,141,189,191,0,203,168,46,113,129,137,9,239,208,121,139, +223,62,135,29,197,0,70,46,33,251,219,100,62,159,232,140,57,237,247,110,8,29,137,235,239,222,165,89,97,39,36,56,236,1,181,32,117,228,124,211,228,145,237,212,146,15,90,22,218,32,79,250,70,160,1,227,148, +152,103,147,212,253,180,117,235,208,117,32,117,160,219,67,156,249,215,57,57,57,42,249,60,131,252,90,136,39,158,163,3,57,61,179,64,18,9,81,78,118,198,113,235,106,7,211,143,180,243,142,61,121,228,246,1, +223,108,147,238,160,76,246,34,203,112,231,57,233,118,7,57,207,95,228,112,193,109,31,99,116,220,231,132,152,147,142,191,243,17,198,59,122,17,207,81,77,54,209,238,201,251,104,199,95,220,184,246,198,90,252, +158,125,178,78,58,241,64,19,45,213,216,228,40,24,207,91,25,112,120,232,72,187,39,39,63,159,52,229,185,187,39,37,109,179,217,158,198,124,100,250,147,51,100,244,224,144,78,70,58,28,85,242,20,241,254,154, +6,70,65,141,176,0,245,205,241,28,228,142,156,231,182,105,222,92,0,241,246,178,121,206,99,57,56,255,0,118,247,238,247,206,125,179,197,0,95,251,77,199,117,177,56,224,131,167,78,113,211,248,188,211,147,248, +0,122,212,139,61,219,116,91,67,233,157,62,96,58,123,201,129,237,239,140,17,89,139,13,191,4,164,231,220,219,201,147,207,168,189,0,244,237,215,232,113,79,49,91,156,159,38,97,199,120,31,167,99,205,209,61, +250,113,250,3,64,26,97,175,136,56,91,97,211,159,178,200,58,243,142,37,232,62,135,177,197,63,23,88,201,251,49,227,4,8,103,200,3,177,13,32,193,207,57,25,24,231,60,230,177,68,81,28,226,22,61,62,244,76,120, +231,168,251,83,99,167,25,239,208,250,189,98,80,114,32,114,7,31,44,71,169,199,79,157,143,79,67,220,244,160,13,98,146,18,114,214,249,239,251,137,114,56,227,248,201,227,235,211,161,239,81,152,152,228,137, +162,80,79,252,241,151,56,227,212,144,61,176,50,61,241,84,4,32,158,32,185,25,28,15,41,136,252,126,117,57,244,231,235,238,241,12,191,243,237,112,64,199,6,49,130,51,232,210,142,228,30,72,232,15,126,64,46, +11,37,144,101,174,19,174,15,238,164,83,216,99,13,208,115,208,143,241,18,11,8,0,230,104,137,224,242,51,156,156,247,83,215,35,167,169,224,114,77,29,175,159,245,19,142,15,30,83,46,51,201,251,179,142,79,29, +63,152,20,210,178,183,252,178,156,12,224,0,183,28,115,207,31,106,3,57,7,28,96,253,5,0,95,251,13,178,158,100,143,39,143,189,180,99,169,229,91,223,140,244,199,24,238,195,107,104,188,229,24,244,25,184,10, +167,223,45,212,224,241,130,7,90,162,99,144,114,34,186,57,244,23,0,231,145,145,254,150,56,231,156,31,195,138,82,179,12,254,230,236,30,132,43,92,14,61,0,251,94,49,244,39,63,136,52,1,104,193,107,193,2,51, +143,250,122,140,17,216,15,188,14,58,146,48,127,193,187,45,51,140,68,91,184,251,68,89,224,127,215,78,135,56,234,51,211,53,88,137,199,34,43,195,211,239,53,192,56,206,70,49,119,199,110,15,113,156,140,208, +166,224,47,252,123,92,176,236,124,233,243,158,189,5,209,192,207,56,236,120,7,138,0,156,139,126,113,28,32,12,159,245,150,205,198,122,252,243,128,123,227,183,64,0,166,131,15,81,28,68,99,175,250,39,3,158, +226,224,96,17,236,127,42,102,251,140,115,109,56,7,187,79,114,61,122,255,0,166,15,126,221,62,130,161,50,78,167,229,138,81,145,211,206,185,201,35,61,190,210,72,224,99,144,61,168,2,208,145,0,56,134,28,15, +70,180,60,228,250,220,14,61,184,233,219,154,83,55,32,172,22,227,158,11,125,131,35,253,160,13,234,145,254,113,239,158,102,184,207,9,41,61,207,159,116,48,58,147,254,180,2,59,103,39,7,183,74,141,164,184, +97,202,201,140,116,55,19,1,239,195,191,29,115,201,238,104,3,72,221,182,112,45,173,50,59,132,180,221,158,48,73,23,231,169,244,228,227,52,130,238,110,63,113,14,227,216,36,36,100,142,156,222,30,158,195,234, +43,56,25,136,36,196,231,166,9,157,137,255,0,190,139,28,16,125,241,142,157,170,65,52,225,64,242,37,238,114,38,108,245,0,243,131,140,112,56,246,200,230,128,45,53,196,204,14,109,226,4,113,254,162,50,1,35, +3,37,110,215,61,120,237,142,216,164,243,103,4,102,50,56,228,11,115,129,158,224,11,146,15,57,201,233,143,126,77,99,45,198,120,137,242,79,5,174,113,239,206,64,35,175,124,100,253,42,54,150,228,253,229,63, +79,182,140,147,129,145,133,86,30,159,174,115,130,104,2,209,150,126,129,15,60,3,228,50,96,158,128,226,127,65,216,244,227,3,20,211,44,164,29,205,140,127,8,141,193,207,78,8,46,71,115,131,199,60,247,170,69, +229,255,0,158,103,24,239,112,249,252,49,23,166,0,245,28,142,216,97,105,7,59,121,255,0,175,183,201,28,96,15,220,147,234,121,247,244,160,11,222,124,132,100,51,103,24,28,78,163,240,196,103,131,220,15,115, +76,55,18,224,229,219,25,254,237,215,108,240,72,139,215,140,140,114,65,198,42,162,188,157,226,45,235,139,167,239,199,63,232,231,240,244,62,248,32,14,227,254,88,238,24,36,230,233,207,4,118,31,102,25,29, +122,30,249,236,69,0,79,246,144,51,186,82,59,99,23,199,184,25,1,97,60,231,7,140,140,212,109,112,135,238,220,74,167,28,101,53,33,248,156,192,1,199,212,128,61,169,158,104,3,148,81,255,0,109,36,227,142,50, +126,200,24,244,200,35,212,224,230,152,110,112,62,89,21,72,206,1,154,110,252,96,98,216,117,3,30,159,78,104,1,236,234,121,55,164,118,201,138,244,244,250,199,156,254,94,157,249,96,49,129,206,160,87,7,60, +65,118,7,65,193,220,158,156,254,53,25,185,144,131,137,227,25,60,19,44,195,39,0,227,253,71,92,140,158,159,149,64,215,19,40,193,185,80,8,193,2,107,145,243,100,28,16,45,156,122,243,129,211,25,3,52,1,105, +158,30,63,226,100,115,255,0,92,46,51,142,114,114,33,0,253,1,237,235,77,12,185,199,246,145,96,114,127,213,92,15,199,136,179,158,195,238,250,247,38,169,125,162,67,243,11,160,72,235,153,110,143,92,142,27, +236,64,99,158,65,99,207,78,51,79,23,83,246,187,85,255,0,182,183,36,129,206,7,250,149,232,56,232,63,80,40,2,195,184,25,197,227,177,3,31,241,239,114,196,122,30,80,12,123,146,115,207,29,234,50,210,16,72, +185,35,31,244,237,57,61,136,254,37,60,245,193,224,119,3,156,179,206,156,142,111,164,29,136,141,238,176,14,125,162,82,70,120,231,28,243,142,153,55,72,73,38,242,228,140,114,119,221,15,253,4,122,147,253, +58,114,0,164,200,120,243,89,142,49,242,192,227,39,156,144,26,65,199,28,19,223,233,154,65,20,195,144,210,159,172,25,39,211,172,131,32,115,215,219,154,97,14,112,13,213,193,7,248,140,215,99,143,80,10,254, +163,190,113,138,4,45,255,0,63,215,88,244,89,175,64,199,92,240,163,61,50,7,230,122,208,4,194,43,174,50,210,144,65,255,0,150,16,177,206,50,7,250,195,211,39,142,221,249,234,24,238,6,73,18,158,152,204,74, +185,245,233,145,199,183,161,235,205,52,90,200,216,255,0,73,189,127,82,110,47,27,25,201,63,121,91,190,59,142,252,246,167,11,7,32,134,184,188,25,39,147,44,231,147,232,10,30,56,224,241,142,164,228,208,0, +198,224,96,126,247,145,198,64,227,215,128,23,212,30,157,113,147,214,163,6,235,176,144,250,126,236,245,246,33,135,62,190,158,188,19,86,6,157,25,235,53,193,233,144,93,216,115,145,159,154,34,221,14,120,60, +245,237,154,119,246,116,67,188,167,142,193,15,183,241,128,51,220,112,71,60,244,160,10,173,36,227,229,100,152,99,33,143,148,125,253,28,129,239,146,62,189,55,67,190,71,234,247,32,2,58,64,128,227,158,238, +9,252,65,231,158,71,57,208,54,40,15,31,105,198,7,27,109,128,207,39,211,60,240,63,35,235,134,125,148,0,1,75,131,131,252,95,100,193,252,212,159,212,112,121,235,200,5,32,243,14,60,219,172,114,71,238,35,36, +142,164,225,80,227,20,210,206,115,186,107,165,28,117,180,82,15,211,9,198,58,244,207,25,57,57,21,125,109,192,228,70,112,59,147,107,156,147,237,17,228,103,166,113,216,228,115,74,97,29,66,40,32,142,139,106, +9,255,0,200,99,142,216,198,79,36,208,5,37,101,39,254,62,167,39,166,13,187,3,158,189,162,61,179,250,122,212,76,192,18,76,215,7,35,175,149,56,28,127,185,110,59,122,242,123,115,131,87,204,114,28,145,22,79, +187,90,40,235,234,83,252,123,99,140,154,143,100,168,127,227,222,60,246,203,90,19,249,136,192,246,28,255,0,92,128,80,44,50,11,77,112,121,60,108,184,61,79,112,208,183,30,191,153,230,144,70,142,65,221,112, +70,120,204,51,112,121,231,34,216,227,7,190,15,94,132,85,227,230,0,127,113,19,28,240,4,182,195,143,204,47,56,238,196,245,3,140,144,210,215,25,33,44,212,115,215,237,22,249,246,61,120,28,142,50,72,231,28, +208,5,99,10,96,113,57,233,147,254,144,164,14,252,11,92,103,211,143,174,59,52,218,163,255,0,12,191,86,105,195,15,96,13,176,56,252,71,227,210,174,7,188,39,6,213,121,61,126,209,111,239,140,133,112,127,15, +126,248,25,120,55,39,173,188,121,244,105,1,224,247,5,100,108,251,118,250,113,64,21,22,206,30,8,140,228,159,227,150,224,115,207,92,67,192,250,100,247,169,5,156,108,126,104,225,3,176,19,222,118,255,0,182, +125,243,234,15,175,106,156,137,79,252,177,143,140,31,245,140,113,142,157,24,156,119,198,113,250,83,128,145,65,205,188,64,117,24,47,233,206,114,64,252,127,51,128,48,1,0,211,160,206,124,136,179,239,113, +120,59,255,0,186,57,245,30,231,175,52,167,78,143,168,180,183,126,152,255,0,72,212,28,241,220,225,72,250,129,192,227,147,138,118,73,36,249,112,169,63,222,114,59,246,196,128,115,211,185,231,38,158,19,28, +249,112,150,35,146,14,71,225,185,191,207,94,244,1,26,216,32,227,236,54,223,77,247,222,253,50,131,31,92,30,127,89,70,156,171,207,246,108,13,146,49,153,111,148,12,122,29,131,175,183,248,211,196,64,143,245, +17,177,201,224,20,246,36,242,125,61,254,189,57,65,6,49,139,117,7,168,201,140,142,248,232,14,7,29,184,197,0,31,101,10,73,254,206,132,114,7,203,119,124,0,237,253,229,231,175,255,0,174,164,84,3,173,148,107, +201,198,47,46,178,57,63,223,112,72,61,207,83,206,15,66,88,97,233,149,129,122,100,114,199,4,243,209,127,62,163,129,239,76,54,209,143,225,128,19,206,2,144,15,78,120,132,245,199,92,147,199,161,160,9,246, +143,249,246,143,131,218,242,228,145,207,253,116,224,254,157,177,199,42,85,122,136,23,215,139,153,187,12,16,55,30,224,241,142,115,211,28,213,95,178,167,86,72,64,60,130,10,142,157,56,107,110,7,39,144,114, +58,245,193,166,136,16,30,35,131,25,224,238,131,35,62,128,219,1,144,63,19,211,234,1,116,121,96,157,214,165,176,78,79,218,101,25,252,1,7,242,29,127,42,55,68,15,54,105,223,239,93,92,30,58,116,4,227,62,249, +207,160,170,226,45,163,229,134,34,58,141,166,220,1,212,231,229,183,233,159,92,15,64,105,193,31,181,184,110,57,1,224,30,157,115,109,207,78,248,199,32,80,4,222,116,35,238,219,196,163,24,56,184,144,28,224, +119,101,25,245,0,254,96,252,197,173,114,138,112,17,57,207,2,235,245,227,35,233,199,175,66,6,25,151,25,255,0,69,101,24,231,38,50,14,58,145,182,207,142,113,235,142,6,122,210,111,97,255,0,44,200,232,126, +227,30,121,244,179,0,253,65,224,227,36,154,0,127,219,85,122,178,47,214,232,31,200,49,57,246,56,199,175,74,62,215,27,242,39,95,67,243,6,0,103,253,214,252,128,28,103,29,234,29,254,160,251,19,17,206,59,242, +109,1,199,36,240,121,192,197,1,163,206,72,151,190,113,24,237,145,201,251,38,56,206,48,78,120,233,193,160,11,30,108,68,127,173,24,35,129,242,147,207,176,135,63,135,35,219,140,83,63,116,71,4,147,200,200, +65,237,201,221,110,121,199,191,124,246,160,77,18,245,142,114,14,0,194,3,156,113,146,162,21,233,131,129,142,79,229,82,45,197,184,60,137,199,166,109,250,18,9,227,8,123,103,36,129,248,80,4,91,87,170,131, +215,56,217,31,7,24,231,109,176,57,237,144,113,199,94,197,197,24,144,66,176,247,192,206,15,253,187,254,153,227,57,61,5,77,246,155,115,158,37,7,182,97,110,79,252,5,27,158,15,69,246,199,20,25,109,250,146, +202,72,231,48,220,115,245,253,208,0,15,66,126,132,208,4,34,59,131,141,175,40,57,234,162,53,198,79,60,181,171,96,253,79,175,173,60,197,124,220,172,247,152,7,146,30,44,100,116,255,0,151,110,115,233,143, +175,94,16,188,7,141,235,147,206,227,111,56,207,230,160,17,199,227,208,211,212,219,18,67,220,70,7,67,254,141,56,207,176,59,212,147,207,166,56,193,28,145,64,12,22,247,196,228,220,94,228,224,243,229,18,122, +227,147,8,4,253,112,79,94,212,227,105,118,127,229,226,224,244,198,227,7,66,58,113,3,117,7,57,247,200,24,169,194,218,96,109,184,136,250,127,163,220,18,61,49,251,193,142,56,245,193,233,154,157,69,155,112, +211,194,79,31,242,194,232,31,94,210,47,60,117,25,235,249,0,81,251,21,247,85,121,155,234,209,175,60,119,54,164,228,227,183,61,49,197,6,45,85,65,195,204,23,160,195,163,28,245,24,34,221,64,201,39,3,243,7, +53,124,199,100,57,223,27,158,122,69,121,199,215,231,62,222,163,129,238,42,51,21,161,56,243,81,56,227,22,247,93,125,62,101,111,110,1,61,199,97,64,20,188,189,83,25,38,78,220,48,78,73,60,116,136,122,159, +78,72,198,121,202,151,213,6,67,20,60,96,134,60,109,61,1,30,89,198,123,227,35,140,250,10,184,109,173,72,207,218,64,231,56,242,174,23,255,0,100,254,100,82,27,107,110,64,185,28,103,35,101,199,76,115,208, +16,121,227,182,57,206,122,208,5,51,37,246,115,190,49,223,248,113,142,216,204,67,156,122,241,234,77,38,251,156,124,197,78,113,144,171,31,231,247,6,62,156,14,149,107,236,246,227,24,185,92,158,229,174,20, +243,215,36,145,199,110,70,15,161,238,225,29,160,24,55,128,30,156,73,41,224,143,99,238,123,143,127,74,0,163,190,97,206,208,121,231,116,42,196,227,211,17,183,108,127,83,138,60,251,133,233,110,188,231,254, +93,84,123,117,16,31,124,150,234,115,198,57,171,166,43,83,157,183,110,113,216,76,224,159,192,147,199,229,158,149,93,161,132,255,0,203,103,57,60,127,164,21,60,228,99,145,207,94,73,61,240,40,2,15,180,92, +103,34,217,50,48,71,250,55,177,31,243,192,103,241,224,19,234,105,26,107,140,130,98,35,174,51,109,140,228,240,127,212,246,198,64,7,142,106,86,134,0,7,239,174,14,122,145,114,172,59,122,140,115,223,175,168, +199,53,1,192,35,101,196,253,192,63,107,143,191,65,130,164,126,131,235,205,0,13,60,199,147,27,28,245,30,65,28,159,66,97,32,253,115,207,79,65,77,18,56,255,0,150,79,207,77,176,99,31,83,228,130,15,60,246, +253,105,113,54,14,46,110,8,231,31,233,112,30,125,134,84,253,121,231,28,247,160,125,160,241,230,200,120,39,13,115,24,233,233,243,224,254,127,206,128,19,44,220,176,151,36,15,249,98,71,0,251,192,64,227,235, +236,58,211,127,122,7,202,204,6,123,198,153,3,61,191,116,79,228,48,72,233,197,56,165,198,120,159,0,129,214,234,17,142,189,204,216,206,49,208,143,207,162,4,184,35,254,62,142,59,127,166,219,144,121,255,0, +175,145,248,116,236,56,160,0,53,198,56,147,25,29,25,0,61,113,206,216,8,247,236,122,28,100,82,22,185,199,250,245,94,57,202,38,79,97,144,109,73,57,233,198,73,227,142,180,223,42,232,228,139,134,36,99,24, +187,132,142,114,51,255,0,31,36,12,2,115,208,231,175,74,12,58,135,80,242,28,116,11,113,11,17,207,39,137,28,251,117,193,28,99,52,0,221,243,114,12,253,122,225,16,1,156,224,103,200,29,186,231,223,184,197, +38,101,35,6,80,122,114,81,27,144,59,98,18,164,247,60,15,167,90,97,143,85,81,148,146,96,125,9,76,244,0,99,231,231,211,145,199,29,115,195,54,235,64,156,144,217,233,184,35,31,126,68,128,228,99,29,113,158, +216,57,0,18,252,234,114,101,30,188,67,23,211,28,219,30,127,1,193,7,190,106,69,12,221,100,82,73,231,40,163,61,192,192,183,3,223,143,94,49,80,249,26,187,128,73,140,142,8,196,64,241,159,250,235,207,30,152, +57,39,165,39,217,245,3,128,90,44,158,160,193,147,200,227,159,60,123,118,252,177,64,23,60,156,114,94,17,143,93,224,247,233,136,115,219,223,219,173,51,102,8,253,228,77,142,225,100,239,131,222,53,253,59, +245,230,160,251,37,246,222,94,32,115,212,64,228,227,215,2,98,63,47,200,243,152,141,173,239,79,60,17,146,71,238,36,192,227,61,3,19,193,206,7,211,214,128,47,21,200,25,218,127,235,154,220,147,158,58,176, +95,99,192,247,247,168,218,5,108,225,24,158,248,251,96,39,185,24,219,128,120,32,244,252,106,153,176,186,206,76,172,199,36,224,90,206,115,142,71,115,199,160,28,117,226,144,217,221,109,198,226,56,255,0,160, +124,204,58,119,253,217,198,51,215,39,63,76,130,1,104,64,73,32,44,192,103,4,98,239,29,189,128,236,120,227,142,216,25,163,236,229,187,75,233,247,174,70,123,245,97,223,208,227,56,62,245,79,236,243,131,243, +72,228,255,0,179,167,63,31,142,7,35,30,163,39,29,71,89,2,74,7,50,144,1,32,230,192,130,115,216,128,31,142,123,241,235,218,128,39,22,216,201,6,69,231,60,189,207,115,140,231,110,7,211,219,222,131,20,152, +192,121,186,116,243,110,192,62,231,158,115,199,60,116,252,161,206,58,206,195,35,156,105,236,15,230,97,56,239,207,67,199,20,135,35,173,219,224,142,0,180,0,142,113,156,136,9,7,191,160,245,61,0,4,158,84, +170,56,150,225,121,234,37,156,250,117,14,196,115,236,63,157,70,68,139,255,0,45,174,115,142,114,196,131,207,92,239,95,174,15,110,15,92,211,131,113,159,181,179,115,158,34,3,215,254,157,131,99,0,113,215, +156,250,26,79,55,176,185,124,142,51,176,47,61,0,230,216,242,125,7,92,246,193,200,3,85,166,198,60,217,121,233,185,200,36,28,15,186,38,109,199,142,188,30,132,83,55,207,144,68,210,140,16,8,25,199,30,165, +166,224,115,213,121,224,131,214,172,9,66,245,153,201,236,74,169,201,25,7,254,89,33,36,231,169,28,245,30,133,26,232,145,149,121,184,228,126,234,33,252,225,57,0,31,94,158,180,0,209,61,198,56,145,206,63, +136,50,12,16,121,24,107,149,108,227,191,234,41,194,89,219,7,205,7,253,246,67,215,167,221,188,39,159,215,57,166,153,219,140,207,115,215,144,171,6,50,115,217,109,187,116,61,198,58,103,52,241,40,35,137,238, +23,29,55,44,56,253,109,65,231,166,64,56,231,158,104,1,158,100,228,224,58,240,15,247,176,78,123,237,186,63,215,190,105,119,220,55,73,35,199,64,55,206,167,183,165,224,29,177,200,228,103,0,102,152,204,121, +221,116,253,248,34,1,233,235,108,72,192,61,115,236,61,105,4,104,216,255,0,72,151,190,2,201,110,64,200,231,254,89,47,229,142,63,12,208,4,174,215,61,228,4,227,160,154,69,245,235,155,222,71,255,0,88,14,244, +133,230,32,3,180,224,247,151,39,215,156,94,143,83,223,142,166,163,48,32,255,0,150,146,185,233,254,186,53,255,0,217,8,35,160,224,227,138,95,40,156,0,37,39,177,223,25,207,35,156,249,99,140,227,56,36,31, +161,197,0,63,205,151,254,121,70,125,247,72,79,78,6,69,225,224,115,197,46,101,96,79,151,143,65,251,195,146,73,237,246,162,15,110,253,121,197,66,99,152,99,27,138,245,201,242,176,127,242,15,25,199,82,114, +123,116,34,154,76,199,162,185,60,241,251,156,28,142,113,152,115,248,109,245,226,128,39,242,231,32,141,146,113,219,230,25,0,231,25,51,177,35,174,61,59,14,197,162,23,221,157,179,12,245,196,146,16,59,115, +251,195,200,24,254,28,103,241,166,8,238,115,146,178,142,122,15,47,29,143,81,107,216,250,31,161,233,78,197,192,24,10,228,243,247,163,221,235,221,109,64,252,219,29,201,233,64,15,49,190,48,26,81,211,164, +146,14,71,190,14,70,8,30,163,56,29,56,80,157,50,211,1,131,214,103,28,142,113,131,216,246,254,85,88,165,209,206,80,241,192,1,28,116,227,143,220,28,246,236,217,199,30,192,91,158,173,20,128,250,130,227,159, +194,203,63,158,59,140,241,64,23,130,227,248,156,250,41,125,199,28,156,131,142,127,65,248,224,83,87,4,130,100,117,56,234,119,12,140,158,219,15,233,158,221,234,177,251,82,156,133,111,187,144,14,252,254, +102,199,4,142,224,15,92,224,103,13,243,174,151,254,89,201,219,149,61,112,113,192,54,64,159,241,237,197,0,104,133,94,63,210,93,123,112,101,253,72,140,14,122,242,127,173,33,132,18,115,127,116,167,31,194, +242,243,129,198,49,23,29,113,193,63,134,77,103,125,166,224,30,86,224,3,208,172,69,191,15,245,10,49,248,247,193,230,143,180,31,227,91,162,125,237,241,248,115,24,24,246,61,243,144,40,2,225,133,212,241,123, +116,221,199,239,166,244,239,251,162,61,61,15,28,114,41,81,100,193,221,117,114,0,206,51,60,253,142,71,2,21,35,142,8,63,92,156,10,164,110,80,228,249,87,92,127,211,185,227,223,62,89,60,103,56,0,14,156,245, +166,27,168,177,254,174,233,143,251,86,196,117,192,3,238,0,122,145,156,116,205,0,105,133,97,255,0,47,87,45,223,153,37,235,239,185,7,244,25,193,237,81,110,110,114,242,145,211,37,166,110,184,232,75,99,30, +128,0,14,107,59,207,132,12,152,39,200,235,251,129,212,231,156,144,15,62,167,167,173,39,218,163,199,202,151,3,7,3,247,40,73,207,175,202,112,120,207,7,191,166,48,1,124,204,202,78,4,152,238,118,177,25,227, +166,103,24,235,143,208,84,102,233,186,109,98,121,244,7,241,30,115,30,227,175,124,99,32,213,97,116,164,96,173,193,62,134,44,112,59,142,0,29,135,3,160,62,166,151,237,17,146,63,117,113,158,131,247,100,245, +201,63,78,159,231,60,128,74,110,91,39,247,4,159,114,73,56,231,0,12,158,56,234,78,59,19,214,138,141,110,144,146,4,19,247,234,25,120,239,247,85,186,158,122,129,156,227,61,138,0,202,43,116,113,139,216,136, +224,16,89,129,250,0,20,54,58,99,128,61,72,230,152,98,187,207,23,54,253,57,62,112,7,158,58,145,156,19,215,212,103,146,58,79,228,67,158,12,184,61,255,0,180,33,96,59,142,60,210,112,71,183,225,200,196,109, +111,0,254,39,36,246,55,144,251,227,57,24,31,211,56,235,154,0,79,42,239,159,223,192,78,57,34,97,158,127,83,244,228,245,30,180,224,151,128,28,93,64,167,222,103,29,71,78,152,60,117,35,161,244,224,84,66,4, +28,225,156,114,48,46,35,39,56,246,7,191,57,224,96,96,99,147,77,104,149,79,8,61,112,210,245,233,220,112,73,233,211,167,61,65,52,0,230,23,127,243,241,19,1,206,62,209,49,24,227,168,217,143,160,0,227,56,205, +71,254,149,253,232,72,201,31,235,230,95,230,157,58,115,208,15,115,195,182,184,206,35,67,215,3,207,1,121,246,234,123,245,255,0,235,211,2,202,73,253,205,184,244,204,209,2,125,137,103,25,31,135,30,156,208, +3,91,207,232,76,28,122,93,56,25,231,57,204,68,247,227,13,158,222,197,1,144,15,189,31,63,244,243,140,142,127,233,151,225,78,196,129,179,229,217,126,50,192,64,250,157,249,30,157,123,250,156,6,50,200,196, +140,233,235,129,200,50,34,143,92,240,36,30,128,113,223,167,56,160,9,70,227,255,0,44,145,189,8,152,49,193,0,247,65,159,169,29,15,20,121,76,127,229,134,0,231,137,122,126,59,0,199,92,145,248,142,213,9,67, +143,154,77,56,118,251,233,192,61,184,183,207,29,122,228,158,189,6,89,179,110,112,218,121,227,130,88,128,15,212,90,158,153,231,30,156,102,128,44,8,202,147,148,110,216,195,18,125,123,43,96,117,29,127,92, +82,240,127,229,153,35,145,146,242,100,125,72,65,128,120,29,115,215,35,144,4,1,142,121,109,56,250,147,43,158,1,35,181,160,227,25,252,250,241,131,47,202,127,139,76,25,29,75,76,228,99,191,54,196,143,211, +158,123,80,2,16,63,231,154,116,193,6,66,15,29,51,185,115,215,244,253,69,77,220,121,123,125,120,221,249,231,31,94,61,143,81,194,136,212,31,245,186,95,208,111,199,211,2,219,211,175,94,121,24,167,249,96, +100,9,52,224,115,209,131,159,167,91,99,248,12,31,231,64,13,17,19,208,129,215,169,94,221,192,39,156,158,196,119,239,221,235,6,112,89,75,14,121,227,158,78,48,70,49,232,64,60,250,231,20,36,100,99,18,216, +156,103,132,86,192,252,172,79,174,49,145,216,224,211,149,100,233,190,215,175,69,243,84,227,168,3,22,36,126,56,245,3,140,228,1,235,110,91,129,27,140,28,100,121,167,156,122,9,27,190,113,129,250,30,101,251, +19,128,14,74,129,207,41,48,199,227,150,252,114,63,14,181,92,23,83,247,162,56,57,56,55,24,228,240,15,250,0,206,71,96,125,178,56,169,68,146,245,8,140,122,101,35,187,198,121,0,156,218,40,25,231,63,141,0, +74,45,164,28,121,170,0,198,115,37,192,193,237,144,84,12,245,56,28,240,72,29,106,81,110,224,242,202,196,140,100,27,131,144,70,71,33,70,57,244,35,25,30,134,171,249,211,14,60,165,29,54,159,42,92,145,215, +28,219,18,71,79,243,213,161,220,48,38,48,73,207,5,31,63,78,96,83,245,39,56,254,96,23,62,203,38,50,124,176,65,39,253,101,201,110,131,28,22,60,244,234,7,182,49,72,182,82,49,199,203,237,243,220,156,243,219, +140,145,220,145,235,234,106,182,233,59,194,184,207,93,138,196,251,22,107,102,199,183,62,220,129,64,150,224,14,33,144,142,216,242,64,60,255,0,215,153,246,56,231,222,128,47,11,6,231,113,79,161,123,145,193, +206,122,129,82,11,53,232,16,224,115,242,75,112,196,250,253,209,201,227,129,233,223,166,115,196,147,146,1,181,118,57,206,10,66,79,79,85,180,86,244,198,8,192,232,112,113,78,6,113,159,244,89,79,94,8,96,49, +245,88,208,140,115,142,216,198,57,234,1,161,246,68,29,4,139,206,50,90,227,61,112,112,9,7,183,25,29,15,212,211,141,159,82,90,67,199,25,89,207,226,62,243,122,122,231,56,192,227,20,3,72,195,31,102,144,251, +135,114,121,193,36,12,145,147,128,78,42,68,73,79,252,176,112,120,32,158,49,207,171,56,231,240,99,238,15,52,1,111,236,200,0,192,118,32,227,149,156,103,62,138,87,61,73,237,239,211,154,62,205,145,180,197, +32,233,208,79,131,239,143,56,12,131,244,61,122,228,154,136,69,54,127,212,204,114,71,252,180,135,156,242,126,241,200,56,228,123,117,30,147,170,79,192,16,54,71,3,116,144,156,130,64,3,132,25,199,7,57,231, +158,120,32,0,51,236,248,199,55,3,4,244,89,71,3,177,221,115,211,211,10,125,71,4,26,122,70,202,126,244,227,29,6,208,119,3,199,79,59,59,189,15,94,231,210,158,5,214,72,17,115,232,100,78,163,182,65,231,215, +162,227,29,123,210,17,120,127,229,155,46,227,243,29,209,227,143,115,32,199,3,129,206,121,7,29,192,37,84,28,145,37,192,233,213,75,103,25,233,153,216,122,240,56,207,232,241,179,146,77,203,125,17,184,252, +4,132,147,208,119,231,216,212,59,110,123,168,199,63,126,85,199,94,58,76,121,198,120,3,25,231,214,164,31,105,76,109,104,215,142,71,156,139,207,167,44,115,158,79,32,116,29,243,64,19,108,207,35,237,24,228, +114,174,113,143,76,131,140,12,96,103,147,158,181,48,103,95,249,238,71,81,251,182,4,115,199,24,56,207,63,253,122,166,12,248,220,102,66,122,131,231,64,122,247,3,103,243,221,235,78,205,199,252,246,13,223, +137,32,239,216,254,227,183,61,61,57,160,11,98,89,1,235,47,30,161,201,234,15,113,223,24,227,24,254,114,253,162,66,50,36,144,251,224,30,115,232,88,122,241,144,1,61,113,222,128,121,64,193,151,158,160,23, +128,113,255,0,126,199,175,39,29,135,67,154,93,242,99,38,101,29,112,55,192,121,247,196,99,212,119,232,122,241,192,6,146,220,19,140,202,217,231,239,42,0,71,161,5,152,14,167,30,167,214,165,19,159,249,232, +15,56,59,130,99,142,122,249,77,142,157,191,192,28,77,231,118,60,196,39,128,6,235,97,142,15,115,130,78,71,99,237,140,243,82,169,36,16,118,147,131,140,73,105,156,12,227,25,233,216,224,117,252,232,3,117, +37,227,150,131,254,249,224,142,191,195,110,50,125,15,60,147,142,49,151,238,81,146,13,185,62,229,65,39,29,179,110,63,44,240,51,233,88,131,203,207,33,199,176,146,212,119,231,36,17,235,234,122,146,59,230, +101,150,16,1,204,195,156,96,77,8,201,239,144,28,254,3,140,227,220,0,1,175,230,48,27,128,179,193,227,6,64,49,245,249,64,7,215,158,188,16,56,20,225,112,235,143,155,79,231,175,239,16,158,49,198,88,39,94, +57,250,243,89,139,44,71,130,110,72,246,146,28,114,1,228,137,71,167,110,79,92,0,42,84,48,224,109,23,3,253,233,20,15,78,127,126,115,208,100,227,142,248,197,0,104,53,206,238,166,195,56,228,153,98,60,100, +243,133,112,115,244,239,244,205,2,82,121,18,233,255,0,131,47,243,243,61,58,254,56,224,226,169,143,39,57,105,37,200,236,100,136,231,158,255,0,189,238,62,184,199,110,9,151,16,96,225,156,146,188,3,36,24, +63,147,99,190,9,35,159,166,104,2,125,224,99,50,88,147,142,72,117,28,131,220,131,207,30,191,137,235,147,206,0,130,38,177,83,234,38,98,7,61,48,31,30,249,24,192,252,170,184,123,124,225,149,248,227,62,101, +169,253,48,49,244,235,235,205,79,190,212,19,180,206,8,25,226,91,64,1,245,7,175,108,28,18,65,206,120,4,80,3,132,202,126,111,180,90,228,99,39,124,225,127,70,235,158,132,96,14,120,207,87,125,161,79,2,120, +58,245,18,221,129,234,112,55,176,57,192,227,7,222,152,46,109,192,207,159,118,7,79,245,182,216,231,142,125,57,228,17,207,167,25,52,125,178,48,64,91,183,94,191,126,91,96,71,191,43,140,241,220,143,174,104, +2,97,59,96,1,52,71,156,112,247,35,161,245,0,123,242,121,238,125,3,252,217,6,51,58,243,217,36,184,224,228,227,248,24,126,71,39,208,140,84,38,228,17,255,0,31,10,195,61,60,203,54,192,61,128,242,216,255,0, +79,90,60,216,187,202,184,199,4,27,31,108,240,33,231,191,78,115,238,72,160,11,1,220,159,245,239,143,246,90,224,115,192,231,108,35,235,249,118,206,66,210,231,229,184,147,0,142,179,94,40,227,140,145,246, +114,163,39,147,131,199,99,158,181,254,209,107,192,105,27,29,112,13,136,245,25,31,186,201,39,168,227,31,202,148,77,101,217,229,39,29,124,203,64,59,255,0,211,46,61,241,220,244,235,128,11,10,243,100,110, +157,216,123,220,93,12,99,166,63,209,70,58,113,206,113,140,245,193,66,210,1,242,201,33,206,9,255,0,73,187,35,30,197,109,193,60,244,4,117,233,214,163,23,22,124,126,242,96,48,63,229,173,177,3,183,240,195, +199,61,61,128,234,15,42,37,180,228,249,211,3,207,89,83,220,28,5,135,0,119,24,232,62,156,0,72,11,228,28,206,112,79,73,111,125,179,214,217,189,122,142,253,104,50,77,206,22,111,198,107,178,113,212,113,246, +97,215,29,122,30,69,67,230,198,78,18,118,61,62,253,194,103,60,158,127,116,15,30,253,143,106,83,188,244,158,48,1,207,205,50,183,99,140,12,122,115,140,99,169,206,69,0,56,189,201,193,9,58,99,131,134,184, +111,97,193,182,35,35,215,175,61,177,81,52,179,129,254,182,112,115,198,36,156,30,6,49,181,99,76,144,123,224,99,35,130,115,151,8,165,36,226,104,216,118,203,7,0,145,140,114,164,231,191,231,206,14,41,76,87, +0,241,34,12,250,49,81,215,158,138,78,79,39,57,31,142,78,64,33,50,205,130,90,230,110,59,51,92,99,56,61,55,71,207,96,57,206,56,168,140,147,156,143,57,240,49,156,201,115,131,244,192,0,145,158,164,15,165, +88,100,186,200,197,198,7,95,245,175,130,61,15,81,206,122,156,103,24,29,104,41,120,0,197,202,116,39,38,89,79,191,191,95,78,15,82,61,128,41,153,39,32,31,56,115,253,233,110,14,58,156,12,227,145,199,11,158, +189,179,138,66,103,57,229,27,156,228,203,117,211,158,152,144,3,249,103,62,249,171,135,237,195,254,94,96,207,36,101,207,65,158,14,229,207,29,249,4,103,191,32,196,255,0,218,4,113,60,76,6,120,18,237,200, +56,37,176,57,244,57,28,247,60,98,128,34,221,114,15,43,110,184,234,90,107,220,158,1,92,157,231,35,235,235,199,122,95,58,232,100,111,132,1,235,52,195,3,184,25,199,78,156,229,137,198,51,210,157,141,71,4, +121,138,1,35,157,227,166,125,78,63,158,122,12,144,41,161,47,78,79,155,27,16,127,190,199,61,65,224,51,3,158,195,223,140,28,96,1,3,92,49,44,211,91,175,67,255,0,31,51,14,163,142,143,145,142,188,243,248,14, +31,186,96,6,46,96,200,224,143,181,186,250,113,203,47,31,83,249,115,76,197,210,224,19,193,60,225,230,95,174,48,135,241,239,199,20,191,188,57,44,178,28,3,146,183,19,12,243,255,0,92,134,0,244,207,7,131,211, +52,0,23,184,231,15,110,252,112,86,246,70,29,249,56,152,227,131,253,223,204,98,152,205,116,65,221,20,45,200,255,0,151,185,248,36,127,215,65,147,207,189,41,193,39,34,98,8,228,53,220,253,179,206,10,55,212, +242,7,61,169,54,168,4,133,147,30,247,19,145,211,183,238,143,227,200,31,169,160,6,131,113,143,245,86,224,115,140,221,76,72,57,232,62,99,142,221,233,55,220,103,253,84,64,244,5,110,37,207,108,127,30,123, +231,240,3,7,24,168,220,227,27,82,76,99,248,110,110,7,175,79,221,96,99,211,219,191,24,143,205,117,192,9,113,193,24,31,108,184,62,199,31,186,207,177,245,35,208,28,0,88,243,39,28,53,185,207,76,249,206,199, +31,142,123,112,51,158,131,7,145,71,152,73,249,163,156,28,14,21,207,3,60,140,28,112,71,243,252,42,185,151,118,75,195,114,127,237,242,228,129,211,142,32,201,255,0,60,241,77,222,152,63,187,144,15,250,254, +184,29,249,25,107,124,156,119,57,192,199,7,34,128,45,18,173,207,147,46,50,121,102,110,153,192,193,18,5,36,241,201,7,3,56,28,210,0,70,8,138,66,8,198,51,46,51,253,210,21,243,207,108,30,217,3,214,160,150, +48,48,182,242,48,201,28,106,19,103,174,59,219,158,152,224,146,61,233,69,197,185,36,52,82,47,169,58,161,4,122,112,97,28,227,140,14,190,156,208,5,162,199,63,234,15,111,249,249,252,177,230,14,71,126,41,187, +142,70,45,91,29,55,121,115,176,239,198,73,60,240,57,238,122,119,170,111,115,108,159,115,122,251,181,251,114,127,239,144,115,235,247,170,35,168,199,192,89,79,76,127,199,251,240,7,92,102,31,76,241,207,126, +104,3,67,112,198,5,182,0,206,73,73,64,62,157,119,103,31,135,191,165,59,114,159,249,98,185,201,25,88,223,32,158,132,252,163,142,153,250,227,174,43,51,251,65,15,30,111,231,126,221,59,116,128,143,174,72, +237,201,38,158,151,168,199,46,71,95,249,255,0,98,14,114,57,205,185,3,219,60,156,122,245,0,210,87,65,214,2,115,220,195,184,99,220,24,219,60,99,244,206,104,105,173,207,6,221,1,25,255,0,151,87,7,185,36,224, +46,64,228,255,0,245,241,84,13,202,30,209,245,4,22,190,144,28,1,211,11,107,184,103,160,30,160,224,103,154,107,93,34,142,177,14,131,155,166,96,7,177,107,101,207,208,128,115,158,184,200,0,184,101,182,206, +124,152,15,92,238,182,155,156,116,28,49,35,211,167,166,56,28,2,75,124,231,236,214,228,118,34,222,80,15,79,239,6,252,70,122,227,62,149,67,237,234,48,119,33,7,156,139,142,157,250,136,122,244,227,173,41, +189,86,92,135,0,99,39,231,145,134,61,177,110,192,245,245,31,173,0,94,105,109,14,51,105,111,211,248,173,157,134,122,255,0,116,114,9,237,156,99,158,164,84,76,150,109,255,0,46,150,231,142,54,218,72,127,79, +43,56,61,58,241,193,61,57,164,110,55,19,134,45,242,227,34,59,131,131,128,56,219,111,211,29,112,15,78,41,171,54,126,242,18,57,28,193,115,130,61,193,178,39,63,153,60,115,142,40,2,225,142,208,30,109,109, +64,255,0,106,205,215,32,129,220,197,156,231,211,223,211,33,222,85,137,63,241,239,104,189,73,219,106,205,140,114,120,104,250,115,223,169,239,147,138,168,76,77,131,246,104,219,30,182,247,30,221,254,200, +8,63,64,58,251,102,131,228,146,73,179,143,255,0,1,174,91,36,231,36,230,208,31,160,235,143,198,128,45,249,86,103,129,12,35,233,100,125,184,249,71,7,169,224,103,39,167,122,105,183,183,201,218,145,140,244, +63,101,218,58,131,159,187,192,206,59,227,167,122,166,90,1,255,0,46,17,156,116,197,147,156,245,245,131,60,30,185,227,62,189,215,124,100,252,214,0,158,196,88,22,244,35,164,93,112,57,206,61,49,140,208,5, +177,106,196,225,23,35,218,31,215,27,31,215,60,12,130,113,192,205,72,45,110,129,249,81,176,115,255,0,44,35,231,158,113,155,102,252,242,58,244,61,69,13,246,228,140,217,128,125,127,179,128,62,158,128,231, +211,250,30,41,219,237,241,159,178,169,25,60,255,0,102,243,145,245,1,123,116,227,212,26,0,184,109,238,7,222,142,67,220,3,2,128,49,193,192,242,71,64,115,215,24,206,120,197,69,228,92,30,144,176,29,241,111, +233,208,103,202,3,169,236,57,207,115,214,15,221,125,229,131,131,198,63,179,162,0,246,228,22,235,207,124,123,103,144,30,25,87,56,131,30,191,241,47,181,199,61,242,73,231,243,234,122,116,160,9,10,92,32,192, +141,248,231,230,138,48,79,110,65,141,79,7,25,252,71,165,42,155,175,249,230,220,14,54,164,35,159,92,8,193,29,61,114,56,245,193,132,202,49,202,99,29,197,157,183,61,122,128,87,147,244,207,94,244,158,115, +1,140,62,51,252,54,22,216,25,219,221,164,29,120,245,60,140,247,160,9,216,220,227,253,84,199,168,233,24,92,30,14,9,92,119,198,122,118,199,28,55,204,157,121,22,238,72,60,229,226,238,122,255,0,171,32,1,140, +123,129,140,112,42,6,113,253,233,148,142,64,254,206,180,57,227,142,126,208,163,175,61,15,60,1,140,225,129,155,140,155,144,51,158,116,235,50,57,237,195,51,14,152,207,61,40,2,207,218,230,25,15,106,64,192, +231,116,100,253,8,242,64,227,235,140,98,151,237,96,142,109,84,96,147,209,65,233,206,8,143,241,238,78,125,197,85,60,231,15,54,236,127,208,62,216,14,188,0,118,145,145,220,100,224,243,205,55,107,55,252,246, +62,163,236,22,199,61,79,104,216,224,254,157,186,26,0,178,110,162,254,43,84,60,227,146,199,156,231,7,11,207,39,142,135,222,154,46,224,56,63,98,139,32,30,178,40,234,56,24,35,31,142,51,237,147,154,132,91, +150,231,200,148,250,147,99,10,103,242,65,245,251,189,58,158,148,166,217,128,39,200,126,195,155,45,192,114,71,37,83,25,193,199,2,128,44,139,136,219,254,93,35,61,114,12,202,49,236,48,135,60,240,115,207, +115,233,79,19,195,159,249,7,198,224,19,156,78,185,250,28,71,193,224,245,7,147,193,6,168,253,159,28,152,19,234,214,140,122,251,99,29,15,35,31,135,28,56,65,145,197,172,100,118,255,0,69,43,207,208,244,254, +99,158,49,205,0,95,243,237,112,51,165,131,158,112,46,25,113,236,54,198,59,142,220,99,60,131,156,167,155,100,71,205,166,170,247,31,233,50,127,72,73,36,143,127,76,246,170,94,65,198,13,148,92,116,204,40, +56,206,58,178,158,224,227,215,167,35,163,150,6,228,139,59,126,61,2,14,122,116,242,186,123,227,252,104,2,216,150,196,140,13,61,84,14,50,37,147,176,60,12,219,227,143,203,20,245,107,12,99,236,10,79,169,153, +136,253,35,81,140,12,0,0,28,154,174,33,7,59,172,237,242,122,229,134,114,62,155,78,70,8,3,140,113,82,8,192,36,11,56,200,4,114,36,32,125,115,230,3,248,140,30,221,168,2,66,246,128,224,105,241,158,65,24,154, +81,244,234,0,207,63,159,99,72,100,179,63,242,227,16,63,245,221,248,35,215,228,39,176,239,235,235,77,216,135,145,111,26,100,242,3,185,224,99,63,242,212,123,129,206,115,70,2,231,10,23,233,44,159,160,23, +60,112,61,177,223,174,40,1,217,183,96,49,103,24,62,211,74,70,49,158,129,7,28,116,4,31,124,113,76,100,132,242,45,34,28,119,146,111,215,228,231,31,153,29,78,122,46,240,6,73,112,15,76,73,129,206,112,121, +186,199,230,1,246,197,60,74,128,15,245,196,129,140,137,1,237,140,100,93,99,169,4,14,167,242,192,4,35,202,25,30,66,1,206,112,103,227,156,99,104,81,199,165,55,41,146,68,71,166,48,22,86,30,199,12,1,231,177, +24,227,174,120,21,111,124,100,146,77,208,7,56,34,69,110,78,59,125,172,114,59,243,250,154,82,240,119,123,147,215,176,228,245,237,118,114,78,14,79,211,181,0,85,86,143,56,49,110,228,31,245,68,126,57,39,57, +232,58,140,231,215,164,219,145,177,136,8,199,164,108,57,246,30,122,142,121,207,95,231,153,68,150,227,169,186,252,35,114,15,191,23,7,144,57,207,127,83,156,84,171,113,2,227,6,113,199,95,34,108,243,234,26, +98,7,94,64,28,118,39,165,0,64,89,25,127,227,221,135,163,20,110,217,232,5,222,6,59,143,167,168,167,129,25,31,234,220,112,6,64,61,59,224,25,219,211,182,114,56,192,169,12,240,54,49,37,215,64,50,96,124,112, +0,206,124,222,7,160,254,89,166,9,226,86,255,0,93,58,227,156,8,142,123,243,131,47,189,0,1,33,228,108,149,184,232,20,244,207,180,232,113,244,61,51,82,20,183,95,249,99,40,206,127,131,24,198,61,111,71,215, +191,63,163,133,196,109,193,150,94,122,238,81,142,57,207,222,111,241,235,218,151,204,183,110,75,177,61,193,140,96,246,234,58,129,198,121,231,128,113,147,64,12,255,0,69,207,250,187,179,233,133,143,29,127, +218,187,233,212,244,227,191,173,1,108,112,119,91,93,16,120,200,142,212,243,215,161,157,179,249,255,0,32,42,86,91,98,7,25,199,25,16,176,56,60,114,88,129,207,211,243,228,82,17,106,1,249,92,231,214,54,61, +185,7,105,198,71,184,200,227,35,7,4,1,130,43,2,63,227,222,224,103,214,40,114,65,255,0,118,82,70,115,219,175,60,224,114,211,13,151,252,251,76,73,24,36,71,24,198,58,128,55,18,57,245,39,159,161,165,11,106, +120,17,185,7,174,208,249,61,112,121,0,99,167,30,221,121,225,12,48,244,2,80,9,224,177,113,244,238,61,15,3,143,96,104,2,35,111,108,78,124,137,120,200,199,151,14,112,71,188,222,199,156,115,220,12,242,214, +138,208,131,254,141,41,62,190,92,7,166,120,193,103,3,235,199,62,245,35,91,171,118,151,30,162,83,143,205,178,123,125,121,25,0,116,137,173,64,31,197,201,207,51,190,115,199,28,134,60,158,180,1,31,151,1,199, +250,28,190,188,67,17,231,39,161,224,3,239,147,131,250,39,147,6,57,180,159,29,48,109,161,110,157,120,105,193,255,0,199,65,199,229,82,139,36,97,255,0,45,126,139,51,16,79,61,128,60,142,216,231,158,157,105, +63,179,209,179,136,167,237,243,7,149,142,49,212,97,7,126,227,36,96,115,64,16,108,140,112,150,83,145,159,249,245,135,24,228,231,229,147,61,187,126,34,151,107,112,162,206,80,64,237,108,161,185,28,116,147, +4,114,59,115,83,54,158,63,135,237,139,158,152,89,14,113,219,238,156,245,235,215,245,166,53,163,2,0,107,176,113,232,227,130,112,120,48,63,126,167,232,65,160,8,129,144,29,162,25,193,255,0,116,160,233,219, +18,2,71,63,135,227,65,251,70,63,213,205,140,119,45,236,59,202,125,114,14,115,159,67,138,71,182,152,103,108,247,64,99,35,33,241,215,166,77,175,67,215,158,167,56,35,179,4,55,43,130,103,155,208,241,41,231, +169,207,238,14,57,199,10,7,110,125,64,13,179,30,211,131,156,99,119,229,131,191,147,219,243,227,34,148,172,203,213,231,200,193,229,143,78,122,29,205,158,249,235,220,244,60,179,23,99,172,210,30,184,249, +91,142,163,63,234,21,191,62,190,185,230,155,153,151,172,179,227,167,250,130,115,237,254,172,30,221,193,206,126,134,128,21,133,209,198,214,155,156,227,146,126,153,253,226,255,0,66,104,197,215,241,201,55, +24,251,203,39,56,247,251,94,115,147,239,219,3,138,143,123,177,7,204,185,39,29,173,229,56,199,67,159,47,233,237,235,238,164,76,2,254,242,115,199,221,123,121,254,131,133,140,227,28,228,28,100,250,226,128, +2,39,108,229,164,60,140,31,244,129,198,79,83,231,176,245,231,167,29,241,64,142,92,99,204,144,112,127,142,115,159,196,203,145,199,76,96,103,28,119,166,179,76,57,5,198,51,159,221,92,175,94,199,40,79,76, +241,140,99,56,233,138,133,165,185,236,138,199,25,249,188,252,253,14,33,218,115,233,158,15,94,148,1,43,219,131,255,0,45,31,62,239,63,30,223,235,15,227,220,113,211,165,39,217,178,48,36,65,233,185,238,203, +31,174,217,0,201,252,191,30,145,121,151,100,231,236,209,146,167,251,210,245,227,179,69,129,211,212,231,235,156,185,94,228,19,155,117,193,35,59,94,66,114,123,224,199,199,229,250,128,40,1,77,180,138,78, +26,223,111,112,205,119,187,60,17,207,218,87,223,25,239,205,70,82,96,50,62,200,71,78,94,228,156,28,19,200,190,235,236,49,248,145,83,9,38,28,11,80,126,146,28,31,197,130,243,238,51,208,250,83,12,178,245, +104,24,115,212,220,224,123,100,225,137,253,79,215,154,0,133,188,194,126,237,169,57,199,91,206,79,94,247,231,220,240,61,79,78,105,160,55,24,138,211,63,237,45,214,113,254,243,92,191,92,156,228,246,247,169, +252,230,227,247,35,241,185,39,156,127,215,46,6,56,207,57,35,158,180,134,121,71,11,23,174,8,187,110,61,254,224,206,120,227,32,241,156,115,64,16,101,142,51,21,147,96,99,254,94,70,15,112,7,152,127,81,235, +245,165,32,174,91,202,179,24,7,162,204,112,59,227,50,103,57,25,200,62,248,57,20,173,118,252,126,236,117,228,139,133,39,223,168,233,158,228,251,247,165,251,89,24,59,101,80,71,81,60,71,61,122,244,24,234, +51,211,160,32,99,52,1,17,154,67,247,98,181,42,48,63,213,92,16,125,48,68,141,140,125,56,164,19,220,15,249,97,23,81,194,172,252,116,29,55,168,235,219,255,0,172,42,115,118,15,86,147,184,63,189,66,1,62,225, +192,207,78,8,28,117,237,76,251,92,57,249,157,253,193,154,28,17,206,120,18,3,248,3,199,243,0,97,150,224,242,98,234,49,129,28,172,122,96,231,51,143,99,238,71,80,41,5,196,169,141,209,191,3,160,128,244,31, +239,78,120,231,25,199,97,233,138,113,186,180,198,67,146,72,207,44,14,58,247,243,113,158,62,159,150,41,191,105,181,35,31,40,244,253,216,108,254,34,70,246,234,49,198,50,65,224,1,69,193,111,152,9,84,228, +244,183,82,71,108,125,230,24,253,127,82,94,103,113,192,18,158,249,242,34,25,228,247,41,131,142,121,247,56,205,66,110,109,0,225,148,18,59,194,79,175,96,23,63,67,233,154,22,225,14,74,177,35,56,200,183,32, +115,211,163,240,71,76,158,135,161,61,104,2,65,60,197,78,86,70,25,199,252,123,192,91,145,199,86,24,60,227,36,114,125,233,190,100,140,9,62,104,198,114,126,205,110,125,78,122,183,167,115,142,57,199,90,105, +158,60,156,52,172,72,235,229,158,15,98,55,99,39,241,3,142,128,83,62,209,39,64,210,129,212,50,170,32,221,142,1,24,252,249,199,76,115,156,128,63,50,156,19,36,152,28,228,219,89,158,190,197,78,56,252,189, +57,201,10,19,201,118,61,120,107,107,37,32,30,153,38,18,62,159,116,142,152,245,136,221,220,243,137,102,193,236,64,61,191,1,143,78,59,242,121,168,140,243,245,11,35,17,193,193,40,190,217,27,118,244,28,12, +142,255,0,74,0,156,198,58,239,11,159,239,90,216,241,233,144,80,100,250,228,2,112,114,41,193,20,12,238,15,236,182,150,92,103,167,72,79,28,30,121,25,207,61,170,186,92,92,54,71,149,43,30,120,18,54,7,185, +253,219,1,140,113,212,82,121,247,29,224,185,0,244,2,116,24,24,231,131,16,227,62,191,137,235,128,11,69,33,198,25,36,231,25,31,100,183,63,134,5,185,238,123,12,156,122,83,126,201,9,27,196,114,158,79,252, +185,140,1,207,60,91,31,92,158,62,185,170,141,60,128,99,101,216,255,0,183,168,151,25,61,177,31,211,61,135,57,164,51,77,253,219,158,231,13,119,9,199,126,158,88,35,175,126,221,40,2,223,217,160,98,1,138,80, +51,201,22,76,71,35,29,173,192,30,164,243,223,3,161,15,251,29,166,15,238,165,224,30,150,114,228,159,252,7,108,99,35,190,61,193,53,157,231,21,4,180,115,243,193,253,245,183,114,115,131,180,113,249,103,208, +117,166,155,132,233,177,192,245,121,161,32,244,232,7,126,185,233,236,70,104,3,68,90,217,228,225,38,0,3,214,218,227,35,240,22,248,224,117,193,198,114,41,254,77,154,243,229,200,79,108,193,114,1,192,227, +254,89,2,61,134,0,239,214,179,4,208,145,134,78,125,114,128,12,158,184,9,215,212,2,122,15,197,65,182,239,2,176,199,59,155,0,131,143,250,99,129,238,115,128,122,19,197,0,104,121,118,135,143,33,216,231,32, +249,119,64,244,238,48,15,61,127,46,72,206,77,182,160,159,221,129,140,100,17,118,199,242,12,79,185,192,252,43,60,201,105,140,164,113,71,180,31,249,106,120,246,35,96,31,79,199,240,143,125,182,57,88,201, +255,0,121,66,224,159,104,185,57,25,224,250,100,208,6,139,45,177,199,203,26,169,0,140,173,240,24,29,254,231,29,253,120,237,145,76,85,182,81,133,107,81,158,112,209,92,159,175,88,186,250,243,239,84,68,145, +17,242,164,92,103,129,188,231,235,251,176,189,59,99,240,39,129,40,151,119,30,77,153,234,50,209,202,79,56,28,40,132,255,0,34,57,245,230,128,47,22,141,112,162,107,85,232,7,19,3,142,252,152,137,199,169,28, +250,99,20,29,135,5,102,180,231,25,204,146,3,235,156,18,57,246,227,7,28,85,45,204,58,219,217,55,3,63,185,185,63,137,2,216,122,242,49,215,140,100,1,78,85,102,224,91,89,30,49,145,29,231,31,149,183,167,56, +199,96,113,211,32,22,9,151,119,23,54,99,29,51,113,145,237,247,156,250,231,161,250,114,42,68,55,7,173,214,159,239,155,152,207,95,98,167,158,57,193,170,173,4,220,127,163,90,12,112,1,134,239,4,2,61,108,178, +15,108,231,56,29,112,69,2,59,128,71,250,45,160,25,238,151,99,36,246,193,183,199,211,252,138,0,185,137,128,255,0,89,166,156,117,45,117,24,28,158,225,33,99,239,254,115,64,243,152,99,126,158,59,18,47,74, +253,72,255,0,71,0,119,239,212,241,210,169,176,156,117,179,181,111,127,42,110,121,247,141,125,127,15,124,83,71,218,0,63,232,22,238,0,227,228,144,246,228,2,84,145,158,184,233,216,122,144,13,85,19,54,114, +246,111,142,65,91,196,56,39,211,54,164,116,30,131,190,65,163,13,198,229,180,127,99,123,109,238,58,152,23,4,231,169,246,197,101,7,156,140,125,130,32,64,207,250,185,120,199,57,56,85,29,242,57,25,252,77, +39,155,42,255,0,203,180,74,1,228,4,124,253,112,205,145,131,156,227,211,234,40,3,96,151,218,64,134,203,4,142,62,221,111,198,126,136,163,177,233,145,129,143,74,43,8,206,199,147,24,76,246,68,144,0,127,25, +58,224,99,129,131,215,142,40,160,9,78,159,106,9,202,47,60,231,101,128,207,92,131,254,146,73,235,198,51,138,67,167,219,146,78,57,234,51,21,160,4,112,120,197,192,235,245,32,227,158,248,207,221,49,225,144, +99,176,251,87,36,158,248,88,206,61,189,120,235,76,102,25,249,139,12,117,2,228,142,188,240,2,100,254,24,244,244,36,3,65,180,232,178,126,109,191,88,109,240,121,192,207,250,87,227,128,61,49,129,80,182,159, +23,101,132,241,140,148,183,82,190,184,204,205,140,113,158,123,156,246,170,158,108,124,101,164,192,234,69,212,228,244,233,140,47,94,248,36,117,24,52,133,226,231,13,41,29,70,37,184,207,62,252,156,12,142, +131,241,160,11,63,96,78,112,208,131,207,0,91,96,122,103,247,160,246,28,247,247,53,31,216,57,63,60,103,156,96,125,155,3,232,60,236,14,56,201,25,233,212,243,85,119,41,228,37,206,65,206,124,235,147,207,182, +83,219,140,30,212,223,52,131,214,243,166,121,123,134,233,219,253,81,231,25,233,158,220,26,0,185,246,16,6,113,27,31,80,45,125,71,127,52,146,64,233,215,147,207,108,179,236,193,48,88,38,56,255,0,158,29,14, +121,202,74,184,250,19,237,140,244,174,101,32,150,47,119,235,130,46,112,113,211,254,93,192,253,121,200,199,173,52,92,227,131,37,216,193,61,35,152,224,100,124,223,116,28,15,95,231,205,0,88,216,131,156,198, +128,241,141,225,121,61,114,4,189,251,156,145,207,110,41,226,56,185,30,126,15,251,249,30,152,7,237,3,242,192,62,194,171,125,160,227,38,123,158,188,126,230,108,246,29,60,188,243,159,98,123,116,52,225,62, +71,51,77,234,9,73,23,215,25,221,25,198,71,175,80,122,10,0,156,195,17,235,47,176,195,144,78,14,115,255,0,31,25,247,227,63,78,180,209,111,9,231,205,144,158,184,243,27,241,206,37,57,255,0,61,234,190,226, +115,137,25,143,169,46,15,108,156,121,103,160,227,183,124,99,165,27,71,27,137,201,207,82,188,224,15,239,198,115,158,156,113,232,15,112,11,102,40,7,241,205,198,58,76,224,250,255,0,20,228,231,175,25,237, +239,64,134,2,1,204,228,123,205,33,207,92,146,5,199,126,56,201,7,241,230,182,206,49,181,200,255,0,100,195,207,92,2,4,35,28,28,30,63,10,148,42,99,1,31,220,150,81,211,60,241,16,39,232,50,58,28,16,77,0,89, +68,182,3,133,157,184,235,231,206,59,241,128,39,199,78,156,146,113,142,148,165,45,186,236,159,211,155,137,192,32,246,225,219,63,64,121,28,138,129,86,2,112,99,4,242,14,231,32,231,191,252,178,24,35,169,193, +3,145,154,144,67,108,79,205,108,167,61,132,205,156,244,232,98,57,244,198,58,245,60,80,4,170,182,96,0,86,98,122,99,207,152,241,215,208,142,61,201,207,92,147,72,235,105,195,8,165,3,166,11,77,146,121,239, +242,228,117,237,156,158,105,203,105,98,221,109,28,227,3,30,115,227,7,208,8,24,31,78,223,90,144,88,216,3,159,176,54,79,35,247,146,100,159,111,244,110,79,28,231,168,200,205,0,65,178,216,31,150,38,206,115, +201,159,175,228,78,127,46,220,212,155,163,24,194,159,206,97,249,113,147,238,79,184,237,82,27,59,21,255,0,151,54,13,232,94,78,249,255,0,166,0,143,203,233,145,83,199,107,100,20,159,178,28,123,153,142,115, +159,238,219,49,39,29,57,250,12,231,0,21,248,224,132,98,0,56,199,158,7,224,124,178,48,123,228,231,184,61,170,80,55,2,124,151,233,156,133,39,219,157,208,147,250,142,149,100,193,104,6,5,161,235,193,34,236, +18,113,142,10,219,100,143,127,78,61,41,203,13,184,224,91,176,30,172,218,154,131,142,14,49,109,142,112,49,129,129,158,113,64,21,240,224,253,201,113,219,247,3,208,240,72,76,250,103,235,131,156,210,146,248, +255,0,80,231,36,114,97,28,246,227,17,115,131,140,228,227,190,42,102,142,220,31,245,5,127,237,182,165,143,161,255,0,71,199,7,215,175,113,199,32,22,199,133,129,135,3,59,100,212,6,123,247,132,31,108,128, +14,79,61,201,0,139,108,196,130,45,195,99,214,223,4,115,223,247,107,235,193,7,25,197,72,69,206,8,91,69,60,255,0,12,18,47,60,250,12,227,185,231,60,30,61,80,45,184,39,16,202,57,199,18,223,3,223,28,152,120, +253,15,166,49,77,102,136,245,73,72,25,235,61,214,113,193,56,6,49,143,78,163,142,79,106,0,112,91,182,32,24,10,0,126,234,36,163,63,129,224,231,24,199,24,200,198,59,74,35,187,7,2,218,227,4,242,4,114,12,247, +235,128,114,113,131,207,25,170,226,72,1,229,110,6,63,233,226,247,167,160,218,132,227,142,163,142,244,190,101,153,32,17,116,115,219,237,26,137,193,61,58,66,121,29,186,130,15,61,40,2,209,142,224,96,29,62, +227,118,72,201,220,184,192,234,113,215,234,78,123,114,120,165,11,48,235,96,253,137,221,131,237,206,89,78,122,158,120,231,39,173,82,255,0,66,28,136,46,216,30,112,39,212,1,253,81,79,66,57,60,119,62,234, +13,147,1,139,123,225,158,51,231,95,55,169,192,5,113,159,109,217,35,158,216,160,11,165,230,24,197,138,169,238,118,49,61,123,237,39,243,207,225,218,156,178,76,91,38,213,71,97,242,78,121,56,247,35,25,235, +199,227,214,170,17,102,120,41,124,189,190,253,208,3,158,8,13,212,116,234,50,122,115,74,18,196,242,191,111,249,79,221,2,102,252,242,160,28,158,122,129,193,235,129,64,26,33,174,9,56,183,17,241,255,0,60, +92,115,207,77,204,167,140,247,24,56,32,19,79,221,118,14,118,15,170,194,189,193,236,102,70,239,215,190,122,250,209,49,218,96,157,183,255,0,66,146,99,140,116,1,9,246,237,192,235,140,18,240,150,64,127,171, +188,24,233,152,174,59,241,146,60,146,49,159,161,207,29,58,0,90,51,92,177,59,131,12,112,50,168,50,50,121,193,184,36,254,99,235,222,164,86,148,227,118,20,227,63,234,237,198,121,199,57,186,25,227,219,223, +60,10,174,139,96,114,63,210,84,142,63,213,93,126,89,48,30,57,231,39,35,233,192,148,45,161,3,15,49,198,112,12,51,238,252,218,220,103,143,115,223,182,69,0,89,18,77,192,243,32,78,115,131,12,4,227,212,145, +119,143,169,199,248,84,130,73,79,252,188,217,103,60,230,40,135,78,255,0,45,216,4,231,175,167,110,226,171,132,135,168,243,58,231,45,19,99,241,253,208,97,212,117,32,247,231,180,234,35,28,23,3,39,31,241, +238,167,158,113,157,209,19,130,125,186,119,233,64,18,3,49,224,92,217,28,113,129,20,96,115,234,62,210,65,245,233,207,61,122,83,213,110,248,43,45,163,14,7,2,220,113,158,115,139,192,50,59,142,65,228,211, +124,188,242,179,48,235,202,219,67,192,233,131,186,19,220,247,193,254,169,183,156,153,153,189,204,86,235,215,3,28,67,239,211,145,205,0,89,81,114,78,11,89,30,58,21,182,61,51,201,197,209,28,231,29,57,232, +73,230,158,33,155,161,251,15,57,36,22,183,25,238,71,252,124,30,72,224,245,28,240,106,16,168,51,243,48,29,136,91,112,59,224,224,197,237,206,58,241,131,82,8,213,185,89,92,103,209,160,4,31,92,121,93,115, +250,115,156,98,128,36,88,28,48,44,186,127,76,224,79,2,142,114,78,113,62,115,234,113,253,105,124,135,201,34,43,46,9,57,91,152,27,61,121,230,82,113,200,252,59,211,4,35,143,222,176,234,14,77,191,81,212,255, +0,171,28,244,25,39,167,189,15,110,164,228,92,57,246,9,107,142,248,192,10,1,247,201,56,195,112,121,200,5,129,17,206,76,118,217,207,252,246,182,244,207,66,92,123,243,147,252,233,254,84,152,193,130,220,244, +206,217,172,87,143,66,76,77,159,83,219,32,115,84,196,95,47,62,97,199,82,33,135,167,56,57,217,200,245,252,63,5,242,208,140,177,144,115,208,218,196,78,127,0,167,159,243,216,208,4,239,27,103,152,59,241,182, +231,79,227,61,49,251,129,201,199,92,118,231,174,41,54,2,7,238,102,61,122,73,166,156,118,60,180,99,63,175,76,245,168,12,16,115,159,51,156,244,178,67,207,224,120,246,245,237,154,111,147,7,64,146,18,7,83, +102,195,131,239,131,199,61,189,72,238,104,2,198,8,27,74,220,0,7,24,26,121,3,190,62,88,200,62,253,125,133,52,68,27,170,221,28,127,183,167,168,199,169,204,106,15,56,245,235,145,142,240,44,48,19,147,27,125, +126,201,46,56,25,199,166,71,32,240,49,207,92,211,197,189,187,127,203,41,78,0,255,0,151,25,72,39,158,71,124,99,167,39,169,20,1,40,49,46,85,154,233,57,228,9,116,230,28,30,121,8,71,174,48,15,225,214,128, +214,187,177,230,92,143,109,246,89,239,216,198,121,231,168,247,227,4,154,103,217,96,3,254,61,228,244,231,79,148,140,122,252,175,199,235,142,57,205,42,193,31,69,181,102,244,31,217,215,25,39,143,70,3,142, +153,201,231,175,20,0,241,28,12,78,37,185,29,79,43,99,255,0,198,71,31,92,254,120,20,134,56,179,145,36,227,25,206,69,145,238,123,42,40,28,119,231,167,106,81,110,196,255,0,200,63,112,29,218,198,113,158,195, +130,216,60,122,231,143,94,246,5,162,56,5,172,182,28,246,178,148,113,200,232,73,63,142,48,58,140,156,224,2,168,133,51,134,149,184,199,252,250,31,196,143,48,14,163,142,122,115,199,34,164,16,70,73,225,156, +113,215,236,163,140,142,7,239,143,65,219,28,156,145,215,21,49,211,226,235,228,145,199,1,109,167,4,247,232,23,190,7,35,35,142,217,224,251,0,32,230,38,255,0,191,83,240,123,103,32,17,220,30,6,126,157,64, +32,251,58,245,17,187,1,212,147,0,199,176,11,33,7,223,183,191,90,112,133,72,32,196,199,24,60,121,99,4,228,28,129,41,239,238,58,131,138,156,105,131,3,247,108,164,250,43,242,123,240,206,158,195,173,3,78, +78,190,91,113,211,40,138,127,54,159,156,255,0,141,0,66,32,76,109,242,221,78,78,66,152,73,29,6,49,230,100,125,79,62,188,244,60,133,124,96,92,146,56,198,200,177,130,61,165,35,185,233,249,245,169,14,158, +139,200,140,140,127,177,25,57,206,51,196,224,99,28,158,105,159,99,83,199,150,78,51,213,35,3,191,28,78,65,30,249,39,249,80,3,150,217,178,63,119,118,71,251,145,126,127,51,147,237,200,199,231,74,97,0,225, +161,185,60,242,60,168,178,7,78,8,97,200,252,114,49,198,1,204,38,202,61,223,50,70,160,3,156,152,179,142,252,25,176,0,238,127,14,167,21,25,180,180,193,223,34,224,117,195,32,199,76,244,152,116,231,158,57, +56,245,160,11,130,40,143,88,46,134,57,57,138,12,247,227,239,227,28,117,199,225,138,119,148,160,224,91,222,156,244,33,33,192,237,193,207,29,59,30,166,179,94,218,199,170,200,15,94,55,156,1,140,127,11,159, +208,227,222,161,251,61,162,145,135,135,174,70,233,72,31,247,209,159,142,199,144,48,115,193,238,1,168,35,57,36,193,168,1,128,70,228,140,244,250,19,192,198,58,224,158,221,196,138,196,103,48,221,128,58,102, +20,39,235,146,72,233,232,61,79,67,89,62,85,176,60,181,183,60,229,103,4,17,248,72,249,206,123,142,217,199,56,164,49,91,158,3,193,200,239,63,94,120,232,159,254,191,124,114,1,174,74,158,177,92,147,239,20, +3,158,122,130,7,254,133,254,20,121,136,185,253,220,253,62,233,134,220,227,61,8,231,29,61,251,115,156,86,63,149,110,14,12,150,160,14,191,233,46,49,234,127,227,216,227,240,62,188,144,104,49,91,117,89,108, +207,81,197,196,189,61,255,0,209,186,227,169,4,14,122,119,160,13,102,152,142,5,179,147,198,55,44,3,175,61,21,151,60,14,62,106,129,165,60,230,2,48,49,247,33,30,157,213,137,207,211,30,224,154,205,104,33, +31,199,98,64,29,77,196,254,253,63,209,8,61,50,64,61,15,90,104,138,12,242,214,68,103,128,37,147,241,28,217,3,236,14,63,78,104,2,247,152,115,242,193,41,56,199,202,17,64,244,224,206,7,80,59,125,58,83,26, +73,198,113,12,132,17,199,221,63,152,89,14,70,63,207,113,79,200,183,35,135,180,224,255,0,207,195,129,239,214,203,159,195,216,30,148,209,110,153,202,201,109,193,224,137,84,140,119,251,214,235,250,246,250, +208,5,159,58,225,78,69,187,96,231,31,34,158,189,121,51,3,143,81,212,241,245,166,249,210,182,71,144,160,117,207,147,14,78,59,100,201,253,122,1,147,81,253,152,48,3,124,71,61,112,241,231,208,1,251,131,143, +204,1,142,185,28,55,236,42,115,243,71,142,192,133,60,245,0,98,46,122,143,78,123,224,156,0,57,229,156,255,0,203,184,255,0,128,197,104,61,61,101,231,211,208,99,142,181,9,146,228,18,126,204,87,166,126,75, +97,145,207,253,52,237,244,224,115,201,60,201,246,20,24,39,203,235,193,9,30,6,115,146,167,24,235,130,112,58,244,228,82,253,142,62,134,101,3,158,74,198,8,207,169,202,245,31,79,241,0,170,211,93,158,5,170, +177,25,234,176,140,254,43,159,240,231,35,156,154,111,155,120,51,186,214,21,60,159,153,21,240,14,127,216,35,140,116,227,243,200,171,70,210,32,78,38,29,120,192,140,14,221,73,147,176,233,207,32,247,199,41, +246,123,112,112,215,28,15,250,230,58,100,224,229,179,149,231,215,166,6,104,2,186,207,119,192,251,60,44,61,162,140,14,190,130,48,72,7,24,11,207,235,135,11,139,197,60,90,91,99,191,238,162,32,227,212,20, +99,206,123,15,173,88,49,90,12,255,0,164,14,51,215,110,126,160,9,63,76,245,250,211,118,219,140,237,154,39,244,249,16,159,192,249,227,61,58,28,245,230,128,24,110,39,63,122,222,0,14,8,63,103,136,115,131, +215,247,64,145,233,235,207,0,82,11,137,57,253,220,56,244,16,166,51,143,80,61,123,224,99,57,193,169,65,140,115,230,193,199,77,202,65,227,175,2,113,159,98,63,92,208,210,66,14,4,214,217,234,64,86,201,31, +67,40,60,158,157,121,252,40,2,47,61,135,38,40,143,24,255,0,86,58,247,237,158,49,207,108,140,244,24,160,221,100,28,197,16,247,40,188,12,17,158,122,142,113,215,29,190,150,22,225,6,71,153,23,29,212,39,4, +156,116,50,100,246,252,59,118,164,51,69,212,220,168,61,177,229,100,30,248,249,142,15,212,228,113,154,0,174,46,1,254,8,64,245,33,115,233,200,18,2,59,242,49,158,216,167,172,235,140,186,66,7,98,168,15,60, +117,253,240,239,193,60,100,231,138,12,209,100,226,224,201,208,253,232,200,7,240,99,143,79,126,152,197,40,117,63,196,59,227,247,105,207,110,221,143,62,221,49,156,138,0,103,218,32,63,120,41,255,0,113,99, +4,30,189,5,193,231,175,35,158,71,224,9,161,231,247,82,119,0,157,163,24,239,129,63,124,112,7,183,6,167,7,178,178,158,57,62,82,119,61,51,183,160,227,234,1,239,78,253,231,56,116,35,176,88,160,24,199,111, +153,15,226,113,129,207,78,192,21,132,177,55,240,207,142,7,202,87,158,57,255,0,150,207,159,124,243,77,221,110,14,72,159,147,198,88,99,35,28,133,243,128,231,175,113,158,158,215,60,185,152,113,38,7,95,149, +45,65,31,156,36,115,143,78,65,24,230,148,64,199,147,52,135,216,37,153,39,185,3,48,2,64,227,160,233,131,239,64,21,119,91,12,229,39,61,121,242,193,231,241,144,142,59,242,71,214,153,186,212,144,10,78,71, +3,30,92,96,143,80,62,127,232,61,199,21,123,236,231,118,65,145,179,234,150,153,24,199,28,91,131,142,163,131,211,145,215,52,173,109,144,50,72,231,156,152,1,29,128,226,19,211,156,231,24,192,198,115,64,25, +251,45,153,64,17,93,16,113,143,221,161,39,191,102,35,0,241,239,82,8,173,72,201,138,229,128,28,230,53,231,169,244,63,169,199,78,57,171,6,220,128,10,182,88,244,32,195,158,79,127,221,0,121,250,253,113,209, +233,4,196,158,99,233,252,77,10,246,207,222,242,71,61,254,135,60,96,10,0,167,228,216,231,155,107,172,244,226,52,244,207,3,97,25,245,200,24,30,185,20,190,77,160,28,193,118,65,56,4,195,25,254,105,140,117, +62,231,0,116,173,3,12,191,243,214,31,96,39,133,71,124,96,249,7,61,184,206,51,249,83,68,83,114,60,216,135,174,103,136,247,199,4,195,142,79,95,160,199,106,0,166,18,208,103,49,78,190,160,219,219,30,132,115, +130,61,135,61,177,199,173,41,91,1,192,142,83,193,206,235,59,77,167,243,32,15,175,167,80,57,171,235,29,198,49,230,198,71,251,246,204,190,131,254,88,156,227,169,224,145,219,216,41,42,125,233,33,245,251, +209,55,28,231,59,109,199,231,192,56,250,26,0,160,62,195,207,238,1,60,124,198,218,196,30,112,59,147,211,249,102,148,61,162,228,249,42,61,70,219,37,31,81,131,200,30,223,203,53,124,22,3,62,117,191,76,157, +216,25,231,161,62,70,123,99,3,35,160,245,165,51,74,49,182,75,83,244,17,228,114,65,25,54,221,71,225,236,104,2,164,114,216,168,255,0,143,120,242,121,56,54,131,159,161,92,126,33,137,233,83,173,213,136,25, +17,32,246,15,109,207,78,234,15,248,3,193,231,56,127,218,24,103,51,68,126,139,23,24,228,227,253,27,36,28,116,207,126,8,230,131,117,42,242,26,46,115,156,164,100,116,234,113,111,199,244,227,30,192,17,253, +190,208,28,121,67,129,255,0,61,32,63,158,0,3,243,250,28,208,53,8,8,202,129,142,135,247,150,227,29,50,9,243,49,208,114,70,14,71,60,28,212,159,107,61,75,90,156,140,241,18,183,78,115,254,163,130,127,15,110, +244,159,106,245,91,98,70,115,152,145,79,62,153,140,31,196,103,249,80,3,5,236,36,225,163,81,233,251,216,50,7,182,217,56,4,113,158,71,74,119,218,163,35,140,241,198,62,209,26,247,237,251,192,61,1,207,167, +60,102,165,91,197,199,250,187,124,228,255,0,207,21,233,238,109,223,175,98,8,250,131,75,246,160,127,229,140,93,7,38,68,24,232,123,64,163,177,28,228,227,211,154,0,136,92,35,112,18,76,12,2,126,220,156,243, +147,140,204,7,76,1,219,7,7,35,20,173,58,12,133,243,151,208,11,181,97,245,249,46,163,228,251,254,62,210,139,145,208,91,199,156,227,139,144,1,234,127,184,78,61,72,247,245,193,113,150,70,251,182,171,131, +233,115,147,158,58,31,40,117,231,31,80,65,29,192,43,125,168,231,134,186,0,227,56,185,4,100,247,230,251,175,124,112,56,201,192,234,227,117,38,14,217,47,64,255,0,102,69,3,129,223,58,136,4,242,58,158,189, +184,226,127,50,228,255,0,203,168,92,158,51,114,122,46,59,0,9,192,56,29,176,15,25,205,56,11,147,187,16,17,215,35,237,36,224,158,112,0,32,103,161,198,120,250,208,6,123,92,72,72,38,75,226,1,39,6,68,3,39, +156,110,58,131,2,122,3,205,11,60,164,227,125,208,238,1,145,51,215,218,251,4,243,199,212,100,245,173,52,23,61,12,76,163,190,38,62,189,178,73,207,174,9,247,235,75,155,160,70,212,147,4,245,19,17,200,231, +177,227,147,220,129,129,211,57,160,12,211,59,116,102,185,39,159,249,106,6,59,113,254,155,215,60,1,144,122,114,73,167,173,195,1,133,251,64,231,60,220,17,199,95,249,251,57,227,175,62,188,3,205,93,205,235, +116,89,122,231,137,95,119,96,115,206,113,233,201,231,158,5,59,101,251,99,11,55,65,201,121,120,30,249,145,115,237,207,227,207,32,21,5,204,163,156,74,112,56,62,112,36,113,215,155,192,72,206,122,241,198, +113,142,143,55,146,158,118,204,8,7,248,193,60,231,156,153,155,215,29,123,12,244,169,30,43,254,119,35,243,216,249,143,200,32,116,107,142,113,215,215,219,25,53,23,145,121,252,66,80,58,224,69,38,121,244, +2,232,3,233,156,250,244,20,0,159,109,185,110,130,112,61,4,174,163,129,143,239,125,122,30,58,143,103,125,170,108,114,37,245,230,89,9,227,212,133,35,245,253,106,35,5,200,39,50,220,14,59,194,59,117,229,239, +242,8,247,29,105,118,75,140,52,215,32,244,207,146,167,211,35,254,63,241,237,248,142,56,160,5,107,153,185,253,212,164,158,132,200,192,30,249,249,160,114,71,227,254,20,207,180,92,0,63,115,38,61,62,209,50, +144,61,7,250,49,252,135,3,29,13,41,243,84,21,23,23,60,241,204,43,130,49,239,123,128,62,185,207,3,156,26,97,89,127,231,180,248,62,176,69,156,122,241,117,244,254,157,40,0,51,204,114,90,218,126,72,32,253, +174,92,103,221,77,175,63,247,207,30,156,102,154,110,100,60,8,100,4,14,247,39,60,12,116,251,48,61,71,76,122,123,146,121,115,17,147,37,222,223,246,96,135,249,27,179,245,224,15,90,80,174,164,254,242,247, +29,8,85,129,122,128,14,65,187,193,30,189,113,200,57,192,160,6,139,171,142,203,58,143,102,36,28,117,228,91,103,146,123,16,56,235,216,35,94,92,1,130,110,179,215,130,231,31,64,45,79,94,120,3,24,28,230,156, +210,201,201,19,95,122,158,96,238,7,165,199,76,142,156,240,56,228,84,70,102,207,51,234,36,231,156,71,14,6,125,252,211,233,192,28,115,64,8,46,102,99,157,247,25,7,57,101,156,224,143,92,89,142,158,222,227, +39,138,12,243,140,31,55,129,235,12,253,71,161,251,47,161,60,114,15,67,131,78,251,75,140,31,180,234,35,166,126,85,234,61,112,72,192,234,122,19,205,56,95,76,14,62,209,124,112,63,136,48,7,60,245,84,35,60, +250,156,115,233,128,0,195,117,57,198,29,186,103,136,100,198,73,231,254,93,71,183,94,71,0,156,82,9,174,24,143,153,177,238,36,4,231,142,49,2,146,59,228,15,192,83,254,220,248,57,184,159,142,155,154,95,174, +50,99,199,36,158,157,7,24,200,205,68,111,100,227,230,113,143,93,217,239,211,228,94,156,31,111,106,0,144,203,40,254,50,15,39,254,90,100,228,17,213,163,252,177,142,222,152,9,230,191,121,100,25,236,86,70, +246,199,203,248,14,249,207,83,218,22,212,157,120,12,203,211,159,53,208,103,241,76,99,223,235,158,244,198,191,147,35,60,251,155,150,25,255,0,200,94,220,116,63,165,0,74,90,94,191,104,144,103,140,136,231, +198,61,56,221,158,158,156,30,61,77,71,190,83,130,110,102,199,65,147,112,189,248,234,185,237,208,115,233,215,150,155,230,32,224,22,244,196,229,186,127,192,57,62,195,39,39,142,180,207,181,54,121,136,228, +255,0,180,125,127,221,252,243,199,52,0,59,28,128,38,147,7,168,50,220,46,113,201,233,211,168,57,60,156,143,161,136,176,60,147,156,15,189,246,171,145,223,140,240,184,56,25,238,114,61,179,79,55,39,131,229, +63,57,199,206,184,246,200,36,0,61,179,147,223,52,195,116,6,127,114,205,159,246,208,119,228,117,231,215,36,158,222,148,1,25,158,48,120,220,195,57,226,238,113,144,61,62,108,224,96,231,215,145,142,229,173, +114,156,102,60,100,99,115,92,93,55,78,159,113,72,207,79,70,199,57,239,82,25,201,31,241,228,27,216,201,14,14,6,58,231,57,252,15,78,188,100,70,102,202,156,217,72,189,190,86,132,140,119,198,10,253,49,142, +63,152,0,110,145,64,198,0,255,0,175,139,174,121,234,55,70,70,61,184,231,183,38,171,189,249,254,18,15,60,129,52,228,245,255,0,106,62,157,189,191,80,242,232,120,107,105,253,134,232,177,219,174,91,129,211, +175,29,120,56,224,9,19,113,228,78,64,39,131,44,68,99,233,230,115,233,208,99,167,126,0,35,23,210,3,144,136,71,185,184,36,243,207,38,51,199,160,237,238,121,167,255,0,104,190,0,120,149,189,48,38,227,39,29, +76,60,100,113,156,253,220,130,70,113,78,217,10,145,139,123,129,219,229,116,3,147,254,205,202,231,232,113,206,42,54,88,79,252,187,75,208,103,50,160,31,95,248,248,60,228,119,206,115,235,64,1,212,58,238, +180,29,64,249,179,199,61,193,76,224,16,70,120,231,61,123,48,106,32,156,27,80,7,82,2,164,153,239,128,25,71,227,147,253,105,173,12,44,56,142,69,0,115,153,99,200,39,177,38,67,159,199,3,28,145,138,140,91, +195,145,242,200,15,251,240,253,73,201,108,113,145,233,235,235,64,19,255,0,104,30,118,192,80,246,253,197,177,207,182,55,161,7,159,167,231,195,5,252,174,126,227,129,156,1,246,91,76,126,4,204,15,183,110, +220,211,126,202,58,132,124,158,132,77,24,61,125,65,0,118,7,146,7,184,28,196,246,111,215,231,28,99,38,233,7,211,63,188,193,193,62,152,233,156,208,4,230,238,78,49,231,142,185,197,181,176,60,231,174,111, +23,245,252,249,230,54,188,144,117,89,155,251,164,193,108,115,207,94,53,17,156,241,193,252,61,42,185,177,98,114,28,124,163,0,27,168,200,233,211,137,65,56,39,208,251,240,57,114,233,243,49,56,104,177,239, +115,22,7,29,120,114,122,143,255,0,86,120,0,157,110,179,214,25,121,61,68,49,12,231,25,228,95,228,114,0,56,60,128,57,239,79,251,90,112,54,203,208,245,141,14,51,142,132,94,158,127,2,61,48,122,84,107,25,84, +31,48,68,121,201,255,0,75,76,158,56,3,105,63,151,115,245,168,205,172,192,252,161,7,24,31,233,100,129,199,166,27,191,249,224,80,4,237,113,24,57,9,41,228,115,181,87,177,254,237,238,70,49,129,255,0,235,21, +31,218,51,198,201,7,57,11,137,9,227,169,249,46,79,60,145,219,220,212,95,101,155,4,225,27,254,222,88,243,211,36,44,99,3,223,166,79,92,26,111,147,112,185,59,84,174,120,197,220,128,140,115,211,96,227,142, +191,143,165,0,76,211,43,114,203,55,3,248,150,96,59,240,15,218,189,122,100,245,238,51,138,111,218,35,200,249,100,4,14,54,61,207,79,194,228,227,239,30,126,163,28,211,54,92,129,254,173,71,99,254,149,49,207, +67,216,143,169,192,28,254,70,34,179,47,84,140,131,158,179,206,122,14,63,229,174,50,121,237,235,156,208,5,161,115,14,62,229,200,62,190,109,207,83,207,105,120,206,1,32,243,145,215,138,13,212,88,193,142, +224,142,152,55,23,57,199,32,156,147,147,199,92,158,156,28,103,6,152,102,7,62,84,93,255,0,229,188,164,28,250,159,51,191,78,72,60,125,50,121,184,32,178,70,49,200,196,179,224,244,224,230,227,241,192,206, +125,58,80,4,230,238,16,126,81,114,15,112,179,220,231,0,113,140,146,59,243,207,76,14,59,63,237,106,120,205,216,200,227,23,23,29,125,121,144,245,35,160,239,140,119,204,6,233,20,100,170,99,158,60,217,142, +51,238,36,35,167,124,244,227,52,195,119,22,120,88,243,207,30,101,193,239,215,13,33,200,250,231,62,163,169,0,151,237,96,158,5,238,122,31,244,137,135,127,247,143,176,234,114,113,131,140,128,134,239,174, +30,245,125,127,211,28,228,100,140,21,192,199,62,252,116,239,81,155,145,215,17,140,243,130,95,215,174,12,131,161,231,249,115,71,218,136,229,68,1,177,252,33,179,199,35,159,49,184,207,251,60,117,28,208,4, +139,123,131,143,62,236,96,103,13,112,199,240,230,69,233,215,36,228,211,134,162,51,159,180,207,199,79,157,152,131,233,197,193,35,35,156,142,78,50,42,183,219,38,29,30,53,7,213,93,243,131,199,25,231,168, +207,92,99,161,166,155,185,134,114,240,19,158,127,119,32,252,120,124,147,215,60,113,237,154,0,191,253,162,72,5,110,110,56,232,27,204,57,206,122,147,33,24,250,118,247,234,134,253,241,255,0,31,47,140,115, +196,165,137,233,206,8,200,193,239,239,89,255,0,106,148,242,22,204,246,193,89,3,103,220,149,98,1,29,178,113,159,74,141,174,174,1,233,102,7,56,59,156,12,122,96,198,54,142,70,57,199,28,154,0,208,55,228,241, +246,134,207,29,68,189,58,231,147,199,208,130,121,227,53,17,188,99,156,93,183,56,207,92,1,207,98,14,56,245,3,159,214,144,185,156,159,152,217,117,36,100,228,159,92,19,24,35,175,175,231,205,6,121,73,226, +59,12,122,153,24,103,143,64,170,163,60,241,158,223,152,5,131,118,188,127,166,56,28,31,151,104,193,245,229,8,207,28,227,7,142,185,4,82,11,216,200,199,219,165,56,7,229,62,89,199,81,192,49,227,177,244,247, +170,222,109,206,120,75,46,71,65,34,127,35,32,56,252,79,76,247,167,25,46,192,63,37,135,208,220,42,244,244,196,188,3,249,14,152,3,160,4,255,0,108,139,24,251,76,173,212,99,202,143,60,12,241,180,103,4,253, +9,231,160,36,80,110,208,227,19,74,115,198,54,129,234,113,247,112,58,103,175,175,30,149,12,179,228,151,254,207,92,247,251,84,103,183,24,6,111,78,223,78,189,148,57,35,37,180,239,67,254,145,17,201,36,122, +76,123,30,253,253,168,2,115,114,157,124,219,129,219,42,192,1,244,59,15,61,57,207,181,51,237,60,143,223,76,121,207,250,216,212,159,161,40,188,243,211,233,142,152,166,240,58,157,47,158,127,227,230,48,72, +227,140,101,185,232,57,238,113,193,20,237,227,174,235,63,95,221,92,70,71,167,37,72,63,134,79,126,148,0,246,185,143,25,223,56,198,73,1,226,111,230,64,56,255,0,245,113,205,2,233,59,75,57,29,135,250,49,7, +234,9,245,234,78,70,79,90,84,149,65,193,146,220,228,245,50,171,99,142,156,176,200,207,160,231,60,250,212,155,193,201,18,91,31,163,162,145,232,15,94,14,79,81,223,142,40,1,171,122,6,0,19,145,192,7,22,163, +61,65,25,44,71,78,79,65,245,197,74,110,183,46,8,152,131,216,253,148,142,115,211,147,237,208,1,211,29,234,32,239,206,103,137,6,113,129,58,125,127,231,139,99,183,57,32,12,96,142,181,32,110,121,187,76,224, +144,4,138,65,4,250,11,98,73,56,7,183,235,138,0,60,217,8,24,92,228,156,7,123,110,49,207,24,239,244,227,56,239,140,20,226,203,209,174,20,159,250,232,8,237,158,13,174,126,156,140,230,138,0,180,206,8,207, +218,216,145,129,255,0,31,47,223,31,195,246,44,114,114,61,7,29,69,70,88,142,146,206,112,78,49,118,192,14,160,224,125,147,131,131,201,237,146,79,180,101,46,115,210,32,15,35,51,130,121,234,65,17,175,60,231, +3,30,253,41,132,93,99,253,84,39,140,18,101,101,233,131,200,24,231,142,160,28,247,198,40,1,205,230,177,4,73,57,24,232,111,120,39,4,129,255,0,30,195,24,192,224,147,142,254,237,49,74,231,239,206,7,115,246, +204,243,254,206,45,73,192,207,208,246,168,76,151,138,64,17,64,153,35,165,201,232,59,5,96,14,65,244,108,118,169,55,94,17,254,170,221,187,127,174,193,236,115,157,253,242,127,3,248,0,8,154,9,215,63,51,50, +255,0,181,115,47,182,115,139,62,63,49,245,239,76,41,33,35,229,98,64,237,113,55,79,78,109,199,126,254,220,211,153,175,7,2,222,215,175,252,246,35,4,103,169,243,9,61,250,250,140,122,83,196,183,96,115,109, +104,7,36,254,252,145,131,142,188,28,14,70,61,186,244,228,2,6,142,94,187,37,29,49,251,249,216,116,224,12,70,0,234,115,223,131,212,84,101,101,29,34,207,64,51,61,198,70,15,57,7,31,203,212,98,174,137,165, +39,38,218,211,62,206,196,246,231,168,252,9,252,56,52,23,144,224,24,109,178,122,124,203,158,127,222,144,145,143,243,232,0,41,226,235,160,129,118,245,200,154,227,158,188,253,209,159,65,206,62,163,168,97, +187,32,31,178,49,237,148,123,150,29,56,251,165,71,174,114,15,32,245,171,109,230,158,68,118,221,176,65,86,56,199,32,147,48,24,207,35,3,161,30,162,148,36,191,243,206,60,145,216,199,142,59,130,103,244,207, +61,121,206,79,112,10,66,43,165,39,253,25,135,76,238,123,206,158,165,75,99,175,65,248,241,217,66,220,3,150,181,39,29,72,123,161,234,122,137,65,231,169,4,250,140,1,145,90,6,41,136,233,24,28,242,37,136,99, +215,43,191,166,59,228,147,206,122,98,158,21,177,134,148,122,96,72,159,174,222,185,63,94,71,94,104,3,44,146,164,31,179,250,142,90,232,145,223,7,253,35,156,96,251,15,115,72,102,3,173,161,3,39,37,77,194, +142,220,146,215,67,25,245,205,105,178,160,60,185,227,176,148,174,71,253,251,35,191,242,25,25,167,33,132,231,46,231,167,252,180,94,58,246,48,224,243,143,108,125,120,0,205,243,3,15,150,41,72,227,164,140, +122,140,227,254,62,27,60,117,163,45,208,70,224,253,71,191,171,62,58,113,235,215,210,180,155,200,39,27,165,4,242,121,139,7,166,121,17,1,215,182,120,226,155,182,17,211,206,56,201,207,159,2,244,198,8,6,220, +159,126,254,156,113,144,10,64,62,127,213,184,244,193,137,185,231,177,7,249,16,120,207,53,42,163,158,10,202,1,193,231,103,61,176,64,85,237,208,228,12,112,0,24,169,194,219,228,100,77,145,131,255,0,31,72, +15,126,203,0,245,250,116,206,123,59,54,234,127,213,220,156,119,251,66,19,206,115,247,161,200,253,122,231,169,160,6,5,42,64,253,226,253,99,132,129,129,158,164,99,211,177,57,239,205,72,161,179,129,35,143, +251,97,106,199,190,7,204,184,199,0,116,231,28,208,102,183,83,159,38,224,253,110,83,156,119,226,220,17,192,245,224,227,60,96,81,246,187,114,49,228,92,55,95,249,121,82,6,49,156,230,2,0,239,142,199,218,128, +30,82,99,199,153,40,199,165,173,175,166,50,126,66,8,254,185,245,165,9,122,8,42,215,24,245,22,150,163,143,127,221,128,59,30,156,113,207,21,31,218,34,234,45,166,32,113,203,70,192,30,153,57,133,115,248,31, +199,165,52,204,167,31,232,207,237,133,143,63,250,1,252,179,207,7,20,1,121,98,212,78,74,201,116,58,116,142,204,3,238,1,78,58,118,28,254,181,33,135,83,29,238,136,245,242,236,135,243,67,248,85,1,34,16,64, +182,115,232,63,118,0,24,231,238,167,4,156,116,198,112,113,193,167,9,115,199,144,129,186,124,210,129,233,206,2,117,246,231,61,120,235,64,26,27,117,17,193,251,72,28,115,182,199,215,175,24,246,234,73,247, +231,151,255,0,165,174,70,235,145,142,15,203,109,215,191,62,104,60,245,244,254,185,254,108,138,64,88,97,227,175,206,231,56,199,56,85,30,248,207,183,112,48,241,113,50,227,16,192,120,232,204,228,159,193, +191,159,29,251,0,104,2,254,251,158,239,62,122,227,203,183,36,143,252,8,231,191,60,117,224,118,164,18,93,30,1,185,247,0,91,12,231,160,255,0,143,140,143,110,51,144,58,115,138,130,230,228,255,0,203,27,117, +30,253,127,244,49,237,215,240,61,169,194,226,124,16,97,135,7,208,59,12,158,188,137,23,156,158,160,251,98,128,44,135,186,254,229,209,228,14,89,1,233,223,23,3,3,185,228,144,122,96,26,79,54,92,229,162,159, +60,242,211,129,244,206,103,32,119,199,95,78,220,196,37,114,9,48,70,125,252,166,232,125,213,206,1,231,146,113,199,95,85,89,147,130,209,161,192,57,1,164,76,30,59,153,6,122,117,25,245,200,38,128,38,23,14, +71,34,80,70,121,55,49,158,248,25,6,229,115,211,174,115,158,61,169,76,241,2,55,9,73,199,56,116,113,250,92,54,123,241,198,56,39,28,211,22,226,0,78,232,71,110,124,242,14,70,72,192,18,3,140,99,156,156,244, +24,57,169,126,215,16,35,108,108,1,201,226,102,62,157,188,254,14,56,245,231,165,0,52,79,109,220,75,200,193,1,65,57,235,146,68,252,246,57,237,131,140,115,75,230,216,142,88,73,245,219,206,122,243,254,144, +71,183,35,215,29,242,255,0,182,70,121,43,41,35,160,14,228,247,206,72,152,14,125,50,15,233,79,23,176,147,181,162,185,63,64,8,63,249,49,147,143,111,78,1,61,64,35,89,236,187,163,123,110,139,35,175,83,243, +147,159,76,14,58,231,6,172,9,172,248,56,81,129,198,32,231,191,251,64,254,100,114,115,215,34,129,123,1,225,98,186,224,243,181,16,17,199,113,230,28,227,234,125,186,98,147,237,139,145,242,93,15,79,220,161, +39,220,128,9,236,63,60,16,40,2,97,53,137,31,49,219,158,167,202,96,113,239,251,255,0,233,140,125,115,82,9,116,188,124,211,17,142,159,186,67,232,127,138,124,147,192,252,125,198,106,177,185,45,247,69,192, +57,231,116,91,72,201,234,70,194,14,123,14,121,193,199,28,138,242,16,6,235,149,246,17,174,49,198,56,49,170,159,124,158,69,0,88,18,233,100,241,112,195,61,79,217,98,32,143,115,231,129,216,242,15,124,1,205, +88,31,217,164,156,92,49,25,28,125,141,27,63,249,25,135,62,152,235,219,181,84,81,55,85,105,152,119,13,20,56,245,231,229,201,231,7,143,67,147,222,158,5,225,31,40,152,245,224,64,132,244,199,0,41,4,2,65,207, +24,56,234,57,160,11,96,88,156,5,121,49,219,22,0,113,192,24,203,96,129,207,29,125,243,209,255,0,232,171,140,72,228,131,255,0,62,81,143,207,44,72,252,14,120,207,173,82,17,95,182,73,243,246,140,127,203,186, +113,158,153,196,92,103,220,243,131,145,207,0,130,244,119,156,100,28,21,181,81,156,117,36,148,63,153,31,135,28,128,95,18,219,228,133,149,199,94,5,138,103,215,156,99,223,183,62,249,192,156,73,7,63,191,101, +244,255,0,66,137,79,174,1,243,70,57,231,32,103,212,226,179,5,189,233,234,215,89,61,214,16,167,191,165,179,115,207,243,235,210,156,182,151,109,128,126,218,112,121,63,40,246,255,0,159,101,29,6,58,123,243, +140,128,13,35,36,57,230,105,91,254,221,163,253,49,54,121,231,174,7,29,206,48,134,72,135,221,105,9,207,83,110,132,115,208,125,246,227,144,58,146,125,122,102,154,217,92,100,146,151,135,175,89,85,127,12, +8,65,238,8,231,216,3,205,72,182,151,0,177,17,221,49,232,71,152,164,250,140,230,220,231,223,57,245,201,207,32,22,68,185,192,10,204,123,98,32,185,252,1,7,3,156,0,71,111,66,12,138,88,244,134,70,29,121,94, +163,140,140,110,31,203,191,25,170,134,222,69,31,52,87,7,29,55,75,26,15,174,62,198,195,215,211,183,224,8,228,3,62,84,254,229,103,140,231,208,144,44,243,199,31,137,246,34,128,46,121,141,187,6,9,49,193,202, +168,3,140,117,33,134,113,159,199,57,167,249,227,31,234,152,28,12,111,44,8,239,193,50,144,51,199,3,29,115,199,81,64,12,12,108,185,0,246,251,70,15,212,109,179,200,253,57,237,234,160,170,229,182,92,1,142, +215,36,144,15,7,25,180,0,3,159,65,199,24,25,52,1,160,47,36,31,242,197,142,79,56,146,81,159,78,146,228,118,232,125,123,19,82,125,177,137,25,129,250,103,30,109,192,60,251,121,192,158,253,7,28,118,21,65, +89,59,27,142,156,102,228,0,127,43,65,156,30,14,49,234,58,226,128,83,36,169,145,79,251,82,150,228,112,121,88,148,119,232,122,123,247,0,209,55,114,28,129,9,3,191,239,238,123,250,254,248,253,72,29,142,72, +166,155,167,227,253,29,73,233,203,220,49,199,60,147,230,241,215,215,185,170,36,177,4,135,238,57,218,73,207,166,60,146,167,183,167,39,175,20,133,164,32,226,102,192,3,63,34,244,199,166,197,57,61,58,227, +61,176,13,0,91,107,150,231,116,9,198,72,249,216,3,142,51,153,38,237,211,144,113,142,157,106,63,56,19,159,38,22,207,169,71,0,227,158,172,224,15,168,233,223,28,85,117,97,222,119,7,158,68,96,112,56,60,0, +61,14,51,237,79,14,188,145,117,38,65,227,8,6,48,122,125,240,7,30,135,234,123,144,9,124,225,142,96,179,235,129,149,136,158,113,158,137,142,71,94,63,14,148,134,113,206,45,236,207,24,201,85,250,17,133,192, +61,71,81,207,167,56,166,9,25,70,69,219,250,244,32,158,72,198,4,227,211,25,227,240,198,75,196,196,227,55,50,30,71,33,24,241,199,79,244,174,123,117,237,198,6,104,2,38,152,156,98,222,195,130,63,229,132,121, +199,168,221,235,156,3,199,29,249,192,103,152,172,64,107,109,60,118,201,129,115,193,224,143,152,12,100,227,0,159,65,145,197,90,220,24,113,60,173,223,253,81,193,62,160,155,188,253,120,207,78,112,42,34,31, +168,145,136,234,62,78,167,143,250,122,56,192,244,61,113,145,205,0,64,219,58,121,22,24,231,254,93,161,57,63,86,115,212,122,131,144,61,105,174,160,142,97,180,199,81,254,137,109,142,125,240,220,159,95,83, +219,173,77,135,28,238,97,207,56,0,30,231,140,220,17,145,219,35,176,230,154,89,148,100,51,255,0,228,37,228,250,31,180,143,241,57,236,40,2,177,220,191,114,27,78,125,45,45,87,159,169,76,227,3,28,30,191,136, +166,153,37,4,1,13,161,35,210,214,212,131,207,78,34,102,235,156,242,113,211,61,170,201,99,143,189,33,227,140,200,167,174,121,249,110,14,61,57,207,64,79,106,76,103,162,179,30,57,220,228,158,191,244,219, +7,60,115,215,62,180,0,197,51,127,207,180,4,244,249,108,98,224,145,237,16,247,29,70,123,116,20,134,75,140,19,246,115,255,0,0,177,81,211,212,238,3,63,78,63,19,83,4,98,9,40,227,144,78,11,17,207,29,167,246, +246,192,199,20,225,30,122,199,33,201,198,2,200,127,1,251,252,126,96,156,243,201,232,1,87,204,185,61,96,113,211,0,218,70,58,144,120,6,92,156,103,219,61,57,207,13,15,57,255,0,150,114,103,218,8,1,29,115, +210,97,129,147,223,158,152,226,172,52,0,243,176,167,253,242,190,184,206,233,135,215,167,78,221,69,69,246,117,244,144,142,160,135,135,215,60,254,240,231,156,145,201,7,35,234,0,24,90,126,8,73,179,199,0, +66,189,61,115,35,15,92,115,222,147,116,196,224,199,32,245,12,246,128,245,7,35,25,238,125,122,144,125,77,61,96,132,227,112,144,227,185,242,79,82,123,153,7,94,227,184,227,39,156,33,183,178,56,220,101,4, +243,255,0,44,79,175,171,158,121,207,64,125,241,64,16,159,53,126,242,224,47,56,223,109,149,56,206,50,37,92,251,156,99,143,65,154,112,124,224,109,126,131,39,206,182,4,123,255,0,199,206,122,251,125,51,82, +125,142,204,159,153,155,29,48,100,76,130,58,18,3,113,250,96,246,200,205,59,236,90,111,25,144,143,108,47,25,227,215,169,207,35,161,226,128,24,54,19,143,155,28,255,0,203,123,113,143,66,199,237,25,233,219, +208,142,41,88,196,189,36,153,122,18,5,226,1,199,78,18,231,25,245,252,250,98,164,251,38,150,163,38,114,51,212,252,138,14,122,156,149,110,59,118,25,32,244,226,162,120,52,133,255,0,151,141,224,1,209,226, +0,117,231,6,6,231,182,63,159,6,128,26,39,128,117,185,151,169,225,175,144,14,123,101,167,39,240,200,233,222,151,205,182,63,242,217,219,142,191,111,139,223,191,154,70,114,57,199,74,136,195,164,31,249,106, +195,3,35,253,38,220,103,169,232,109,78,59,231,39,29,232,88,52,166,192,222,199,7,32,11,168,65,201,228,146,22,207,28,241,145,180,123,138,0,144,77,104,50,68,173,159,123,232,115,252,159,166,58,19,219,56,32, +211,150,123,83,199,158,160,158,160,221,219,177,227,166,126,80,58,127,66,61,11,126,203,167,224,109,69,3,168,204,235,201,244,226,203,159,167,191,126,5,63,200,179,80,78,228,201,24,35,207,35,254,3,159,176, +28,146,59,15,108,80,3,12,144,18,118,206,15,210,104,49,211,36,12,55,212,19,200,198,120,24,192,95,62,19,193,153,152,255,0,215,212,32,247,206,6,14,79,110,49,199,35,25,20,44,113,47,221,84,198,56,62,115,253, +121,34,205,120,3,242,200,206,15,20,240,202,63,229,156,103,29,0,148,158,51,234,109,184,28,243,146,15,61,77,0,70,207,7,80,193,185,32,230,225,24,228,122,237,136,224,143,127,106,137,141,177,60,49,24,61,166, +218,61,58,249,24,198,49,220,103,142,42,114,72,233,2,55,169,50,19,142,221,124,149,31,76,242,49,159,106,143,116,160,255,0,199,156,109,207,80,228,227,185,193,216,8,62,254,167,62,130,128,35,34,62,161,139, +131,129,134,153,78,62,185,131,174,78,7,175,32,211,118,41,28,117,207,95,58,33,129,216,1,246,126,56,252,253,122,84,226,105,198,7,216,248,31,48,192,78,216,255,0,104,116,252,63,64,41,226,226,83,255,0,46,75, +215,174,196,99,211,129,195,55,249,237,210,128,42,128,189,202,41,233,147,52,4,143,169,54,253,207,111,124,119,34,157,212,12,50,96,245,196,177,117,28,99,253,64,233,131,198,78,49,248,213,161,51,113,186,200, +14,123,219,131,200,231,60,39,56,60,244,29,120,52,191,108,147,167,217,112,1,60,139,38,24,35,35,168,80,63,28,142,79,210,128,42,253,99,114,114,115,182,64,7,57,193,202,166,8,207,81,140,12,231,190,105,67,175, +67,19,224,122,202,228,240,7,60,33,4,246,228,14,58,3,218,199,218,223,146,109,176,0,198,13,187,14,152,233,149,206,61,49,215,61,79,57,81,121,128,67,66,171,145,156,253,157,178,59,30,124,167,35,35,248,114, +58,244,205,0,86,243,1,228,43,228,127,183,113,199,24,198,68,120,35,249,112,58,241,78,18,201,146,64,144,3,198,86,89,70,7,28,156,160,253,73,60,231,181,88,23,89,80,4,81,158,122,181,178,158,157,58,219,130, +15,61,79,244,205,52,220,142,115,26,47,25,226,16,7,161,233,9,24,56,31,227,158,128,13,51,76,58,180,164,112,112,110,101,207,175,32,12,159,195,30,135,52,239,180,200,0,253,227,131,131,143,223,220,3,156,227, +161,96,15,3,146,14,59,100,158,105,62,218,128,224,46,15,64,68,92,126,98,216,1,211,185,254,134,147,237,33,176,187,207,167,17,57,234,79,93,182,252,245,235,192,254,116,0,241,114,127,138,89,79,124,139,139, +128,1,231,160,18,231,63,134,79,95,76,47,218,198,7,207,48,199,92,92,94,146,70,125,166,56,3,56,244,198,123,83,60,220,30,36,207,124,180,82,227,140,12,144,32,28,126,35,167,167,67,205,147,24,89,161,29,50,124, +185,179,199,252,4,115,223,0,15,202,128,36,91,255,0,250,107,112,59,31,223,222,144,125,122,201,146,63,67,143,124,212,191,111,82,114,110,39,92,3,140,79,123,239,215,36,143,110,157,179,156,28,213,99,60,128, +96,184,245,200,89,7,25,231,183,183,177,236,125,129,51,18,78,114,115,192,204,153,199,57,235,180,244,244,62,188,208,5,143,182,197,212,222,92,30,113,129,53,255,0,177,192,11,19,241,142,125,177,142,77,60,94, +66,84,102,246,113,199,123,155,240,71,215,116,7,36,227,166,113,198,64,224,131,88,79,49,229,85,189,48,3,142,7,124,153,151,208,245,32,246,199,171,196,247,7,10,85,200,28,241,230,227,242,89,143,226,114,63, +149,0,56,221,90,140,19,168,72,127,237,226,236,142,123,156,66,58,244,31,215,154,106,221,91,3,198,162,255,0,197,129,230,222,182,61,121,216,8,235,200,250,243,222,167,89,174,152,109,80,216,28,99,23,57,62, +159,198,125,59,115,215,241,112,91,144,70,81,135,66,6,203,209,187,57,198,113,40,7,24,237,207,60,115,208,2,187,79,1,255,0,151,249,72,206,70,38,189,199,160,56,17,159,110,253,122,115,78,87,128,156,125,186, +92,28,18,76,151,196,113,211,57,183,108,244,238,15,35,218,172,42,76,15,48,150,246,242,174,143,110,122,182,121,238,63,65,146,40,45,54,112,32,69,231,180,55,121,199,212,73,145,201,57,201,29,57,29,128,3,54, +68,223,40,212,157,78,115,247,238,135,182,0,107,35,129,206,79,60,140,241,73,246,88,207,77,68,159,92,201,113,201,237,200,178,56,252,122,158,115,74,126,213,207,200,202,189,79,201,117,142,125,51,32,4,14,14, +50,122,115,140,102,163,34,114,71,204,87,61,218,59,193,199,177,18,224,242,61,58,140,116,198,0,15,178,31,225,190,7,39,143,223,78,190,184,206,108,249,39,183,110,244,193,107,38,112,38,12,59,177,186,151,169, +35,167,250,47,110,184,233,253,102,9,33,7,116,204,56,255,0,158,55,140,51,207,4,150,111,76,241,212,30,188,83,178,20,100,220,19,245,130,244,19,235,198,15,224,8,247,7,174,64,35,54,14,64,37,209,177,208,44, +228,183,29,115,186,216,116,199,160,247,20,229,176,126,115,27,159,125,205,206,63,221,183,252,186,100,28,144,1,38,148,136,201,255,0,94,199,35,143,244,91,220,12,251,5,92,159,199,175,20,215,16,174,1,150,99, +235,178,202,236,142,125,240,120,56,245,36,100,224,28,80,4,195,78,124,127,199,187,30,115,134,119,61,61,205,174,7,190,79,176,228,212,235,167,156,28,219,38,56,192,44,23,144,79,82,109,118,159,113,199,57,29, +234,134,248,0,249,100,127,161,180,185,66,15,60,101,215,29,178,78,78,7,181,1,148,15,150,65,130,71,202,109,167,29,242,127,131,215,166,112,0,237,64,26,95,98,192,192,179,183,110,164,31,50,32,113,211,143,244, +85,39,130,58,244,228,242,105,166,204,131,159,176,192,113,130,63,125,24,24,234,120,17,14,231,176,227,35,161,170,91,75,140,253,163,3,63,119,201,156,127,44,142,115,207,78,152,193,192,167,164,109,156,121, +144,243,140,102,25,91,61,184,224,159,254,191,64,104,2,231,217,198,6,237,62,12,31,73,148,231,166,122,70,122,119,192,250,30,148,130,27,82,78,108,32,4,18,9,39,112,4,113,206,35,57,31,231,165,34,65,33,3,46, +135,28,13,176,200,185,252,54,103,62,196,126,93,156,109,37,56,195,69,236,29,24,118,244,8,8,231,142,231,174,48,40,2,85,182,179,36,147,99,109,129,130,119,91,150,62,223,122,3,147,158,222,148,155,44,147,56, +211,173,253,6,203,32,15,78,9,62,71,92,227,24,192,247,232,42,47,178,92,231,0,66,48,112,118,164,221,240,9,251,160,16,71,82,79,29,51,212,133,54,55,74,70,90,17,145,222,43,159,230,9,199,28,231,24,199,126,184, +0,151,117,144,24,251,28,0,240,0,22,224,17,212,28,159,32,109,199,126,79,124,113,76,86,180,228,27,104,176,58,31,179,68,196,227,140,18,97,228,156,144,113,199,212,84,127,100,185,228,6,183,7,212,71,57,24,3, +222,18,48,61,1,60,19,205,47,216,110,49,147,52,75,142,65,72,156,158,57,232,98,231,233,140,243,211,61,64,30,239,107,131,182,214,60,245,43,246,104,7,175,32,27,71,25,39,61,249,231,161,53,3,180,28,31,178,156, +14,155,108,224,3,3,239,1,254,130,1,247,235,145,220,102,156,214,115,255,0,207,118,61,56,88,36,110,157,240,98,4,158,157,6,126,181,27,89,201,252,83,204,113,212,24,37,24,246,226,216,254,158,188,26,0,69,107, +92,229,160,159,60,242,44,237,88,3,216,29,214,124,122,142,221,78,48,57,105,146,204,103,16,92,156,240,79,216,172,200,250,12,89,17,216,30,49,143,106,113,178,207,6,230,228,19,146,54,65,59,113,207,57,16,46, +15,62,167,145,223,169,174,246,106,50,13,213,209,227,35,116,115,237,199,126,13,185,206,59,158,156,14,51,156,0,78,101,139,7,108,87,10,49,215,236,118,170,65,239,247,108,207,31,254,190,162,171,60,200,115, +145,118,189,242,176,219,175,174,56,22,13,215,219,241,193,52,223,179,175,65,117,40,231,141,182,210,177,235,234,109,251,126,39,29,57,197,6,213,72,63,241,48,185,4,15,186,109,152,1,235,247,161,25,227,212, +118,233,129,64,12,243,20,140,155,141,65,56,227,9,108,163,32,140,156,53,134,122,1,201,239,207,189,6,84,24,197,206,163,249,91,145,143,252,1,61,63,30,135,3,144,106,31,177,131,199,219,102,252,96,140,127,232, +86,231,4,122,131,234,61,233,167,79,76,31,244,185,179,237,109,1,31,152,141,72,233,216,131,64,19,52,161,122,79,120,127,11,97,207,60,31,248,151,122,99,28,142,231,167,6,47,52,28,143,58,244,156,100,225,34, +61,59,103,236,105,156,118,60,103,63,128,174,214,75,140,125,174,97,201,28,193,16,207,94,57,98,0,252,61,121,237,76,22,77,159,150,230,76,231,60,67,9,232,7,251,124,231,24,233,192,29,241,64,22,11,140,228,61, +233,235,247,210,50,115,215,143,244,127,152,142,224,231,191,0,210,51,33,57,13,49,35,4,249,144,71,144,59,116,179,39,215,63,55,66,9,168,77,177,193,30,124,173,245,183,67,142,132,112,103,81,158,51,208,241, +219,20,195,111,54,112,172,199,129,203,91,64,7,174,127,215,158,121,253,58,80,4,251,65,92,229,198,114,115,246,85,96,122,103,254,93,58,123,129,146,78,51,81,20,143,187,202,78,115,242,218,39,175,253,121,19, +238,58,228,117,226,161,104,39,206,3,231,191,22,214,236,57,255,0,183,128,65,231,220,3,201,57,206,35,49,92,142,143,49,198,70,4,22,202,59,224,127,199,208,32,3,235,154,0,182,22,48,14,4,195,142,15,246,112, +110,131,24,63,232,75,199,191,62,220,26,60,224,58,40,108,116,15,167,128,59,13,184,251,34,147,159,229,158,189,168,50,93,15,225,102,250,173,160,252,8,23,133,178,49,236,51,250,183,100,224,100,168,224,116, +41,7,24,235,140,94,168,233,158,152,231,56,62,160,22,222,73,91,59,98,135,142,237,167,228,228,247,226,216,156,231,145,128,63,60,10,174,205,58,130,12,54,231,28,243,167,184,207,191,22,131,252,244,200,233, +85,158,101,32,249,108,7,177,234,115,201,200,212,15,175,92,250,15,122,4,179,117,104,179,215,56,144,231,215,159,244,236,251,103,61,78,61,65,0,181,190,97,130,35,181,7,175,252,122,202,135,3,140,16,108,219, +183,83,140,142,57,226,162,107,139,128,115,229,91,0,56,220,16,130,59,1,255,0,32,178,122,28,13,199,167,225,81,153,137,255,0,150,32,245,4,25,128,254,122,129,246,200,224,84,30,102,121,22,240,227,175,51,128, +127,47,180,177,252,243,206,113,238,1,99,237,151,64,229,22,44,117,109,163,24,206,122,255,0,196,181,123,240,9,39,159,97,77,125,78,233,64,255,0,86,48,6,67,28,103,7,29,172,151,159,83,215,7,165,85,105,16,117, +142,33,131,255,0,63,14,127,12,121,223,95,110,167,29,115,15,153,6,73,242,98,207,39,230,158,80,63,3,231,231,167,35,211,183,173,0,95,254,214,188,57,43,28,39,143,249,232,216,233,215,63,98,60,99,35,158,199, +191,65,27,106,151,39,134,134,212,122,145,114,185,252,25,172,128,4,247,250,116,29,77,95,50,219,188,86,190,217,185,186,108,12,96,244,152,224,253,56,199,191,52,195,53,178,231,49,90,247,233,53,233,198,15, +187,16,123,122,125,104,2,224,188,145,178,77,180,28,12,156,93,219,140,251,140,218,28,253,0,0,127,52,23,114,242,60,133,94,135,34,230,22,233,192,35,22,68,3,201,234,71,94,61,234,125,166,219,24,9,25,39,61, +30,235,143,96,25,27,240,199,76,115,158,42,51,44,39,248,87,7,61,229,228,231,213,173,219,250,253,104,2,241,188,144,241,228,145,223,139,152,7,243,182,31,200,142,131,169,205,33,184,151,229,6,57,8,201,255, +0,151,155,54,199,224,109,198,51,239,199,95,90,206,50,196,59,34,156,227,0,177,60,224,245,251,48,206,50,59,129,142,115,156,212,70,69,36,225,135,126,118,59,99,241,91,22,28,14,228,255,0,74,0,211,51,114,75, +70,195,60,224,205,104,71,57,254,236,67,0,119,224,228,231,156,84,77,50,129,192,41,145,222,226,223,28,251,8,198,61,122,30,216,21,157,231,97,114,11,30,160,98,43,142,159,81,100,163,39,60,228,14,114,57,233, +72,37,99,207,206,7,56,30,92,189,143,161,182,4,227,219,175,62,188,0,90,121,51,200,144,30,121,219,113,106,63,83,108,220,254,125,143,82,106,54,39,60,57,233,159,154,226,212,231,215,31,232,139,238,123,147, +252,160,243,31,160,105,185,206,118,198,248,245,228,155,98,6,58,0,72,250,28,211,75,200,79,223,187,234,58,91,238,28,99,254,157,9,252,65,60,227,167,2,128,31,185,178,54,206,80,243,209,237,27,25,199,25,22, +195,143,92,115,201,235,138,67,37,194,145,182,241,189,193,22,237,198,0,36,98,205,129,235,245,207,210,161,108,184,230,75,192,57,231,200,35,31,83,246,80,51,235,142,220,96,140,154,97,5,78,60,235,146,115,252, +113,227,29,72,192,17,167,183,60,12,142,15,65,64,18,153,238,79,252,191,48,25,63,195,108,51,159,251,117,192,255,0,0,69,2,234,97,144,247,135,167,25,88,24,119,198,113,108,122,119,227,156,117,32,115,92,202, +160,115,44,248,231,36,23,143,243,56,29,61,143,76,231,189,59,205,92,127,174,184,237,199,152,231,24,60,245,110,253,112,49,239,197,0,88,251,81,60,253,179,39,60,147,5,187,103,7,4,130,45,48,72,199,126,61,136, +193,160,93,190,118,173,251,125,5,189,191,25,192,237,106,14,120,238,54,142,221,113,85,124,228,83,204,238,15,95,154,82,49,142,57,220,192,30,248,57,57,57,234,56,163,207,128,142,110,64,35,7,137,84,96,253, +90,94,199,167,29,122,112,13,0,94,23,51,28,226,249,142,50,121,181,182,62,195,172,31,153,206,48,121,21,34,220,203,208,202,95,223,236,182,156,103,175,72,84,123,12,128,122,227,189,102,151,137,134,126,218, +27,184,253,228,100,253,114,101,32,143,66,71,79,65,213,21,208,253,235,180,110,135,5,160,61,15,251,45,159,79,188,114,64,207,20,1,171,246,167,4,230,96,160,14,113,109,108,14,71,184,139,167,97,254,20,11,164, +81,147,44,142,115,134,2,222,14,189,63,133,65,236,121,199,255,0,91,47,204,131,254,126,33,60,14,172,157,240,49,145,46,7,110,113,158,221,185,97,107,114,127,227,234,49,131,144,68,145,142,248,254,41,7,169, +236,113,211,32,129,144,13,102,187,133,176,12,82,182,49,201,138,37,25,255,0,190,185,245,201,32,228,117,224,211,69,205,190,9,54,238,71,161,218,1,250,143,60,14,185,236,57,237,208,214,95,155,110,120,251,74, +183,108,249,214,248,39,177,27,139,126,160,142,196,156,226,154,90,212,115,246,164,94,157,102,180,111,228,159,231,7,52,1,168,110,109,185,255,0,67,112,125,55,39,115,216,27,159,78,153,246,62,213,25,185,128, +114,45,101,0,122,203,24,235,142,194,240,15,211,143,229,155,186,16,127,227,230,221,148,156,140,188,100,12,14,197,85,115,142,188,14,120,231,56,165,18,66,58,75,27,99,145,182,69,92,250,99,144,127,30,184,201, +160,13,19,125,108,58,218,200,125,115,60,123,187,99,25,185,32,247,239,143,94,152,166,13,86,196,54,214,180,155,56,254,25,226,29,125,113,115,131,159,168,62,149,68,200,27,238,185,207,180,167,29,250,129,39, +61,207,57,255,0,4,105,20,15,245,164,30,48,68,142,63,93,254,255,0,211,232,1,160,218,157,166,7,250,61,210,250,98,229,54,241,201,4,253,181,87,61,58,140,243,140,119,168,206,163,106,221,109,174,219,158,72, +189,64,65,56,255,0,168,136,231,185,28,251,227,60,81,243,135,4,78,220,231,149,154,231,39,233,182,85,3,28,122,1,236,105,158,124,135,165,212,160,103,144,46,174,65,29,8,28,206,219,136,227,211,28,129,201,224, +3,73,111,173,143,11,109,118,6,120,6,254,50,7,190,63,180,15,124,247,231,128,65,224,80,110,173,115,159,42,229,78,115,147,169,70,48,123,28,125,183,61,243,201,30,163,219,59,237,55,11,210,226,225,129,198,0, +184,189,97,207,56,226,92,96,99,183,61,113,158,239,23,87,131,39,19,145,215,38,75,227,212,143,250,120,66,125,206,57,228,244,160,11,226,246,212,142,126,209,199,81,253,163,27,31,98,1,189,39,215,140,100,245, +244,5,22,242,208,144,67,220,168,247,189,140,254,60,220,159,211,62,163,214,179,197,198,160,114,20,92,142,228,36,218,144,206,49,207,23,167,31,167,126,41,62,211,126,189,69,216,28,227,51,223,31,110,173,112, +70,71,227,212,103,165,0,106,139,203,62,243,79,159,83,125,23,3,25,198,60,222,56,30,156,129,206,50,105,90,234,221,128,219,53,201,244,219,124,163,28,246,253,240,231,240,0,99,167,106,202,251,93,243,2,25,174, +23,191,204,247,93,185,232,36,39,191,30,156,226,154,211,221,158,76,178,28,243,207,219,248,199,92,225,248,239,220,113,208,122,128,107,7,141,177,182,226,237,122,144,126,223,156,119,32,254,251,3,130,125,7, +167,106,43,44,79,114,122,179,156,119,50,106,10,56,235,209,206,14,9,25,246,250,209,64,29,83,53,183,117,144,115,216,3,144,57,198,62,200,14,61,127,95,66,121,182,195,24,73,24,3,140,149,140,123,116,54,160, +241,236,113,244,230,151,108,227,157,218,105,30,159,100,178,221,234,127,229,224,28,96,100,117,36,156,253,88,90,235,44,115,96,49,220,89,197,244,254,11,131,146,49,219,167,111,90,0,110,251,86,7,40,115,223, +122,33,200,25,237,246,109,195,143,113,159,76,113,76,38,211,28,224,99,213,9,235,238,35,95,200,113,156,158,166,134,184,184,83,243,77,104,114,164,109,91,60,0,71,191,159,156,140,14,121,192,28,99,53,1,185, +156,55,55,16,103,184,16,16,70,58,15,245,235,140,126,60,242,115,208,128,73,155,65,247,89,61,7,238,95,35,147,198,84,2,114,125,184,252,242,111,139,60,63,176,2,57,114,49,199,76,30,9,232,113,233,200,21,3,92, +202,114,68,241,241,255,0,76,152,96,156,14,8,156,247,244,28,143,65,72,46,37,57,31,106,76,241,192,137,248,227,158,68,153,57,235,215,243,198,104,2,193,117,199,86,60,112,12,114,118,228,113,128,123,240,58, +99,175,90,137,229,126,113,235,159,245,115,175,29,115,219,161,61,57,235,235,130,19,207,144,227,125,201,244,194,195,33,3,0,103,147,54,15,62,195,142,0,60,210,9,14,56,145,201,29,254,206,113,220,125,225,58, +31,199,4,100,142,248,160,8,188,235,133,193,82,252,118,83,34,247,199,241,16,63,153,254,135,159,116,122,73,112,15,39,239,169,199,4,113,150,237,206,63,198,158,205,54,78,26,86,29,72,242,155,156,14,128,125, +167,160,61,193,4,129,72,89,192,200,243,255,0,224,40,192,140,231,31,242,240,78,50,61,253,232,1,158,117,209,255,0,150,151,56,28,124,164,118,7,210,76,245,29,56,60,99,62,173,105,47,49,242,203,124,51,253,217, +102,94,190,201,55,25,224,31,207,176,1,229,100,60,239,186,7,25,193,4,0,6,115,214,110,126,191,82,56,198,28,177,59,99,119,158,65,61,78,195,215,146,49,246,131,219,216,113,244,228,2,15,50,253,121,50,223,241, +147,143,62,239,39,3,182,38,39,57,199,64,79,94,57,52,245,158,255,0,229,203,106,4,12,54,126,209,123,128,122,114,12,152,201,224,227,167,167,113,83,139,115,252,45,47,63,236,2,70,122,240,36,235,199,39,24,227, +234,41,126,203,32,201,253,225,29,71,238,88,31,110,122,115,254,79,90,0,135,205,188,111,188,183,167,60,159,244,155,149,245,199,86,56,253,58,122,212,128,220,113,242,93,241,220,223,92,115,245,200,39,29,184, +233,64,135,158,68,221,78,113,12,221,136,227,131,143,124,143,79,124,83,204,125,54,172,231,211,247,19,169,207,224,227,249,126,102,128,28,62,208,122,197,114,112,7,252,191,76,48,121,254,29,153,28,31,161,207, +177,169,20,93,245,242,102,201,25,230,242,99,198,64,200,4,99,191,96,15,28,212,34,43,140,96,9,198,73,206,99,153,71,3,29,201,192,199,39,250,241,74,34,112,70,231,145,122,114,208,190,125,206,118,231,24,63, +76,99,211,144,11,30,93,193,193,242,25,128,234,77,205,193,28,244,238,160,103,31,79,95,117,217,54,65,48,28,245,31,233,50,158,51,199,241,114,123,14,6,125,59,212,56,92,143,222,74,79,95,150,41,48,49,211,143, +47,140,240,125,51,237,154,127,202,14,75,179,19,192,221,12,164,30,56,201,17,231,242,35,244,160,7,237,151,171,91,182,56,224,203,33,254,109,237,216,122,14,0,21,34,179,224,15,179,196,61,63,120,1,60,12,231, +44,199,156,3,206,56,227,169,20,204,198,70,119,133,231,131,229,75,131,142,51,130,63,60,1,219,240,122,239,63,117,153,135,32,252,146,14,222,155,78,61,126,164,254,0,18,129,35,114,96,132,2,123,114,217,231, +175,32,119,244,233,207,174,93,229,28,255,0,168,82,72,236,196,96,118,224,55,167,225,138,96,103,94,7,153,236,118,187,100,131,207,12,0,199,30,135,29,62,147,167,152,220,159,53,64,56,39,203,57,206,122,146, +192,14,78,70,50,1,39,4,138,0,141,163,144,183,203,7,65,206,25,135,35,57,255,0,150,163,7,191,82,105,68,114,140,126,238,81,156,156,228,156,96,117,229,243,142,122,147,211,235,154,178,176,150,35,50,144,113, +140,5,203,100,100,242,2,146,7,76,246,231,169,197,59,203,140,112,215,32,30,127,129,184,199,78,136,58,251,14,14,125,168,2,182,199,224,31,52,122,229,193,227,241,115,219,243,252,0,165,17,202,113,181,164,3, +212,177,25,231,168,219,50,147,211,25,0,145,237,86,213,96,207,203,114,227,175,33,88,100,103,175,49,19,248,103,168,230,144,198,73,196,119,77,207,251,249,206,114,79,22,199,166,79,175,92,208,4,107,21,206, +78,214,152,147,198,22,73,58,119,63,235,193,253,115,201,4,118,169,22,27,238,161,166,207,109,205,39,57,237,143,182,100,3,142,56,28,245,4,14,28,176,73,158,110,115,129,233,38,7,110,166,215,24,199,92,251,118, +205,56,193,38,112,110,7,24,0,249,79,206,7,4,17,100,249,3,243,35,223,36,128,60,199,125,215,55,3,183,202,243,12,140,142,194,244,96,241,198,79,29,206,41,226,59,220,100,201,118,61,127,121,34,253,1,7,80,32, +231,161,56,235,81,121,77,183,230,184,3,158,241,75,207,126,51,166,156,15,113,220,99,57,20,225,110,95,24,184,135,3,251,209,182,122,227,24,58,113,199,166,7,126,254,160,18,178,223,1,145,52,195,142,1,153,199, +83,215,254,63,128,238,62,153,235,205,1,181,0,114,38,147,221,139,76,115,248,11,226,59,96,227,60,243,214,163,22,35,169,185,132,118,63,46,63,158,156,61,125,190,180,198,180,101,56,91,164,35,29,86,57,63,66, +186,118,7,190,56,62,180,1,100,27,252,243,43,18,78,9,99,116,8,199,253,190,175,64,122,142,79,175,39,47,11,121,193,14,0,207,247,174,185,246,24,190,28,159,241,228,213,85,182,124,159,222,163,15,247,95,4,30, +192,54,156,59,14,70,9,234,15,53,42,192,249,57,142,51,223,238,50,231,159,81,167,12,118,239,158,189,122,0,11,0,220,228,103,111,7,188,151,99,56,236,115,120,224,224,15,238,145,216,3,138,113,146,228,96,132, +136,255,0,191,246,131,233,207,250,198,207,65,216,227,168,230,161,88,89,78,68,0,131,253,211,112,73,227,167,26,119,83,234,49,142,156,26,153,98,35,254,88,54,58,96,75,112,48,125,243,98,49,255,0,214,244,160, +4,15,112,120,49,219,224,18,78,30,112,51,220,227,107,144,121,198,9,228,254,20,224,103,110,139,110,51,128,85,167,124,30,61,12,121,29,70,6,57,31,162,24,92,243,228,73,156,130,63,210,103,4,224,159,238,219, +12,123,247,207,60,244,164,17,75,156,11,121,207,65,143,62,235,39,61,198,32,4,159,195,211,130,51,144,9,49,46,9,217,100,125,115,113,38,127,244,88,20,15,57,79,221,178,63,236,249,242,99,31,240,40,206,122,250, +1,249,210,249,19,112,126,205,63,60,255,0,173,188,114,48,122,28,68,190,216,207,63,165,76,177,204,160,126,226,111,98,207,118,49,142,188,152,11,118,63,129,206,123,144,8,119,75,218,59,49,211,36,78,220,129, +142,159,185,193,227,208,254,124,211,242,228,125,221,60,113,201,51,29,223,92,121,4,147,128,58,131,207,30,149,56,73,143,91,89,8,199,4,139,243,144,120,206,76,56,28,131,211,56,245,231,135,136,220,240,214, +146,103,159,155,23,68,122,99,253,80,227,215,62,134,128,43,110,144,115,155,28,130,58,59,147,248,254,232,115,244,3,218,141,210,147,146,182,96,140,242,172,122,3,156,242,131,211,7,145,206,121,227,139,6,31, +91,121,87,29,114,151,103,29,198,120,95,215,250,83,133,184,60,152,155,7,161,48,93,158,184,231,37,128,39,208,224,158,79,90,0,170,36,144,228,159,178,169,207,59,91,29,253,199,60,126,100,243,238,121,236,189, +94,3,199,35,116,159,150,21,135,79,78,156,125,51,108,218,197,222,44,116,251,214,183,78,6,125,203,99,4,99,190,63,42,96,129,7,64,171,215,31,241,47,157,176,72,57,198,91,161,239,145,215,245,0,174,46,199,92, +68,122,17,129,49,207,110,66,75,235,220,142,152,201,199,87,139,232,255,0,186,51,237,29,198,7,126,225,135,224,113,215,175,115,107,202,70,224,186,142,57,83,167,144,57,24,234,92,99,174,121,25,231,158,156, +39,217,226,7,2,84,207,182,152,61,61,75,241,147,237,250,231,32,16,45,250,231,33,81,189,246,73,158,56,25,251,164,116,244,57,207,92,103,50,11,252,242,22,16,1,193,204,115,28,247,57,195,14,221,185,236,123, +102,164,48,198,48,4,251,176,57,2,193,1,29,192,224,3,142,62,153,198,14,51,152,252,180,227,247,217,97,140,102,197,71,35,168,201,35,28,15,238,231,212,103,154,0,119,219,137,31,114,46,15,1,96,157,142,125,112, +91,4,123,156,140,1,238,41,223,110,239,142,157,49,12,131,145,198,112,204,221,51,207,97,237,210,152,71,97,34,227,222,213,84,15,196,41,198,61,56,250,122,170,142,185,151,3,35,254,93,192,0,250,130,121,192, +247,24,232,78,122,80,4,194,249,187,22,237,255,0,44,238,123,113,208,35,3,159,168,30,188,10,65,116,91,146,204,14,121,197,188,224,115,220,230,219,252,246,168,201,32,224,74,223,81,10,142,120,206,57,199,111, +124,246,224,100,5,219,3,50,49,57,4,134,69,227,174,8,203,129,245,199,78,152,160,9,196,193,198,55,142,59,24,102,94,189,73,2,215,147,200,231,156,243,154,0,140,103,247,144,131,239,28,132,144,115,253,235,34, +61,61,251,231,154,174,73,60,124,231,233,128,61,120,11,133,28,117,227,215,240,97,42,8,202,185,235,156,191,25,245,3,113,3,29,62,108,1,207,112,40,2,192,10,115,182,88,51,198,120,145,120,244,56,179,199,94, +192,31,173,30,91,30,124,216,193,232,0,146,113,143,111,248,242,61,190,190,163,190,106,153,23,113,11,12,132,15,82,128,96,103,187,109,201,61,114,9,61,51,233,76,51,70,78,26,213,216,100,146,193,161,36,99,254, +6,167,243,252,51,64,22,90,54,234,211,47,25,60,188,196,116,227,150,176,63,143,3,161,207,65,72,209,3,131,231,129,142,64,50,182,9,237,215,79,224,253,115,244,207,53,0,146,216,224,27,66,79,98,118,15,212,57, +63,167,167,224,23,180,255,0,159,73,65,239,251,196,35,240,1,128,28,250,128,120,3,3,169,0,148,198,78,7,218,84,231,214,103,236,114,79,26,121,199,81,206,122,142,153,234,162,60,28,52,240,244,234,211,100,18, +0,238,108,135,28,159,64,61,249,170,196,192,58,91,63,126,12,138,56,235,193,18,114,125,249,39,158,189,163,221,11,117,181,82,7,114,81,137,199,253,245,233,245,235,232,40,2,233,85,29,39,179,108,244,95,180, +144,127,17,228,47,76,119,245,62,148,194,72,232,108,142,15,36,220,57,224,244,228,66,71,225,199,160,53,76,249,25,199,216,226,57,61,227,141,136,200,250,103,156,116,235,223,30,174,13,24,206,45,163,29,115, +251,181,227,240,218,71,39,131,199,92,30,79,64,11,101,159,28,125,148,228,113,139,137,7,97,211,17,145,233,199,205,158,113,218,154,22,67,156,136,178,57,249,103,186,97,143,251,243,129,223,212,117,227,129, +80,238,29,5,188,56,39,56,10,189,122,156,98,35,250,231,142,167,154,110,70,79,250,60,7,7,171,7,3,158,185,34,0,51,233,245,7,189,0,90,195,18,50,97,32,243,141,215,89,4,100,114,12,67,62,248,24,246,28,130,24, +216,253,225,15,61,70,110,134,58,103,7,201,201,199,94,58,99,146,72,21,73,135,57,242,109,70,70,121,105,176,61,114,18,31,240,235,199,2,163,59,178,112,150,64,115,140,53,192,231,212,254,224,231,57,232,63,144, +201,0,190,67,174,54,136,207,29,119,221,144,121,206,56,95,199,174,121,227,25,168,72,147,156,198,172,79,164,151,131,175,3,169,29,251,103,210,170,150,147,24,31,96,94,217,62,121,234,57,235,0,3,25,231,60,140, +158,167,154,7,152,56,99,101,206,113,242,72,65,237,206,96,39,240,199,190,57,224,2,118,89,79,30,74,143,125,215,71,61,113,201,115,140,243,199,31,133,55,203,148,145,251,172,241,198,62,208,196,116,193,32,177, +254,67,244,20,192,192,12,131,102,167,216,206,158,157,66,218,143,79,235,143,86,150,147,56,243,109,71,29,141,209,30,199,38,208,245,252,135,229,144,7,149,149,120,217,32,198,115,242,220,15,126,237,198,51, +223,158,57,237,81,239,145,79,89,151,220,199,57,60,123,141,221,112,51,130,105,165,164,39,253,124,68,224,227,2,229,190,156,253,155,31,215,39,57,53,25,66,78,126,208,51,208,225,111,113,211,253,148,29,251, +122,243,129,64,19,121,242,14,140,91,60,13,241,144,125,240,172,62,164,246,231,143,102,181,204,128,18,98,36,2,50,86,24,14,126,129,192,61,184,28,126,149,8,141,129,226,229,73,234,73,23,227,232,8,59,70,79, +81,129,223,0,19,78,243,2,245,186,114,122,112,151,231,13,219,182,14,51,158,0,36,116,57,160,7,11,211,222,22,201,235,155,107,81,142,156,140,48,29,127,19,232,105,198,253,78,221,209,29,160,158,182,241,112, +61,136,113,249,122,246,20,166,98,71,19,74,112,49,144,151,216,207,228,61,248,4,3,207,62,137,231,204,192,5,154,81,159,68,187,82,15,94,9,145,79,61,125,115,198,104,2,65,168,64,1,3,29,186,219,199,193,199,252, +11,232,115,147,208,211,134,163,15,247,87,29,14,98,64,123,103,164,103,235,147,223,244,135,123,144,1,154,228,18,113,141,247,61,122,227,253,102,127,30,153,227,52,133,166,3,34,73,192,60,28,121,236,61,142, +90,227,56,239,238,113,244,160,11,34,250,219,25,219,140,30,78,211,143,166,68,95,175,20,191,111,181,60,31,40,115,156,54,229,252,176,139,237,142,195,144,51,131,85,22,105,6,65,150,126,249,202,128,49,239,190, +231,39,241,31,64,64,169,86,118,199,203,36,156,127,14,228,31,95,249,110,70,121,207,81,140,245,205,0,88,251,85,145,31,114,22,245,196,142,51,147,147,206,70,127,76,19,199,67,74,183,54,24,25,134,44,117,207, +159,41,220,127,239,188,119,244,31,173,87,251,83,39,12,248,233,247,164,136,117,192,0,102,98,121,206,114,122,246,201,197,59,237,143,130,2,177,255,0,117,160,227,30,249,35,184,252,249,193,197,0,88,55,86,31, +243,206,48,190,159,105,145,71,4,243,196,163,183,29,121,228,242,121,164,55,90,112,254,8,58,245,55,147,143,204,249,251,79,115,144,49,199,3,189,69,246,169,27,56,86,245,57,146,215,57,206,56,24,25,252,59,125, +104,243,167,227,248,113,207,50,91,99,29,57,193,199,78,113,156,241,248,128,11,11,62,156,112,118,219,227,254,191,231,235,158,114,77,207,79,192,129,143,114,41,198,107,35,202,197,106,125,190,222,195,215,31, +242,244,63,150,15,212,98,170,153,102,56,220,195,211,33,224,39,142,7,240,146,7,124,14,217,246,52,253,242,99,33,129,199,56,218,132,159,252,112,15,192,103,131,192,227,20,1,96,77,105,141,222,93,144,7,158, +111,137,29,112,79,23,157,120,35,4,30,199,129,205,59,205,180,35,165,142,79,3,55,106,113,208,99,38,231,219,161,57,24,233,138,172,38,184,234,2,156,3,192,68,81,215,215,4,243,198,120,200,234,59,212,158,109, +208,255,0,150,104,113,156,140,48,250,224,172,77,140,240,7,175,115,211,32,18,134,182,39,129,103,147,206,18,230,44,250,243,254,144,231,28,140,242,71,175,74,112,17,159,186,214,202,15,76,206,135,211,159,191, +129,215,211,24,28,146,42,186,203,114,71,250,152,192,236,60,201,178,114,58,113,24,31,144,61,135,60,10,153,90,97,193,129,73,60,240,242,156,125,51,24,60,116,57,62,244,1,56,3,28,75,106,71,66,22,88,78,56,238, +25,199,39,235,145,215,28,240,21,25,4,205,106,61,139,65,142,221,132,189,253,186,12,116,239,19,27,130,70,96,3,143,186,69,201,61,51,158,56,255,0,235,103,175,20,162,57,143,252,178,66,79,65,229,93,183,234, +173,199,174,7,215,189,0,76,23,60,137,173,70,51,211,127,79,109,135,105,239,146,15,224,41,10,72,1,204,246,254,191,40,155,191,39,238,238,227,216,129,212,140,102,163,17,72,6,30,223,61,56,242,111,78,123,156, +130,167,219,130,122,103,184,165,242,220,255,0,203,176,28,246,134,240,30,125,252,179,129,248,255,0,74,0,147,200,118,228,205,30,120,233,29,201,7,183,101,235,211,60,113,248,98,151,236,142,8,196,145,250,28, +67,123,212,122,254,225,129,245,32,112,48,57,60,210,236,151,181,154,15,66,98,189,62,253,147,35,175,95,110,244,253,178,96,15,34,53,60,103,43,127,144,125,48,109,156,119,235,235,146,14,122,128,55,236,174, +163,119,202,78,49,254,166,240,125,49,254,139,233,255,0,234,192,164,49,72,115,133,76,14,121,183,191,207,208,230,215,4,28,241,201,39,29,41,194,9,27,172,97,179,131,242,165,241,231,175,70,133,125,248,227, +219,156,138,149,109,38,28,172,50,156,131,199,216,239,95,156,243,203,68,71,78,1,228,14,48,120,224,2,190,199,29,99,132,142,6,62,201,123,232,56,39,236,221,243,207,203,248,138,86,86,35,34,24,151,32,12,46, +157,122,253,251,226,203,147,199,56,39,234,122,84,134,218,224,127,203,6,94,160,150,177,186,252,57,16,131,237,140,117,29,232,22,215,7,172,91,177,129,255,0,30,87,74,122,250,180,32,14,185,224,131,233,205, +0,66,177,204,79,17,71,131,198,127,178,175,253,71,111,176,159,110,199,166,122,103,14,251,36,207,201,133,9,28,224,105,119,124,228,127,183,96,58,112,49,140,12,251,84,235,5,215,240,162,130,120,193,130,113, +140,30,121,242,240,8,239,220,224,129,145,214,65,13,247,3,128,58,224,69,49,193,28,96,101,7,113,143,78,222,180,1,92,89,55,86,182,140,156,117,254,203,156,30,119,12,127,200,63,145,219,167,82,58,82,27,54,86, +31,232,113,240,78,8,210,219,56,231,171,53,128,198,127,63,206,172,139,107,222,56,35,183,17,201,248,130,21,179,142,79,92,15,166,105,198,210,228,142,74,169,192,235,20,195,215,156,249,128,103,160,224,115, +212,243,212,2,176,182,108,140,192,23,29,191,179,184,29,242,127,208,151,223,143,215,189,33,128,96,229,81,121,63,118,195,7,4,117,255,0,143,113,193,192,233,211,131,214,172,27,105,241,201,67,207,120,153,248, +200,201,3,205,4,129,232,6,122,123,210,27,121,87,63,234,177,129,157,214,173,142,160,100,31,49,176,64,39,244,252,0,43,139,108,146,75,62,222,188,90,32,39,7,166,118,116,31,227,82,152,48,170,202,37,96,57,39, +201,198,7,4,31,186,70,49,158,51,193,231,0,84,129,36,24,4,217,224,99,150,130,69,31,250,31,227,215,35,190,58,135,5,108,130,102,179,207,167,151,57,0,114,49,187,206,227,177,3,111,111,200,2,1,27,14,211,254, +17,198,51,212,146,126,120,250,115,208,19,249,211,130,199,221,88,240,51,185,227,143,36,231,214,66,125,58,116,62,149,103,228,25,253,237,161,224,28,4,155,39,175,79,222,28,100,142,131,159,94,180,22,143,7, +45,7,161,196,51,147,248,157,217,252,121,24,207,39,38,128,35,95,41,66,145,22,72,206,73,185,65,201,228,12,52,184,28,241,208,158,51,156,230,134,124,146,66,140,247,43,117,16,62,156,225,243,198,58,103,7,189, +38,251,113,157,205,14,63,235,133,201,236,58,159,175,99,198,59,231,38,153,190,223,144,37,135,7,254,153,206,56,28,103,255,0,174,122,122,138,0,81,156,17,142,79,115,113,16,245,4,146,37,245,228,99,235,207, +20,210,27,39,133,227,63,242,223,156,242,122,249,249,206,73,252,125,177,79,47,15,27,103,131,175,0,70,255,0,94,126,98,79,215,4,142,135,61,41,26,84,28,121,145,243,208,172,50,19,159,110,50,125,143,0,244,4, +117,160,8,217,102,108,145,156,99,39,18,187,40,25,199,85,149,179,142,56,57,250,118,166,132,155,145,179,167,29,100,28,242,79,67,215,131,156,96,147,215,24,52,242,232,49,251,236,140,113,251,169,23,234,49, +188,28,156,158,188,115,215,168,166,180,139,218,92,19,142,4,76,64,4,100,114,88,158,61,198,56,20,0,195,20,252,100,96,99,168,105,240,6,121,254,44,0,63,153,192,6,131,4,132,2,16,17,234,94,108,19,200,224,131, +129,201,198,54,145,211,30,148,211,34,255,0,125,137,236,124,183,192,61,79,56,249,79,3,3,159,174,58,87,46,199,128,238,121,60,136,183,17,156,247,28,241,223,216,224,14,104,2,193,179,156,224,236,64,58,253, +249,91,128,63,186,65,231,234,62,167,25,53,3,217,202,185,202,1,200,36,236,149,177,234,6,84,99,57,198,120,207,110,49,73,182,78,91,205,97,156,227,49,16,113,142,61,127,47,215,140,210,140,227,31,105,193,29, +1,70,239,193,24,17,31,110,227,167,124,208,4,70,219,105,229,115,239,229,202,57,238,51,185,88,127,144,56,166,249,9,208,170,224,131,213,37,238,125,76,159,94,228,115,83,133,110,247,32,30,127,229,156,167,25, +233,130,45,143,110,184,253,72,24,105,9,209,238,34,231,140,24,229,207,24,206,115,100,192,143,242,121,205,0,87,242,162,255,0,158,104,122,243,131,207,29,72,37,143,94,65,207,235,209,60,171,82,126,107,104, +220,244,60,194,188,241,206,31,191,95,74,148,253,152,245,184,132,54,7,88,137,207,161,199,216,65,60,117,233,211,215,171,73,183,94,60,232,79,166,35,112,123,96,241,100,15,190,58,142,230,128,20,67,99,140,125, +157,0,193,24,255,0,69,61,127,224,88,238,122,212,70,222,199,181,188,120,228,103,22,30,227,161,0,16,113,129,159,168,199,90,67,36,0,145,230,33,255,0,128,178,254,32,253,132,144,120,7,238,159,207,6,152,223, +101,60,238,66,15,7,113,147,4,159,173,134,48,70,6,48,63,51,64,13,48,89,12,126,238,52,235,208,105,199,240,224,240,122,245,235,222,155,182,196,14,48,79,7,1,44,15,94,252,125,64,250,159,126,67,246,34,57,107, +113,208,144,75,41,3,215,139,3,159,94,72,24,63,157,119,125,41,73,220,246,185,30,140,199,175,108,155,17,130,51,211,167,94,122,100,2,98,214,40,8,18,5,56,60,150,176,24,199,92,2,72,224,147,212,142,252,102, +160,50,90,12,149,156,3,140,146,173,96,11,3,147,201,202,158,63,1,207,39,173,87,119,211,14,127,227,216,142,217,60,103,158,121,181,81,129,245,56,32,142,131,136,136,210,201,251,214,128,143,250,107,16,3,7, +253,196,231,240,206,65,160,11,12,208,144,0,152,145,235,191,78,231,60,247,13,156,247,238,115,207,180,12,177,128,51,112,120,255,0,111,79,200,25,232,127,116,51,223,158,121,205,68,255,0,217,216,32,73,109, +145,211,108,240,156,231,185,201,4,17,142,153,3,212,243,85,216,217,169,31,188,139,32,159,149,102,80,8,207,35,229,151,143,76,30,223,168,5,151,88,206,0,187,250,159,58,200,125,1,43,1,56,30,131,61,7,83,129, +85,89,129,27,86,236,28,118,55,54,131,190,123,91,131,158,120,39,158,199,161,164,221,100,71,205,228,224,242,115,116,153,207,66,57,152,144,121,3,7,61,186,243,81,48,176,61,30,30,153,226,225,58,19,192,200, +145,189,51,147,215,29,187,128,63,46,171,255,0,31,42,57,207,23,169,131,255,0,1,72,112,121,30,132,118,56,20,155,88,145,251,248,216,28,244,186,36,15,92,129,22,64,231,166,57,254,30,181,14,203,65,207,154,152, +244,19,219,231,142,128,126,240,16,63,1,233,235,134,31,178,246,151,175,164,209,17,142,58,145,33,198,126,188,31,81,140,128,88,216,192,144,30,18,125,238,159,32,103,254,189,27,142,115,223,35,60,142,13,70, +194,94,139,36,39,156,12,222,56,60,131,198,69,137,200,236,121,170,249,131,160,149,200,56,224,79,18,227,240,200,234,121,234,105,132,71,201,50,203,236,191,104,67,147,232,48,64,61,59,231,130,79,208,2,124, +77,183,172,93,121,255,0,78,184,231,219,43,103,199,29,125,179,206,51,77,195,243,151,133,121,206,90,242,235,61,186,17,105,140,0,59,146,127,173,54,49,122,206,71,169,153,72,239,208,128,71,65,159,167,60,246, +137,153,27,133,243,136,29,140,131,111,110,251,9,30,248,252,120,160,11,237,144,70,100,137,128,238,47,110,215,158,122,230,215,167,174,9,4,113,143,84,222,67,96,24,187,100,139,203,150,32,19,223,22,195,211, +212,116,34,179,75,103,168,151,177,193,157,8,57,246,48,244,250,159,175,29,97,144,183,85,71,246,196,144,140,227,208,253,152,158,190,167,190,78,40,3,77,157,192,206,228,0,112,127,210,46,122,116,206,4,12,120, +207,82,56,25,3,218,179,92,145,195,56,30,163,204,187,61,57,255,0,159,38,24,233,147,159,124,113,89,197,174,15,30,91,145,232,101,128,1,223,189,161,7,240,228,227,191,20,155,36,3,34,36,207,28,121,177,228,17, +143,238,217,30,125,62,167,158,40,2,227,92,28,100,110,39,25,39,206,155,24,237,193,211,201,236,127,60,243,131,80,25,101,36,227,144,123,121,242,231,29,136,221,100,167,233,199,113,129,147,85,140,50,185,36, +192,50,120,36,74,160,241,234,69,144,231,183,39,211,28,210,125,154,127,225,182,98,51,206,39,46,70,122,224,11,112,59,142,217,28,117,0,10,0,149,140,135,144,95,215,155,130,121,199,253,122,169,239,128,49,193, +228,10,141,145,152,242,100,24,25,63,190,42,185,61,243,246,98,57,244,231,128,114,15,20,134,11,144,78,235,73,79,126,1,57,192,24,193,16,119,199,25,239,158,157,67,214,43,129,140,89,191,3,184,3,29,192,3,201, +199,94,216,32,117,200,238,0,205,132,3,159,49,176,58,253,177,151,62,128,15,176,54,73,238,65,206,120,197,40,141,177,144,151,3,60,3,246,217,0,245,28,11,21,246,228,156,119,25,167,24,230,4,110,176,115,143, +226,202,246,247,242,142,73,199,92,231,62,188,83,49,38,57,177,156,122,5,68,35,245,69,160,0,164,189,197,207,92,241,121,39,126,191,242,231,249,241,220,247,234,130,57,65,32,45,209,233,210,253,198,115,216, +19,98,115,248,18,1,192,198,41,66,220,244,22,183,74,9,233,182,37,24,207,60,101,112,113,223,168,200,193,52,223,38,83,214,41,129,36,176,220,34,200,7,191,36,140,250,243,129,237,154,0,119,147,55,31,186,188, +60,127,208,67,176,235,156,192,156,254,89,199,83,214,143,34,232,127,203,11,188,30,230,232,158,216,206,86,60,113,248,158,59,138,140,137,144,242,151,100,14,129,99,139,4,254,46,120,233,192,192,227,24,230, +154,204,228,156,71,113,156,115,186,8,114,112,7,251,88,29,51,156,103,25,29,48,40,2,109,146,128,127,209,174,115,221,190,211,32,57,63,221,204,121,62,157,253,199,92,196,201,54,1,107,107,134,28,255,0,203,105, +152,243,235,136,135,63,159,108,251,192,210,191,120,216,0,63,138,40,125,120,60,159,242,50,51,138,174,215,14,164,237,88,219,61,11,197,0,3,167,66,74,158,248,60,208,6,136,50,12,98,210,233,137,231,2,89,200, +246,228,198,71,29,251,31,94,132,133,174,136,249,108,46,79,174,67,149,3,56,234,84,114,15,92,128,70,56,235,88,237,117,40,39,119,146,0,244,138,2,113,129,145,213,176,79,215,167,229,81,27,198,13,254,177,65, +25,233,107,25,3,3,209,84,147,129,200,29,187,115,197,0,108,22,185,10,127,208,101,24,245,69,200,30,249,78,79,126,78,113,199,166,35,221,121,201,22,77,223,159,45,8,29,249,56,29,49,235,207,3,24,205,101,253, +187,36,230,64,113,255,0,78,25,244,238,17,189,250,103,223,181,31,111,141,120,56,124,241,205,140,221,191,237,137,29,79,97,147,131,216,10,0,210,105,46,199,252,184,144,122,231,201,24,192,244,24,7,183,94,189, +122,83,76,183,121,63,232,99,29,131,91,170,128,61,62,96,78,58,242,72,29,176,57,172,191,237,40,9,230,37,57,227,254,60,37,39,61,48,49,106,121,39,167,204,120,239,71,219,237,143,91,124,99,28,155,75,128,71, +24,233,246,117,235,207,57,25,231,233,64,26,162,91,145,203,218,198,190,164,71,16,227,215,44,132,116,224,19,142,157,1,52,27,169,1,0,70,171,199,102,181,78,115,219,17,126,60,116,232,73,235,89,31,108,135,35, +108,43,142,227,236,147,169,235,235,229,244,231,60,244,237,215,52,27,232,178,50,135,25,227,22,231,35,211,150,78,73,253,125,40,3,112,94,200,48,51,142,153,30,101,185,254,104,164,30,156,156,253,41,30,241, +142,75,17,199,79,222,91,131,199,29,74,0,15,25,232,127,199,16,93,196,115,254,143,49,31,222,16,168,99,159,76,40,110,125,64,29,179,205,74,46,160,35,31,100,187,99,130,114,99,85,10,115,192,201,139,61,189,78, +121,193,233,64,26,102,249,1,229,156,116,25,251,69,190,61,127,231,153,29,191,30,115,200,20,225,127,6,9,243,36,35,156,126,250,62,125,137,17,156,140,227,175,124,115,89,171,51,100,236,177,157,134,8,7,122, +15,253,10,51,156,126,121,238,113,82,9,165,227,254,37,83,19,208,230,120,1,227,208,121,71,31,92,228,99,165,0,105,141,70,29,184,223,46,120,198,211,25,29,58,103,202,4,247,232,219,120,252,105,69,244,7,56,121, +254,140,80,253,70,10,254,121,200,235,207,97,150,37,126,167,76,149,70,112,73,185,183,198,72,57,60,196,126,189,73,199,56,207,69,30,102,62,91,50,15,39,63,104,128,158,71,3,30,88,0,246,201,39,29,189,128,53, +133,220,4,158,102,244,25,49,1,255,0,162,114,115,235,216,250,241,69,101,7,185,206,62,203,199,29,101,143,131,142,58,70,113,216,244,39,158,70,104,160,15,82,44,160,156,206,135,28,130,38,62,152,199,97,215, +4,224,2,7,35,214,163,103,82,73,243,131,127,219,194,19,140,14,0,51,238,28,103,25,198,14,6,5,83,55,3,119,2,204,122,144,209,140,227,232,169,249,245,239,159,69,55,67,28,189,168,193,63,114,85,207,110,219,187, +30,58,114,79,35,7,128,11,57,39,149,119,192,236,210,198,123,140,129,251,236,254,67,142,79,173,68,88,41,193,71,35,36,238,18,250,123,9,136,32,156,99,131,250,241,7,219,66,245,145,0,234,79,152,139,192,233, +142,125,125,125,104,23,187,185,23,17,14,192,57,12,0,30,135,127,60,243,206,113,199,61,40,1,236,99,236,147,19,129,147,146,127,244,23,57,28,117,227,160,252,88,80,17,194,75,212,240,31,3,61,184,50,30,222,131, +175,160,168,205,215,205,134,185,181,0,156,253,212,12,122,244,253,225,207,80,78,125,15,122,97,153,15,63,106,135,144,48,192,194,15,183,252,181,207,97,207,231,222,128,36,218,227,147,4,248,7,25,243,50,15, +110,73,113,237,142,105,119,224,115,111,39,168,203,227,183,29,24,159,215,3,142,65,36,84,94,116,64,228,221,166,78,71,200,144,63,168,231,14,73,245,227,24,231,216,83,150,75,118,201,55,100,231,156,45,172,39, +159,76,229,114,121,227,252,9,160,0,203,31,79,42,78,113,144,10,28,142,152,207,155,159,175,64,58,113,205,39,157,16,251,176,74,125,112,200,61,115,201,147,229,61,56,227,142,57,53,47,155,106,57,243,231,60, +245,251,28,89,35,24,234,27,57,25,245,39,249,16,188,61,68,183,5,71,82,214,227,147,219,163,145,236,114,7,110,189,192,35,51,160,27,141,181,193,250,178,28,112,56,4,183,94,196,110,192,239,236,239,181,1,159, +244,89,241,232,72,0,115,158,48,24,144,122,16,50,49,70,99,234,178,72,8,57,201,179,118,199,168,37,65,231,29,127,78,212,225,36,121,193,148,0,113,214,210,97,219,169,0,47,61,123,127,58,0,99,92,14,158,84,201, +159,80,174,1,232,7,204,1,250,241,199,215,171,62,212,189,54,74,49,208,133,132,17,156,244,206,61,125,63,76,10,148,201,16,201,223,17,224,129,254,139,50,156,125,113,143,207,56,206,106,48,241,231,239,125,127, +209,229,63,81,141,235,131,207,57,235,140,80,2,27,192,152,249,230,31,81,14,48,115,217,79,25,235,130,71,189,31,110,70,225,101,147,39,208,219,0,112,112,79,51,116,207,25,192,3,218,151,205,132,30,83,61,178, +96,151,167,185,89,14,121,244,253,115,78,251,66,17,143,41,79,61,210,233,122,255,0,187,114,188,253,7,110,120,24,0,8,39,119,232,207,142,223,189,179,63,67,204,131,146,58,113,237,234,105,193,229,63,119,204, +228,245,18,90,118,61,50,37,224,116,207,63,143,53,32,158,49,210,56,134,65,224,155,174,163,215,55,39,112,0,159,203,57,245,12,232,122,11,117,200,198,12,179,2,51,255,0,111,99,31,143,56,234,104,1,161,174,119, +101,89,212,112,14,94,212,251,117,105,71,234,79,62,157,105,228,207,159,245,232,14,49,243,27,94,9,227,175,154,61,142,1,57,237,233,74,39,64,70,100,132,12,103,2,73,152,174,113,206,239,60,159,78,57,30,249, +205,59,237,112,12,131,33,61,9,219,44,131,167,124,153,177,234,6,120,235,200,231,32,17,50,78,223,242,249,18,242,70,15,217,241,223,166,36,228,245,228,30,156,242,122,160,134,224,116,189,139,56,207,15,18,145, +249,76,51,223,140,12,243,140,102,167,251,93,153,110,164,147,158,179,33,206,62,179,156,19,244,3,158,15,52,191,107,181,81,200,111,194,88,191,31,249,108,58,250,145,199,165,0,70,109,238,155,254,95,163,24, +28,230,117,224,251,1,41,237,129,235,140,243,140,101,86,210,126,166,242,55,39,210,225,84,156,241,253,240,79,60,117,198,120,30,243,11,235,16,48,68,205,223,137,160,228,119,228,150,201,30,156,30,180,191,109, +176,57,218,179,142,78,15,159,108,14,125,78,83,241,32,243,156,224,224,129,64,17,253,142,117,27,188,254,189,74,221,48,252,48,187,142,113,199,168,198,121,160,66,235,130,215,65,121,31,242,241,57,207,185,33, +79,39,234,14,71,81,205,77,246,173,56,158,5,231,126,81,236,207,175,63,52,12,114,56,36,19,235,216,10,62,209,167,100,96,106,4,243,193,251,15,94,64,231,236,163,255,0,174,15,7,154,0,96,68,199,252,126,41,60, +127,203,197,192,60,159,100,62,220,227,28,143,90,122,164,96,243,115,31,57,63,241,243,42,158,153,239,1,233,215,144,113,200,235,147,78,23,118,35,143,46,253,135,124,199,104,216,57,35,140,219,31,161,247,244, +21,42,221,233,188,3,13,249,227,140,67,100,49,143,164,3,60,247,57,227,175,160,0,131,98,115,139,132,60,156,226,238,110,249,35,145,110,160,147,199,35,142,156,117,167,174,87,59,102,4,17,147,139,183,36,224, +250,180,3,61,79,114,106,200,184,211,79,72,47,56,207,252,178,181,239,238,35,193,3,253,211,159,195,53,34,207,101,252,16,93,131,220,249,22,167,39,61,207,147,199,92,12,109,235,220,228,208,4,33,163,28,179, +169,61,127,215,22,60,250,230,216,231,216,112,71,83,142,42,85,48,255,0,178,199,29,200,36,255,0,223,86,95,79,226,207,94,61,102,23,16,30,60,155,226,48,57,242,33,29,135,82,33,63,150,49,156,125,105,194,104, +91,31,232,247,196,1,193,104,45,143,254,211,92,126,63,76,80,3,22,88,84,28,197,30,7,25,243,0,39,61,72,197,160,193,199,249,52,245,150,212,100,149,132,117,57,7,39,145,129,156,217,140,114,112,78,72,193,39, +138,148,73,16,251,182,247,99,39,7,109,181,178,158,57,193,249,64,227,156,116,39,189,57,100,218,78,200,46,58,231,231,130,201,121,238,56,117,61,59,227,144,51,159,64,1,90,192,224,31,43,156,31,225,199,60,244, +242,14,8,207,79,168,245,20,239,244,67,144,22,19,199,114,152,227,158,159,103,28,122,147,140,122,240,50,245,157,142,0,181,60,112,73,142,219,215,159,187,56,24,234,71,99,140,227,60,84,130,73,91,254,88,99, +175,72,45,50,7,99,205,199,255,0,171,191,184,4,1,44,243,128,45,72,61,1,40,78,61,255,0,118,167,219,0,122,113,201,169,86,43,76,19,229,90,241,156,227,104,198,49,212,108,231,175,248,17,147,151,153,39,28,44, +114,142,127,231,133,161,232,123,230,224,140,224,117,25,25,198,7,83,70,251,198,39,253,30,67,199,4,195,104,63,30,36,32,119,227,215,241,20,0,8,236,91,25,134,220,118,200,17,227,25,199,63,185,56,199,161,4, +103,191,98,240,150,35,238,199,109,193,199,202,241,140,17,237,246,100,207,95,95,232,41,159,233,205,255,0,44,100,81,158,162,43,85,24,244,230,81,130,121,193,0,113,238,51,64,75,147,214,41,179,211,62,92,28, +14,51,255,0,45,121,233,199,7,218,128,38,2,207,57,9,2,240,48,124,200,65,36,244,249,188,159,79,78,255,0,83,78,6,211,56,111,36,115,192,50,194,65,207,28,19,14,115,158,163,215,215,53,30,203,142,234,254,197, +146,48,115,208,227,18,140,3,198,63,94,230,148,11,133,199,239,89,7,29,85,120,25,193,227,205,227,244,237,215,20,1,40,54,253,20,198,1,7,133,104,185,193,247,141,65,247,235,143,76,242,15,220,247,242,79,113, +147,3,16,125,127,212,245,30,153,235,199,189,69,190,224,103,50,142,56,225,1,193,233,252,59,135,124,99,190,105,67,205,156,44,164,115,143,154,223,216,227,239,70,64,239,192,60,251,112,64,2,230,54,99,243,195, +248,172,100,244,244,17,241,233,211,223,140,114,245,96,51,181,227,61,0,196,112,182,49,158,57,143,223,28,228,131,215,217,171,44,221,11,179,250,98,5,7,241,2,28,123,247,228,244,197,56,201,63,96,72,227,143, +33,177,223,184,132,100,143,111,166,104,1,251,156,12,137,83,25,239,12,24,231,185,5,64,227,183,0,19,138,118,103,56,196,168,59,113,107,109,140,126,96,103,252,143,104,132,147,158,8,101,198,8,253,203,99,158, +71,13,31,25,207,92,126,125,144,75,32,228,144,64,56,255,0,82,199,212,159,186,163,56,235,192,56,3,28,14,160,18,19,114,65,2,68,61,112,69,173,183,36,159,114,220,3,199,29,176,7,25,203,12,55,188,149,41,142, +159,53,188,25,3,3,174,221,184,250,103,60,210,253,162,108,16,170,173,140,145,152,88,126,35,42,27,223,169,193,227,61,104,243,230,111,155,10,48,49,145,1,111,208,242,57,231,140,245,30,156,0,52,91,95,156,254, +242,32,72,239,111,23,36,113,213,95,242,32,250,247,21,32,178,212,187,249,76,8,39,30,92,89,35,176,31,188,102,252,129,252,9,20,225,246,135,31,50,150,201,32,98,210,50,79,78,153,66,71,161,233,199,76,113,78, +91,107,134,201,16,203,233,197,146,19,234,79,220,224,14,125,129,237,193,160,8,190,203,168,14,130,48,1,224,8,87,129,212,18,87,130,8,56,56,235,212,116,197,60,89,234,71,7,110,236,240,74,194,65,199,255,0,95, +215,129,192,198,58,83,205,180,160,127,171,151,63,245,233,24,36,126,33,113,233,220,240,72,230,144,193,55,79,46,235,62,162,5,67,219,177,108,17,142,196,231,175,74,0,67,101,168,242,4,7,167,124,38,115,234, +122,113,239,140,147,193,166,125,150,249,126,252,47,206,127,229,160,39,35,208,121,79,156,242,120,255,0,235,83,76,114,131,201,187,25,235,242,193,142,61,65,144,116,255,0,19,218,147,203,207,38,91,160,71,32, +98,223,183,176,148,245,236,113,244,57,160,5,251,37,202,130,76,111,255,0,127,36,218,57,233,149,183,56,233,193,56,24,224,226,148,91,92,55,62,89,0,16,51,231,203,145,233,159,244,101,28,241,140,100,246,250, +183,99,114,60,203,236,113,247,99,182,35,61,65,249,164,61,177,158,157,112,105,68,82,19,130,247,216,198,115,228,192,221,125,113,40,62,188,146,122,116,233,64,18,8,39,81,150,14,188,127,207,70,39,4,112,65, +48,100,116,60,159,126,40,242,103,95,155,18,182,114,127,215,0,121,39,254,157,207,208,227,145,207,167,45,49,179,1,182,75,242,122,28,219,219,240,51,219,247,235,142,223,78,180,198,142,69,3,155,227,159,250, +103,0,29,184,226,98,65,235,212,0,61,77,0,72,76,248,219,251,212,57,28,137,67,30,190,214,195,147,207,124,240,125,121,102,110,185,11,36,167,32,241,184,99,143,173,184,3,131,233,223,57,168,243,50,228,55,219, +8,255,0,182,0,244,235,159,60,112,61,137,235,145,158,133,133,166,31,112,94,99,161,249,237,84,116,233,159,182,15,64,114,70,112,104,1,204,111,114,49,230,246,254,56,176,63,224,63,100,36,241,239,219,156,212, +101,239,63,219,81,234,22,54,206,56,232,182,4,146,113,234,72,160,155,134,249,74,221,158,224,153,109,91,31,135,219,59,12,1,193,60,122,14,65,28,223,196,179,158,224,21,133,177,219,39,19,28,114,1,61,125,70, +6,40,0,243,46,72,198,233,128,236,69,187,47,176,25,93,60,228,126,189,249,207,17,180,151,160,96,249,132,55,127,37,178,51,211,57,179,92,116,193,237,130,79,53,47,151,39,85,134,94,1,224,195,17,250,19,150,35, +235,248,96,240,41,66,76,70,76,82,3,142,233,26,227,219,1,72,24,244,200,233,248,144,8,188,203,161,140,253,163,144,62,236,42,127,85,179,238,73,198,121,61,112,113,130,239,180,76,48,24,92,28,15,187,229,202, +62,184,11,108,6,127,253,92,129,64,73,9,229,73,192,28,147,6,15,230,185,255,0,3,215,210,149,162,126,71,147,235,203,61,191,62,216,48,224,246,30,152,224,154,0,62,211,180,115,28,131,166,63,119,49,63,250,79, +249,224,15,240,103,156,9,45,229,200,59,140,64,113,233,206,45,254,188,227,29,122,83,196,109,144,62,206,152,235,193,181,199,36,103,238,219,146,57,199,92,246,235,214,131,25,201,197,164,77,254,240,183,36, +244,198,91,200,32,96,117,224,241,211,220,2,63,180,99,35,202,126,51,147,229,237,201,252,109,215,28,103,158,125,249,192,163,207,143,248,146,85,245,249,134,1,57,207,27,87,28,113,200,36,14,157,193,126,217, +137,255,0,143,40,8,7,60,170,156,241,215,139,98,185,236,115,219,241,204,203,22,120,107,40,7,214,24,135,161,234,109,143,65,223,62,252,224,208,5,99,119,108,57,2,67,211,254,90,142,122,227,128,70,58,113,208, +125,49,71,218,237,112,9,73,57,238,100,7,147,215,164,131,63,78,49,131,222,173,109,139,254,125,160,200,227,27,97,80,14,14,122,192,184,224,103,142,57,164,242,85,243,136,45,125,112,101,181,94,56,234,74,96, +227,129,131,211,176,24,160,10,127,108,179,4,22,103,92,241,157,196,41,252,230,31,134,122,240,50,77,72,47,108,143,89,95,167,247,250,245,207,62,103,39,35,177,56,207,39,24,169,141,162,28,126,230,200,19,128, +79,218,45,9,250,242,158,131,177,253,50,41,130,198,18,9,17,217,134,199,24,150,204,31,115,254,172,255,0,143,60,80,4,15,121,107,142,30,66,7,56,5,24,159,206,96,113,215,35,36,129,238,1,168,254,215,8,56,71, +148,231,62,216,31,83,112,121,231,158,70,51,154,152,233,241,231,133,182,83,158,72,150,203,62,153,232,56,35,28,14,125,113,217,6,158,189,156,40,237,178,230,208,115,211,157,185,35,215,147,142,79,226,0,195, +121,8,200,105,101,4,142,207,48,30,249,43,115,130,125,113,193,39,166,41,159,105,181,108,110,146,98,58,255,0,203,86,201,206,70,79,152,115,143,127,229,145,86,147,79,201,35,207,144,142,70,5,213,170,227,57, +35,39,159,229,199,227,82,13,56,12,19,113,33,227,248,175,45,186,116,199,60,125,61,207,28,226,128,41,121,214,127,195,46,79,163,68,237,236,71,45,200,206,121,224,231,173,56,79,1,224,52,120,236,198,1,158,58, +245,30,224,117,31,141,92,54,11,158,39,144,247,199,219,109,137,231,146,56,192,245,200,0,100,112,71,106,112,179,147,0,172,140,222,164,222,91,240,7,124,171,38,121,207,25,57,28,250,208,5,109,203,128,68,177, +130,123,249,106,56,207,208,241,245,61,243,78,12,57,27,162,61,178,97,128,231,142,217,28,113,146,71,81,158,15,90,176,44,228,3,32,158,71,63,233,176,227,223,157,228,246,62,156,30,135,187,252,135,206,75,28, +131,206,46,131,15,204,58,140,113,146,58,113,237,64,21,72,99,156,8,71,57,230,8,7,212,125,211,199,208,226,163,42,249,228,90,3,234,209,67,145,233,209,115,146,49,249,227,21,161,178,69,24,15,211,253,178,220, +227,35,157,196,142,221,73,35,35,56,167,134,151,24,5,122,114,12,140,57,207,175,61,58,126,7,24,235,64,25,170,211,14,15,246,121,24,24,249,33,28,12,246,41,215,235,129,156,142,59,184,52,141,129,139,28,142, +131,203,182,61,71,113,176,228,242,113,142,58,251,138,209,2,94,73,72,207,78,93,221,135,215,148,35,129,215,215,166,69,48,153,242,72,138,219,169,231,230,199,126,127,213,145,208,28,125,61,168,2,152,18,244, +85,211,192,207,36,219,89,128,71,28,103,106,143,126,121,169,115,112,122,11,30,70,126,72,44,148,251,116,96,79,3,174,1,238,49,147,135,239,159,161,22,189,240,112,20,125,78,232,187,129,129,128,57,24,57,34, +128,102,239,246,82,59,96,12,131,255,0,1,183,61,187,253,5,0,48,35,30,162,216,158,167,17,91,158,122,158,146,47,28,247,25,247,29,41,140,187,126,244,22,205,232,68,86,234,78,49,220,206,62,184,207,65,147,210, +158,90,227,60,173,177,29,177,142,216,235,186,219,167,36,228,158,153,239,154,66,110,112,74,173,185,3,185,17,228,127,228,168,63,129,3,219,169,160,8,199,57,255,0,71,85,227,168,88,0,250,100,93,16,14,57,199, +234,58,210,238,35,143,41,112,51,129,242,123,122,92,114,15,60,228,28,242,41,66,222,142,68,113,48,7,63,118,35,223,248,73,183,39,241,198,57,239,142,30,13,232,206,45,162,60,119,146,221,58,31,120,20,241,201, +247,247,25,4,1,55,147,129,229,14,49,208,3,144,49,235,117,192,233,158,231,7,20,252,183,107,102,99,237,26,156,241,198,49,57,235,238,7,175,61,148,37,241,193,54,144,1,208,145,53,185,61,135,240,162,224,116, +60,224,118,235,213,219,46,199,75,120,127,7,183,31,240,45,198,55,192,224,103,29,48,120,237,64,0,89,8,31,232,147,100,30,201,32,0,15,116,152,227,30,160,224,122,145,82,42,200,63,229,202,227,131,147,141,252, +126,115,240,15,228,122,226,154,177,94,103,230,134,37,250,220,91,114,8,61,188,176,120,30,153,201,227,175,21,48,183,156,143,245,17,30,153,255,0,72,181,30,157,136,29,59,100,115,142,184,38,128,27,189,242, +0,179,159,160,28,180,220,113,201,35,237,64,254,0,113,218,158,166,228,31,150,198,224,246,249,90,113,220,240,73,155,156,231,28,231,129,198,51,154,60,137,0,193,182,143,128,57,55,54,152,30,167,244,245,199, +94,189,104,22,211,31,249,97,111,192,255,0,158,246,108,72,247,0,128,122,158,15,182,61,40,2,117,123,133,31,241,231,114,188,231,137,39,63,251,80,245,245,30,148,166,107,142,191,103,153,50,78,67,188,224,142, +9,238,88,125,62,110,122,123,213,97,12,200,73,242,45,128,235,254,186,215,131,206,120,3,28,14,184,60,251,243,151,152,165,234,98,179,231,214,91,97,248,1,159,83,219,143,94,212,1,96,60,132,115,100,88,246,59, +159,169,199,63,49,92,143,114,7,177,237,74,26,80,71,250,1,7,4,12,228,247,61,14,242,71,92,142,120,234,49,197,83,16,204,1,33,45,57,60,1,52,61,193,236,164,247,245,231,28,250,225,12,18,130,14,219,80,112,15, +50,198,71,227,144,223,78,59,142,189,69,0,104,239,144,224,155,80,48,49,206,238,131,175,2,81,200,61,243,159,83,76,98,153,230,214,18,114,58,134,200,25,198,62,105,185,36,140,116,236,69,81,217,48,227,101,177, +198,112,4,177,128,8,246,43,207,167,61,129,25,28,26,55,58,243,178,3,254,236,145,145,199,7,25,141,179,219,167,92,19,207,82,1,162,10,227,229,181,183,7,212,132,95,215,206,7,3,131,208,49,60,10,112,4,140,181, +189,158,222,1,225,137,201,233,192,118,3,158,184,207,211,165,100,153,101,7,62,76,56,255,0,174,176,40,56,35,39,152,122,231,131,215,167,35,20,134,229,241,128,145,96,103,164,177,147,211,215,236,221,15,24, +231,7,167,25,228,3,104,8,215,254,88,216,142,50,119,5,25,250,238,113,220,17,130,163,36,211,115,30,114,23,79,7,175,0,99,30,167,111,3,245,239,140,113,156,145,59,12,22,140,142,73,226,104,240,65,237,197,185, +56,4,17,207,80,113,197,72,183,25,82,2,75,142,70,4,227,183,210,208,116,247,244,28,129,64,26,162,21,115,144,150,60,156,156,70,91,249,186,227,61,249,239,197,13,108,227,133,75,48,57,25,242,176,125,58,25,253, +71,80,188,114,125,206,88,112,8,62,77,199,61,15,158,7,60,228,127,199,145,29,14,113,236,122,118,127,158,132,99,201,187,237,200,145,0,30,160,147,101,144,122,115,147,244,57,224,3,65,45,152,117,251,32,245, +253,203,30,158,230,94,62,160,251,231,52,255,0,178,131,218,28,241,202,194,14,50,49,252,79,142,191,94,122,159,92,225,60,75,131,178,235,191,30,116,92,122,140,253,140,30,58,117,239,207,29,29,246,171,114,113, +178,240,147,198,76,168,216,30,131,253,12,253,70,50,1,231,29,5,0,105,45,164,153,27,26,53,25,60,236,136,116,231,238,147,147,215,7,183,160,230,148,218,79,208,79,16,3,142,34,76,143,94,156,241,212,156,98,179, +254,212,156,144,183,132,140,131,146,57,244,25,22,67,167,227,212,242,51,76,55,104,49,251,139,179,156,231,151,36,231,60,99,236,126,158,159,92,208,5,230,182,148,13,198,225,48,50,73,88,147,140,122,130,71, +78,58,246,245,166,52,55,4,96,220,12,119,196,73,146,63,224,39,215,183,127,229,83,237,110,126,237,189,217,207,25,34,99,207,92,100,90,12,122,156,118,234,15,20,230,185,155,25,91,121,199,212,92,30,254,141, +0,227,130,57,252,78,51,64,14,242,37,0,255,0,164,72,7,161,128,31,212,182,209,142,228,241,199,165,51,236,236,9,63,109,96,48,56,16,91,143,212,201,206,57,224,114,61,48,65,164,55,55,24,207,217,216,140,156, +7,71,3,60,146,120,128,243,223,131,215,57,207,52,211,119,41,56,251,50,2,127,233,156,222,253,49,17,29,184,24,29,123,129,64,15,242,216,146,26,245,255,0,27,123,80,7,211,106,18,61,143,39,31,197,67,64,220,226, +249,182,244,57,134,63,111,88,242,125,15,203,207,108,115,152,252,219,128,51,246,69,32,158,73,89,128,200,62,246,141,207,61,120,28,0,65,7,132,51,92,99,254,60,148,228,245,84,115,249,255,0,161,28,244,35,145, +199,226,40,1,26,217,186,125,180,227,61,118,70,56,62,185,136,112,115,147,237,156,122,152,154,212,2,115,124,71,110,4,71,142,121,28,40,61,71,214,156,207,117,255,0,62,7,232,34,39,185,24,201,178,28,145,142, +7,28,247,168,115,57,99,139,51,244,40,224,140,143,79,178,142,189,122,15,199,173,0,60,91,168,207,250,116,133,114,120,17,64,73,57,255,0,174,153,232,125,184,231,189,51,201,140,116,185,149,191,237,149,177, +24,247,83,33,29,249,237,193,207,24,52,130,41,159,165,185,92,246,17,57,63,135,250,49,254,153,63,92,82,125,153,178,67,41,25,207,30,65,56,246,201,135,30,231,142,253,57,201,0,70,133,14,127,210,37,25,207,34, +59,62,14,71,99,38,7,64,122,99,60,103,25,52,8,80,131,139,153,14,58,229,45,59,100,140,102,69,199,61,248,192,3,158,78,97,123,81,216,74,59,241,108,173,207,32,116,181,63,137,252,113,235,25,181,108,100,153, +122,115,155,96,125,121,199,216,191,63,175,62,192,22,24,99,163,187,128,1,224,90,47,94,156,253,160,99,191,7,175,29,59,198,202,6,78,78,121,235,37,170,144,71,124,121,163,250,242,49,156,154,128,218,147,209, +166,0,117,197,178,30,196,127,21,152,207,29,187,246,232,106,171,192,87,33,38,156,28,156,147,99,27,112,70,112,10,192,167,131,254,208,201,234,65,52,1,105,157,87,239,49,80,59,153,172,240,64,207,77,215,99, +145,215,158,61,125,161,105,131,14,28,28,244,38,91,38,235,207,79,237,0,79,160,233,130,71,124,85,7,89,193,192,187,156,123,127,103,22,245,29,144,130,49,211,140,158,159,88,88,92,246,189,159,158,159,241,46, +113,183,161,237,25,94,221,7,60,14,189,72,5,243,59,14,140,135,182,1,180,231,233,139,255,0,167,161,224,14,78,49,17,159,218,60,100,228,23,129,115,215,147,254,154,123,224,117,247,3,181,103,17,118,9,197,197, +211,113,201,22,100,227,215,33,194,131,144,51,156,14,188,84,47,37,218,128,76,215,64,113,159,244,68,31,174,224,51,237,158,158,248,52,1,168,100,36,28,8,176,121,31,189,131,25,237,192,187,61,15,62,199,158, +184,53,11,50,156,101,163,57,234,124,212,56,227,28,109,185,245,234,62,81,244,34,178,12,247,103,56,51,49,231,164,74,185,236,115,186,76,3,143,240,61,120,135,206,187,29,98,144,247,201,69,31,168,148,15,160, +255,0,26,0,216,102,32,112,32,60,30,119,167,78,122,230,240,28,224,143,214,160,59,219,180,67,0,227,108,227,240,193,91,194,122,99,177,227,3,212,28,179,61,206,114,97,111,78,163,25,237,156,73,212,1,211,175, +92,117,166,25,238,48,79,149,39,175,14,224,254,3,237,10,59,30,189,123,99,156,128,95,117,152,112,178,39,126,133,156,243,212,143,244,165,252,243,211,240,21,16,142,118,207,239,87,56,228,109,201,253,111,9, +237,237,237,214,168,27,203,129,255,0,46,174,70,58,153,166,7,169,231,139,156,99,3,252,240,105,134,234,103,233,100,237,223,155,137,113,158,72,201,50,144,123,245,60,80,5,246,134,112,114,101,112,123,50,197, +143,94,135,206,110,189,58,16,0,224,246,166,24,166,57,204,172,216,245,140,156,224,250,239,233,248,245,252,234,135,218,39,7,155,22,3,63,195,116,70,125,254,248,255,0,245,15,160,164,55,19,103,34,201,189,14, +110,55,243,142,57,220,120,244,56,60,250,117,160,11,70,55,25,10,236,61,64,136,54,49,133,231,46,51,142,220,227,212,213,87,73,193,59,100,152,100,245,54,233,143,209,241,145,201,7,190,48,70,122,198,215,146, +47,91,54,201,231,253,116,152,231,190,4,68,122,241,158,125,129,168,218,249,249,38,208,175,92,16,210,54,125,248,132,140,247,35,25,193,206,70,40,1,199,237,127,243,222,65,159,75,88,78,112,115,222,65,208,117, +233,233,220,128,132,220,240,5,196,185,236,126,203,8,25,244,36,202,115,245,168,78,163,143,224,216,71,60,199,49,198,58,228,253,156,14,51,237,252,233,135,81,124,228,20,7,212,219,204,123,231,156,70,188,114, +123,119,231,142,128,15,144,220,245,51,55,76,252,214,214,199,62,249,44,70,63,14,255,0,129,131,116,185,249,166,198,120,255,0,85,100,164,143,161,113,239,199,229,142,114,199,212,229,201,229,15,184,181,145, +186,116,63,52,109,244,232,112,59,117,195,63,180,37,63,199,130,115,194,217,183,56,247,251,57,31,144,36,1,206,56,160,9,204,140,189,103,64,64,232,82,203,183,252,12,175,28,118,192,63,164,13,113,33,200,243, +226,231,61,13,160,192,250,135,235,236,7,242,164,55,211,46,9,36,131,200,31,98,99,193,0,243,254,139,232,79,183,25,238,50,207,237,85,31,123,36,224,243,246,61,163,159,251,118,95,199,174,56,200,230,128,23, +206,115,255,0,47,8,153,61,190,200,115,238,73,144,54,112,58,122,112,113,81,188,211,12,109,189,227,209,163,183,0,30,251,114,73,237,200,3,211,156,19,72,53,117,83,192,24,207,123,83,250,21,141,7,166,79,81, +237,217,167,88,231,1,99,25,231,155,121,7,3,185,220,66,231,235,131,128,65,199,96,4,55,23,56,199,218,198,63,217,75,108,159,92,141,163,63,175,225,76,103,102,31,53,219,246,233,13,183,24,231,160,200,57,233, +219,223,129,74,117,41,27,162,194,120,227,253,24,0,0,245,204,160,14,188,103,57,246,167,11,249,186,136,225,63,75,112,10,245,224,17,112,120,238,122,114,64,24,205,0,87,46,231,254,95,92,1,252,62,93,160,31, +145,92,246,30,164,158,253,5,70,93,65,230,241,179,193,199,151,110,58,103,36,237,83,201,200,237,235,235,86,154,242,118,234,132,156,118,182,4,114,49,213,166,97,200,235,219,183,29,68,70,119,39,152,27,57,229, +133,180,120,198,58,113,38,127,17,233,210,128,34,50,166,57,184,102,235,199,149,17,234,51,245,32,244,31,160,168,139,161,227,206,124,158,194,8,134,125,122,175,184,227,147,215,53,51,78,221,226,144,99,140, +152,84,14,252,114,228,17,245,3,61,51,81,249,131,159,221,202,50,65,255,0,143,116,32,113,142,166,84,56,232,122,231,140,14,160,80,4,94,92,103,25,150,66,123,255,0,163,33,24,244,229,24,28,142,152,199,115,205, +46,200,219,143,49,192,31,244,235,0,207,177,62,75,17,211,215,3,235,213,228,22,31,41,97,207,252,240,56,30,188,11,156,250,116,227,235,81,249,18,54,73,124,228,241,155,102,25,231,177,243,207,61,123,122,251, +80,2,121,113,130,118,200,192,244,255,0,85,109,249,1,246,98,125,250,254,93,212,199,27,240,210,22,28,140,50,67,208,228,224,255,0,163,143,235,215,223,144,90,100,114,83,156,240,208,246,35,190,24,224,14,189, +121,30,189,152,214,170,188,23,80,59,97,31,111,3,60,99,158,222,185,234,51,138,0,95,179,197,145,243,161,238,113,246,113,239,200,54,126,222,160,117,0,100,26,107,195,145,242,133,36,118,223,108,51,140,115, +129,104,70,123,244,62,216,168,190,203,16,108,153,80,227,156,159,181,113,145,254,201,199,94,152,199,97,212,98,147,236,214,228,228,203,110,64,193,228,221,130,6,50,121,44,123,115,145,192,193,7,60,224,1,222, +84,221,66,117,28,21,107,102,244,237,246,17,199,185,250,102,151,202,186,39,32,48,200,238,45,215,145,232,13,139,103,31,222,239,156,244,166,253,158,223,140,77,106,15,80,1,189,227,147,156,254,241,65,39,142, +255,0,135,21,27,65,105,147,190,123,67,219,37,175,24,156,244,3,51,242,127,46,160,244,234,1,100,91,223,0,0,145,179,215,165,169,193,233,255,0,62,67,60,103,211,166,59,230,158,177,234,96,224,76,216,227,144, +182,131,56,235,247,172,199,78,156,122,244,29,106,153,134,199,167,157,97,255,0,124,93,3,143,94,103,31,166,73,252,234,38,130,199,167,157,105,142,185,219,57,30,156,3,54,113,223,60,156,246,199,20,1,120,174, +165,146,124,231,3,217,236,78,112,59,230,204,49,28,113,131,222,155,187,82,36,3,59,243,216,125,143,175,65,156,91,227,235,223,4,122,85,81,22,158,7,19,90,147,207,252,179,185,192,206,50,78,38,28,245,231,142, +79,183,44,48,233,231,172,246,103,131,214,59,161,143,252,142,56,227,156,123,114,1,57,0,188,23,80,63,242,221,200,250,89,158,71,214,223,57,233,212,156,113,140,224,128,241,253,162,48,60,231,63,85,179,227, +255,0,32,3,250,31,240,205,16,216,16,7,218,44,176,79,67,13,217,3,216,31,180,55,161,244,29,58,241,151,136,172,0,255,0,143,171,81,158,128,69,112,57,29,7,207,51,103,60,250,250,231,140,208,5,237,183,199,150, +144,109,207,25,16,14,15,115,136,121,246,231,215,233,78,17,207,199,204,188,99,4,197,25,7,212,156,70,58,244,233,142,123,10,207,219,167,242,13,204,103,36,242,34,114,15,61,73,32,245,199,169,4,99,174,105,219, +180,241,140,220,68,49,200,204,69,72,198,123,146,1,35,175,7,223,158,180,1,160,82,80,65,102,136,12,115,251,136,91,31,64,200,15,115,146,56,227,156,98,138,160,38,176,31,242,250,170,113,212,40,61,255,0,222, +207,99,156,31,108,28,224,148,1,235,12,32,206,69,250,227,36,144,77,179,12,231,190,34,108,30,185,228,15,199,21,11,45,187,100,125,185,114,51,198,216,184,45,206,126,88,128,28,30,57,28,103,57,206,107,72,50, +16,115,0,57,29,86,123,197,233,207,25,183,218,115,244,235,211,185,16,177,69,251,176,99,31,222,158,225,187,159,91,124,244,245,238,120,160,12,183,134,62,159,110,61,51,204,81,63,25,29,138,1,219,7,144,7,39, +158,148,193,110,167,254,95,92,140,140,129,10,0,127,5,218,121,239,143,169,226,181,126,67,144,96,80,120,199,239,231,201,245,227,236,199,240,253,61,41,166,53,126,138,163,233,44,216,255,0,210,110,63,82,15, +177,160,12,239,178,71,156,181,201,228,103,238,76,62,159,118,96,1,245,249,112,121,235,78,22,168,78,126,217,131,142,152,151,3,175,172,140,122,129,247,134,79,115,233,124,218,112,72,61,176,7,153,112,190,184, +1,150,211,25,207,64,121,197,49,109,9,229,87,156,245,18,203,142,255,0,223,177,62,189,115,219,185,160,10,94,71,205,149,188,98,78,56,220,248,233,217,115,156,253,56,57,207,61,156,96,155,181,211,99,182,76, +216,247,60,2,59,114,121,192,199,227,162,44,137,251,199,158,167,13,41,39,56,227,141,63,24,29,59,243,211,182,17,236,3,103,231,112,61,149,198,59,14,186,120,30,185,250,30,61,0,51,252,171,147,200,156,156,113, +130,210,144,122,0,61,207,61,135,94,112,105,86,43,193,255,0,45,20,243,208,25,65,35,158,14,84,224,245,239,211,167,165,90,58,104,255,0,158,211,103,4,225,86,63,228,214,35,24,193,237,215,143,106,136,216,133, +56,19,94,103,156,225,99,0,99,251,184,179,61,243,193,25,231,233,64,12,16,222,55,76,183,183,206,70,59,113,176,128,123,243,248,118,20,241,109,112,120,116,37,187,146,204,185,231,167,17,12,126,29,115,215,154, +140,90,176,192,50,93,183,29,138,2,122,224,224,105,217,254,126,185,239,74,109,88,231,23,23,235,198,112,8,62,152,224,105,126,185,29,15,166,57,34,128,39,242,174,49,143,40,99,158,12,178,145,212,112,49,24, +7,212,245,252,122,210,121,115,41,199,146,0,228,140,59,30,72,247,129,185,250,131,192,168,5,186,0,1,146,241,179,215,33,78,72,29,179,165,3,234,58,129,244,20,8,35,3,135,185,3,177,104,213,185,57,207,63,96, +231,167,160,199,25,160,9,140,119,57,249,109,217,186,128,1,124,96,31,246,109,125,7,57,28,114,42,51,29,201,63,241,234,66,145,147,149,155,32,127,192,96,199,60,99,145,201,237,75,228,38,63,215,221,40,207,63, +232,145,127,38,177,25,60,112,71,177,250,52,198,132,130,47,110,248,198,118,193,110,15,25,236,108,215,245,250,243,64,14,219,56,60,194,221,241,205,194,158,56,227,16,160,29,14,70,127,76,210,152,230,35,38, +9,1,255,0,126,228,143,94,234,221,71,64,49,212,116,230,154,177,174,121,191,187,83,211,6,11,79,80,59,91,3,238,48,113,248,115,82,20,64,51,253,165,116,51,223,201,182,29,0,207,2,212,142,228,122,117,197,0,40, +141,136,230,59,140,246,1,230,0,30,153,228,12,103,190,72,199,115,64,128,131,210,96,71,127,54,83,140,119,33,79,108,147,156,123,100,102,128,171,255,0,65,73,113,211,152,173,251,156,100,159,179,145,199,225, +252,242,161,20,245,213,102,246,197,188,29,189,196,35,35,240,207,168,160,5,242,159,248,90,96,70,73,201,185,126,253,48,95,25,246,252,7,76,83,124,153,15,45,36,189,121,6,9,200,199,175,223,231,0,231,175,36, +123,10,177,229,160,28,106,242,158,57,30,84,64,128,113,199,8,64,36,122,240,61,142,41,2,14,10,234,211,140,140,28,8,7,28,231,248,1,231,62,159,149,0,52,64,196,227,123,15,92,219,74,115,142,185,249,206,127, +17,206,56,207,119,249,14,185,204,152,244,34,213,201,57,207,247,165,36,243,129,211,173,40,142,50,6,117,123,130,51,253,232,212,142,112,126,229,187,115,233,201,224,103,142,129,68,16,144,49,170,221,103,131, +131,112,65,252,150,211,35,235,147,158,189,113,128,1,97,4,130,110,31,7,143,248,246,96,59,116,204,227,60,12,30,6,122,114,51,78,54,241,244,50,177,201,255,0,159,68,63,250,21,201,228,250,227,56,61,40,22,177, +147,147,170,78,71,4,230,89,201,244,237,8,29,243,156,116,226,157,246,40,136,32,106,147,142,255,0,241,241,114,152,206,51,247,96,60,99,219,219,181,0,47,147,23,32,72,73,231,35,236,145,15,207,12,222,249,252, +58,246,13,172,100,112,236,7,253,122,41,207,62,162,64,113,223,3,29,251,154,111,216,6,78,53,57,251,96,253,178,235,241,235,0,63,145,252,133,59,251,56,0,55,106,50,145,255,0,95,215,99,158,220,132,28,114,125, +61,104,2,85,179,224,224,231,0,127,203,148,141,146,122,231,107,62,59,31,94,188,83,190,199,30,50,113,219,173,155,33,253,114,48,0,3,29,120,231,3,171,23,78,94,191,111,7,156,101,181,43,165,60,251,8,216,99, +252,59,246,67,166,33,57,251,114,28,118,254,209,188,57,234,51,205,185,246,61,113,199,57,160,9,227,180,65,146,2,30,196,108,41,215,146,64,40,121,0,158,131,24,201,199,172,130,36,206,2,146,64,207,202,195,0, +119,231,201,207,183,112,1,224,129,214,184,210,211,24,91,136,136,56,193,251,101,225,207,175,75,112,14,58,245,39,129,234,48,225,165,1,157,178,91,144,127,233,234,236,245,3,146,10,142,189,178,58,126,52,1, +47,148,56,6,25,136,199,105,78,14,126,150,236,122,125,6,122,123,184,91,198,184,62,76,205,219,253,121,3,215,0,155,66,65,193,62,189,62,245,87,58,83,146,62,104,125,62,89,101,60,113,140,6,28,126,189,122,83, +215,73,3,146,99,237,206,230,207,126,164,171,117,255,0,60,244,0,159,100,64,96,70,192,12,15,154,120,243,193,199,120,1,237,238,7,210,156,68,67,57,80,8,207,5,161,56,25,193,35,253,23,144,115,208,145,211,0, +83,70,154,23,25,16,158,71,102,111,175,38,17,158,221,189,240,121,169,86,197,23,172,80,18,113,255,0,44,85,129,231,156,16,128,143,200,100,244,28,80,3,21,99,39,129,30,58,127,173,183,94,125,212,91,147,159, +168,56,231,161,205,76,161,23,128,234,131,3,133,107,102,233,216,102,212,245,231,184,31,76,211,197,162,113,182,222,212,146,57,63,103,207,78,15,252,176,63,250,17,252,122,212,159,98,97,140,219,218,12,142, +171,101,184,130,120,199,48,129,211,211,143,81,222,128,26,28,140,98,224,140,250,53,184,198,121,192,255,0,68,35,234,125,106,101,108,1,186,105,73,63,197,136,48,72,232,79,250,41,245,232,6,7,7,34,162,22,82, +228,226,214,34,7,65,246,53,30,253,215,35,158,78,57,247,231,151,139,89,151,57,181,139,29,191,209,79,82,63,188,78,6,59,240,121,199,175,32,19,41,220,71,239,165,199,29,22,14,185,236,126,203,249,240,127,30, +149,56,10,113,155,153,84,130,57,104,226,35,61,79,34,220,119,245,29,78,122,112,43,45,180,229,115,246,88,179,158,158,81,32,254,34,54,35,190,122,122,1,129,78,242,103,29,108,97,32,14,143,28,248,29,56,249, +45,199,62,164,147,143,122,0,185,187,104,202,220,146,48,62,244,22,236,51,255,0,126,193,198,125,176,121,29,184,118,230,60,139,136,113,141,220,218,71,159,205,109,206,79,0,146,15,225,205,83,88,110,20,113, +99,110,57,199,9,117,207,83,215,236,199,63,137,57,167,20,186,228,157,62,14,61,34,186,60,99,143,249,96,15,233,146,126,180,1,113,124,226,114,36,183,36,103,159,178,131,223,61,62,205,140,254,25,199,60,154, +156,249,202,185,51,195,208,156,45,137,200,224,30,159,103,252,243,207,92,112,114,50,241,49,36,127,101,160,247,16,223,117,199,98,98,24,61,241,199,66,71,0,83,26,222,224,145,255,0,18,204,147,219,202,187,198, +51,207,240,12,115,250,113,198,65,160,13,64,204,73,6,88,185,28,230,204,47,78,227,247,67,28,14,223,83,205,4,19,201,104,200,207,104,14,49,237,149,227,129,254,0,226,179,22,222,96,64,254,202,110,135,254,88, +92,17,199,60,150,79,229,239,233,82,172,14,51,157,45,65,244,48,92,54,73,35,159,245,125,58,99,35,167,24,197,0,94,193,28,6,132,103,63,242,236,196,251,114,25,122,123,241,207,210,145,149,142,126,104,51,235, +246,86,192,56,235,254,183,167,28,245,61,48,106,183,150,216,63,232,17,224,99,35,236,183,59,120,201,0,6,136,142,58,96,119,206,121,205,56,124,170,55,88,40,237,197,148,188,245,56,255,0,80,9,239,131,208,17, +159,67,64,18,108,148,116,54,223,67,108,249,199,60,243,113,237,142,113,156,254,74,191,104,7,143,179,254,22,172,123,142,184,187,29,123,156,16,7,94,153,168,252,184,219,147,101,32,35,210,203,161,237,203,66, +1,231,156,117,246,228,101,205,10,175,2,214,96,113,156,27,56,212,30,185,255,0,150,125,114,58,224,17,211,38,128,37,219,113,157,193,17,186,253,219,121,84,231,183,63,108,62,135,24,252,57,197,60,37,202,243, +229,204,15,180,87,24,233,234,110,200,31,136,235,232,77,83,49,1,147,246,103,7,176,242,96,80,62,185,132,241,223,166,13,52,36,135,56,141,151,185,59,97,200,24,235,197,171,99,211,240,25,226,128,46,254,248, +18,54,220,49,207,28,78,51,233,145,246,190,7,126,64,199,62,217,145,77,232,3,17,204,50,58,159,180,247,239,242,221,113,145,142,157,61,185,170,4,202,135,32,73,211,186,194,56,245,230,195,174,64,24,200,252, +248,33,150,78,56,152,14,156,121,88,227,220,89,140,159,166,1,199,106,0,186,77,224,228,172,160,245,4,253,171,32,250,228,207,239,254,62,148,6,186,254,35,39,29,193,185,57,233,235,59,15,78,49,199,28,213,19, +43,156,31,244,142,188,0,168,115,216,96,181,168,3,219,158,223,147,73,114,79,203,114,192,117,202,218,129,140,114,57,181,63,152,193,239,245,0,188,90,101,206,230,97,143,246,101,63,166,238,58,142,159,168,166, +153,153,126,244,238,62,137,47,56,231,251,224,250,103,0,115,142,216,170,108,142,65,219,246,128,71,175,144,125,114,62,91,117,199,94,122,113,211,190,97,11,32,39,30,113,57,200,201,94,8,200,200,42,136,49,223, +25,235,239,64,26,95,105,7,131,114,64,200,224,199,54,7,108,145,184,240,70,63,195,56,195,124,229,31,242,244,135,215,34,94,164,250,30,192,99,56,199,110,188,86,119,250,70,65,2,70,57,239,129,193,61,0,3,156, +116,62,191,92,18,163,207,39,148,155,174,112,25,192,237,156,124,164,17,192,28,14,253,57,160,13,1,52,68,252,215,118,234,8,232,198,101,244,234,85,255,0,51,192,247,166,180,176,114,171,119,100,195,254,186, +220,14,127,239,238,123,140,244,254,85,79,100,189,94,57,240,71,77,142,73,228,119,101,29,136,61,50,56,35,181,38,194,72,2,41,70,123,152,156,228,227,184,83,237,219,219,145,210,128,38,50,69,222,230,192,114, +15,18,202,73,233,206,11,48,60,122,123,130,122,97,190,117,183,0,220,90,103,208,49,35,25,231,39,205,92,254,4,251,118,203,68,40,126,250,55,209,173,102,60,243,158,177,177,252,142,7,227,72,96,140,28,170,28, +12,231,22,109,143,251,232,195,159,167,39,183,30,160,15,19,218,128,127,125,106,24,119,29,14,113,211,18,231,250,142,188,227,1,12,208,243,182,104,115,219,1,137,198,61,167,207,229,140,14,226,155,177,65,199, +150,223,133,180,152,250,124,176,237,199,249,52,132,96,103,202,148,142,159,241,238,221,57,254,244,96,227,175,61,187,224,80,4,101,212,158,25,9,36,245,51,227,7,211,18,62,125,63,19,207,106,76,41,61,34,39, +145,147,231,228,12,251,231,0,227,160,61,113,83,237,132,128,60,153,120,235,251,136,178,78,71,118,136,147,219,156,147,214,147,17,1,254,166,81,244,133,9,252,66,195,143,81,198,127,90,0,174,200,73,24,142,35, +199,4,73,114,7,7,145,128,0,199,62,153,235,207,74,141,163,36,143,221,68,113,144,0,121,142,126,128,198,72,30,231,60,14,157,42,238,97,4,126,230,114,127,235,222,217,191,71,141,88,116,63,128,52,164,194,78, +124,155,190,64,7,22,214,139,234,113,157,163,29,65,247,35,28,28,2,1,158,33,147,25,17,40,198,7,203,17,112,7,115,131,110,73,244,244,239,144,65,167,162,56,251,195,158,188,89,130,15,57,199,22,192,241,128,15, +67,239,86,201,81,200,142,243,111,167,149,110,64,246,255,0,87,140,103,145,200,3,166,71,57,11,174,63,212,222,227,158,0,183,95,76,112,54,144,15,124,103,243,38,128,43,109,221,193,69,57,4,2,109,138,143,204, +192,71,231,156,114,57,205,68,96,200,35,11,144,87,111,238,8,30,224,145,105,129,211,220,14,155,185,171,155,155,156,193,126,127,224,80,47,78,153,253,231,227,140,145,200,245,20,240,19,28,193,126,185,25,225, +199,191,92,79,193,29,49,156,115,156,227,138,0,162,32,3,27,132,67,158,232,185,246,24,54,185,193,199,118,61,115,82,44,42,188,171,192,189,56,242,162,203,100,243,141,208,0,120,60,142,255,0,141,92,10,128,228, +65,168,158,157,100,114,58,127,177,43,1,158,58,100,247,227,57,15,249,6,15,217,111,207,176,146,231,159,193,24,31,175,211,218,128,41,24,164,57,80,224,227,156,164,86,205,239,158,97,56,199,183,94,64,230,155, +229,77,255,0,61,8,25,61,109,173,137,247,60,68,61,125,120,201,246,173,3,44,99,5,161,191,29,70,9,188,110,252,99,44,115,215,235,211,61,41,124,200,64,226,59,176,59,145,246,159,99,206,1,39,61,121,24,29,136, +226,128,41,162,72,51,155,151,24,236,45,173,200,227,32,143,187,142,152,244,231,7,156,242,224,183,3,159,182,55,126,144,219,167,67,147,216,231,220,227,249,19,86,75,197,140,236,185,198,127,231,165,226,145, +143,97,9,63,81,147,249,103,0,120,88,128,208,220,176,30,179,93,99,3,142,173,22,7,39,184,231,168,61,232,2,176,251,78,62,91,185,57,235,242,197,223,174,112,158,167,176,199,39,158,148,224,47,216,141,151,151, +25,201,193,6,46,78,15,251,167,25,238,50,79,177,230,173,1,110,7,54,247,56,246,187,156,231,159,120,0,3,160,199,113,145,211,138,144,53,184,4,11,89,249,206,115,117,56,25,61,242,182,185,56,3,185,60,145,64, +21,64,213,192,192,190,185,207,56,24,200,25,235,252,67,39,243,231,6,148,13,101,176,5,245,198,238,248,139,119,78,185,195,231,235,216,99,142,188,217,50,70,49,139,105,71,31,243,249,32,206,51,199,207,102,48, +58,99,158,167,63,87,171,240,115,11,142,192,139,225,207,110,166,211,177,247,39,29,250,224,2,182,205,105,121,123,235,156,103,161,136,140,31,196,30,122,113,140,231,7,61,48,224,117,129,214,242,99,234,89,27, +167,127,186,163,25,245,57,234,71,189,88,193,251,202,38,3,57,35,237,235,223,235,110,59,99,158,131,168,3,160,76,22,227,201,149,135,80,126,223,31,211,181,176,255,0,36,246,57,160,8,183,234,216,45,246,198, +231,39,133,185,231,169,231,3,3,29,58,254,103,52,227,54,170,20,110,187,114,127,237,228,227,140,242,54,30,191,239,117,29,133,78,21,201,193,181,185,219,193,249,117,56,249,57,57,7,16,0,59,119,250,140,114, +87,108,106,121,177,186,57,201,25,212,83,7,183,77,171,248,224,227,62,253,0,32,19,106,68,101,167,148,244,228,11,204,119,199,27,8,247,233,142,57,38,141,215,167,239,77,48,231,28,69,114,114,115,211,238,12, +112,59,142,189,189,109,170,169,3,253,6,83,207,59,175,208,113,142,216,112,58,254,31,92,138,118,27,181,137,198,120,63,109,207,29,185,55,107,199,92,96,1,199,176,192,5,48,47,14,49,44,221,241,155,123,134,250, +227,247,109,146,63,17,216,210,226,237,120,50,201,215,156,90,204,9,57,235,147,109,156,99,156,17,234,120,230,174,249,114,17,255,0,30,39,7,254,159,151,232,58,222,12,253,113,140,231,212,211,150,49,208,216, +185,219,223,251,66,16,48,61,197,239,3,28,30,57,227,25,205,0,83,13,117,143,245,211,144,0,227,203,148,96,246,231,236,192,128,59,99,183,94,130,156,26,108,156,60,184,60,100,121,171,159,115,152,135,184,228, +85,134,84,193,205,147,145,232,47,115,193,234,56,186,57,244,227,245,230,147,108,120,231,78,98,15,253,62,129,219,60,169,184,57,247,24,207,94,59,0,8,10,205,212,200,253,191,138,225,79,190,78,206,61,57,198, +123,1,217,202,38,95,249,107,38,59,102,121,7,167,247,148,19,219,61,42,80,176,30,70,152,87,183,55,131,142,122,113,49,28,227,174,48,121,167,108,128,140,27,34,15,61,111,151,175,166,76,167,29,178,8,199,184, +224,208,4,95,189,227,50,201,215,28,92,62,6,14,57,224,117,63,237,17,237,212,132,101,156,156,139,169,87,160,230,239,167,4,131,134,126,15,215,62,131,28,212,203,26,110,194,89,14,152,0,106,17,103,190,15,36, +243,232,79,168,30,180,242,135,156,219,109,57,193,255,0,76,143,29,51,217,72,252,185,250,228,80,4,107,29,200,7,253,42,94,112,6,111,148,3,239,213,177,130,65,245,30,253,195,13,223,95,180,74,123,15,248,153, +129,250,168,95,81,143,188,51,208,247,167,109,65,213,31,3,39,139,232,70,63,242,89,143,167,35,156,12,19,138,82,208,12,101,38,193,244,187,76,3,234,72,179,31,203,146,123,154,0,143,202,184,94,25,167,108,250, +106,163,240,224,145,249,119,244,192,34,159,229,200,121,50,72,64,207,252,196,151,131,220,112,231,146,58,123,243,146,71,13,50,194,49,132,155,129,206,110,226,39,191,93,214,160,17,249,19,143,92,81,231,195, +145,152,164,32,14,171,115,108,113,223,156,91,46,125,142,79,208,118,0,120,73,134,115,36,248,237,139,245,108,231,191,229,142,152,247,207,64,245,89,143,83,118,71,81,182,238,28,99,220,144,56,227,29,127,173, +68,110,33,227,17,206,14,59,220,91,54,79,29,132,64,245,207,166,15,24,110,112,134,232,47,57,149,64,244,150,220,14,253,115,26,140,30,131,3,129,232,69,0,88,34,108,224,189,224,60,241,230,66,220,243,213,148, +130,123,103,243,4,210,121,19,184,206,110,113,198,50,109,143,212,157,231,35,174,0,39,183,94,184,174,47,0,225,90,66,6,49,137,237,115,211,144,62,92,140,99,24,206,125,169,223,110,126,6,233,129,206,73,243, +109,207,92,227,238,186,244,199,32,12,30,56,56,224,2,113,111,115,215,50,113,199,49,217,227,168,32,19,180,147,199,60,14,185,24,239,70,203,133,57,37,193,232,7,217,161,99,200,228,100,69,143,215,28,28,251, +212,55,135,36,153,92,119,39,205,183,92,114,122,238,147,142,158,195,167,21,34,221,134,201,50,55,78,166,91,98,58,122,253,161,73,60,123,159,67,214,128,45,230,96,6,100,117,198,73,34,218,48,1,231,63,194,56, +7,60,227,242,167,171,142,67,94,108,57,7,139,120,191,95,220,19,212,115,131,245,200,198,40,249,177,177,201,145,78,122,150,150,12,114,123,109,190,7,191,167,31,149,27,185,202,188,71,156,243,52,64,143,82,10, +223,228,227,60,131,159,169,20,1,117,194,158,127,180,27,142,128,91,70,59,240,50,98,28,228,231,169,192,205,68,86,34,121,212,2,243,198,98,136,28,130,122,230,50,7,94,156,119,234,58,87,103,98,70,36,65,238, +46,148,126,36,125,176,142,79,160,231,61,241,77,207,39,50,67,145,201,221,118,132,156,250,145,113,156,3,255,0,214,61,48,1,97,188,162,62,109,65,88,117,24,85,30,216,38,48,115,245,32,231,177,198,42,50,144, +28,226,253,115,220,41,152,14,160,242,4,24,32,251,143,78,5,66,101,64,49,230,71,207,247,110,226,3,241,253,233,192,192,193,39,241,230,151,114,224,15,58,29,189,126,107,152,155,191,29,27,60,250,113,219,147, +197,0,72,99,132,103,254,38,4,103,140,3,47,35,143,238,219,103,29,250,156,247,245,44,16,192,220,155,226,121,228,9,46,151,159,64,86,220,156,156,245,199,124,103,165,39,149,11,114,211,218,142,78,1,152,19,239, +146,11,117,237,223,3,175,74,67,4,29,124,251,35,142,153,144,176,252,145,115,219,215,159,196,80,0,45,173,151,63,233,115,100,119,23,183,49,128,72,235,131,10,158,152,56,250,119,32,84,77,109,110,15,203,123, +47,108,147,168,79,129,156,156,99,106,243,248,30,61,58,151,27,120,78,118,203,106,222,132,25,143,110,56,32,113,158,159,203,21,17,182,35,238,121,77,159,68,13,207,76,130,67,30,7,183,165,0,39,146,131,238,94, +77,211,7,26,133,192,3,147,142,17,227,227,211,140,140,158,157,153,246,117,7,38,226,82,73,207,26,141,210,231,233,251,252,253,122,245,60,227,21,33,183,148,241,211,211,247,74,167,144,58,15,43,161,63,128,30, +184,20,195,103,49,60,51,128,71,123,98,195,159,82,32,199,166,121,239,193,20,0,166,32,57,243,230,97,129,193,212,239,73,207,124,31,56,115,219,190,50,112,121,38,163,48,166,65,105,38,60,100,255,0,196,194,228, +117,198,79,207,59,12,115,216,100,246,237,71,216,238,58,2,73,235,145,98,199,158,196,176,65,211,63,221,30,189,249,103,216,238,240,64,27,185,206,126,192,231,62,220,0,220,122,177,231,174,40,1,193,16,125,217, +46,27,29,133,243,144,121,244,105,192,56,199,82,61,1,244,164,40,189,74,92,183,57,56,190,32,103,232,37,29,125,185,244,239,72,214,119,88,3,98,147,216,46,156,227,29,123,228,17,211,243,247,168,154,222,248, +12,42,73,198,63,229,198,65,129,235,203,140,227,62,248,193,3,208,128,60,180,99,248,46,177,144,50,111,219,7,240,243,251,113,199,76,142,65,25,52,214,158,51,199,149,112,123,243,121,187,63,92,202,71,228,127, +14,106,187,38,164,15,250,139,150,30,169,167,191,29,122,126,240,113,215,156,113,211,216,70,87,81,193,62,69,224,4,117,54,197,79,111,225,243,127,192,254,116,1,56,48,231,254,61,167,35,39,4,221,190,48,7,161, +148,31,95,92,227,211,171,8,180,99,205,155,177,245,105,25,201,7,60,140,203,183,29,56,32,1,158,58,224,213,105,53,5,36,21,184,35,190,232,164,0,123,13,165,137,227,220,228,246,60,10,129,229,189,201,39,113, +235,247,226,159,249,9,51,249,143,168,24,20,1,105,163,182,201,43,167,49,237,146,209,242,59,100,25,59,122,140,145,245,34,160,101,140,241,253,156,56,199,222,16,17,142,164,124,210,103,35,56,246,253,106,6, +184,186,24,204,113,130,0,36,52,51,0,114,78,56,46,7,110,7,35,245,168,13,221,206,72,242,226,36,116,196,82,40,4,12,31,152,200,51,219,146,59,159,122,0,182,241,19,144,44,35,29,248,242,84,254,59,101,4,250,245, +227,156,241,138,172,109,101,57,34,198,60,100,224,179,170,231,168,232,179,231,175,114,65,224,28,226,170,60,243,183,88,130,144,64,200,73,15,225,196,185,239,233,233,80,179,207,201,194,1,236,143,219,61,132, +131,3,29,120,61,7,90,0,180,96,101,57,107,59,101,201,199,250,224,120,207,92,53,207,190,121,30,134,163,54,172,224,255,0,162,192,7,60,44,169,143,205,174,9,29,241,201,250,158,181,73,222,76,144,118,3,140,224, +194,252,30,196,124,231,35,212,1,249,213,118,119,35,151,135,35,177,138,76,119,244,56,39,158,58,247,206,49,64,23,94,205,129,31,232,208,131,219,116,144,158,7,111,154,224,115,201,239,156,117,206,106,187,218, +202,15,22,214,216,57,25,47,110,73,198,79,63,233,31,78,122,118,25,61,106,180,146,156,19,45,168,29,64,48,187,103,24,231,147,212,244,228,17,138,132,200,253,154,209,142,49,197,167,111,169,193,201,200,239, +238,50,104,2,71,181,148,19,139,91,101,61,50,166,16,79,60,241,246,129,220,30,127,152,192,168,140,114,131,205,172,57,3,131,251,178,113,207,164,253,113,145,199,53,17,158,64,78,76,28,103,238,219,40,57,30, +156,159,254,183,24,239,80,153,55,19,153,81,72,193,57,135,24,7,156,12,74,7,111,78,156,99,3,128,9,94,41,24,18,108,160,113,156,243,201,3,158,159,189,35,146,79,160,200,205,66,209,70,120,109,49,27,142,48,136, +125,114,48,93,136,30,220,100,100,116,164,18,39,57,152,19,232,0,29,125,252,211,238,64,192,247,61,169,141,50,114,68,174,72,7,179,31,195,27,136,247,30,153,233,142,160,11,229,91,12,147,166,192,158,159,187, +82,125,199,29,71,174,120,233,206,105,130,56,72,200,179,181,66,64,235,26,142,248,228,228,159,78,48,49,222,160,107,129,212,203,62,65,60,40,32,118,192,57,99,131,199,101,252,128,53,1,157,121,24,145,192,4, +97,164,147,235,156,99,232,70,120,244,219,216,2,121,33,139,156,217,217,96,3,214,54,231,183,59,15,0,244,232,63,2,14,107,180,118,228,255,0,199,149,136,61,134,201,137,39,185,245,61,123,126,125,170,35,62,15, +250,150,117,207,81,32,207,175,117,236,56,199,231,222,152,110,35,4,110,134,85,224,113,188,131,159,248,10,1,239,156,115,232,40,2,99,20,35,11,246,59,37,35,140,108,185,32,30,70,79,203,143,76,245,56,57,24, +226,155,229,198,8,2,222,204,30,225,82,225,112,7,76,113,140,28,28,96,122,250,113,92,220,197,147,148,184,29,185,184,145,65,61,190,236,99,190,56,207,110,157,105,162,107,114,115,135,252,111,46,61,56,231,202, +61,121,199,61,255,0,48,9,218,40,243,254,162,207,56,206,119,77,206,58,140,20,193,35,191,81,143,210,35,12,71,150,138,215,161,201,6,64,126,167,230,7,24,250,251,241,80,60,214,234,113,229,169,239,243,93,202, +196,30,48,114,240,251,115,235,159,202,3,60,68,147,229,32,56,227,253,41,177,237,200,131,57,227,176,233,215,173,0,90,107,120,242,72,134,216,243,199,252,124,19,237,247,101,83,252,249,233,218,152,83,140,11, +120,56,207,221,91,214,199,226,210,158,189,250,243,197,81,55,81,14,162,5,245,45,116,249,227,169,255,0,143,124,127,42,97,185,183,32,157,208,49,227,254,95,14,6,122,228,181,190,71,65,156,19,220,231,2,128, +47,21,76,16,108,227,39,169,30,85,231,83,219,191,3,158,252,250,241,80,249,113,30,150,80,156,14,158,77,200,57,231,211,130,58,117,63,129,237,88,92,197,145,251,200,49,140,156,92,171,159,76,124,208,12,246, +235,200,39,56,201,52,245,184,70,56,19,40,36,113,137,148,128,122,15,187,23,28,241,142,112,120,236,104,2,66,0,60,89,5,219,142,150,215,109,158,248,24,247,238,58,126,84,155,187,53,161,244,56,180,189,231,182, +14,93,125,184,233,249,83,12,128,115,246,200,129,61,158,117,7,220,0,209,142,156,113,130,127,149,69,231,184,56,251,93,177,233,144,215,49,14,71,29,151,160,233,193,233,233,64,19,180,137,211,236,110,123,144, +182,247,160,145,156,116,18,28,241,232,49,158,157,6,27,231,34,231,22,19,117,228,125,147,81,56,231,57,249,100,11,255,0,234,200,30,181,158,226,110,72,189,180,81,198,127,125,3,99,233,251,188,247,3,7,158,255, +0,86,139,153,183,124,186,133,175,29,48,32,201,3,167,204,23,143,67,238,78,61,8,4,230,112,14,127,179,231,35,140,147,101,127,206,15,187,146,125,112,123,14,6,120,43,246,188,240,52,230,0,1,203,89,94,0,127, +28,22,30,228,140,251,96,83,77,205,215,253,4,96,199,112,124,160,49,212,228,227,31,161,233,192,230,163,18,204,122,106,22,253,78,0,251,62,79,83,250,250,241,211,56,52,1,41,184,56,57,177,28,250,219,221,1,143, +115,176,17,144,71,111,94,79,74,67,114,237,129,246,28,147,232,183,10,56,246,101,29,122,242,72,35,223,154,105,107,133,201,254,208,183,231,147,185,109,251,113,140,231,142,51,238,58,243,156,133,251,69,207, +125,78,28,118,192,135,7,62,152,219,248,96,253,40,1,62,211,39,31,232,12,48,7,67,42,247,63,135,97,199,182,120,192,163,237,44,195,38,212,130,48,121,119,206,1,244,227,143,83,201,253,105,166,226,97,141,218, +156,124,99,161,79,231,184,99,167,108,116,61,70,42,35,119,38,72,26,162,19,129,156,96,243,219,36,22,228,251,116,199,189,0,79,230,191,79,179,21,235,247,101,61,61,58,12,244,207,231,215,21,30,93,143,54,210, +15,125,242,227,161,231,42,164,30,157,207,233,197,53,103,102,28,234,113,130,7,35,4,129,233,213,80,131,142,164,119,237,128,5,6,92,28,255,0,104,6,29,126,86,101,227,29,177,40,234,15,25,207,126,249,160,0,135, +227,109,185,192,29,60,211,156,113,215,41,143,231,211,158,212,187,31,39,54,140,1,192,207,218,54,231,176,225,97,37,177,207,39,142,184,166,249,208,147,150,186,98,59,98,232,12,255,0,228,67,143,126,152,227, +61,120,137,166,181,206,90,234,64,49,255,0,63,131,143,204,156,245,237,211,158,15,4,128,77,228,183,95,46,117,7,140,11,178,167,158,203,254,142,79,29,6,113,223,208,26,97,138,76,124,162,241,179,142,183,96, +0,120,24,63,232,160,254,88,207,234,99,51,90,156,129,168,74,0,199,31,104,126,63,76,244,238,58,126,149,11,92,217,103,107,93,202,195,24,36,221,12,115,232,8,36,231,184,33,70,15,78,132,128,76,97,156,156,21, +186,207,253,125,33,0,15,127,41,123,245,39,166,121,246,71,73,83,171,94,1,158,191,104,82,114,9,227,33,6,0,200,233,215,214,160,223,167,28,98,118,39,24,249,167,39,159,193,113,236,114,58,231,142,1,165,206, +156,113,153,138,145,143,249,110,66,242,122,242,160,158,58,227,177,205,0,75,153,0,192,150,244,113,131,155,140,126,155,48,57,62,164,117,237,156,40,119,255,0,158,247,131,142,113,119,17,35,167,102,32,14,58, +230,160,11,166,231,6,120,152,114,50,92,19,223,60,237,35,183,3,60,227,20,236,233,163,129,32,192,232,160,140,123,243,206,63,1,192,245,198,40,2,93,238,50,68,247,103,7,189,229,184,57,60,242,10,145,140,147, +252,88,60,142,188,81,80,19,166,19,203,145,156,244,5,198,120,7,24,136,246,238,79,80,61,193,40,3,222,28,67,234,224,245,27,103,80,15,24,7,11,26,99,156,231,215,166,123,212,97,160,201,203,74,61,54,220,198, +120,28,103,230,39,29,127,81,205,93,251,41,233,230,91,143,124,228,122,231,151,220,115,208,112,58,254,81,253,144,240,68,246,156,123,242,6,125,156,1,244,39,24,62,244,1,91,48,228,2,247,31,240,27,152,65,25, +231,161,4,142,113,211,176,60,115,77,38,219,146,90,243,131,140,9,237,241,159,67,132,28,224,227,142,72,252,9,181,246,66,65,221,53,159,61,129,64,79,126,173,41,198,59,231,39,189,39,217,56,225,237,136,233, +195,197,232,58,231,140,140,247,224,250,208,5,34,150,236,1,2,240,244,255,0,150,150,204,15,183,221,82,191,92,115,192,207,106,141,161,140,30,22,239,56,233,139,115,238,123,143,78,70,123,125,13,105,27,102, +232,94,220,224,100,29,214,216,201,237,215,143,124,14,58,250,229,159,100,207,36,219,103,35,25,54,231,140,250,5,35,211,36,99,219,167,32,25,155,63,184,102,31,239,67,106,125,142,73,147,32,159,124,115,158, +253,28,35,115,198,249,113,232,33,179,35,233,205,199,35,57,199,160,199,227,112,218,1,247,141,153,236,126,85,99,143,112,16,123,241,219,25,35,213,143,104,173,218,209,177,233,26,112,120,35,145,25,231,215, +28,246,246,160,10,165,8,200,5,200,29,115,21,152,3,175,95,244,162,123,116,0,245,193,192,165,17,72,120,87,198,122,3,13,160,244,61,238,64,227,156,253,50,1,169,141,179,140,4,138,211,211,59,73,56,250,4,253, +50,79,79,64,41,166,41,120,200,129,79,251,42,228,254,4,174,61,57,3,168,232,59,128,52,195,39,251,57,207,4,195,98,79,175,81,57,61,135,67,215,158,212,211,29,199,64,33,39,175,252,122,90,183,94,14,113,118,190, +128,131,140,30,120,197,72,98,112,57,32,96,117,199,0,250,252,200,48,58,122,142,217,205,51,105,0,229,151,57,224,109,32,127,227,163,158,49,237,223,165,0,52,45,224,36,4,183,227,7,45,105,108,51,249,94,1,232, +57,7,174,70,121,204,138,111,7,39,236,163,156,255,0,199,173,176,25,227,156,253,180,183,110,224,253,57,161,137,31,199,23,221,255,0,158,147,140,227,144,78,0,28,241,220,251,228,211,60,193,198,102,133,113, +158,68,151,0,247,200,226,67,235,232,121,29,58,228,2,194,188,202,114,198,212,159,107,123,110,58,231,4,222,28,227,60,242,49,215,147,210,67,44,184,25,242,57,236,33,181,7,62,231,206,108,247,239,129,199,190, +40,249,140,8,43,115,18,158,188,79,54,63,13,204,63,153,60,159,74,127,159,46,121,185,66,71,253,61,16,57,199,253,52,250,244,233,237,154,0,180,103,149,112,3,91,158,120,6,27,79,115,212,205,215,252,70,113,158, +30,183,147,130,2,181,168,7,159,185,167,183,57,228,227,205,200,239,198,51,236,106,178,220,202,49,254,146,6,51,210,234,92,99,140,2,23,104,61,113,235,207,57,192,53,47,218,92,253,235,175,110,110,164,39,183, +115,130,15,97,235,239,154,0,178,46,231,32,157,214,231,142,63,209,236,70,79,124,129,55,28,122,15,126,244,27,185,255,0,231,173,178,241,255,0,62,246,192,241,142,56,126,71,108,14,189,176,69,86,243,211,24, +55,1,143,124,222,21,0,14,15,12,196,227,233,156,117,244,163,205,83,210,107,124,113,193,212,25,79,126,14,20,253,121,28,240,115,214,128,44,253,178,66,127,214,219,100,0,120,142,17,158,195,140,115,159,76,146, +57,60,230,156,110,220,255,0,203,104,7,166,60,129,245,24,100,39,32,231,140,116,245,3,53,88,54,254,60,216,73,61,255,0,180,219,31,66,26,34,15,126,227,245,169,182,244,249,224,39,254,191,213,207,78,70,74,32, +7,39,56,201,232,120,160,7,125,166,92,100,207,7,96,51,228,129,143,111,221,145,147,237,143,196,81,246,153,207,221,154,223,158,78,124,158,135,191,48,19,235,211,7,241,166,226,60,100,155,115,235,139,213,207, +92,246,142,65,158,185,252,77,40,142,223,36,129,110,65,232,13,217,57,234,120,30,90,242,121,232,15,30,249,20,0,158,125,207,67,61,177,201,227,15,108,159,250,21,160,63,128,35,174,1,166,180,147,187,5,15,14, +114,121,91,139,33,219,57,255,0,143,126,189,122,244,233,193,205,79,229,218,147,145,21,184,35,29,46,177,248,144,99,108,158,51,144,57,244,25,228,242,173,206,54,164,3,147,247,174,71,228,115,18,116,233,147, +145,239,158,128,16,19,63,66,241,241,158,60,203,118,231,36,231,229,131,7,140,243,207,248,2,41,143,63,186,192,35,254,90,218,131,140,228,240,214,248,24,61,243,236,61,165,41,10,158,86,19,207,33,110,160,4, +122,31,153,9,0,253,9,206,57,3,32,184,121,3,28,70,163,57,226,226,212,145,233,255,0,46,196,158,221,243,252,168,1,139,4,199,130,209,129,130,115,246,155,37,61,122,96,196,1,237,158,253,58,129,154,120,182,126, +238,128,30,164,92,217,115,235,214,63,174,122,227,176,197,78,30,0,51,230,113,128,112,178,219,55,167,111,179,14,56,60,99,175,28,243,151,137,97,198,126,102,193,236,109,1,237,208,253,159,241,254,164,244,0, +131,236,195,169,151,61,51,254,149,102,121,238,127,213,131,207,78,252,114,15,122,119,217,226,29,101,60,28,140,92,88,49,207,209,192,255,0,30,131,29,106,67,52,67,254,122,116,236,246,124,119,255,0,159,124, +246,252,232,243,80,141,193,231,231,253,187,63,80,113,255,0,30,195,235,215,212,231,158,64,21,97,139,254,123,74,57,207,250,221,56,28,117,206,54,254,61,71,245,169,132,80,17,204,178,147,216,249,246,4,31,94, +221,115,244,28,118,233,81,111,32,147,186,224,228,30,76,214,35,215,251,208,244,235,211,140,96,114,49,134,22,232,73,152,109,231,31,105,176,30,253,60,140,245,57,192,247,226,128,47,36,48,175,89,72,3,57,221, +37,177,31,92,40,35,255,0,175,233,82,20,182,4,98,97,145,234,240,142,157,49,136,207,63,253,99,158,152,162,179,122,52,132,130,58,220,217,30,163,24,201,61,207,64,23,183,210,165,76,54,70,215,25,236,110,44, +143,227,193,95,110,160,147,238,120,160,11,69,224,65,147,32,60,17,133,158,19,187,254,249,139,60,250,116,206,112,15,118,25,147,179,33,29,112,39,92,231,140,117,183,32,144,6,7,81,201,227,142,16,41,56,228, +241,233,113,107,142,61,66,176,206,122,246,207,78,153,52,223,36,147,194,150,207,59,188,200,143,24,199,5,101,28,116,236,70,58,28,80,1,246,132,255,0,107,62,190,106,113,233,144,108,178,61,191,44,12,114,225, +113,232,195,158,121,184,141,79,92,255,0,207,152,61,178,125,14,104,48,202,71,8,71,24,207,154,7,113,217,110,121,239,140,116,234,125,221,228,57,0,22,92,116,57,105,143,78,231,19,159,108,242,122,123,96,0,63, +207,118,3,11,25,29,71,250,72,39,219,59,109,201,199,76,224,115,207,92,19,74,205,49,228,194,135,62,183,18,176,56,235,192,182,92,99,131,215,212,246,230,49,109,180,240,201,201,229,149,165,25,199,108,44,167, +233,237,233,233,58,219,72,57,89,85,112,58,25,103,234,59,224,56,231,168,239,207,126,40,2,34,38,28,173,188,89,4,117,184,152,31,126,176,100,14,70,48,127,157,40,51,28,102,218,48,70,56,243,229,98,56,193,224, +91,176,232,120,231,143,113,86,214,25,191,231,184,247,62,117,201,227,176,27,102,25,201,61,112,61,59,230,165,251,51,156,19,56,232,113,153,110,178,6,121,233,184,254,190,184,200,160,10,67,207,237,110,156, +255,0,211,118,235,211,128,45,251,99,233,193,226,164,218,236,114,96,232,127,231,164,135,29,58,109,132,99,212,113,211,147,237,99,201,11,199,158,170,15,253,52,189,60,241,220,66,220,113,159,203,32,12,229, +190,94,63,229,176,61,176,175,124,70,113,199,6,33,143,110,58,30,15,114,0,4,10,6,228,227,208,59,28,1,238,99,30,188,129,215,235,147,83,47,151,143,151,159,193,155,7,169,4,133,192,244,224,0,122,140,142,106, +1,27,103,62,100,152,237,251,219,145,159,251,234,32,61,49,206,9,237,158,68,200,164,145,243,74,71,25,197,196,156,243,239,27,19,239,244,201,197,0,57,88,103,6,34,125,62,86,60,243,158,2,30,222,153,254,180, +121,235,199,200,170,7,96,135,39,234,77,171,31,175,35,181,76,34,12,113,153,65,239,254,145,158,188,224,131,26,227,182,121,247,250,74,177,51,28,42,200,61,115,114,0,231,215,228,35,28,142,191,202,128,43,253, +166,63,239,5,224,28,97,84,12,250,159,179,99,60,119,62,180,45,218,14,60,195,219,7,112,63,150,34,83,252,248,227,25,34,173,152,164,81,147,30,225,156,243,112,188,15,193,23,28,142,164,3,142,15,173,33,10,58, +196,153,255,0,175,147,248,242,7,190,127,19,216,80,4,34,236,140,17,33,61,241,242,253,121,204,124,115,215,183,92,210,155,146,252,229,71,177,17,243,212,231,2,60,3,207,183,7,169,226,164,5,1,200,142,44,158, +126,91,128,15,166,122,145,199,229,249,10,153,118,96,19,176,100,143,249,121,128,19,158,163,37,193,252,199,211,56,197,0,83,243,36,207,203,36,96,246,194,196,115,206,122,149,3,234,112,15,127,66,23,204,185, +36,124,209,227,190,18,219,39,212,244,36,28,224,228,30,7,183,2,239,151,25,57,218,20,14,120,186,182,97,219,184,144,116,32,131,156,145,220,113,202,132,133,70,124,200,198,120,230,226,18,126,163,19,231,30, +188,115,237,214,128,41,249,151,32,17,193,7,248,182,219,140,30,59,146,56,250,16,56,244,52,171,44,224,125,245,232,127,231,220,224,243,233,40,28,30,195,242,205,90,38,17,192,146,18,48,78,90,72,248,56,60,241, +51,116,192,199,63,135,172,102,88,84,252,179,219,228,1,156,96,224,224,28,3,191,215,131,146,62,128,142,0,32,38,103,255,0,150,146,103,208,121,56,207,24,24,19,142,61,50,0,227,175,122,65,29,195,28,146,73,29, +152,91,143,192,255,0,165,12,254,126,226,159,246,168,198,0,186,133,122,28,3,17,207,212,51,231,167,227,198,59,156,39,219,160,239,122,128,244,3,203,132,227,144,58,25,6,125,57,231,56,250,208,3,132,119,11, +252,33,136,198,56,183,206,113,147,255,0,47,76,72,63,143,244,160,249,248,63,187,201,231,143,46,28,140,116,224,76,126,153,224,244,199,29,88,215,64,143,146,244,103,251,223,103,180,60,242,7,25,114,126,189, +61,58,211,12,237,142,111,80,231,131,254,141,109,245,32,226,49,211,30,160,14,249,235,64,18,19,42,243,229,156,250,5,3,35,161,193,19,147,199,78,157,70,49,200,163,205,147,144,97,102,32,3,203,56,56,25,207, +38,78,252,118,61,126,181,81,165,114,14,219,197,3,251,194,8,65,250,116,3,245,253,72,168,76,151,0,146,53,30,61,60,136,72,207,95,66,14,48,15,99,207,79,64,13,31,180,55,79,178,28,247,253,252,163,208,115,135, +30,135,208,103,160,28,211,76,211,156,149,128,142,157,39,144,156,143,82,119,118,207,67,158,113,84,60,201,142,51,120,27,60,100,90,219,118,227,254,121,31,115,156,246,239,221,8,153,186,220,174,222,114,198, +218,212,228,253,60,142,7,190,65,36,253,69,0,94,47,114,195,254,61,217,185,239,44,135,7,158,132,128,7,108,247,237,239,81,145,114,78,126,204,192,251,150,56,30,217,252,62,191,134,77,66,135,143,244,149,239, +201,180,181,246,227,253,81,245,207,231,64,133,15,252,188,35,103,143,248,242,177,36,254,34,223,56,29,198,115,154,0,178,4,192,227,236,164,158,115,150,151,24,61,240,161,129,235,220,31,169,166,159,48,156, +125,151,233,204,128,129,199,253,59,231,174,122,156,99,142,59,64,97,140,28,25,34,56,32,127,199,173,160,25,255,0,107,54,196,228,31,97,147,235,145,77,43,2,142,102,139,190,236,219,192,190,231,238,216,244, +35,175,56,192,227,56,205,0,74,208,72,78,69,184,193,192,198,247,4,126,118,248,199,108,227,243,165,242,37,29,33,80,79,92,200,196,243,211,147,110,73,28,127,179,208,246,25,168,140,182,120,33,165,139,142,121, +137,72,39,25,255,0,159,34,123,119,28,112,123,211,24,216,156,22,123,124,30,230,0,78,126,162,196,103,175,78,128,231,185,160,11,62,75,140,31,38,60,242,73,36,99,28,140,243,30,114,57,233,250,244,12,104,1,198, +244,183,233,201,218,24,227,161,200,42,122,246,56,57,35,183,25,172,23,78,206,9,181,227,191,217,137,24,227,254,157,70,120,192,224,14,122,113,72,6,150,15,222,181,7,166,124,137,63,50,22,215,36,12,112,57,62, +221,40,2,118,182,143,60,164,44,61,0,64,14,127,224,11,210,153,246,88,72,201,130,219,140,115,228,198,253,114,1,201,67,199,95,76,254,57,17,17,165,54,65,185,182,92,118,251,60,160,158,156,12,91,244,224,99, +142,222,244,162,61,63,35,23,118,192,127,180,179,41,206,120,7,253,28,241,200,232,123,158,132,16,0,38,22,208,103,136,108,242,79,39,201,64,122,14,184,140,158,51,207,57,199,166,42,65,4,67,63,232,246,64,30, +191,184,136,231,56,224,157,152,247,199,182,56,60,213,102,91,46,71,218,160,110,152,195,92,245,25,224,5,183,200,250,227,185,25,0,243,22,108,15,89,227,255,0,201,210,15,212,121,35,39,240,30,189,104,2,231, +145,30,72,242,109,51,216,253,153,15,126,219,10,156,99,176,61,253,51,131,203,128,31,154,43,94,249,197,161,28,241,140,126,244,1,142,125,122,15,198,136,22,35,165,194,228,241,133,23,131,233,141,219,114,6, +7,4,142,194,143,38,201,249,23,0,99,39,149,148,19,234,1,103,235,215,212,245,244,197,0,93,41,7,104,237,215,254,221,15,97,235,231,143,108,227,31,174,105,12,48,100,101,34,247,197,180,156,158,184,192,185,4, +117,233,158,6,73,237,85,86,43,101,198,46,164,207,0,109,145,199,30,156,73,140,118,193,57,0,14,212,252,192,160,143,181,55,182,103,113,249,252,205,233,253,58,208,4,222,76,57,255,0,86,8,61,197,164,167,39, +185,230,228,247,236,57,61,189,229,16,195,145,251,160,121,231,125,141,193,232,64,56,197,200,235,219,182,58,112,50,106,171,192,65,255,0,73,102,3,174,39,147,111,126,219,129,250,251,244,165,243,33,24,197, +198,126,183,18,168,3,232,37,235,206,71,25,231,156,10,0,208,6,217,48,26,48,125,214,206,236,3,211,32,109,184,56,63,94,69,63,204,183,31,118,39,0,224,97,109,174,216,254,183,68,14,61,113,223,240,206,23,49, +224,15,56,15,92,75,51,30,6,58,239,239,235,144,78,51,214,164,91,132,99,254,177,184,224,16,210,144,123,243,153,135,7,25,57,7,167,76,1,64,23,252,216,148,127,171,144,15,65,111,56,245,255,0,166,228,30,252, +114,105,124,248,207,68,147,63,245,198,127,94,191,235,8,252,7,233,84,252,212,234,38,97,129,253,233,78,59,228,254,245,185,207,25,227,219,175,15,15,144,54,206,56,238,197,198,15,253,246,125,187,122,123,80, +5,141,251,185,11,33,61,191,113,35,96,30,195,39,39,63,137,39,0,158,212,236,176,234,31,211,230,180,126,61,185,70,56,247,28,84,2,71,94,4,200,71,66,192,57,250,117,235,233,239,239,79,89,184,255,0,92,128,241, +146,109,164,98,71,224,156,117,239,206,113,207,92,128,75,158,112,22,76,255,0,215,166,61,129,249,161,7,182,121,36,116,4,243,144,245,102,28,109,97,156,243,246,53,39,166,58,253,159,57,227,235,248,84,98,92, +168,31,107,143,160,224,89,202,79,254,139,32,18,123,30,253,50,72,169,4,202,78,13,200,32,112,79,216,223,31,250,0,207,226,48,126,153,160,7,124,237,218,94,71,81,109,201,193,60,224,160,235,140,99,3,129,211, +165,41,138,70,192,86,185,4,119,16,17,142,132,14,16,0,121,245,250,144,56,160,78,135,131,114,216,201,31,241,233,34,241,235,196,100,99,24,235,131,208,14,152,169,209,144,128,68,236,84,28,18,109,165,28,113, +200,59,0,61,251,114,125,5,0,68,33,157,112,166,107,144,59,101,63,194,50,1,193,235,216,245,230,158,34,108,115,52,231,177,2,57,91,4,140,31,187,24,25,207,242,232,51,146,242,241,119,184,33,135,66,45,95,212, +224,228,198,73,227,175,81,219,36,115,77,19,198,189,110,213,125,140,46,163,56,199,252,240,227,183,126,72,201,20,0,171,110,121,249,238,70,61,96,152,126,132,175,225,145,223,182,105,226,56,151,171,207,147, +234,147,3,145,193,57,14,57,201,62,184,28,117,60,52,205,25,206,111,23,147,158,4,139,158,217,10,45,253,49,249,142,221,19,205,182,36,6,184,66,49,207,18,231,36,114,120,183,233,158,222,159,133,0,63,247,65, +128,6,115,140,28,129,54,65,237,159,156,16,63,17,211,56,230,156,38,136,103,230,159,7,212,220,30,254,130,114,70,58,128,71,96,13,70,102,180,81,129,117,25,207,80,36,185,65,244,199,217,207,177,231,142,189, +243,73,230,217,227,45,44,71,235,60,153,30,249,251,63,24,233,200,232,56,61,232,2,192,185,183,57,204,147,14,127,191,120,184,227,159,185,43,49,250,113,144,120,35,129,75,246,168,6,54,180,131,25,231,206,212, +65,32,231,25,195,28,117,231,220,224,158,245,87,125,155,14,36,183,35,211,207,147,215,161,197,182,122,227,165,27,172,136,233,108,74,242,127,126,78,113,236,214,234,61,185,24,199,94,180,1,49,189,135,142,84, +255,0,192,245,3,142,221,216,254,61,72,199,106,107,94,219,158,137,19,156,17,247,111,179,140,231,25,224,99,4,240,51,212,250,156,192,101,180,57,59,160,80,51,200,150,33,142,123,110,128,128,51,232,59,158,64, +168,195,91,49,255,0,89,15,167,252,124,68,58,1,201,219,108,48,79,229,207,189,0,76,215,112,228,129,2,31,114,183,161,189,198,74,159,110,253,168,23,113,114,60,164,7,182,26,236,145,159,85,48,156,143,174,50, +58,15,72,194,219,182,6,232,143,95,249,111,25,31,159,150,61,185,36,224,246,199,21,33,130,32,65,196,93,0,199,157,1,244,193,3,203,92,14,121,231,161,206,70,40,1,141,121,26,12,170,227,61,8,51,2,15,29,8,183, +193,239,158,59,224,244,229,203,122,204,120,200,237,146,247,29,63,11,81,206,15,36,19,236,41,86,4,207,240,12,246,73,45,79,61,71,93,167,30,167,35,28,142,42,69,182,220,120,228,118,43,53,145,227,158,205,42, +156,12,247,233,233,232,0,211,114,228,228,201,145,208,145,246,146,63,54,182,250,118,57,199,64,120,0,152,31,249,104,184,25,195,121,114,18,51,236,214,216,39,174,9,227,175,169,169,197,155,1,192,148,142,48, +4,150,99,240,24,144,142,125,64,198,105,194,198,227,130,145,221,224,158,162,107,62,185,255,0,174,138,58,99,29,63,42,0,166,210,198,70,4,128,16,114,118,199,10,147,245,38,12,245,61,14,9,199,61,49,64,33,185, +50,177,30,138,45,215,161,235,254,163,211,57,231,182,79,74,186,108,110,152,129,139,211,236,101,181,198,59,242,46,115,208,140,112,61,72,244,112,211,175,143,32,221,128,59,180,240,245,237,140,79,128,122,247, +207,225,138,0,167,132,201,204,140,56,199,205,44,35,175,83,128,171,215,166,70,122,140,210,8,161,60,139,133,29,191,227,225,65,25,199,92,178,243,158,252,123,115,87,134,157,120,71,204,110,115,207,73,226,206, +59,231,116,224,114,120,56,244,201,226,154,108,46,70,65,12,127,222,150,38,61,7,164,153,232,127,78,9,61,64,41,24,160,201,31,105,133,143,188,234,49,211,57,30,114,16,71,111,231,215,15,16,91,55,6,123,113,207, +95,182,128,84,3,200,192,156,140,115,208,245,61,27,184,179,246,41,243,202,19,237,186,48,15,174,7,152,49,219,156,122,118,163,236,114,99,33,29,122,116,154,48,7,215,231,61,189,9,239,205,0,64,214,150,156,159, +54,3,255,0,111,136,121,227,39,45,58,227,63,143,231,80,155,91,101,39,230,183,39,174,126,219,6,72,206,8,35,206,57,32,156,227,56,28,131,232,45,155,41,8,63,43,143,251,108,132,119,31,194,164,131,248,246,60, +244,166,11,73,1,35,5,143,3,153,148,227,211,239,17,232,120,60,99,168,232,104,2,169,183,131,4,151,139,142,255,0,110,132,14,185,237,55,61,64,227,147,238,13,70,99,143,144,26,50,61,181,4,29,253,166,108,158, +123,99,31,141,93,107,89,71,36,109,231,130,103,182,108,30,112,0,102,35,28,127,46,163,138,97,130,110,191,187,227,28,155,139,95,254,54,228,251,240,15,92,17,64,21,64,183,3,230,81,206,49,183,80,32,125,14,28, +245,56,232,127,60,10,136,180,67,128,9,56,227,253,56,183,32,142,62,105,56,60,117,201,231,25,28,102,174,24,228,95,189,229,158,73,63,191,183,24,39,175,205,228,144,113,238,15,7,214,162,59,151,7,98,103,140, +226,120,50,120,249,120,49,12,116,235,156,158,196,80,5,83,46,220,225,28,117,231,237,135,142,123,254,247,159,195,219,182,41,159,104,39,238,163,123,145,124,221,125,72,19,99,39,241,57,61,122,98,118,50,56, +198,9,25,231,100,241,131,140,250,136,199,63,200,131,233,80,178,200,189,86,98,63,235,237,73,207,61,176,188,245,61,190,180,0,158,123,244,30,111,28,159,244,166,126,190,184,152,103,241,198,112,49,142,42,6, +153,250,98,64,61,12,173,201,235,193,51,31,83,147,248,12,118,113,243,121,194,220,96,17,145,246,149,61,135,92,54,113,211,191,31,141,70,76,227,157,147,15,251,123,198,73,25,201,62,96,199,64,15,29,115,211, +173,0,33,149,200,10,22,64,78,6,68,204,196,117,228,254,252,28,251,130,123,15,106,102,231,231,253,107,28,241,153,216,31,195,253,32,30,189,6,115,220,115,154,113,146,113,192,142,102,0,114,124,240,56,193,207, +241,49,200,200,61,58,241,80,249,178,2,78,201,71,28,31,53,143,184,251,141,156,231,219,35,218,128,36,196,199,254,88,177,237,204,248,36,242,1,39,237,36,156,142,135,118,79,39,174,8,105,89,212,101,96,112,121, +255,0,150,204,123,115,255,0,47,67,235,237,215,57,197,66,103,207,105,65,199,83,37,217,57,245,56,148,116,207,56,224,241,207,164,15,43,140,133,50,250,140,205,116,188,2,113,201,184,39,158,156,224,113,222, +128,39,103,152,12,16,235,201,29,79,32,131,158,126,216,8,200,3,147,211,223,24,49,23,147,163,51,142,248,18,162,144,51,208,150,184,57,4,122,243,207,83,210,171,153,229,25,59,228,30,128,92,92,49,224,140,156, +121,195,60,99,158,1,252,41,166,119,0,124,196,227,159,153,238,127,44,153,113,248,125,121,192,160,9,9,124,228,121,199,158,162,91,118,30,188,230,110,131,220,96,14,8,232,68,15,36,163,56,91,142,224,18,240, +243,143,66,36,35,24,35,166,113,233,72,110,165,7,134,143,29,56,51,30,185,234,76,220,122,140,142,61,51,154,129,238,38,108,228,166,59,96,76,220,142,167,151,63,152,32,116,245,160,0,201,56,232,146,17,201,193, +146,33,199,35,159,152,150,244,199,175,210,162,107,139,142,203,47,124,128,195,25,60,28,20,228,129,142,248,245,35,129,150,73,59,129,200,67,244,134,66,120,227,143,152,159,174,113,219,214,170,201,112,199, +130,131,25,255,0,158,50,175,175,25,220,61,187,28,242,15,25,160,9,158,233,192,32,219,74,221,178,88,30,61,122,117,30,231,158,213,77,239,115,130,97,156,116,207,49,131,207,185,101,111,78,227,158,58,98,161, +105,73,251,160,12,122,197,56,233,234,124,220,115,200,229,114,115,199,35,154,142,210,28,252,160,243,201,88,100,62,185,224,147,159,161,61,65,24,227,128,11,45,120,153,193,73,71,60,7,120,71,39,60,115,55,61, +73,193,245,21,31,218,20,253,196,144,243,193,223,111,180,147,244,184,24,199,126,59,145,158,42,147,76,224,224,40,233,212,219,131,235,198,9,83,199,30,167,3,140,84,45,33,96,50,6,79,0,125,147,183,168,193,57, +30,188,117,57,60,80,5,246,159,140,24,229,57,200,225,208,140,156,246,19,169,99,245,227,158,181,9,124,130,89,92,99,158,235,142,56,201,23,93,49,207,211,233,89,204,75,228,99,61,121,75,100,60,113,234,7,32, +112,7,36,1,215,189,66,200,57,5,238,83,32,96,121,8,58,247,224,228,250,115,198,51,210,128,52,26,80,79,241,117,35,230,156,169,56,244,38,232,99,220,96,142,164,15,72,154,80,6,2,18,125,174,142,58,122,155,156, +144,58,14,69,103,121,104,51,153,166,235,252,81,34,243,245,36,117,3,175,227,207,20,52,72,113,251,246,28,144,114,34,83,215,182,88,228,247,207,61,113,156,80,5,166,149,27,230,101,115,142,72,251,81,235,236, +13,234,247,3,0,250,12,117,230,35,44,71,180,171,131,159,248,250,141,122,243,222,252,156,117,237,158,63,56,60,136,123,222,200,50,59,181,183,255,0,23,159,110,114,122,243,158,65,228,66,223,243,16,228,14,51, +228,3,158,115,130,114,9,199,78,156,242,112,122,128,74,198,54,249,129,144,147,215,55,131,63,78,47,36,29,56,227,62,128,142,149,11,162,100,229,143,174,60,242,78,122,240,21,219,175,83,234,121,60,129,77,48, +90,30,127,180,88,28,114,3,192,58,112,115,140,12,118,246,199,24,235,77,251,53,153,63,242,17,36,140,113,231,70,185,227,190,222,50,115,199,7,39,174,40,1,143,26,117,7,119,179,75,41,231,128,63,133,135,61,6, +123,231,219,16,152,144,228,133,64,71,39,153,200,198,15,31,44,99,62,190,158,158,242,155,123,48,113,246,169,8,201,255,0,151,128,122,158,196,129,140,245,29,121,224,99,53,3,219,217,28,145,117,40,62,166,225, +84,14,189,15,152,155,71,61,243,252,232,1,173,25,92,157,177,100,116,7,237,0,14,167,128,34,96,7,182,122,83,8,200,203,36,36,156,140,136,174,95,175,124,139,126,195,142,70,120,60,156,211,13,189,160,207,250, +74,145,211,6,248,243,244,219,49,231,219,190,105,141,5,145,254,56,155,35,189,241,36,126,11,40,39,241,31,134,104,1,228,176,236,131,146,51,246,105,193,199,28,100,219,231,183,78,49,215,176,20,195,51,14,20, +103,220,91,207,212,123,136,1,237,215,223,214,161,54,214,64,145,230,68,6,122,27,169,51,140,115,255,0,45,73,28,240,48,51,159,213,134,222,215,28,60,56,254,35,246,217,241,143,76,7,57,60,117,236,40,2,86,158, +114,79,202,185,235,131,29,200,250,228,125,148,240,48,114,7,60,103,166,106,54,154,233,72,249,147,140,127,203,59,145,142,63,235,135,25,233,200,246,199,3,16,180,80,169,206,32,99,144,63,227,238,225,143,183, +44,122,125,57,35,182,9,196,111,228,130,62,72,15,210,105,152,228,113,201,82,71,76,31,127,82,51,64,19,155,169,193,31,42,100,244,192,186,81,198,121,57,143,110,127,145,35,25,28,8,141,229,208,251,184,97,156, +112,210,142,61,137,81,180,16,125,57,244,197,86,116,135,28,71,1,32,127,12,179,231,183,95,155,143,92,96,31,165,64,35,140,242,86,220,117,234,247,57,199,28,231,113,235,199,175,52,1,109,175,174,123,40,39,190, +233,36,3,240,200,35,39,31,137,235,147,81,181,229,193,0,236,7,191,250,245,36,251,0,98,244,245,61,179,142,181,6,16,127,4,7,168,226,107,144,127,60,17,140,125,120,198,122,156,63,116,124,102,24,248,28,15,54, +236,242,61,254,204,71,76,113,147,238,120,160,6,61,245,208,57,8,227,215,18,71,237,234,54,244,3,245,21,17,212,110,184,4,75,211,179,91,182,7,224,65,207,60,246,7,210,164,44,185,207,217,215,142,152,154,85, +56,227,185,180,61,185,235,198,120,35,138,105,153,71,203,228,116,231,31,107,124,147,233,159,177,113,142,153,255,0,245,80,5,115,123,112,196,252,178,125,27,202,235,245,221,200,224,16,57,31,129,197,39,218, +101,39,44,25,125,137,128,131,158,51,141,195,160,232,72,250,227,20,230,153,78,118,219,150,235,214,242,64,49,199,111,177,112,59,117,239,211,160,168,140,190,150,133,114,56,198,160,235,146,120,56,6,200,19, +233,199,255,0,168,1,126,211,38,120,86,110,14,2,164,24,29,57,251,204,122,125,56,166,155,139,146,70,209,32,24,198,12,86,223,252,88,201,254,124,103,221,9,114,112,182,108,114,56,39,81,148,142,123,99,236,92, +242,7,167,245,164,217,47,241,90,71,156,224,103,80,151,167,191,250,38,64,252,191,30,40,2,111,62,232,12,145,47,212,69,8,237,219,231,31,134,51,245,206,64,4,247,39,31,189,184,4,117,2,36,24,4,142,121,118,30, +184,39,142,185,199,67,24,86,193,255,0,66,76,140,17,183,80,144,31,214,207,56,245,231,142,184,235,150,178,51,30,109,35,246,255,0,78,152,144,59,228,249,11,199,176,254,188,0,79,230,92,100,19,45,234,142,112, +126,207,11,55,32,100,99,120,224,251,100,96,26,144,77,51,30,39,212,9,228,0,109,173,199,112,115,134,147,39,24,234,61,71,106,160,209,99,145,107,18,250,226,245,193,235,219,116,121,56,60,30,7,230,50,99,11, +32,255,0,150,17,3,156,100,221,72,73,193,31,119,17,142,253,185,247,4,116,0,216,223,112,113,182,123,240,120,224,193,16,200,238,48,172,195,223,167,57,247,52,111,184,231,253,38,244,3,219,100,71,57,60,140, +5,231,185,233,250,115,89,5,110,27,33,34,132,228,116,243,38,235,219,170,2,125,206,123,251,226,154,177,223,117,88,173,212,115,200,243,216,140,1,198,50,51,253,125,77,0,109,49,148,224,125,175,80,39,174,4, +49,19,143,94,163,191,4,96,126,98,144,25,199,91,205,68,118,0,196,157,127,8,219,24,227,7,208,214,80,107,208,57,54,249,193,24,217,47,29,78,120,147,118,6,115,215,131,237,71,159,118,58,201,2,243,217,102,200, +244,56,50,12,115,216,99,167,113,64,26,219,164,61,111,47,155,254,0,122,241,255,0,76,58,245,235,234,59,12,81,89,34,230,236,15,245,144,231,174,20,202,126,188,23,3,243,207,215,165,20,1,245,119,218,101,198, +87,200,198,79,86,145,201,236,120,23,64,224,127,187,219,35,140,213,118,186,159,39,229,131,239,99,238,205,219,158,64,156,159,169,206,13,48,194,135,35,118,211,156,157,226,223,29,121,255,0,150,11,143,83,130, +56,24,247,168,76,42,57,89,80,28,103,1,33,227,191,247,48,50,61,15,110,115,206,0,37,105,229,97,130,150,199,253,225,115,159,80,63,215,156,126,56,168,26,103,61,98,180,92,122,44,231,167,82,115,40,36,251,12, +14,153,166,145,183,254,90,198,125,136,139,61,65,62,222,185,56,30,249,205,11,50,174,114,217,193,206,86,72,7,191,25,233,239,159,202,128,15,48,30,162,1,206,78,33,185,29,8,199,91,145,140,100,103,129,156,231, +7,187,124,216,251,173,191,94,134,25,191,50,69,217,39,4,143,78,123,14,5,56,221,227,149,146,65,219,229,154,48,123,30,187,186,147,223,142,115,212,10,103,219,137,235,45,199,213,174,33,231,167,171,174,51,142, +223,160,160,0,201,14,55,31,178,228,2,62,236,224,241,212,227,237,67,158,223,129,207,36,84,5,227,206,67,91,0,78,64,242,164,96,56,236,76,204,125,123,247,224,85,159,237,2,48,3,206,120,61,46,45,207,184,255, +0,150,199,249,241,252,144,234,44,57,87,184,232,120,55,54,228,96,231,166,102,235,233,243,28,30,73,4,154,0,160,237,17,234,209,251,109,137,193,32,227,166,103,92,224,115,130,122,118,226,161,34,22,25,243,0, +207,7,17,0,79,97,247,174,142,57,233,197,106,13,74,108,100,9,241,140,115,115,102,61,63,189,57,94,157,207,127,90,83,125,112,195,63,190,193,228,41,189,176,32,126,31,106,83,206,50,58,115,64,24,194,8,73,63, +191,32,128,49,196,89,236,115,131,117,159,94,57,237,248,141,108,8,24,159,158,121,17,219,191,64,79,63,190,60,12,247,35,235,218,181,254,223,62,126,236,216,200,207,250,85,143,62,252,78,113,212,231,25,244, +232,49,79,91,198,110,26,43,134,35,0,109,187,181,29,51,211,239,103,240,198,15,96,113,128,12,95,37,215,4,94,48,227,156,219,66,71,208,109,152,245,192,24,25,231,191,160,18,126,171,116,78,0,25,242,237,211, +56,60,240,84,145,146,7,57,207,173,110,137,153,129,38,59,175,169,154,38,62,156,20,139,39,159,83,236,79,52,209,185,137,59,39,24,35,4,148,56,29,179,251,130,73,245,57,0,31,92,3,64,24,227,237,99,0,76,231,31, +194,12,67,62,217,9,235,232,122,241,131,192,167,102,244,30,30,92,246,27,163,35,7,177,194,100,117,224,125,9,173,177,11,55,62,83,176,245,8,51,211,215,203,80,104,251,35,30,12,50,145,145,212,168,7,140,224, +126,232,19,252,129,227,183,0,25,43,37,218,253,233,95,158,128,156,17,211,161,85,76,143,192,245,252,166,89,27,63,52,146,147,235,184,159,195,239,174,120,227,146,126,157,142,136,179,78,51,110,114,123,29,128, +117,247,64,126,163,175,174,71,1,223,100,64,56,182,152,28,116,2,38,246,233,177,73,207,7,32,241,193,29,48,64,41,44,189,9,146,115,244,235,215,7,168,32,116,199,211,167,188,171,117,16,35,13,54,71,64,24,2,57, +250,117,199,78,160,231,240,171,95,103,0,2,96,186,4,1,214,6,96,48,122,101,73,200,238,48,49,211,140,241,75,229,147,194,193,118,222,223,102,185,25,24,29,48,128,99,62,128,231,242,200,4,31,109,136,99,115,221, +12,112,64,126,189,63,217,206,58,245,231,223,185,95,183,69,140,7,187,199,125,179,1,250,30,57,60,119,192,207,165,72,97,152,12,139,107,133,193,227,54,247,39,7,28,96,96,123,246,0,156,210,5,155,7,116,23,76, +122,28,91,76,49,248,231,233,145,253,40,1,162,246,223,4,179,223,12,241,196,200,79,62,193,119,28,158,228,250,83,126,215,102,217,196,183,227,25,57,4,19,206,121,44,28,30,71,211,57,24,21,32,251,78,56,182,186, +108,114,51,109,54,120,62,160,46,51,159,94,128,243,82,44,151,105,129,246,107,149,236,127,115,54,49,142,115,144,64,227,29,137,29,253,192,32,251,93,152,235,113,168,115,254,207,3,254,5,231,128,7,213,79,60, +123,128,93,219,17,133,155,82,108,158,118,148,30,221,12,172,113,158,188,19,86,197,205,200,56,43,48,227,248,160,148,237,206,56,56,137,248,231,156,3,237,233,79,251,69,192,224,121,253,242,4,51,227,176,193, +205,184,231,158,113,199,56,250,128,85,55,16,224,109,109,68,127,188,99,231,168,238,231,249,127,245,207,180,231,163,234,25,206,6,29,112,71,24,63,42,240,125,115,158,71,90,181,231,206,126,247,156,56,60,180, +50,128,112,49,211,236,217,199,31,175,52,198,156,224,100,147,156,228,236,96,0,250,60,31,197,235,198,61,248,200,4,6,119,234,31,80,39,221,148,244,207,80,87,60,119,231,156,116,28,16,191,107,43,193,251,105, +35,147,157,153,39,219,247,100,125,15,166,62,149,48,152,19,247,87,183,95,43,142,157,3,219,48,252,120,60,156,251,72,178,46,112,93,0,57,207,252,120,146,8,233,201,181,235,192,237,244,32,102,128,43,173,231, +60,11,238,51,192,231,156,31,72,73,245,62,132,241,198,0,171,41,116,231,159,42,249,143,96,68,248,244,4,132,141,70,58,103,156,100,142,41,225,98,110,68,202,72,245,91,44,131,248,219,231,140,244,4,98,156,35, +141,191,229,186,19,158,112,186,112,198,78,15,30,74,231,28,231,60,254,56,20,0,162,234,94,134,218,228,140,99,149,148,126,36,236,97,248,231,241,25,225,126,208,88,129,246,41,75,122,242,57,232,121,48,144,51, +223,158,156,244,163,236,240,156,131,114,7,61,211,75,246,245,183,99,158,125,105,78,159,11,114,178,171,118,206,205,48,15,124,145,22,62,184,3,183,4,208,3,132,141,198,108,229,81,236,51,199,39,63,234,151,52, +230,159,7,2,222,78,6,56,96,163,219,25,141,191,159,106,140,105,209,142,142,184,29,182,233,140,125,191,229,158,122,117,192,28,103,223,50,45,132,35,36,180,93,241,148,176,35,175,95,146,21,7,7,212,123,146, +104,1,203,43,19,254,167,28,244,105,128,30,217,204,92,113,156,103,175,92,138,148,56,254,40,97,198,120,253,240,60,126,9,143,124,247,60,96,113,66,88,196,223,198,135,183,9,106,7,126,152,183,97,249,127,46, +150,23,78,66,49,149,43,130,70,69,167,81,147,255,0,62,160,255,0,147,239,128,8,130,135,206,35,136,122,228,131,158,59,228,14,64,235,208,15,76,84,139,110,196,103,203,182,3,208,204,131,29,6,114,196,30,61,0, +238,50,6,70,102,93,58,5,234,16,250,159,221,15,94,155,109,118,246,231,156,241,82,139,27,113,255,0,44,98,63,86,69,227,255,0,0,200,4,103,190,58,115,156,114,1,83,236,161,73,253,213,142,227,207,205,53,174, +123,100,28,228,129,211,223,245,166,155,48,199,38,43,33,158,72,243,173,215,7,62,190,89,95,175,61,240,50,42,255,0,216,237,135,33,98,86,207,39,237,35,28,113,206,219,18,160,255,0,192,143,106,149,109,173,186, +111,140,31,123,182,24,62,196,88,16,51,239,142,62,97,214,128,51,197,134,120,2,197,73,198,63,127,108,217,4,113,201,135,211,24,231,189,63,236,29,6,235,19,207,79,180,67,140,231,191,238,185,207,247,177,252, +185,188,97,181,92,22,149,61,201,189,96,0,250,141,60,147,207,97,207,67,199,57,83,29,145,198,93,48,123,139,183,32,3,215,7,251,59,62,222,244,1,159,253,154,199,63,45,142,59,1,52,44,78,79,25,30,94,127,159, +79,198,164,93,53,113,243,36,29,64,56,104,184,60,118,8,120,247,31,143,57,171,102,27,51,159,222,160,239,197,219,145,146,50,115,155,14,56,207,225,220,244,32,181,182,110,68,233,128,6,63,211,63,151,252,75, +206,127,3,235,192,160,8,62,197,16,24,253,216,199,164,145,14,113,216,237,57,199,56,192,199,235,151,27,88,193,199,202,57,199,252,124,40,39,62,202,8,25,247,0,245,4,113,82,11,59,60,13,215,41,146,9,0,93,147, +220,245,43,166,253,114,63,26,70,181,181,237,124,84,142,152,186,63,215,77,244,245,236,125,104,0,22,208,158,199,156,112,39,102,62,153,27,81,79,25,239,146,15,115,156,148,251,28,35,32,53,194,231,158,37,185, +7,140,147,130,36,31,200,115,234,14,42,31,38,223,63,242,16,148,12,228,1,118,58,15,247,172,15,57,60,28,119,232,91,154,81,2,28,237,190,157,143,109,215,40,127,28,155,37,57,7,156,146,56,56,236,104,2,116,183, +136,17,135,184,232,50,62,209,48,56,28,127,20,224,255,0,76,245,226,165,41,2,245,154,224,30,188,203,48,245,24,255,0,143,128,127,35,245,170,134,219,112,193,185,112,79,4,153,208,159,65,128,108,184,198,125, +113,200,228,28,83,197,162,240,69,217,207,0,124,224,28,244,57,2,219,25,247,198,51,248,208,4,173,228,231,134,156,250,226,226,231,174,15,80,38,108,245,239,208,159,201,133,237,129,228,220,103,29,69,212,192, +159,94,237,199,28,115,219,24,207,20,207,177,48,201,23,82,145,254,206,15,111,81,106,7,184,207,95,212,159,98,155,31,241,247,40,232,48,89,126,189,173,50,58,158,114,126,135,184,4,166,91,82,6,217,167,0,14, +119,93,204,216,239,222,63,148,126,62,181,4,147,69,208,74,112,58,131,52,204,51,233,150,3,129,249,147,214,159,246,59,156,2,103,118,244,59,147,7,29,0,63,101,3,156,16,123,130,122,147,138,111,217,46,78,112, +196,156,240,60,213,7,241,2,223,30,220,143,65,216,208,4,6,104,243,254,189,23,61,154,121,1,224,227,128,78,51,248,14,252,247,166,25,162,199,252,125,162,129,216,92,49,36,156,159,83,215,174,72,35,176,201,235, +96,219,94,3,141,161,155,174,60,200,113,245,255,0,143,126,217,231,158,167,30,180,245,181,188,99,196,80,183,24,193,100,94,70,59,139,71,25,245,233,236,9,52,1,72,92,32,206,47,34,63,41,198,110,192,60,231,214, +54,193,246,36,123,250,212,130,80,192,145,119,16,3,175,250,80,110,167,190,20,113,233,211,145,206,106,232,178,188,25,38,40,1,199,31,49,57,199,109,203,96,64,227,39,32,99,29,128,168,205,181,214,121,130,34, +123,254,245,143,83,199,252,184,175,176,31,150,51,205,0,85,251,66,142,5,220,103,36,116,153,191,19,141,195,211,252,138,12,224,252,223,109,85,7,168,19,19,244,227,122,250,122,12,247,205,90,54,247,92,17,101, +25,32,127,207,121,6,122,96,99,236,132,112,56,201,24,234,48,113,202,11,107,174,246,42,65,61,5,212,160,126,95,99,97,200,231,166,122,26,0,170,46,100,201,217,126,1,231,238,176,60,118,255,0,150,160,145,245, +246,60,154,107,201,112,78,227,126,132,12,245,1,187,231,254,126,23,158,153,62,157,170,241,130,117,193,251,3,158,199,109,196,205,128,79,7,63,96,35,25,62,135,131,147,140,96,188,193,55,95,177,79,145,199,47, +49,227,30,130,196,122,96,19,140,103,57,160,12,159,54,228,144,5,226,253,118,40,24,237,214,118,36,158,59,254,0,231,1,23,15,214,228,18,57,255,0,82,73,237,211,18,14,216,231,35,233,205,104,121,114,244,54,146, +143,98,46,27,233,255,0,46,128,228,245,201,56,31,78,66,121,50,17,204,18,140,143,73,129,36,118,249,109,179,147,199,25,244,160,12,239,46,231,0,125,160,224,245,45,110,14,57,28,115,112,6,14,62,188,241,131, +76,107,123,131,214,224,30,73,207,217,34,36,122,143,245,228,96,99,185,254,181,160,240,72,191,118,25,189,126,95,59,233,222,1,212,28,231,140,250,142,180,211,111,54,63,212,220,158,128,29,147,55,30,185,48, +147,223,176,25,201,224,240,64,6,127,217,36,60,180,200,221,240,108,98,245,227,36,77,207,60,231,57,61,189,3,26,197,220,224,121,88,255,0,175,72,215,60,240,121,148,227,142,189,61,241,138,208,54,178,240,68, +19,171,112,65,242,100,36,127,223,73,207,39,158,6,56,245,166,181,164,185,228,92,39,80,8,128,130,125,122,195,248,126,157,49,64,25,255,0,217,146,117,15,23,7,143,244,120,51,143,76,249,167,158,61,243,248,83, +134,152,196,146,206,167,254,216,193,141,189,73,1,100,231,211,7,211,169,227,22,205,164,163,144,243,142,157,96,63,76,143,221,142,248,244,28,211,62,197,57,228,92,48,237,134,128,167,24,62,217,62,152,227,185, +233,212,2,15,236,232,193,5,140,71,56,227,201,132,122,12,159,222,3,131,145,199,78,122,17,74,116,219,83,128,234,152,250,68,1,252,165,7,211,39,3,175,167,53,99,236,18,231,253,120,7,187,121,77,159,167,86,31, +83,140,140,158,132,209,253,158,253,174,113,238,99,7,175,78,0,24,35,190,71,229,64,21,255,0,178,172,114,48,35,4,30,232,9,192,231,167,154,58,143,166,78,120,228,83,191,179,173,15,79,35,30,241,115,142,217, +196,135,169,235,146,120,245,205,74,52,249,200,35,237,205,140,244,242,91,215,60,97,71,95,115,215,215,186,255,0,103,204,78,13,222,123,115,15,127,124,144,79,63,207,140,226,128,26,52,235,85,24,11,110,71,28, +236,35,61,135,59,179,216,247,227,144,123,210,253,146,217,115,181,109,71,60,28,73,237,145,204,153,7,212,227,158,63,7,27,25,87,165,236,124,118,54,204,6,113,207,76,159,78,252,122,114,105,194,210,64,0,251, +109,182,112,63,229,131,250,12,19,132,221,147,232,122,112,59,138,0,136,69,110,9,203,91,224,122,38,225,208,250,146,125,61,201,197,47,149,108,57,243,45,207,160,251,57,35,242,43,206,122,117,227,57,247,15, +107,73,6,113,125,110,51,131,129,111,47,36,227,214,18,123,114,115,215,35,210,161,54,243,231,31,108,183,3,31,197,107,33,227,175,79,39,25,227,31,94,184,230,128,37,88,237,79,36,64,79,175,146,15,78,70,1,101, +0,245,236,56,233,207,20,239,38,216,143,147,236,195,36,241,228,38,65,200,236,100,60,251,30,216,231,181,85,41,50,245,185,183,108,241,159,177,184,234,49,158,45,178,79,190,71,65,159,82,194,38,206,4,208,99, +156,145,101,38,6,121,200,2,216,103,223,39,169,61,179,64,23,150,56,243,128,214,249,236,124,149,199,224,9,237,235,207,25,233,156,212,234,172,191,199,106,79,111,221,198,8,207,252,12,31,204,142,255,0,134, +72,55,24,32,60,4,103,25,54,178,140,250,112,34,35,60,100,227,183,167,52,185,151,28,253,141,128,193,33,173,165,36,240,6,112,35,201,201,246,224,14,14,73,192,6,208,98,70,89,96,111,194,60,15,94,119,241,219, +2,152,95,4,225,109,241,146,56,11,145,216,242,172,123,123,251,113,88,202,206,78,0,178,95,113,111,56,39,243,139,175,176,7,169,237,82,134,98,112,210,90,97,120,200,182,149,128,246,57,133,71,126,231,158,122, +243,64,26,133,193,32,101,71,60,225,65,28,250,114,114,122,114,63,19,222,158,10,145,141,224,127,219,48,115,130,125,15,161,227,56,247,172,130,171,222,104,14,57,0,91,56,198,115,142,119,169,192,246,0,158,195, +140,212,128,33,0,249,209,177,227,36,194,0,232,15,0,203,145,233,142,71,83,197,0,105,133,92,242,201,131,234,131,32,228,156,142,135,60,127,158,106,81,24,35,43,180,227,3,37,1,36,243,158,196,243,145,192,63, +151,34,179,113,16,193,50,69,208,99,16,47,60,243,255,0,45,184,30,157,51,207,60,154,95,244,98,57,158,52,25,237,31,12,114,57,193,185,10,79,3,175,233,156,80,6,142,194,57,59,49,219,228,115,128,51,254,195,99, +233,159,78,105,192,6,28,125,159,254,5,12,167,25,24,254,234,255,0,245,185,25,239,89,202,182,253,230,140,231,25,99,4,100,118,233,153,155,156,122,147,199,52,132,89,243,254,151,2,246,193,183,143,35,234,3, +19,244,234,71,175,90,0,186,209,246,97,7,124,5,183,149,179,207,24,201,25,198,122,126,39,154,103,217,123,143,33,142,50,119,91,204,113,215,142,17,128,227,167,39,220,142,113,91,253,21,128,219,119,25,29,112, +45,65,39,166,54,230,66,122,244,62,157,185,52,245,142,220,113,246,197,35,159,148,89,68,113,220,255,0,203,92,131,193,28,145,159,203,0,19,249,35,163,36,93,58,249,15,131,158,191,194,15,111,78,79,39,60,211, +150,8,242,112,32,57,235,242,50,16,126,165,125,199,243,29,106,29,150,204,0,55,157,250,253,138,28,142,7,127,180,140,115,142,56,199,115,65,130,22,4,139,191,199,236,246,224,116,198,121,156,250,115,215,167, +225,64,22,124,160,188,3,108,0,231,1,216,127,48,58,142,153,24,28,118,0,211,130,145,129,251,143,78,46,78,125,7,1,200,239,215,56,235,211,182,115,91,66,121,251,105,255,0,192,107,51,193,60,1,251,224,65,253, +123,224,82,11,56,55,2,47,100,199,97,228,90,12,246,28,125,163,166,126,153,231,140,98,128,52,203,74,128,241,16,198,71,250,231,97,211,140,117,28,158,231,159,108,210,9,100,61,89,15,4,1,230,56,31,65,192,199, +97,212,241,215,190,105,173,130,100,31,182,202,65,207,2,43,33,198,51,208,200,79,208,224,247,29,106,101,211,87,181,204,131,182,124,187,78,0,239,129,58,100,125,56,60,112,71,52,1,103,206,156,1,203,109,57, +25,75,151,29,58,119,35,233,248,224,226,158,179,76,15,252,188,48,60,96,93,186,231,158,14,123,14,221,115,239,214,171,13,56,103,6,230,86,7,175,203,100,59,114,78,110,250,142,132,241,238,7,38,143,236,213,92, +19,35,156,143,75,12,245,233,143,180,177,29,1,231,241,197,0,94,91,201,83,134,73,200,56,63,241,253,38,125,123,133,255,0,235,250,226,157,246,198,99,157,179,131,216,253,177,201,227,190,7,94,221,112,14,48, +58,85,31,177,67,215,113,99,140,252,207,96,164,122,3,254,146,14,50,63,167,56,229,13,172,60,228,33,247,221,102,15,161,4,172,204,59,255,0,123,166,62,148,1,163,246,150,56,2,43,140,116,226,227,118,79,57,251, +202,78,6,127,19,158,40,23,46,48,13,181,204,131,35,63,189,32,3,211,25,10,61,123,103,235,84,5,180,89,200,142,22,32,224,124,246,167,240,63,190,7,175,81,233,192,207,90,156,90,70,127,229,222,219,29,255,0,121, +6,9,24,199,30,97,192,192,237,142,71,94,128,0,89,243,243,203,105,243,30,156,153,38,108,123,18,34,227,232,63,10,67,44,7,33,172,10,241,212,203,50,158,231,158,23,212,113,140,250,144,51,81,173,178,96,98,218, +199,160,56,105,32,231,190,70,28,14,167,175,7,142,49,221,134,209,70,115,107,167,243,235,36,39,147,140,255,0,203,80,79,28,30,63,60,102,128,37,45,110,121,251,18,158,184,38,230,81,200,244,36,145,200,227,249, +103,154,97,16,48,230,210,53,201,193,13,114,196,119,238,195,131,156,112,72,232,61,197,68,109,148,117,182,211,70,51,131,230,68,59,118,249,219,249,30,220,81,246,120,199,252,187,105,205,211,24,184,140,114, +61,64,97,206,63,161,231,57,160,9,12,80,115,254,139,110,163,147,205,210,31,230,164,227,166,64,207,227,156,83,60,168,207,75,104,48,72,31,44,200,113,211,129,146,6,6,125,9,199,30,130,158,33,140,3,155,107, +14,221,46,0,56,24,199,5,137,61,198,114,63,193,194,0,121,22,214,125,123,78,141,200,199,3,46,15,249,24,56,160,8,126,206,196,124,177,219,142,49,159,181,70,184,231,211,61,70,7,97,131,239,156,6,9,120,202,219, +96,16,73,55,192,12,227,140,237,96,127,0,71,167,24,169,141,154,177,230,222,33,143,238,220,34,156,231,190,91,7,234,15,81,158,156,82,155,48,56,22,195,35,184,186,92,140,228,243,129,212,254,62,221,242,1,92, +192,122,121,118,45,208,100,234,45,145,158,115,180,73,131,199,161,231,219,28,55,236,210,175,59,108,113,207,91,173,195,243,50,47,191,60,250,251,212,230,217,114,62,89,23,28,96,93,41,61,64,237,30,79,57,232, +112,57,244,229,124,149,201,1,103,200,227,229,184,35,156,12,227,247,12,14,115,198,73,25,193,237,138,0,135,202,156,2,118,89,145,215,34,104,136,39,232,100,61,115,207,28,143,206,152,68,253,226,177,56,199, +71,139,7,168,207,200,224,228,103,156,158,217,239,83,249,113,131,243,45,238,120,201,251,64,246,24,200,180,227,24,233,131,248,241,147,98,16,8,251,103,160,205,194,115,244,34,200,147,145,199,94,15,184,205, +0,65,137,14,72,142,208,99,142,140,195,235,145,49,231,220,31,231,154,77,252,141,201,107,212,157,219,28,241,235,196,254,195,144,50,127,148,141,18,242,49,112,62,179,156,159,167,250,25,30,253,6,8,197,51,203, +64,0,50,93,47,174,39,61,251,159,248,151,147,143,80,121,245,0,10,0,93,209,30,11,90,14,192,121,115,3,245,226,70,235,211,56,207,167,74,105,120,135,83,110,79,168,142,240,250,227,36,72,56,207,182,50,58,96, +26,107,67,22,9,251,69,192,192,28,25,229,234,59,241,167,31,98,65,3,174,114,42,3,10,127,207,205,200,247,55,83,117,207,81,255,0,18,179,219,61,57,199,174,104,2,86,184,139,186,219,176,199,120,175,9,35,191, +38,65,215,174,75,118,244,24,168,77,202,116,88,109,192,207,95,179,221,46,78,70,63,229,191,191,115,222,154,209,1,192,184,155,3,174,111,103,63,134,63,178,7,31,134,114,115,210,161,49,15,249,248,11,236,215, +23,68,247,244,210,212,116,199,226,15,36,26,0,155,237,35,24,197,183,78,226,117,24,63,73,137,24,193,24,193,233,147,81,180,155,178,65,128,115,253,235,190,222,225,179,208,227,184,61,59,138,137,227,200,57, +149,48,6,78,46,47,61,8,228,46,151,254,62,152,233,85,140,104,9,221,50,158,195,18,106,188,100,242,56,211,23,215,57,224,125,65,197,0,89,44,231,144,33,99,140,128,178,106,36,96,250,228,112,121,207,36,143,206, +171,188,146,47,88,225,32,117,230,252,247,232,79,144,122,122,228,15,210,152,68,67,57,147,143,105,117,97,255,0,182,75,158,131,249,243,131,81,180,150,235,193,118,199,28,9,53,33,131,235,147,106,115,192,239, +249,119,160,1,217,216,100,65,16,62,161,245,50,120,237,129,104,123,123,227,215,28,85,86,55,71,229,22,177,56,236,65,212,193,235,158,79,217,192,237,198,121,21,43,77,105,200,222,199,142,55,62,160,7,191,252, +186,28,250,117,0,143,200,69,231,219,174,2,201,30,58,159,158,255,0,129,192,255,0,159,83,142,123,96,117,200,25,234,1,11,71,112,126,245,149,184,61,201,26,151,76,116,201,183,35,142,15,227,206,115,81,60,59, +190,245,181,186,31,93,151,100,228,114,62,244,64,31,169,201,60,113,86,13,213,185,199,239,33,28,227,37,239,250,251,127,163,12,117,29,198,125,125,34,107,136,58,25,161,32,118,13,168,49,250,128,81,121,228, +245,31,76,131,64,20,218,212,99,238,170,142,135,108,87,68,12,116,7,17,242,62,131,145,145,147,222,9,45,83,188,114,30,184,34,218,244,142,70,123,70,58,231,191,126,113,215,23,90,75,60,101,153,24,112,8,197, +224,56,235,211,7,60,228,15,167,61,170,179,205,166,245,40,128,130,120,217,117,192,236,114,74,28,117,227,252,128,12,247,182,143,28,199,55,184,54,87,184,60,122,224,28,99,190,0,227,21,70,72,99,25,255,0,71, +151,211,38,198,232,129,237,146,195,245,29,199,62,187,94,126,154,1,193,139,36,255,0,118,228,1,198,63,231,182,123,103,144,50,115,235,80,73,54,158,70,73,135,129,201,43,57,207,3,147,185,136,247,198,127,194, +128,49,140,22,228,252,241,58,129,208,125,138,239,32,227,168,38,68,7,167,167,0,96,99,179,26,222,220,31,249,108,1,228,230,206,115,223,3,173,199,191,56,25,235,210,180,153,244,227,150,45,108,167,29,76,83, +12,250,117,199,32,224,115,211,3,173,66,127,179,223,128,109,136,247,71,25,247,0,17,215,215,211,131,64,20,126,207,102,71,207,28,135,4,157,194,218,65,239,211,237,4,19,235,214,161,100,178,67,133,18,131,200, +24,182,153,73,233,140,126,248,3,147,156,227,142,71,76,102,173,180,86,12,112,18,46,50,119,4,184,35,223,147,48,0,140,244,29,59,158,213,89,160,211,129,200,88,184,61,160,156,243,211,254,126,48,221,6,14,49, +64,21,202,90,177,225,46,155,158,158,76,216,252,54,185,198,123,114,122,240,125,88,201,8,56,22,183,68,28,140,20,186,7,140,119,201,7,24,227,229,24,245,237,78,54,250,91,31,153,55,31,246,97,156,47,62,254,107, +14,50,70,58,119,197,70,246,218,120,57,85,43,199,93,143,129,219,248,164,7,167,39,24,235,212,208,2,60,112,100,15,179,93,14,188,129,55,28,243,158,50,49,198,70,127,31,70,24,163,24,38,11,160,56,206,68,192, +118,238,101,76,231,183,79,113,138,79,34,208,18,3,49,239,130,140,127,79,55,61,59,254,98,163,120,32,32,227,145,220,152,136,28,243,252,114,183,60,30,120,250,28,226,128,28,99,180,57,13,21,224,237,242,188, +131,30,231,51,247,200,231,61,79,28,116,99,67,102,0,1,117,3,215,56,121,51,249,253,173,122,247,199,67,147,201,36,212,13,4,63,120,29,189,57,11,16,32,241,220,200,7,63,136,60,118,197,68,214,241,16,112,236, +121,231,111,150,7,29,48,4,195,57,207,61,113,215,20,1,33,142,220,15,245,90,137,231,248,153,243,192,57,36,157,65,72,60,99,57,31,136,168,29,96,198,4,90,136,29,130,151,233,219,56,212,199,78,217,53,19,218, +33,228,57,95,168,118,227,215,247,119,3,158,189,137,63,133,48,218,5,3,247,136,113,207,250,169,14,15,76,229,167,39,191,64,71,25,197,0,13,28,127,243,239,169,145,239,59,40,60,228,140,54,167,145,156,112,7, +235,76,242,208,0,126,201,168,142,164,150,184,56,246,233,169,224,241,143,195,233,203,26,211,57,231,143,246,96,159,0,122,227,206,231,7,159,232,48,50,207,179,227,163,238,206,121,54,247,37,70,120,193,204, +196,99,24,24,227,143,90,0,71,88,129,63,232,215,248,61,188,242,122,117,255,0,152,158,78,123,245,250,99,172,68,68,8,63,102,189,231,25,253,241,239,211,59,181,110,188,28,159,110,122,230,137,34,201,249,157, +72,232,71,216,238,189,115,193,18,19,142,115,237,236,8,168,26,33,140,9,48,70,9,197,173,216,237,223,44,222,163,191,92,140,208,0,239,16,96,26,222,232,122,3,39,113,220,49,213,24,118,39,143,65,129,81,153,35, +108,226,11,143,92,150,44,58,122,11,204,227,182,65,60,31,81,154,129,226,80,112,102,147,211,253,68,219,143,124,0,220,99,29,9,35,220,26,103,144,8,226,89,72,57,7,16,202,0,232,15,42,236,7,81,219,235,142,180, +1,51,16,71,16,55,94,119,6,238,122,96,221,28,255,0,65,199,66,106,22,3,24,17,160,61,120,216,9,206,48,115,231,55,94,123,251,10,140,218,156,101,90,126,123,249,115,227,0,245,198,63,159,229,233,1,139,105,230, +105,184,236,17,240,114,121,201,97,199,227,211,181,0,78,71,251,4,253,124,188,103,211,27,185,201,245,60,16,42,49,232,98,70,244,83,28,71,235,208,140,231,191,56,62,189,234,22,16,14,12,151,4,241,201,227,36, +251,5,200,244,25,56,32,122,226,162,63,101,7,253,109,201,207,97,42,47,254,132,220,129,249,116,239,138,0,180,192,245,16,162,129,129,129,105,9,207,76,245,110,79,175,92,19,233,81,21,101,206,98,32,123,218, +91,103,30,196,176,233,223,142,112,123,85,98,182,196,115,37,215,29,8,185,128,115,248,201,187,142,51,156,122,231,7,134,55,146,189,30,228,142,1,221,121,8,207,25,234,31,191,94,51,249,224,208,5,193,158,161, +23,160,231,236,182,157,57,235,243,103,7,223,131,248,212,101,241,156,236,4,231,131,103,107,130,78,56,7,204,3,56,39,166,15,126,188,213,54,10,70,64,185,108,122,222,160,227,142,164,72,160,243,245,61,251,84, +123,3,30,4,217,227,57,191,92,243,219,137,186,227,30,191,202,128,47,241,207,42,79,189,173,151,61,15,4,202,63,200,201,237,81,49,112,15,220,250,44,86,36,247,236,243,119,28,224,250,243,232,105,249,110,188, +17,40,192,228,53,251,55,174,51,251,210,7,57,252,248,197,55,107,142,72,3,221,174,165,56,201,61,74,205,142,6,122,112,78,115,128,8,160,11,89,36,242,174,64,236,34,211,241,192,244,243,189,58,115,193,235,140, +83,241,146,2,198,115,158,49,21,166,122,240,48,178,227,177,29,72,227,138,168,55,224,128,208,14,57,253,252,160,159,78,68,132,140,14,184,25,245,61,233,133,103,39,229,149,87,145,130,147,59,250,246,98,163, +161,206,115,199,224,40,2,248,73,63,231,156,160,243,200,142,28,119,199,2,80,58,123,228,245,200,232,84,6,199,222,152,16,112,70,203,113,158,248,255,0,90,9,62,156,243,216,242,69,103,133,186,3,6,103,111,83, +185,79,212,129,243,99,57,238,121,231,215,148,34,227,161,153,192,232,6,1,31,64,22,51,254,121,245,52,1,127,99,18,126,119,25,25,193,88,9,246,60,92,3,252,240,121,198,72,166,148,96,51,190,76,227,130,18,60, +159,206,126,135,215,24,200,244,170,127,57,192,50,237,192,201,27,99,252,206,232,251,122,122,253,51,78,30,98,145,139,176,160,142,203,6,120,237,206,7,233,156,103,156,208,5,143,40,62,120,118,231,188,105,147, +236,72,114,15,61,199,63,165,6,208,144,127,114,72,237,152,75,103,35,29,156,113,223,142,115,131,239,81,229,176,15,219,156,250,145,29,171,99,212,125,222,135,176,36,243,244,192,76,231,254,95,29,187,129,229, +91,3,158,253,19,211,63,76,231,168,197,0,41,179,66,48,98,112,50,56,88,72,25,4,145,147,188,28,12,242,7,81,198,57,38,156,44,99,0,19,27,119,227,202,127,99,253,243,129,236,15,95,66,42,2,20,19,155,137,14,59, +8,237,63,246,104,8,250,115,254,52,214,207,24,105,200,56,232,186,120,206,121,233,228,175,94,253,79,94,79,20,1,103,236,171,156,4,144,123,152,164,29,58,3,150,29,254,184,244,239,69,65,135,39,38,57,143,24, +228,105,227,62,189,80,96,251,254,67,166,74,0,250,213,150,101,4,19,9,24,61,22,219,36,142,184,202,147,236,7,127,165,87,104,220,228,144,65,7,140,71,109,143,115,129,19,103,160,35,3,250,138,213,111,237,28, +113,20,160,14,115,246,116,61,143,95,223,144,72,199,93,167,57,199,166,98,63,218,71,35,116,168,15,93,182,145,100,147,192,3,230,92,3,207,70,35,142,73,192,52,1,151,137,70,65,206,61,15,146,58,242,79,221,24, +24,0,145,199,92,30,121,168,136,57,25,28,247,42,209,143,228,217,233,212,14,0,239,197,106,50,94,129,146,100,108,30,191,99,129,143,254,61,49,227,61,71,92,241,215,53,11,67,116,73,37,165,24,232,126,197,106, +71,127,250,109,129,237,131,223,4,227,34,128,41,109,114,70,31,111,176,120,193,35,241,112,79,78,189,51,74,98,113,207,152,195,215,18,40,60,123,179,145,238,114,61,186,26,178,35,157,115,151,159,35,169,251, +13,159,29,63,189,49,234,23,169,30,253,79,40,90,94,115,231,30,127,231,210,208,1,142,223,43,31,199,165,0,84,228,17,251,233,190,161,225,199,108,156,110,207,190,123,100,244,24,164,37,113,197,203,168,29,48, +208,17,158,185,193,144,12,241,238,125,57,235,107,204,3,27,164,152,31,250,225,8,192,28,228,97,136,57,235,219,24,39,4,240,88,72,36,226,121,71,63,243,202,28,242,7,93,171,219,142,113,143,83,218,128,41,238, +57,226,230,92,113,212,219,0,125,240,37,200,39,60,243,159,94,105,75,129,255,0,47,50,142,65,251,240,99,158,132,226,227,183,76,140,1,233,207,51,156,131,204,236,71,113,180,0,63,1,25,227,145,142,125,126,148, +211,243,100,125,160,129,236,28,28,122,96,195,130,126,157,15,79,112,6,121,174,6,69,221,198,70,48,162,88,192,235,147,140,94,241,142,152,239,198,49,140,82,137,165,110,126,217,115,239,251,252,30,15,181,249, +193,39,142,157,253,233,54,168,39,247,142,249,224,146,178,159,167,72,70,8,29,113,201,227,36,145,64,85,4,224,182,61,132,170,113,236,76,3,167,166,113,142,51,64,18,43,92,49,226,230,236,129,158,147,6,207,182, +77,209,39,29,186,142,185,169,11,93,15,249,111,124,71,180,235,207,57,231,253,36,147,223,140,99,36,117,236,193,176,15,226,110,167,239,201,219,143,249,228,78,62,158,188,118,167,131,9,28,160,207,168,145,243, +232,56,54,196,250,103,146,126,157,128,16,61,208,60,53,247,39,147,231,68,50,48,123,180,217,224,245,28,103,32,99,34,165,18,93,54,6,251,243,233,153,109,240,78,8,193,253,233,36,251,96,117,207,56,53,24,142, +2,55,124,156,255,0,121,228,63,206,219,3,208,12,254,56,226,156,176,64,120,242,98,127,171,3,235,219,236,199,249,243,215,183,32,19,98,235,174,111,143,167,239,98,35,211,169,145,177,223,140,103,177,236,41, +226,59,194,15,239,46,128,198,48,211,71,130,61,240,224,17,142,253,63,90,133,32,128,103,54,86,199,182,50,59,231,130,68,25,199,64,123,117,61,56,169,252,184,192,207,246,117,168,236,9,10,65,7,190,76,42,79, +30,224,116,207,90,0,110,219,206,130,105,206,50,112,178,199,219,142,138,14,125,61,179,143,114,134,59,208,6,233,110,113,158,165,201,7,140,12,98,35,140,231,57,207,94,7,76,212,129,16,125,237,62,195,24,233, +251,144,121,199,57,104,243,143,64,114,121,56,237,82,1,22,6,108,180,228,244,203,91,131,238,51,180,0,59,99,7,161,200,160,8,124,153,0,222,211,185,238,114,216,63,248,252,7,191,115,249,250,200,134,78,211,62, +123,228,193,143,166,126,204,216,198,73,198,8,60,250,212,152,181,94,30,211,76,4,241,150,154,220,1,143,247,70,115,207,24,31,202,144,173,161,201,242,52,130,49,208,58,147,198,56,200,83,158,253,49,207,126, +40,1,132,202,121,55,17,241,140,31,220,156,125,113,104,78,120,237,129,198,113,138,113,243,177,143,181,194,62,141,24,60,127,187,108,9,250,15,202,159,139,92,113,111,166,31,164,163,30,188,252,171,207,79,111, +160,226,149,124,140,124,214,154,89,4,140,97,243,223,253,223,167,124,103,210,128,34,49,59,117,184,183,193,4,228,249,152,245,232,182,248,28,243,146,63,3,145,81,52,108,188,9,237,78,73,192,81,59,117,228,100, +139,98,123,246,199,60,26,185,254,143,142,44,236,20,14,184,249,193,7,25,227,127,7,185,200,29,41,60,200,0,56,134,213,121,254,21,97,143,174,1,201,60,227,175,227,64,21,87,43,203,73,98,217,192,231,237,75,131, +244,48,113,198,51,145,223,57,230,159,148,56,255,0,143,51,244,146,113,201,237,196,67,56,245,35,175,29,58,205,190,14,233,111,219,157,210,168,63,80,16,96,12,116,245,237,222,158,175,109,140,5,183,235,145, +134,185,207,208,149,95,76,17,158,221,199,66,1,95,9,144,63,209,23,140,3,190,126,113,245,140,31,97,245,206,59,82,133,81,157,169,106,220,21,24,121,142,15,183,201,201,28,116,39,39,173,90,223,0,199,49,96,28, +127,173,189,24,245,251,202,120,200,237,212,125,77,61,101,64,72,67,31,56,31,122,240,254,127,184,108,243,211,140,122,208,5,47,36,48,221,228,91,183,124,131,117,215,216,168,192,36,251,159,67,138,105,138,21, +63,53,186,126,18,92,142,72,24,192,105,1,227,158,192,114,58,102,181,209,92,231,158,1,3,59,37,35,61,243,186,212,19,211,215,215,161,232,255,0,45,136,207,152,7,108,42,78,71,94,251,109,192,227,147,200,61,191, +16,12,165,75,126,15,217,1,207,117,146,231,158,153,251,172,192,116,233,248,253,100,205,168,35,253,8,158,73,201,105,0,61,240,119,41,36,246,231,255,0,174,117,86,50,0,30,105,4,224,127,168,155,7,142,199,200, +4,227,57,239,239,238,239,46,97,192,148,128,61,99,155,28,253,109,155,174,58,131,158,180,1,65,5,169,31,241,224,8,245,220,139,192,231,169,24,28,99,30,156,227,60,212,131,236,99,165,148,131,233,60,103,211, +182,14,15,108,227,234,122,85,229,138,228,253,215,140,130,71,83,40,0,30,78,113,106,51,146,120,29,56,200,60,84,194,43,161,159,245,96,117,59,82,66,79,83,198,97,24,39,61,58,251,30,180,1,72,45,174,56,180,148, +119,200,96,73,250,237,136,228,115,199,80,127,154,129,103,144,26,214,78,191,196,202,27,174,49,254,172,30,113,234,127,94,116,54,93,117,25,199,27,136,139,191,124,103,111,215,223,39,218,141,147,156,102,45, +196,30,191,103,136,146,61,249,39,175,190,59,231,147,64,21,0,177,60,11,34,59,231,124,92,30,49,207,151,158,156,243,142,121,246,169,66,218,130,49,107,48,231,171,79,23,95,99,179,63,65,145,233,131,222,114, +147,140,159,179,159,168,130,48,15,76,243,230,14,248,252,126,180,152,150,62,77,176,235,198,232,80,159,94,118,92,12,12,96,129,200,160,6,129,110,127,229,131,131,211,230,120,155,63,248,239,39,142,49,249,96, +138,123,36,42,57,128,14,56,0,199,199,64,51,128,164,30,253,178,65,236,70,65,119,114,189,44,208,244,28,91,199,142,121,57,47,63,36,145,206,119,117,60,12,100,60,222,92,30,5,164,39,57,36,121,49,12,147,142, +62,91,145,238,56,199,78,113,193,160,8,74,67,159,145,2,158,184,243,20,28,113,193,11,32,227,235,142,79,78,148,190,82,103,161,4,246,243,88,227,182,56,185,199,29,115,248,241,83,125,174,240,140,11,120,151, +30,182,249,199,30,215,138,122,246,252,14,14,112,45,212,248,230,21,231,210,9,72,63,136,190,94,62,160,103,158,212,1,24,134,35,199,35,184,229,24,224,247,201,184,83,142,167,169,247,193,166,155,120,50,73,66, +192,12,110,41,17,244,24,36,221,55,82,58,228,16,123,118,54,77,228,157,50,64,32,15,150,218,66,0,193,200,230,249,134,59,116,28,126,0,130,238,96,56,119,199,32,237,181,108,254,126,123,31,110,57,25,244,160, +8,150,40,8,255,0,86,15,108,108,136,241,223,164,252,156,12,243,207,224,106,79,179,196,79,250,176,1,198,127,112,160,126,59,101,60,254,7,140,116,169,5,220,161,120,146,101,239,197,171,30,190,185,221,239,158, +122,231,190,72,107,93,77,252,83,92,1,201,226,216,147,131,207,7,28,143,78,192,113,237,64,13,22,182,189,226,131,223,125,190,73,199,7,238,238,60,243,219,140,156,113,205,59,200,177,7,136,173,148,140,125,219, +114,190,249,63,40,234,56,7,234,113,156,130,130,237,185,6,230,228,12,115,139,64,49,199,77,195,111,29,50,123,250,3,64,158,54,255,0,151,203,209,145,222,54,140,126,5,91,174,71,76,254,20,0,241,109,108,199, +136,224,244,0,196,192,12,114,73,253,211,113,212,19,211,191,36,230,166,75,104,184,62,76,12,8,237,10,241,208,245,251,41,201,237,201,237,199,169,172,10,112,69,229,225,207,251,114,140,3,236,119,3,223,169, +207,173,12,209,96,102,230,237,177,193,205,193,25,39,3,149,49,17,248,30,158,180,1,124,218,64,7,250,155,113,237,228,174,7,115,145,246,110,7,94,167,62,181,25,182,141,73,33,45,113,232,99,126,114,57,192,88, +112,59,224,99,142,163,154,167,190,220,245,154,224,146,14,115,113,15,168,201,44,240,231,223,235,156,231,173,52,201,110,113,153,110,10,143,75,139,67,233,253,232,71,78,58,145,219,147,197,0,92,48,118,197, +170,99,210,57,134,9,200,35,34,220,30,199,184,207,36,81,228,185,192,204,3,167,33,46,50,122,96,143,151,7,160,199,227,207,76,83,221,110,127,229,163,158,63,138,234,197,70,9,228,157,195,158,189,0,234,106,61, +214,195,143,49,119,17,144,5,213,143,56,234,121,100,224,142,14,121,28,244,24,160,11,230,9,65,200,116,0,244,230,116,57,244,1,144,99,216,131,158,231,6,143,223,160,220,28,128,56,249,93,178,1,239,130,7,7,142, +221,113,158,8,205,13,214,202,121,146,49,238,110,172,134,49,131,212,220,255,0,156,142,220,83,195,219,227,153,33,61,127,230,35,167,175,29,57,2,111,95,78,113,130,49,214,128,39,45,115,187,137,91,167,28,231, +211,156,43,103,249,102,154,222,126,73,121,19,233,151,238,125,65,31,145,233,245,56,168,67,91,17,194,161,25,237,125,166,182,127,55,199,31,95,115,156,12,176,188,0,113,31,183,252,125,105,39,63,129,147,185, +199,81,215,28,10,0,123,59,159,249,107,30,51,143,245,132,96,254,46,70,51,207,78,57,24,3,130,198,44,63,229,178,227,35,24,42,120,60,146,126,111,175,108,255,0,70,230,51,202,169,231,176,159,74,62,231,254,90, +99,142,59,246,200,20,164,38,65,9,39,3,254,123,88,31,166,66,146,61,50,58,100,30,40,1,60,195,129,150,7,175,33,88,251,118,83,223,158,122,115,206,40,220,78,6,65,207,64,70,15,182,73,140,250,241,200,31,134, +48,198,66,189,16,247,31,52,182,35,7,60,142,228,254,120,24,24,233,81,249,115,147,145,26,145,199,73,237,56,207,251,170,127,92,254,180,1,49,4,243,229,227,25,201,38,60,99,219,54,199,167,126,167,223,156,22, +18,121,221,10,17,199,95,44,156,250,227,236,216,62,167,174,61,57,20,207,38,112,15,238,250,241,145,53,176,234,57,232,195,211,176,29,79,67,73,228,92,140,129,27,14,58,125,166,46,125,64,3,39,215,160,193,247, +192,160,5,98,188,230,40,71,64,49,26,122,18,9,205,183,25,250,140,138,2,147,247,86,220,2,59,170,227,156,246,22,199,156,158,126,156,243,77,242,110,240,63,119,38,125,167,4,99,159,69,232,113,211,156,31,92, +114,255,0,179,93,149,36,69,32,4,240,124,222,249,207,24,65,252,250,251,226,128,24,201,42,130,79,144,63,221,137,72,198,70,72,253,206,51,223,60,251,103,165,33,18,48,201,116,94,217,16,33,253,118,1,193,199, +81,156,212,139,103,115,140,148,155,234,173,35,231,140,140,144,189,179,192,235,218,131,107,112,132,102,57,137,61,153,167,7,142,0,25,192,247,62,153,28,226,128,32,33,151,172,203,219,159,33,84,251,96,133, +193,227,166,71,76,208,51,218,100,29,0,249,99,28,224,30,114,51,159,192,112,58,14,181,63,149,56,199,201,32,24,224,110,155,241,255,0,150,202,15,211,143,94,120,160,69,32,0,24,238,78,79,252,246,184,92,254, +87,62,253,51,130,51,193,205,0,69,146,122,92,128,51,198,21,14,48,115,131,129,200,233,198,57,235,239,72,100,101,231,237,104,8,244,183,39,62,216,5,71,25,28,243,219,160,171,139,110,64,4,219,94,176,63,221, +150,232,255,0,237,199,60,251,227,57,62,148,226,128,117,181,191,28,12,5,154,235,63,145,184,56,61,241,250,10,0,160,211,156,18,111,176,49,255,0,62,227,219,28,52,252,254,93,122,243,128,67,114,65,218,111,220, +241,199,250,58,131,192,232,127,122,15,169,56,227,190,51,87,54,196,56,107,125,68,115,252,83,93,19,207,78,179,14,189,64,7,243,164,43,9,224,91,106,3,158,114,110,72,30,252,93,174,122,30,123,158,228,208,5, +63,60,231,254,63,100,110,15,91,101,24,61,51,146,228,19,233,232,48,114,123,31,105,139,0,60,242,177,232,7,217,23,7,140,241,232,113,253,65,2,173,178,194,163,34,43,209,245,251,86,49,158,63,229,248,17,147, +208,115,207,115,156,211,75,198,63,229,157,241,207,29,28,1,142,159,122,248,128,51,234,115,145,211,176,0,172,46,17,78,65,157,206,7,91,115,140,127,192,85,192,238,112,126,190,149,42,220,142,201,114,79,28, +249,46,51,248,24,182,246,24,3,215,29,41,12,202,15,9,122,190,224,145,193,250,95,169,236,125,120,247,166,188,135,3,254,66,4,228,240,173,39,7,142,70,111,88,116,57,31,54,51,233,197,0,73,246,131,207,203,115, +129,207,252,122,76,126,185,196,39,63,150,7,126,180,134,224,231,34,57,216,117,249,173,101,3,158,185,6,21,252,70,239,210,161,51,178,240,26,251,168,25,60,176,56,228,113,115,223,250,243,158,13,39,157,47,25, +107,192,49,223,0,14,120,56,105,207,62,163,191,61,249,160,9,154,224,156,131,4,222,219,45,165,95,78,228,244,247,219,158,189,51,194,111,39,159,34,227,39,176,73,115,249,40,239,128,56,231,183,209,130,105,1, +226,230,113,159,80,79,160,57,1,200,28,247,255,0,235,212,137,53,192,25,91,153,152,228,30,35,25,244,63,51,2,120,250,118,227,61,192,1,184,255,0,203,189,199,30,171,114,15,28,28,140,134,192,207,169,235,214, +159,131,222,9,187,244,251,72,231,0,227,253,103,29,199,92,100,118,166,249,151,32,231,237,51,242,120,206,208,122,117,194,196,122,123,119,60,140,1,67,77,118,79,51,200,78,57,195,18,113,239,152,15,65,142,70, +127,165,0,73,176,16,113,20,227,174,50,110,6,126,159,190,36,96,156,158,7,97,197,42,169,25,220,36,81,234,207,49,198,14,57,221,41,35,250,31,90,128,201,118,113,137,164,3,221,142,71,110,130,217,179,208,158, +221,125,197,0,222,49,230,229,136,224,224,153,78,58,116,63,96,97,198,63,49,223,6,128,39,59,58,137,31,161,39,47,41,228,253,38,252,143,191,174,5,32,100,207,36,158,255,0,235,166,231,190,78,110,1,31,67,223, +219,138,136,173,200,231,205,83,216,124,132,245,62,167,76,201,231,220,82,236,185,98,51,49,29,190,88,128,198,113,212,255,0,102,128,125,49,142,70,121,205,0,78,88,0,56,227,61,165,115,216,118,55,99,158,120, +252,187,28,168,104,243,247,228,4,224,113,35,117,224,115,186,87,24,207,24,31,129,230,161,49,92,15,249,110,224,14,135,28,142,121,224,105,71,249,228,231,142,105,184,159,145,231,59,0,114,112,64,56,247,15, +165,168,245,199,35,242,232,1,115,128,62,89,15,185,39,39,143,125,221,190,131,167,181,27,219,24,19,40,206,48,11,127,77,195,219,150,60,255,0,58,120,127,239,76,79,125,211,68,185,193,245,254,207,227,142,196, +122,138,112,44,48,15,154,65,3,63,233,8,50,72,25,231,251,63,24,199,94,63,250,192,23,54,146,56,152,115,207,18,0,48,7,7,151,7,62,254,158,216,169,60,185,59,76,126,190,99,159,81,129,243,176,63,135,183,122, +169,187,162,149,184,39,212,78,157,189,127,226,91,159,233,154,145,72,207,9,55,227,115,233,237,253,155,207,183,32,228,119,160,11,75,21,193,224,74,9,62,236,216,227,216,19,223,174,14,125,41,126,205,122,199, +135,110,152,192,87,110,114,79,0,0,123,251,127,132,66,89,23,164,46,192,127,122,240,175,30,227,251,56,116,237,131,143,95,116,243,229,4,31,41,87,166,49,120,119,110,56,235,254,140,163,143,126,163,211,145, +64,19,253,143,80,39,151,101,32,113,136,36,110,50,115,134,17,183,225,144,126,189,40,54,154,138,156,137,157,123,228,65,115,156,122,18,176,247,244,29,241,245,168,190,208,228,40,40,164,231,39,117,235,31,124, +129,179,111,183,32,158,123,100,138,83,60,128,140,197,111,223,27,174,151,60,99,29,84,99,35,215,146,79,60,0,104,1,230,219,83,200,31,106,147,140,140,180,55,163,143,111,220,175,28,118,246,231,4,138,62,201, +169,114,13,211,140,122,37,248,57,224,227,238,15,175,254,131,199,34,51,112,196,130,82,223,158,155,39,87,250,12,150,57,252,63,173,60,207,43,1,181,98,29,243,149,207,81,140,157,188,129,207,124,30,153,198, +48,1,32,178,191,35,62,124,196,15,225,242,245,15,212,178,99,144,57,201,244,231,61,91,246,59,213,251,147,74,15,253,115,212,113,158,58,236,135,190,79,67,211,189,71,246,137,185,253,228,11,235,148,79,203,230, +66,63,92,243,199,179,126,208,228,129,231,66,15,60,128,152,236,58,0,51,193,25,4,17,212,115,146,40,2,199,217,47,216,0,102,112,58,103,102,165,201,3,167,48,103,183,175,214,154,214,87,60,230,226,124,103,144, +33,213,72,198,71,24,22,248,200,245,60,103,167,187,77,204,159,243,245,30,59,98,43,114,127,84,201,224,123,115,250,183,207,29,238,135,185,11,108,15,229,179,3,130,63,66,65,235,64,14,91,75,143,249,248,155, +0,231,62,78,169,193,237,140,218,246,231,190,127,42,113,181,148,31,245,242,231,254,185,234,128,242,115,200,251,56,31,137,4,30,64,199,25,143,207,135,3,117,195,17,207,67,96,6,57,207,252,179,246,29,79,92, +240,113,81,153,109,248,6,228,140,247,18,88,142,125,63,212,73,207,39,234,73,226,128,38,54,205,208,188,184,233,247,117,14,115,238,208,100,123,246,226,149,109,227,7,12,178,19,215,32,93,3,142,113,128,109, +207,7,7,62,189,253,42,1,37,167,123,135,61,49,182,107,47,126,184,179,245,207,29,41,185,179,56,62,100,172,125,12,182,67,242,205,144,252,242,115,199,60,228,128,92,242,226,0,174,103,3,24,224,220,3,215,140, +147,7,161,28,224,241,248,3,17,242,64,233,47,60,114,196,28,30,164,159,35,158,196,112,115,211,28,156,87,197,161,60,144,8,254,244,246,75,215,190,22,221,78,120,231,131,252,169,65,178,56,44,16,244,200,51,219, +246,228,28,24,0,245,198,56,57,7,189,0,74,60,129,157,178,63,61,71,155,248,227,230,182,207,29,50,15,62,253,40,102,132,12,249,136,8,3,59,203,131,146,59,17,108,7,60,116,206,57,193,168,75,217,227,10,145,244, +227,116,209,12,15,92,8,177,142,1,228,227,61,42,61,214,156,15,42,46,217,255,0,74,132,12,14,56,196,63,94,7,244,160,9,133,212,107,209,144,142,58,72,87,167,98,26,18,79,29,255,0,46,135,33,188,67,252,15,142, +7,203,58,247,231,159,220,96,140,31,126,222,181,1,146,220,18,68,86,216,28,141,215,128,243,211,162,199,131,131,223,0,140,226,144,205,9,232,150,103,158,8,154,67,134,250,164,13,220,99,24,192,231,138,0,147, +237,49,177,193,12,48,79,30,108,120,39,156,103,228,199,25,228,129,145,147,147,211,8,94,51,213,138,142,184,251,73,193,207,208,12,96,250,113,159,165,52,79,31,65,111,3,119,249,94,119,28,255,0,219,144,231, +60,96,17,239,236,211,113,131,145,109,18,140,117,197,206,112,123,225,109,114,127,63,95,99,64,18,22,206,66,204,195,174,63,210,159,3,129,200,218,235,158,112,15,83,250,154,140,110,239,46,122,159,150,225,200, +198,113,140,137,64,233,250,146,48,115,64,187,114,9,242,35,200,32,100,69,118,113,207,80,77,184,57,224,116,7,30,190,168,110,92,14,22,51,215,130,183,132,224,116,28,90,176,28,112,14,1,60,227,20,0,162,34,195, +62,99,3,140,113,61,192,235,208,252,179,0,121,233,159,229,79,242,165,3,229,149,142,79,121,167,7,143,165,202,254,39,143,94,228,212,127,106,152,174,21,23,60,240,171,56,234,58,29,214,160,241,211,163,122,122, +138,143,205,187,108,229,23,129,128,2,205,156,125,62,202,71,183,64,58,102,128,29,34,92,130,113,43,1,206,118,79,32,63,173,208,61,184,201,4,231,168,7,152,153,46,49,147,114,203,129,198,233,176,115,199,93, +215,132,183,110,220,100,118,234,51,93,30,54,33,32,113,190,38,57,228,143,226,181,4,117,4,14,160,158,42,22,23,68,159,221,32,56,199,22,203,147,212,240,90,3,235,199,28,246,61,136,2,149,148,2,126,221,18,140, +241,186,114,50,71,184,191,94,135,130,49,193,168,91,207,228,13,78,212,17,206,62,211,41,207,176,255,0,137,162,245,250,14,63,10,26,59,188,110,242,36,35,251,203,21,176,193,199,76,52,32,123,19,145,158,113, +200,166,19,122,48,4,46,8,0,114,150,159,135,252,177,56,227,245,244,160,8,221,174,135,63,218,81,55,80,0,157,176,127,22,213,123,15,124,103,60,85,99,37,217,39,58,138,241,206,211,42,227,215,175,246,147,3,211, +248,136,224,99,154,181,254,157,146,77,179,183,24,229,173,1,228,116,193,131,32,28,142,224,30,167,165,65,44,119,164,18,45,220,99,144,3,90,231,211,63,234,122,231,156,246,61,241,138,0,133,164,184,193,221, +122,27,60,99,206,65,208,243,147,246,230,201,198,63,187,223,219,16,52,242,40,201,184,80,125,229,143,177,207,252,254,156,253,7,94,216,56,167,52,87,131,254,93,165,201,238,94,2,72,231,131,192,24,239,156,14, +125,5,86,120,110,207,91,105,248,60,226,91,124,243,233,201,206,126,185,246,235,64,13,121,207,57,156,115,129,196,176,228,253,51,122,114,58,244,56,7,184,224,26,237,118,23,118,110,88,12,0,113,52,32,28,0,57, +197,201,24,231,4,114,7,126,184,169,12,115,142,62,207,62,122,241,58,231,32,227,174,15,228,72,201,3,29,115,81,249,115,243,254,143,115,235,242,207,156,127,223,24,245,192,60,245,228,142,148,1,15,219,35,60, +125,166,71,57,224,44,208,28,142,128,16,37,36,227,241,207,82,77,33,185,76,127,172,159,62,130,120,65,231,216,202,57,255,0,35,214,156,203,114,63,229,141,246,7,165,203,12,122,240,31,62,223,159,185,168,88, +92,19,147,21,226,231,160,50,187,99,36,113,196,128,123,117,235,159,108,0,49,174,224,92,2,110,59,231,51,218,244,235,222,82,65,224,118,193,53,19,93,219,117,37,193,236,94,123,47,92,114,70,72,199,80,79,30, +158,235,36,119,4,228,67,118,59,231,124,164,30,123,143,181,71,211,4,103,143,94,184,196,36,92,47,85,156,31,127,59,56,39,169,3,81,221,211,211,28,117,29,69,0,60,222,64,6,60,216,240,70,126,107,171,37,63,82, +25,79,226,112,121,57,192,57,168,141,212,68,100,77,110,58,117,188,179,3,235,196,88,198,58,224,159,215,20,127,164,116,34,102,245,249,110,71,39,177,206,162,57,235,198,51,158,123,84,101,166,25,6,57,79,92, +229,36,39,233,205,249,236,61,123,227,35,173,0,49,174,83,7,23,112,130,58,102,230,211,223,144,118,16,123,142,231,240,224,196,110,213,73,205,229,191,3,254,126,109,0,39,29,206,220,14,59,100,231,29,186,135, +51,48,206,98,152,99,183,147,41,227,219,26,134,61,113,131,142,190,213,93,203,127,207,47,161,107,119,56,235,140,238,189,36,113,201,207,94,185,228,228,1,230,249,9,63,191,180,108,0,50,110,109,138,142,199, +56,195,17,235,140,130,7,4,84,13,116,31,59,78,156,78,58,253,170,221,125,120,56,149,123,99,223,183,108,213,71,112,189,70,15,175,144,20,118,232,126,213,158,157,121,63,78,152,172,94,62,11,44,99,60,146,97, +92,159,252,152,111,199,56,199,29,104,2,219,200,91,156,233,231,177,219,123,23,28,117,255,0,143,165,247,61,192,61,49,138,133,154,67,247,127,179,248,200,24,190,67,201,245,255,0,72,36,99,212,156,122,213,118, +146,17,252,49,156,255,0,211,36,231,30,222,103,124,14,121,231,25,237,80,188,150,249,251,177,228,140,127,170,76,125,6,115,207,211,185,160,11,5,167,25,32,105,227,175,252,191,224,224,250,109,149,190,152,199, +78,245,27,53,198,78,86,200,244,206,47,216,231,166,62,227,158,132,227,215,175,29,49,81,150,221,179,136,99,39,212,198,157,57,236,34,7,144,122,253,7,122,174,233,26,158,45,226,35,156,101,20,14,167,169,104, +113,252,198,57,250,128,93,99,54,48,124,133,207,80,151,151,4,114,61,167,83,211,240,21,93,196,227,59,118,30,63,231,250,229,115,158,128,126,252,142,195,25,199,61,120,197,82,36,114,5,180,4,103,7,146,7,94, +122,32,25,235,208,31,66,56,0,183,156,96,91,64,125,150,71,244,207,42,96,110,135,219,7,242,160,9,220,206,115,145,25,56,255,0,160,148,249,244,239,49,227,158,50,79,61,187,136,72,156,131,195,39,80,74,234,19, +99,60,250,76,9,247,231,3,62,252,194,229,134,63,209,134,115,158,4,141,235,192,197,176,57,233,207,31,78,113,81,141,220,109,180,147,174,11,4,184,96,7,99,242,192,71,185,234,49,147,142,40,2,127,46,99,201,150, +227,219,110,163,48,0,119,33,126,212,15,61,242,112,123,224,212,77,189,71,18,220,103,140,159,237,9,200,253,110,136,7,249,142,56,56,53,3,137,250,172,14,9,60,143,34,236,244,199,100,128,142,114,79,204,122, +143,122,133,190,210,57,242,28,18,59,219,222,100,119,228,121,39,61,177,128,70,121,231,176,4,173,230,96,31,62,224,18,123,94,76,221,125,113,116,15,191,78,163,28,230,161,110,153,251,77,209,57,228,125,170, +224,126,162,243,191,31,82,126,180,194,243,140,229,10,244,235,111,124,163,61,59,91,17,219,158,156,145,219,52,195,60,192,16,200,70,125,96,191,201,28,243,197,182,61,64,239,158,128,208,4,108,57,63,189,186, +32,113,205,229,216,235,235,182,243,145,158,14,120,199,99,76,118,140,14,68,228,99,140,92,206,73,198,63,139,237,138,221,63,31,115,210,156,110,14,123,1,219,41,121,250,238,181,192,193,233,143,115,146,41,12, +204,79,14,160,30,127,213,220,241,142,191,122,205,129,56,57,227,0,142,231,154,0,174,101,141,115,196,192,99,156,220,206,70,58,231,38,237,143,63,151,52,195,113,8,233,230,115,140,129,115,55,24,207,57,23,39, +240,232,126,157,167,107,135,0,254,249,20,14,63,212,220,99,156,127,211,136,3,241,30,252,14,106,47,180,48,255,0,151,155,124,156,28,52,87,0,250,116,251,32,7,142,14,8,199,94,121,160,8,76,209,144,78,91,142, +121,186,186,234,126,151,4,115,140,28,241,252,195,124,240,6,76,113,17,158,166,226,237,191,48,37,63,65,193,231,60,250,89,55,123,67,31,180,217,99,221,37,0,250,240,96,94,160,123,113,248,226,35,125,26,242, +103,211,193,238,66,75,147,158,79,68,199,167,167,106,0,131,237,99,166,33,239,147,231,207,237,198,214,98,125,61,253,135,112,220,113,129,28,7,62,179,79,142,189,136,13,146,122,242,48,61,69,74,111,226,234, +37,176,235,130,113,32,39,184,235,108,196,119,250,243,72,183,97,135,7,79,97,254,243,254,60,27,62,6,6,57,192,232,58,80,3,5,202,243,254,141,108,120,206,68,247,35,211,146,49,158,63,158,56,199,21,34,207,25, +235,5,176,24,200,204,147,247,235,142,153,250,159,83,211,52,199,153,120,4,233,192,250,100,253,112,51,102,15,76,103,167,210,152,94,50,50,198,203,105,35,238,227,25,60,112,126,204,63,62,79,3,211,128,9,204, +241,241,136,237,135,253,181,184,0,117,35,238,191,61,121,24,61,248,207,20,195,50,103,62,69,139,115,247,77,197,224,3,156,99,253,91,28,142,227,112,24,231,39,173,86,111,40,28,131,107,201,231,150,199,167,63, +232,185,35,175,0,30,227,165,27,160,127,188,214,167,167,1,101,7,39,167,62,80,83,144,71,80,122,14,253,0,39,50,130,112,45,44,95,32,117,185,190,35,191,176,207,255,0,88,10,143,113,7,254,61,108,125,71,239,174, +249,29,49,201,24,63,161,231,140,210,121,48,144,48,182,231,35,156,121,153,61,51,199,149,142,188,142,188,14,40,48,196,71,252,178,0,30,152,148,142,221,188,131,223,28,15,229,212,0,204,110,1,107,75,79,125, +179,207,158,122,117,207,62,153,250,84,101,35,39,155,40,49,208,237,150,70,227,182,64,235,236,62,185,28,145,79,91,116,7,129,1,207,36,149,155,35,177,198,109,79,61,79,45,211,156,140,212,158,73,81,255,0,44, +6,72,232,172,115,215,191,217,148,143,196,227,31,141,0,65,136,65,255,0,143,56,149,125,11,205,212,116,36,2,72,239,208,96,231,158,180,132,68,71,22,208,140,0,1,223,43,103,24,207,92,247,60,145,145,236,59,88, +216,0,201,120,151,253,216,220,147,234,1,9,158,49,201,200,198,58,83,112,51,128,224,159,250,230,248,250,253,222,159,207,143,173,0,64,18,49,207,145,110,56,25,63,189,228,243,198,10,115,215,177,235,212,19, +78,242,215,0,249,17,31,247,98,152,245,200,200,33,72,199,212,30,156,227,138,155,37,126,236,128,16,49,128,146,126,31,242,200,126,60,243,218,143,180,202,163,30,106,125,60,167,108,99,190,89,8,237,199,3,60, +227,61,64,4,107,26,228,102,217,57,239,228,203,216,143,246,23,147,142,61,64,61,71,52,84,191,106,98,48,28,241,212,136,149,64,255,0,190,162,32,254,35,6,138,0,251,48,216,167,252,242,132,244,225,146,33,129, +219,27,8,235,249,31,74,141,173,99,7,254,61,224,36,31,155,144,125,121,198,211,250,176,200,252,64,211,243,97,200,6,246,232,231,161,222,87,61,241,147,118,64,237,193,0,251,211,75,71,130,5,220,253,14,7,156, +163,143,160,149,189,250,244,239,144,13,0,101,24,87,144,45,237,136,234,1,35,29,123,124,235,129,147,215,160,234,87,181,68,97,4,159,244,75,96,15,35,253,86,123,130,63,214,228,116,199,94,113,211,156,85,247, +32,146,62,213,62,51,222,71,199,166,120,108,113,142,152,224,246,230,161,116,36,228,221,220,46,122,157,236,71,234,14,49,254,122,80,5,67,108,88,109,22,214,160,231,56,204,35,183,168,152,49,235,207,79,94,148, +207,176,63,252,251,91,28,115,242,188,121,35,175,252,247,199,94,122,117,199,122,153,161,67,215,82,184,25,206,54,202,171,156,247,3,4,241,237,128,7,60,84,94,76,99,254,98,115,177,224,252,215,17,244,245,57, +95,234,49,250,0,8,218,194,76,146,109,109,193,206,70,94,53,39,169,237,49,227,3,168,3,212,117,166,253,146,113,143,244,107,92,118,217,48,29,51,193,59,207,3,219,147,216,84,141,0,101,249,47,156,142,217,158, +33,184,241,254,200,236,121,199,183,21,92,219,48,60,220,179,100,145,254,182,50,58,30,191,40,200,247,7,29,104,1,237,101,59,227,16,66,189,63,229,170,158,126,155,15,83,144,63,253,120,79,236,203,131,213,34, +7,29,156,130,8,245,33,64,227,175,79,95,76,211,62,206,79,62,121,227,254,154,192,125,123,109,39,220,245,206,58,231,0,6,197,179,143,49,207,31,222,140,140,117,224,136,142,61,57,56,224,243,138,0,119,246,84, +221,119,70,9,245,222,71,78,135,229,247,25,39,56,63,163,255,0,177,156,140,51,194,51,220,7,244,234,6,194,7,78,235,207,76,147,197,66,108,101,110,172,231,216,12,103,216,98,46,254,252,126,66,149,44,102,94, +72,114,49,198,124,190,231,7,57,79,64,71,61,250,30,180,0,211,163,158,126,117,199,60,121,114,28,28,122,44,89,233,223,175,79,106,140,233,68,30,85,27,147,214,43,162,72,235,252,49,142,79,212,116,61,192,171, +45,109,40,198,17,88,245,10,219,50,125,198,20,227,208,242,62,130,158,32,188,81,149,182,136,140,158,67,19,147,147,199,39,156,231,176,236,122,100,80,5,95,176,21,254,13,189,0,62,69,233,94,135,168,192,235, +140,123,99,61,115,78,22,96,231,228,136,156,117,54,154,131,103,29,250,243,235,208,15,97,86,252,139,188,15,244,40,88,158,135,103,62,185,224,158,221,56,237,77,107,107,178,121,181,140,15,64,192,103,62,188, +31,126,252,114,51,198,40,2,185,176,39,57,16,17,212,3,167,223,237,29,254,240,144,126,164,241,249,24,141,139,14,86,43,70,0,114,27,75,191,198,126,190,122,158,49,201,192,57,198,120,171,158,69,208,0,45,186, +41,61,188,200,200,233,216,20,233,245,227,3,241,1,183,186,199,205,7,61,127,214,160,29,56,198,2,224,114,51,212,228,253,5,0,84,16,58,117,182,178,4,1,199,216,111,87,36,227,29,110,10,243,236,79,185,201,228, +17,201,156,253,154,215,28,130,126,195,63,39,62,247,3,140,15,81,142,64,29,113,107,109,212,89,30,66,47,61,238,113,147,212,140,249,131,183,62,222,158,146,111,184,198,124,164,32,3,210,234,28,129,198,49,190, +97,220,247,253,77,0,81,217,32,25,54,240,40,245,251,36,248,245,36,102,231,129,198,14,58,123,10,149,25,248,11,28,24,233,129,101,47,167,175,218,201,61,57,200,3,208,146,48,103,105,37,56,204,17,28,14,55,220, +66,127,81,48,252,176,122,15,122,64,88,227,253,30,3,207,107,136,129,231,3,57,19,146,78,51,140,231,156,250,224,128,42,238,115,128,32,83,219,54,128,30,188,125,235,174,153,199,111,110,7,87,132,100,4,151,139, +24,251,166,210,60,131,159,247,217,142,8,235,146,189,57,32,130,37,93,193,114,96,239,208,92,194,195,142,128,230,99,140,99,4,143,65,198,56,167,130,195,0,65,18,142,188,221,68,50,64,231,56,115,158,217,61,104, +2,13,172,71,5,113,211,139,91,85,39,212,3,156,158,231,191,78,78,121,167,140,140,126,237,207,25,202,195,104,23,29,0,229,136,4,31,196,227,142,42,113,42,241,186,40,115,235,246,160,113,236,113,40,4,31,211, +175,20,230,242,219,131,21,184,224,131,251,220,103,215,230,89,79,97,156,228,142,50,78,51,64,16,238,39,3,18,1,159,249,231,108,57,238,78,14,79,35,130,125,177,142,41,119,16,0,221,57,198,63,130,213,134,70, +50,58,231,245,29,199,92,138,120,88,135,72,108,243,200,203,93,28,250,231,13,57,25,227,145,142,217,221,215,19,4,129,198,13,181,155,0,57,253,242,144,126,191,188,39,158,48,120,207,95,74,0,173,230,109,234, +147,16,57,36,219,196,125,122,148,110,152,7,175,167,108,114,130,229,112,115,110,236,61,237,215,159,192,156,250,227,0,117,231,61,42,215,217,45,27,31,232,86,164,31,250,104,189,199,177,56,245,245,192,56,245, +18,37,156,31,195,99,107,158,121,18,246,244,24,70,29,62,159,95,80,10,66,92,28,173,171,123,230,211,32,126,185,254,96,254,28,41,185,151,167,217,120,62,182,69,143,228,36,29,56,228,96,119,224,154,212,22,113, +14,69,170,0,122,237,144,147,215,63,220,3,31,129,56,24,166,181,180,120,57,183,39,166,119,49,192,250,229,72,25,61,58,116,233,200,160,12,225,123,38,14,45,64,4,245,22,36,17,158,252,221,33,227,39,168,0,243, +142,105,194,230,67,130,45,129,61,243,104,64,231,142,72,188,227,166,114,79,215,166,106,239,149,8,28,67,140,129,208,185,29,191,186,128,123,99,145,205,35,69,25,193,84,147,175,253,52,0,12,244,229,120,200, +250,116,244,160,10,230,230,96,70,109,192,35,61,109,100,227,215,159,181,144,71,94,132,125,115,74,46,101,228,249,8,114,59,89,200,127,6,205,231,29,185,232,115,244,205,149,77,167,1,36,36,117,27,165,29,51, +219,129,233,142,122,30,163,21,40,36,2,12,83,158,123,9,8,238,121,192,36,253,126,188,116,52,1,84,92,146,0,48,66,127,238,31,43,158,157,136,153,190,164,231,130,48,41,225,157,136,38,214,223,28,242,116,230, +7,176,254,41,243,219,248,177,218,173,114,56,242,167,29,63,231,190,71,95,115,233,219,28,158,125,4,138,238,184,193,184,3,175,250,203,142,61,240,127,12,227,211,7,20,1,88,111,193,204,48,174,56,0,105,233,199, +79,250,121,207,168,197,0,183,0,193,19,14,72,31,98,10,61,71,91,163,215,161,232,65,231,184,171,166,118,7,153,174,113,140,115,52,224,99,140,142,184,199,169,4,113,138,65,116,167,63,189,155,208,143,54,115, +223,191,239,123,247,198,61,135,98,1,80,12,31,248,245,135,156,244,183,143,61,179,145,246,130,71,111,78,131,131,154,86,80,71,54,177,55,97,152,80,99,61,122,57,198,115,234,125,120,7,155,171,44,120,228,231, +158,119,52,196,241,199,105,6,14,73,224,28,31,110,106,194,201,111,129,215,160,60,139,142,15,67,130,46,1,198,7,160,200,238,40,3,28,252,167,254,60,225,198,6,113,25,28,0,61,14,51,219,169,250,116,163,17,147, +255,0,30,145,140,247,242,129,60,30,62,243,224,227,160,60,103,30,217,173,244,146,223,166,213,57,61,73,184,192,255,0,201,147,129,244,31,227,82,6,181,39,30,92,109,216,140,93,31,253,175,248,18,51,219,131, +138,0,192,16,199,193,251,26,14,115,196,40,6,71,76,28,183,231,144,71,95,65,79,17,174,113,246,72,143,3,4,172,100,244,231,230,224,241,219,245,206,107,108,125,151,4,249,40,7,31,243,243,142,122,146,26,224, +158,59,244,30,156,102,151,22,131,63,186,141,177,216,9,134,15,126,60,226,115,199,114,40,3,25,86,53,57,251,42,3,158,2,148,200,246,225,186,143,175,94,157,233,227,97,227,236,184,56,0,16,236,6,57,228,225,177, +142,190,221,0,197,107,6,179,232,214,145,176,227,56,73,73,24,245,204,255,0,94,113,131,250,212,128,216,31,187,103,7,60,2,201,113,198,115,206,4,227,62,216,253,59,128,100,130,0,255,0,81,183,158,166,65,219, +176,27,79,94,160,0,6,61,114,48,229,42,122,162,128,79,118,98,61,49,196,93,248,231,61,186,214,178,197,104,121,54,176,125,2,78,163,241,45,112,127,158,58,243,197,68,226,207,36,24,109,83,32,103,115,202,65, +246,226,235,0,242,79,241,126,61,104,2,154,133,207,8,0,39,168,47,239,207,250,188,28,125,57,244,230,164,4,3,202,177,231,254,121,231,140,100,253,248,135,60,231,39,142,164,3,210,165,41,102,65,200,180,199, +111,222,206,190,188,28,92,0,6,113,207,57,235,245,140,139,98,112,22,215,24,235,231,76,65,3,130,21,133,193,237,207,60,227,158,7,52,0,19,24,36,8,242,58,2,97,78,189,57,2,28,254,71,61,58,113,151,44,168,57, +49,196,7,163,68,87,30,160,109,131,7,57,224,114,123,212,69,45,122,5,183,245,202,206,253,50,15,95,60,147,219,7,156,246,29,169,224,90,41,195,24,122,224,22,184,36,14,14,51,243,49,29,241,158,252,116,160,9, +12,136,78,87,201,233,156,136,156,144,113,128,57,64,121,244,224,14,131,24,229,4,206,7,14,8,233,129,10,227,28,142,119,33,28,250,118,239,201,168,247,89,130,74,249,15,254,237,203,244,255,0,116,12,19,156,247, +199,251,64,228,22,31,178,176,31,52,107,199,65,44,167,211,184,200,237,239,235,237,64,19,25,29,137,37,163,245,249,173,163,111,212,66,73,39,175,61,56,29,114,41,172,231,177,82,122,101,108,227,198,73,207,0, +198,1,201,207,97,211,143,106,140,34,199,18,38,49,143,191,41,206,58,125,226,49,219,160,3,158,7,38,154,94,37,7,34,54,57,238,242,115,192,227,135,192,239,140,19,244,227,4,2,233,145,134,63,116,199,3,131,246, +43,126,152,236,60,188,123,115,235,215,166,98,118,98,78,248,220,15,95,176,219,254,7,30,94,223,235,237,218,160,89,34,63,242,198,60,244,225,166,63,65,149,200,227,219,63,159,5,119,40,25,22,145,182,61,94,110, +254,185,101,61,79,161,247,247,0,118,229,199,10,192,241,215,77,180,233,156,114,54,243,159,94,51,147,129,72,8,206,65,25,3,182,155,104,64,60,250,169,7,30,184,237,199,173,25,227,38,194,3,142,114,206,248,235, +252,63,56,207,167,78,190,181,19,72,1,192,178,183,200,235,144,228,117,61,196,234,51,207,78,252,100,113,192,4,187,220,3,151,39,190,63,179,172,201,7,146,122,219,250,144,49,207,94,181,17,149,193,25,102,32, +228,143,248,150,233,255,0,47,229,7,0,103,174,7,83,145,218,131,51,48,255,0,143,11,66,48,8,206,241,200,60,244,187,207,76,231,160,164,89,103,193,11,167,219,237,28,6,12,248,246,63,241,252,164,14,221,9,24, +228,1,64,8,100,110,165,100,108,240,113,166,88,147,249,139,126,128,115,193,237,207,188,91,144,158,146,131,131,131,253,149,102,71,25,238,109,198,15,112,58,251,117,53,41,146,227,156,89,219,228,158,129,202, +96,113,145,243,106,139,237,142,125,120,32,82,239,185,198,126,201,108,51,142,13,193,7,147,233,253,168,113,156,231,35,233,201,52,1,14,216,248,35,204,61,122,233,182,132,30,115,201,17,113,239,212,246,201, +206,105,12,107,142,12,156,116,255,0,65,128,123,127,207,47,200,96,231,210,167,219,49,231,236,182,185,239,251,230,108,14,195,63,218,61,142,121,239,154,66,151,56,193,182,128,118,192,98,51,249,223,227,223, +39,128,122,240,121,0,172,54,161,235,57,227,39,253,10,12,126,63,32,235,212,28,2,7,215,20,134,86,254,17,33,7,174,44,227,3,60,122,39,31,135,231,233,96,253,168,127,203,188,99,166,10,201,6,56,207,63,241,251, +156,227,185,30,188,244,166,179,93,3,129,25,3,175,18,70,9,235,253,219,131,142,188,115,159,94,115,64,21,252,217,6,51,191,254,5,108,189,198,57,249,51,215,208,147,233,207,52,214,121,121,249,89,189,49,110, +199,232,65,202,227,242,60,119,171,139,37,241,28,44,228,122,137,215,31,142,102,39,216,118,199,208,210,22,187,111,188,183,30,164,121,232,122,119,192,159,158,152,237,156,80,5,61,210,14,137,32,201,28,11,119, +61,79,251,231,7,220,96,122,241,78,6,124,224,121,224,28,156,253,157,199,95,163,129,219,183,111,175,54,63,124,71,43,112,15,56,249,208,156,147,220,9,250,227,147,199,111,76,83,134,123,199,51,17,254,218,122, +14,73,19,28,129,232,123,117,230,128,43,134,152,30,55,241,216,197,48,244,224,226,81,233,211,56,20,239,58,97,209,92,100,128,127,117,46,50,112,58,188,152,228,142,58,228,250,103,53,107,115,231,253,84,160, +118,203,142,135,57,228,205,143,94,167,241,61,129,36,137,200,73,122,246,149,84,231,140,129,139,142,120,234,120,224,145,129,138,0,170,102,156,231,46,123,156,20,98,0,63,89,49,219,159,243,151,12,144,49,36, +68,145,209,163,43,215,211,230,35,167,169,199,214,172,125,160,245,34,92,242,112,110,254,131,181,200,244,245,252,169,191,105,32,255,0,203,81,199,67,113,49,7,183,240,221,0,7,29,7,160,7,52,1,24,128,159,188, +208,128,113,206,209,198,113,234,72,31,90,112,183,94,237,27,28,246,8,7,36,245,59,59,12,16,125,199,3,154,120,185,76,242,187,178,115,204,147,156,99,166,127,210,189,59,3,211,215,154,105,150,220,253,229,139, +62,167,120,0,227,251,198,229,184,60,112,121,224,227,52,0,241,107,30,1,97,26,227,159,155,97,250,129,186,22,61,0,56,198,6,71,175,45,146,210,212,231,152,24,227,128,85,9,231,57,201,242,127,48,121,244,228, +102,129,45,169,254,11,98,56,233,44,132,30,59,17,57,237,223,208,31,106,113,123,95,238,192,61,150,89,123,15,105,253,70,7,39,30,188,16,0,43,253,142,204,100,133,181,199,114,209,161,61,177,202,192,70,15,56, +206,58,16,51,79,22,214,167,3,22,103,158,129,78,127,244,71,95,80,1,233,82,249,182,157,0,132,28,117,15,112,79,78,79,19,145,239,199,2,160,103,135,57,6,46,157,67,72,61,123,22,57,245,199,122,0,113,180,182, +206,64,181,25,236,80,47,24,231,25,178,60,224,254,126,244,162,218,220,28,121,80,48,247,11,131,192,199,31,100,24,246,249,125,15,214,50,209,156,100,41,35,176,47,206,122,112,70,51,131,211,168,230,157,186, +60,19,180,15,164,36,145,237,243,3,219,56,234,51,235,214,128,38,16,194,188,8,97,11,145,140,135,35,182,6,22,220,99,160,28,14,79,124,28,211,182,198,167,229,251,56,35,31,193,114,49,158,160,19,14,51,147,131, +223,25,199,53,10,200,49,129,184,156,143,249,100,184,207,92,224,160,199,64,126,153,201,206,105,217,126,78,64,207,253,50,4,12,96,242,66,159,160,193,228,116,238,64,4,196,3,222,220,116,224,155,174,65,193, +227,247,32,123,251,103,167,64,26,81,115,204,150,203,234,8,184,39,190,127,229,150,122,254,125,128,166,44,178,47,221,36,17,208,236,101,4,131,235,144,7,80,122,231,169,226,158,110,174,6,62,105,6,65,237,47, +111,70,14,64,57,199,106,0,25,20,16,65,183,35,158,55,74,189,189,25,15,235,158,72,62,181,42,144,57,81,107,158,114,12,251,79,212,102,28,243,144,59,244,201,227,172,63,109,187,24,219,43,17,208,110,243,50,113, +215,24,83,199,126,71,92,241,142,42,51,121,122,220,9,16,227,213,165,92,115,215,38,44,122,122,140,247,227,0,2,219,16,113,242,218,3,129,210,104,148,119,31,196,185,201,3,169,4,159,203,12,44,153,229,108,143, +32,127,199,197,176,35,7,25,63,42,156,142,228,140,224,117,57,192,174,46,239,57,204,139,192,32,225,164,110,0,200,56,242,71,227,215,158,231,28,187,237,87,28,49,145,50,49,206,217,136,25,199,162,112,127,28, +251,240,104,2,93,209,131,194,217,140,118,243,237,200,193,207,66,114,51,198,120,60,100,12,17,72,204,159,243,206,220,140,15,187,45,176,24,200,28,225,70,59,122,123,251,64,247,50,156,252,193,129,57,192,107, +133,28,3,212,20,29,71,31,151,76,208,36,156,140,132,82,7,98,215,7,175,78,54,158,217,232,57,231,158,180,1,40,195,18,4,17,145,223,55,86,203,248,12,145,207,211,131,145,158,51,73,132,65,159,177,194,125,254, +217,105,187,223,61,51,156,227,142,253,1,239,8,121,115,243,66,79,61,164,185,227,160,35,133,192,237,219,215,61,233,75,202,185,197,180,131,129,210,105,215,158,189,3,103,241,192,63,135,80,7,153,33,108,255, +0,161,71,207,165,205,177,56,0,114,78,71,94,188,28,12,122,99,9,230,70,79,22,152,31,245,218,215,230,231,182,39,207,98,71,25,227,29,70,42,51,43,131,255,0,30,178,177,7,39,247,215,25,62,189,88,103,166,15,83, +212,122,96,243,37,32,127,161,190,58,115,60,138,70,125,1,124,143,200,103,215,52,1,49,144,118,183,0,119,253,236,39,215,186,206,63,250,223,150,99,46,164,243,22,49,254,218,145,159,82,55,57,61,50,73,61,122, +102,155,186,124,143,244,23,60,245,19,110,3,233,186,78,58,14,48,7,39,191,52,165,167,63,242,233,38,61,26,76,14,253,118,224,12,19,156,243,142,121,32,208,3,247,41,224,70,70,56,251,205,193,235,144,0,31,137, +193,200,206,49,147,74,190,111,85,4,14,216,36,140,247,57,224,228,123,228,147,156,224,241,80,134,144,103,253,15,45,255,0,93,206,56,60,231,39,143,78,131,219,142,66,6,185,201,219,103,24,29,70,110,114,79,67, +208,185,233,207,29,123,224,80,5,162,36,234,89,64,36,245,12,195,142,112,65,82,51,211,0,129,159,97,75,134,231,18,199,201,228,24,163,108,117,227,253,81,199,29,71,230,50,70,32,205,216,235,111,16,31,245,213, +9,7,142,133,155,30,163,24,239,212,82,31,182,228,226,24,242,65,233,52,0,250,117,220,112,121,4,224,147,142,114,7,64,9,247,182,0,251,68,107,142,194,221,51,129,198,112,35,83,234,57,24,224,31,168,20,224,183, +218,215,7,57,255,0,71,35,211,140,136,136,237,200,228,122,230,171,99,80,32,129,28,56,110,62,105,151,223,57,30,91,131,159,76,99,158,106,69,181,212,88,127,169,183,201,0,228,132,124,242,59,249,4,131,211,174, +14,57,239,64,18,18,224,41,251,108,120,29,188,177,206,59,12,219,28,143,78,49,131,238,41,124,199,60,11,232,70,127,233,132,125,253,63,208,207,183,161,227,184,234,134,195,81,35,152,173,49,145,156,70,132,142, +121,224,70,57,57,198,72,193,244,235,73,253,157,126,56,217,110,189,127,229,146,142,157,114,66,130,57,238,115,158,157,49,64,15,11,49,228,94,70,65,224,17,109,30,56,199,165,138,19,211,158,72,25,28,228,243, +25,73,250,253,190,53,235,143,220,169,253,13,190,63,28,119,199,20,167,78,190,39,6,59,98,7,77,192,3,219,175,24,244,199,229,223,52,191,217,247,221,4,54,188,127,215,51,199,224,164,231,255,0,173,220,140,128, +70,99,151,157,218,140,100,14,131,202,80,51,235,197,176,231,215,131,211,184,170,229,28,31,248,253,80,51,145,242,32,28,244,192,54,188,31,212,85,177,103,122,48,26,43,94,1,198,216,213,185,247,253,217,0,100, +142,227,235,138,141,173,238,151,254,88,90,224,117,30,90,130,57,30,137,158,51,219,255,0,172,64,34,30,96,233,118,15,29,120,255,0,227,32,115,215,128,58,224,10,105,50,156,255,0,166,147,140,240,164,113,236, +0,132,128,121,235,235,130,106,93,147,12,238,130,199,211,230,86,4,255,0,227,163,145,142,131,36,18,123,230,144,103,169,180,210,242,79,86,68,228,145,192,249,193,228,131,156,19,212,15,173,0,87,45,55,107,199, +233,215,116,120,198,61,60,181,199,175,78,188,250,208,170,248,230,233,200,199,247,17,179,215,28,134,199,226,7,80,61,115,83,52,187,115,139,93,45,123,124,171,10,231,142,115,242,245,206,123,99,208,10,132, +220,178,156,180,22,0,28,131,181,144,156,244,247,235,199,32,159,106,0,82,159,222,184,115,233,133,199,242,148,1,223,243,60,245,203,14,23,4,220,92,96,99,238,132,32,158,221,110,115,200,199,24,206,49,77,55, +138,120,49,88,228,30,1,100,39,175,92,16,48,58,228,16,125,135,90,62,210,135,254,89,233,224,143,250,228,199,183,99,32,227,35,184,235,219,24,160,9,55,166,56,123,166,231,210,50,127,38,184,24,239,206,239,160, +205,27,144,117,91,194,113,215,17,1,158,253,110,58,28,112,1,247,60,230,161,55,41,159,187,98,6,15,240,71,216,12,156,137,8,235,223,143,110,185,164,50,66,220,178,216,30,58,151,136,17,142,157,39,28,103,169, +201,29,192,61,192,37,14,63,233,236,3,212,149,136,231,24,200,192,184,30,185,4,231,29,187,229,165,200,229,126,211,255,0,124,199,156,100,244,2,224,145,192,245,207,63,157,114,109,155,239,13,63,212,147,60, +99,160,233,196,195,220,140,159,199,214,23,48,96,224,216,119,192,23,49,227,140,227,143,181,126,3,143,195,173,0,92,4,176,60,221,231,156,3,28,125,190,178,17,207,79,196,82,5,144,96,238,185,245,32,199,25,63, +79,148,55,243,198,127,92,198,242,199,221,125,61,120,3,153,83,223,57,255,0,72,60,231,215,142,113,80,31,40,30,100,176,247,6,84,227,7,147,197,201,56,206,78,70,61,8,236,64,53,93,165,0,144,46,25,123,145,28, +126,189,49,176,158,248,233,208,103,222,171,22,184,228,40,188,25,60,226,16,192,115,219,8,15,211,25,200,198,123,138,207,100,136,158,30,197,113,223,204,137,179,255,0,125,220,28,145,198,50,125,65,21,25,140, +0,71,155,98,114,79,31,184,60,115,215,23,42,121,30,156,119,227,140,128,95,50,222,47,95,181,99,158,90,218,76,31,199,201,32,127,95,214,171,57,188,57,32,202,1,231,30,76,192,142,156,100,65,142,157,64,233,212, +228,241,85,93,128,200,243,44,7,92,115,6,56,227,169,187,110,112,6,120,227,140,118,170,237,43,47,30,101,151,39,32,143,178,147,140,246,62,99,103,25,60,100,158,221,104,2,227,27,252,31,248,248,198,58,136,103, +239,199,67,108,122,255,0,135,53,92,155,222,65,243,207,61,173,164,238,0,231,253,5,178,115,158,248,245,239,84,90,230,225,115,182,91,81,211,24,134,221,143,161,231,36,123,227,167,127,172,6,234,243,60,53,177, +39,24,38,202,6,201,201,231,32,28,231,174,49,140,112,49,198,64,52,24,220,158,89,38,61,135,250,57,192,56,233,205,145,25,207,175,76,224,96,212,14,179,224,17,12,135,142,79,145,235,208,227,236,3,145,158,167, +39,159,173,83,55,55,228,125,235,124,231,140,233,144,156,115,142,127,116,73,235,158,253,242,105,166,125,64,158,150,248,246,211,35,198,57,233,136,193,231,234,57,231,189,0,61,204,224,99,202,98,125,60,133, +231,216,102,208,12,244,235,158,122,231,165,70,18,224,231,247,51,16,122,226,222,28,231,215,31,99,35,142,59,228,28,227,174,106,19,113,124,88,133,40,49,216,105,167,216,228,225,115,158,49,193,7,190,50,56, +174,242,223,168,4,200,184,32,99,254,37,174,1,199,169,218,79,62,231,174,79,24,2,128,45,60,115,129,196,36,0,79,88,98,233,131,255,0,78,132,3,239,198,59,99,138,166,194,98,112,97,98,58,18,34,135,158,14,7,54, +170,120,232,71,65,159,92,102,35,115,121,140,101,27,156,127,199,148,224,140,30,196,68,112,1,57,36,131,215,233,85,204,247,188,228,160,32,158,182,151,28,243,215,229,183,61,189,79,174,113,210,128,38,48,186, +158,109,166,199,56,196,54,199,62,156,152,7,231,130,122,156,116,205,103,4,17,152,36,24,207,38,59,69,25,24,29,173,142,113,158,163,24,206,121,206,12,109,37,209,236,153,206,57,180,189,24,24,231,164,67,61, +243,215,190,7,122,137,154,224,19,188,194,48,57,38,214,249,79,175,86,141,122,96,3,131,215,24,244,160,9,139,176,60,67,145,192,203,69,111,234,15,24,137,70,114,112,0,57,237,80,179,183,81,17,62,254,76,56,3, +223,0,17,207,208,17,145,235,80,52,143,222,104,16,99,254,120,222,47,3,56,24,3,147,129,142,57,62,244,214,153,2,144,215,54,231,241,189,70,244,39,104,92,159,113,222,128,17,231,151,174,205,188,159,249,100, +131,57,35,166,25,112,49,199,60,115,198,14,105,162,102,198,118,177,201,199,17,169,60,118,56,185,95,115,192,252,69,64,205,17,235,60,121,25,237,116,121,250,144,70,121,231,159,194,162,105,34,124,129,58,28, +113,143,223,103,215,169,139,36,115,199,56,24,224,147,64,22,30,87,0,224,178,231,25,221,9,207,126,226,240,12,103,167,94,112,58,156,85,99,60,220,143,55,161,233,229,48,207,3,159,248,252,111,229,81,63,146, +65,221,36,120,206,14,75,174,120,255,0,174,121,224,246,200,227,28,122,87,97,1,206,13,185,3,140,157,227,4,231,161,49,99,145,142,252,224,224,113,64,22,188,215,108,126,246,30,189,91,104,252,57,184,57,228, +30,49,245,200,168,154,114,160,143,54,12,142,120,198,125,177,178,224,122,123,145,237,222,155,36,29,141,175,176,204,141,235,212,132,247,234,127,83,80,176,132,2,15,217,61,115,137,51,158,159,243,204,159,212, +142,216,160,11,77,62,122,180,45,159,95,51,31,250,84,163,167,169,207,74,169,36,187,142,21,45,84,14,51,243,41,238,14,127,210,15,92,114,14,78,56,228,98,171,176,182,228,51,91,115,223,108,156,31,98,16,122, +96,228,126,21,17,91,51,206,33,108,30,54,253,167,143,81,201,3,61,248,29,250,241,64,18,179,142,112,45,184,234,197,164,235,200,3,63,105,227,140,244,3,245,53,89,155,140,238,181,238,78,76,167,223,179,183,81, +206,73,29,248,197,68,241,90,54,127,116,120,60,109,89,143,177,254,34,57,231,30,189,207,164,123,109,19,143,41,199,92,2,37,95,78,184,224,103,212,228,158,216,160,9,139,190,6,30,200,227,140,17,63,79,92,132, +112,114,58,224,231,61,177,205,68,93,255,0,189,98,1,234,64,184,31,158,109,255,0,30,249,230,162,111,178,245,251,57,98,63,218,155,62,231,229,95,111,127,167,122,99,203,110,189,45,216,1,199,222,148,158,156, +96,16,9,199,215,159,126,224,15,121,120,0,155,98,123,96,202,114,71,94,26,216,231,142,120,198,113,215,210,50,242,0,48,34,199,166,217,9,4,140,242,68,0,250,144,63,157,48,92,68,217,196,50,0,56,24,89,61,249, +31,56,201,228,117,207,189,70,102,140,127,203,57,206,61,18,64,73,227,251,210,31,65,215,3,190,113,64,15,105,229,236,34,244,249,150,112,126,184,251,55,3,159,94,126,241,168,154,107,172,18,173,6,51,198,35, +153,129,200,235,131,108,58,245,237,128,48,58,156,141,44,71,3,202,188,4,245,218,15,174,48,78,240,61,65,193,199,92,156,12,210,22,86,24,88,174,73,228,125,240,15,29,7,252,124,14,221,121,24,192,197,0,39,157, +125,193,50,167,251,171,103,112,220,100,1,141,177,15,212,30,41,173,115,168,127,14,198,25,228,181,172,203,147,219,3,203,61,58,245,247,233,73,182,80,120,183,186,108,30,15,153,25,25,193,235,155,135,31,211, +159,83,138,65,246,128,78,45,167,25,233,184,196,57,239,200,144,103,39,156,103,177,198,6,40,1,68,215,204,57,42,15,124,91,190,79,226,225,79,0,227,143,98,105,173,37,240,228,169,110,227,253,25,64,224,227,156, +176,7,243,226,154,255,0,111,35,9,28,195,57,224,58,2,71,25,57,91,129,140,110,227,42,79,168,60,84,30,94,165,145,255,0,31,35,131,187,247,138,112,56,227,254,62,64,235,199,63,134,121,20,1,33,158,248,100,236, +36,147,211,202,132,115,255,0,127,179,207,161,30,135,210,163,55,23,228,224,65,201,56,249,237,162,198,224,58,113,40,227,131,208,242,113,72,97,189,110,12,151,95,77,216,198,51,211,109,224,7,25,231,24,238, +72,224,229,162,215,80,29,13,217,3,63,242,217,199,175,111,182,158,254,185,199,60,80,4,191,107,212,20,96,219,198,56,221,129,107,25,224,119,201,184,32,15,168,207,39,142,244,130,246,247,156,196,163,233,105, +9,36,100,247,19,168,206,79,82,120,207,126,241,125,158,240,103,49,92,55,35,150,158,99,211,217,111,122,156,28,243,248,212,109,13,230,224,4,82,227,158,25,238,14,51,255,0,113,2,79,225,233,64,22,254,219,117, +140,24,95,62,162,210,44,116,239,182,82,127,14,148,167,80,153,65,223,19,99,184,242,32,81,147,235,185,136,4,228,117,61,57,197,82,48,94,12,31,41,243,200,200,91,134,224,117,233,120,79,39,212,142,122,131,201, +166,133,156,117,73,192,227,39,202,185,36,244,207,252,189,17,244,57,36,243,158,148,1,123,251,68,48,249,182,174,57,35,201,178,221,143,160,39,57,236,49,159,214,148,106,43,183,3,28,227,165,189,159,24,57,198, +78,227,248,112,113,233,197,82,2,92,31,150,97,211,31,184,184,3,156,245,205,207,227,199,191,214,147,231,0,238,89,57,254,252,19,254,25,204,231,3,208,247,247,197,0,90,109,77,27,130,84,17,193,197,157,150,48, +123,100,169,232,59,112,9,63,147,126,213,19,231,115,103,32,103,253,14,219,28,250,17,24,24,231,129,215,156,2,113,80,229,72,27,150,48,71,102,73,242,57,227,187,14,231,57,245,197,48,72,139,208,67,142,219,146, +224,99,183,28,99,191,110,125,59,80,5,145,37,190,112,192,103,3,147,105,111,142,190,138,87,146,120,28,156,28,122,83,90,75,81,147,134,228,242,22,218,215,28,240,71,44,61,121,253,123,84,2,229,51,243,11,65, +207,37,226,148,145,239,144,9,199,36,99,175,175,106,105,188,218,126,87,176,81,158,190,76,185,207,253,242,61,177,142,227,166,58,128,72,30,220,134,194,203,223,7,200,183,0,122,228,249,163,146,15,52,84,95, +108,39,254,94,44,240,63,233,155,14,59,145,251,140,245,236,58,159,64,104,160,15,189,67,51,100,125,150,240,128,58,21,113,158,189,183,183,4,28,14,252,12,30,212,255,0,44,131,159,236,251,198,247,196,153,97, +235,196,128,96,244,239,143,160,21,107,98,177,194,168,192,60,31,44,14,127,239,146,79,111,124,227,52,159,102,36,1,133,206,120,39,3,0,244,36,8,199,94,113,131,207,56,235,146,1,84,163,117,26,101,232,199,92, +71,41,7,7,145,196,170,14,125,51,244,246,137,150,83,156,105,87,109,140,125,235,121,155,211,184,184,3,190,123,244,246,53,109,173,143,33,182,3,211,133,221,207,108,22,81,156,246,35,24,239,214,160,54,195,39, +150,111,93,170,127,81,130,57,246,235,142,121,160,8,132,110,115,141,42,232,14,167,253,26,76,126,36,207,142,120,0,30,190,252,208,34,147,60,105,114,228,227,27,173,192,252,50,210,158,61,56,228,231,36,241, +74,96,25,60,63,114,115,14,113,130,71,81,31,114,125,143,78,181,24,130,19,157,202,65,235,204,11,142,163,248,142,51,158,158,131,128,64,230,128,30,201,63,7,251,58,80,0,35,62,84,67,158,9,219,243,140,140,99, +0,228,254,180,135,237,3,0,89,205,140,227,253,74,116,199,76,40,7,63,82,127,197,166,11,83,193,82,113,207,203,4,103,145,207,60,169,28,125,79,183,60,163,90,65,253,217,70,79,81,12,100,1,215,251,252,14,71,99, +140,142,40,1,165,238,186,11,57,155,175,62,81,7,143,160,39,184,206,51,219,25,60,23,22,188,56,31,101,185,3,212,195,41,63,134,25,114,51,144,78,79,67,208,140,82,253,146,16,112,162,94,125,99,140,103,39,143, +226,28,99,219,183,124,212,162,222,1,156,249,196,130,79,221,139,177,192,206,236,140,142,15,62,156,98,128,43,249,151,35,164,87,4,224,112,45,228,36,118,199,204,73,198,49,158,130,147,206,189,200,196,87,0, +3,206,235,124,3,199,29,74,131,211,63,92,131,237,49,142,220,15,249,108,49,192,226,223,249,22,25,237,140,96,142,253,69,38,45,185,192,156,147,207,34,31,230,9,206,72,4,99,60,242,57,160,8,132,247,132,156,199, +112,57,224,249,32,15,76,242,140,6,115,199,160,231,62,140,51,93,147,146,247,24,236,12,100,227,28,99,229,136,0,6,15,127,198,167,9,16,4,98,84,255,0,129,68,14,50,125,73,36,126,68,122,142,206,88,237,200,60, +200,58,140,238,132,31,76,113,249,224,143,233,64,21,124,203,146,63,214,77,145,216,71,50,250,0,14,20,1,131,239,142,121,52,207,54,124,146,210,76,118,158,113,29,200,57,250,227,156,100,118,57,244,205,93,49, +66,114,1,152,231,140,7,92,227,167,4,33,231,29,240,121,245,235,81,24,227,0,224,204,59,114,227,29,135,24,136,1,147,147,158,160,246,35,138,0,174,102,124,243,231,31,77,203,56,57,255,0,119,104,60,131,245,239, +143,150,154,100,36,252,200,196,122,149,186,221,239,194,169,207,182,113,215,175,92,88,37,87,31,60,159,83,33,24,35,143,225,131,185,233,250,116,229,172,202,120,12,192,99,130,38,155,118,15,186,198,1,254,120, +235,64,17,238,92,140,67,38,122,224,11,176,125,59,175,167,183,94,163,189,72,31,60,27,105,14,123,135,159,128,64,193,59,99,7,35,62,220,228,28,99,21,9,57,200,204,164,244,31,233,19,168,247,39,10,160,113,156, +124,204,51,142,180,132,182,51,182,118,198,63,229,226,239,169,39,177,25,232,61,191,196,2,82,192,12,152,103,206,49,254,178,248,158,58,244,0,19,207,76,244,56,164,222,164,28,219,93,122,150,45,126,79,56,224, +140,99,211,156,158,222,198,154,12,184,226,25,113,219,55,19,228,159,78,88,250,115,147,249,245,167,44,146,140,226,218,86,57,7,30,124,175,235,158,11,227,232,6,63,58,0,3,196,57,251,61,227,19,129,242,181,226, +250,147,203,48,7,129,147,145,158,224,122,59,207,80,120,180,191,199,32,19,45,195,12,125,12,131,211,166,8,253,105,166,91,140,0,150,141,143,121,27,39,62,160,185,39,211,145,237,158,113,73,230,93,243,254,134, +220,14,130,103,94,59,146,4,203,142,216,224,1,212,99,138,0,148,93,5,249,190,205,124,191,79,48,250,158,72,124,243,206,51,199,67,197,60,93,103,36,69,120,160,129,128,96,156,147,233,140,55,110,51,145,198,123, +10,132,79,122,62,237,153,200,60,127,165,48,36,140,255,0,211,110,167,245,207,106,127,155,169,146,51,104,164,19,252,87,37,191,12,137,199,126,112,65,246,199,90,0,178,151,24,254,11,160,113,206,109,95,142, +188,225,136,231,159,174,15,113,82,173,211,142,162,228,103,60,125,145,75,48,245,225,216,140,147,212,231,142,125,106,170,255,0,105,142,182,131,147,215,207,35,184,235,153,142,112,122,125,126,149,50,157,68, +142,108,211,158,198,98,199,242,18,241,143,214,128,37,243,242,63,229,231,60,143,248,243,7,7,184,206,78,15,110,7,227,75,230,185,227,51,1,200,201,179,140,158,113,198,75,14,62,185,201,199,113,81,1,124,50, +13,164,43,140,31,188,121,199,168,28,147,223,168,250,211,203,94,115,139,116,198,57,42,178,244,239,209,136,52,1,32,80,220,153,36,3,147,159,178,68,15,231,188,115,223,57,56,7,140,211,128,3,169,147,254,252, +39,78,113,209,207,78,221,58,247,21,16,107,142,141,11,3,147,247,68,158,152,29,79,80,59,241,211,30,198,85,23,25,225,156,14,63,138,64,195,156,243,243,245,228,227,32,251,112,40,2,95,47,112,3,50,119,193,22, +236,125,255,0,135,142,123,12,96,117,57,24,20,27,114,163,12,247,3,60,140,193,46,48,58,240,138,64,28,231,167,211,208,38,101,232,93,193,7,128,100,147,31,171,241,234,120,25,227,52,224,178,145,254,181,192, +244,86,152,227,28,145,133,147,30,156,131,211,142,195,0,17,53,190,58,180,248,199,56,134,95,208,121,100,246,235,142,59,100,230,162,54,227,24,6,224,228,31,249,103,112,8,7,174,21,98,29,58,158,79,225,86,12, +121,231,205,152,227,175,207,63,29,248,62,112,252,71,76,17,207,81,77,37,1,218,101,147,183,222,105,248,3,62,147,30,221,243,239,210,128,43,125,141,123,205,116,188,228,29,183,120,247,224,196,163,215,129,239, +77,242,66,117,186,159,111,188,114,159,83,141,204,132,251,122,244,29,58,219,45,16,235,54,14,59,202,224,145,244,50,113,207,4,130,114,113,199,122,93,241,244,23,36,2,58,121,142,79,65,220,73,207,226,14,104, +2,158,19,57,251,83,142,188,237,96,196,250,231,97,253,115,233,129,75,185,64,3,237,79,142,153,232,127,91,102,247,232,63,0,7,54,178,164,156,221,149,7,28,249,142,15,227,135,35,158,127,15,210,70,88,200,24, +189,83,244,146,78,132,129,211,204,3,140,14,56,31,92,130,64,43,172,132,253,219,166,227,36,22,98,112,125,241,98,121,227,31,215,140,135,25,10,253,235,142,50,122,22,35,234,73,181,85,199,65,215,60,115,142, +41,196,42,240,110,3,31,93,242,254,187,88,224,115,239,142,188,99,133,249,8,56,157,6,70,112,207,112,73,233,142,11,241,219,146,49,245,56,4,1,86,232,100,3,112,167,146,57,199,111,127,40,122,31,161,245,29,44, +253,165,78,1,49,176,192,244,61,7,182,14,122,228,142,189,79,113,76,85,76,231,237,81,103,140,128,215,32,125,112,28,130,59,19,238,71,56,205,76,4,92,19,53,187,1,253,227,118,122,125,31,183,108,1,215,24,61, +192,25,246,132,233,186,33,219,238,228,125,48,95,112,250,128,71,226,48,94,46,35,3,230,104,8,244,42,71,183,69,80,127,19,146,58,147,142,76,202,32,97,157,246,228,118,194,222,142,71,161,220,121,25,231,245, +39,165,72,26,29,192,41,140,123,170,222,18,61,0,1,255,0,14,57,252,232,2,184,146,221,129,5,99,39,213,100,153,8,235,199,64,72,207,167,24,35,240,80,33,35,59,1,233,192,154,228,103,158,156,18,57,247,63,74,177, +184,3,254,177,119,30,48,99,189,252,63,229,168,207,212,227,25,226,148,16,220,23,141,143,82,60,155,242,70,51,142,11,183,99,156,250,118,60,228,2,29,150,196,224,70,58,242,76,215,156,253,72,145,72,207,110, +252,83,124,171,115,214,5,200,39,157,247,46,57,245,221,116,48,79,97,199,25,60,96,10,177,229,130,126,236,31,247,226,251,60,243,142,135,176,244,30,253,178,243,110,157,51,108,132,156,101,160,191,29,125,115, +25,28,244,247,199,126,40,2,159,149,104,113,136,148,31,251,120,32,242,7,4,221,96,242,127,250,252,226,152,109,109,123,193,19,103,61,126,210,123,240,15,239,79,225,215,235,154,190,246,68,242,175,105,142,73, +2,11,145,215,156,14,51,234,0,35,143,199,1,191,102,224,124,209,22,198,62,91,57,152,99,241,143,156,99,175,6,128,51,62,195,106,79,22,246,200,125,118,220,2,15,252,9,201,207,7,183,115,159,105,69,148,35,141, +150,100,122,25,39,80,14,61,164,200,60,96,3,211,145,223,139,191,101,76,242,80,122,3,96,203,223,143,249,102,221,249,201,192,164,54,187,65,225,56,60,127,161,129,143,111,245,13,158,49,140,142,63,80,1,92,90, +91,227,253,77,152,62,158,125,201,207,78,129,110,135,124,240,70,123,116,197,59,236,176,131,194,88,100,31,227,146,232,227,191,79,182,240,61,8,24,60,227,218,83,105,198,119,71,211,39,54,125,56,7,160,135,159, +115,223,183,39,32,22,132,244,17,49,60,127,199,155,140,103,161,255,0,83,159,215,245,232,1,24,182,83,210,61,47,61,112,126,209,200,245,207,218,122,127,44,244,224,138,113,179,118,192,3,73,252,165,56,250,3, +112,51,239,192,199,190,13,41,177,113,144,97,139,158,73,16,149,192,239,199,151,145,212,144,51,156,28,15,74,13,145,7,238,197,199,81,176,147,235,255,0,60,200,207,56,199,176,201,244,0,143,236,14,196,230,77, +36,30,120,217,46,49,200,193,205,231,65,199,60,3,208,14,134,155,253,155,47,24,109,36,129,223,202,144,247,247,188,232,51,140,116,167,249,44,153,27,35,228,116,16,146,123,103,143,41,125,176,126,131,142,180, +207,41,129,249,163,29,200,196,45,207,25,24,0,243,212,231,240,224,227,144,3,251,46,70,227,204,210,20,241,144,34,102,227,25,57,205,249,61,49,216,131,223,20,255,0,236,102,95,191,62,152,121,200,34,16,184, +234,120,197,222,121,62,191,92,247,166,108,112,14,33,127,98,45,220,113,239,130,1,250,254,180,132,203,206,33,110,220,44,109,156,247,200,50,96,18,14,121,60,241,211,176,3,206,140,191,196,246,7,212,136,1,35, +7,57,57,186,62,221,8,56,247,197,70,250,74,40,249,100,178,227,130,62,203,9,7,29,142,235,165,4,245,234,73,227,29,105,55,220,14,177,140,103,39,48,158,157,15,241,16,113,233,207,191,64,4,91,166,206,60,148, +96,79,4,196,220,116,201,63,188,25,224,126,30,227,4,0,41,210,215,57,221,103,235,148,183,180,28,244,206,62,216,231,166,125,57,207,61,5,31,217,138,55,101,162,63,240,11,69,233,215,254,94,59,250,156,96,246, +166,16,72,249,173,163,245,226,34,113,207,94,101,224,140,115,198,59,168,230,154,124,174,240,168,233,214,8,207,39,253,233,25,135,167,80,15,189,0,43,88,64,58,237,39,177,88,173,219,129,207,81,113,158,254, +157,186,212,127,101,141,71,8,205,219,253,90,12,116,3,164,141,207,227,143,211,50,141,153,27,109,226,60,118,142,17,145,232,127,120,63,60,131,156,115,218,130,33,61,108,225,35,208,172,92,254,87,45,248,146, +63,159,0,17,8,98,57,202,99,25,231,229,30,216,31,55,81,198,72,61,59,81,182,17,252,35,167,121,17,113,248,134,207,167,182,15,90,144,173,176,24,54,54,255,0,130,167,224,57,156,231,61,65,206,15,231,76,101,182, +231,253,6,212,18,121,36,198,185,201,61,64,184,0,158,57,239,237,154,0,140,253,156,231,33,115,201,31,233,0,96,243,237,143,192,251,116,61,27,178,220,240,118,100,115,145,112,1,227,191,167,29,122,113,158,217, +163,202,182,56,255,0,70,182,94,121,199,217,200,233,255,0,95,4,143,161,246,52,162,222,22,25,251,53,185,206,113,254,175,190,15,107,156,103,191,0,142,164,14,50,0,19,200,141,177,134,218,51,218,233,192,235, +220,108,63,167,28,30,188,83,205,162,0,127,122,196,30,14,110,152,113,223,27,97,36,250,244,232,51,154,22,222,33,144,182,202,56,254,0,152,231,63,244,242,199,160,207,24,252,56,169,5,187,12,145,11,167,76,114, +160,31,195,205,207,99,211,142,185,244,160,8,254,203,17,206,91,39,25,31,233,15,158,121,234,34,82,115,239,199,29,105,134,218,47,225,124,122,102,125,160,122,122,103,234,78,49,129,233,86,133,180,205,206,28, +244,233,158,163,60,228,74,1,60,254,20,211,4,203,156,180,217,24,199,222,97,223,214,98,120,25,192,235,237,156,208,5,83,105,110,220,155,133,94,163,155,204,3,192,236,102,0,1,198,56,231,165,71,246,91,110,127, +126,56,39,159,181,142,253,248,152,245,62,252,244,247,171,127,189,83,196,179,14,216,242,216,115,236,68,167,159,203,212,81,231,93,12,98,230,235,175,64,23,175,175,250,210,79,95,240,28,80,5,97,111,110,64, +255,0,73,137,70,115,205,195,231,220,19,230,28,254,29,63,26,144,90,196,62,237,204,126,196,93,169,207,253,247,56,227,175,57,30,188,230,173,9,238,71,91,155,188,117,35,118,78,57,227,6,97,207,76,117,252,50, +69,72,46,165,92,126,254,99,235,188,55,31,248,243,28,14,157,123,14,180,1,75,236,224,96,11,191,152,114,64,184,66,61,72,230,114,120,227,24,246,199,56,194,20,43,131,246,132,99,159,249,248,82,121,233,255,0, +47,64,142,220,14,15,160,171,223,110,117,36,137,24,227,156,152,203,116,36,255,0,23,29,79,39,161,250,80,111,157,128,34,82,57,232,98,76,99,174,79,76,253,70,63,65,64,20,25,179,193,146,44,140,103,55,11,156, +17,234,46,200,245,252,123,17,154,110,88,15,248,248,141,71,24,204,177,30,132,255,0,211,224,110,57,61,58,130,115,222,175,127,104,170,245,120,216,251,199,9,228,241,192,44,115,158,220,243,245,197,33,212,135, +240,172,68,227,254,120,218,227,167,94,85,177,237,158,190,180,1,72,49,193,204,240,28,12,228,75,16,60,28,116,251,83,3,145,158,231,39,167,165,59,204,35,248,161,97,208,239,104,216,122,246,159,29,59,241,159, +83,154,156,234,146,143,185,28,93,249,54,214,167,7,3,210,38,252,243,142,59,244,166,255,0,107,93,118,142,49,156,113,246,91,114,9,244,226,60,125,50,49,158,114,51,64,12,12,8,56,49,46,65,224,0,221,59,113,114, +48,7,224,15,92,227,160,219,241,247,148,143,69,36,115,234,127,126,71,63,135,67,193,236,243,169,93,28,110,130,50,71,31,241,235,0,254,74,58,251,130,71,76,154,67,127,112,79,252,123,69,236,13,189,190,127,28, +166,115,143,195,56,224,142,72,4,59,152,156,18,195,7,0,132,99,159,166,39,7,62,189,120,233,158,77,33,220,64,1,255,0,239,165,144,244,235,214,83,147,147,142,51,244,2,165,58,133,210,241,246,100,96,78,112,18, +216,99,219,30,88,193,207,212,245,7,174,74,139,235,134,235,106,7,95,249,247,81,207,79,83,253,56,206,123,128,10,219,177,144,92,143,161,144,0,7,174,55,30,121,235,192,207,126,203,149,4,98,86,201,206,64,89, +207,76,14,162,44,115,219,142,217,228,115,82,27,217,114,119,69,142,189,30,49,250,5,3,143,65,159,78,49,75,246,217,8,5,84,142,127,231,178,175,97,142,140,164,227,215,143,66,6,104,2,61,203,255,0,61,165,200, +236,62,209,144,122,237,226,46,59,243,216,118,197,40,97,208,207,58,31,83,44,252,142,123,8,135,243,206,0,250,83,190,215,48,227,12,79,161,156,244,63,73,49,201,199,7,215,39,129,146,245,188,39,239,68,228,17, +193,243,221,115,239,129,47,65,198,57,43,158,49,64,8,191,48,31,233,211,40,238,162,107,176,122,156,117,129,129,228,142,135,241,231,20,237,167,145,246,249,143,60,111,154,228,96,12,127,211,155,100,12,99,211, +156,211,254,209,27,0,4,51,123,237,185,113,158,156,147,231,48,193,29,7,30,224,129,74,36,139,60,65,114,8,234,13,209,110,156,96,228,55,231,147,245,160,8,199,144,120,107,208,217,63,243,210,224,143,78,73,180, +219,144,115,146,69,63,100,60,15,180,47,108,124,205,250,230,208,245,192,235,237,238,76,162,80,50,60,153,114,113,128,38,47,244,39,247,67,56,244,231,212,144,115,74,90,55,224,197,33,29,243,184,255,0,56,192, +30,164,113,199,160,160,8,202,67,198,103,83,129,206,21,155,182,57,219,104,56,232,72,32,127,90,2,91,30,60,204,228,99,136,223,255,0,140,174,64,25,235,143,167,106,113,17,129,149,142,65,142,159,41,233,144, +56,196,76,51,238,49,142,56,28,83,65,227,253,68,167,169,60,184,207,94,128,71,215,175,76,156,254,2,128,20,67,110,6,68,190,160,134,82,1,224,28,100,66,65,227,147,201,199,4,138,66,144,47,27,227,110,248,249, +207,28,255,0,211,17,238,56,3,63,173,27,206,127,227,210,126,14,78,90,108,158,121,56,17,55,211,223,175,78,41,225,147,167,217,110,1,198,78,25,187,244,231,236,252,117,207,57,207,167,52,0,220,91,227,4,192, +78,51,130,37,201,233,215,16,227,183,230,78,112,105,165,96,232,33,183,35,29,74,204,71,215,238,47,124,244,233,129,223,146,225,228,231,155,107,128,59,18,203,249,115,110,15,190,51,216,142,148,132,66,63,229, +222,108,12,245,104,143,83,235,229,113,200,192,198,51,198,112,40,2,48,97,193,95,42,203,3,128,89,102,206,6,58,130,158,163,177,207,28,100,98,143,221,156,129,21,159,252,5,38,244,29,1,141,179,158,78,56,224, +245,232,42,93,241,117,48,200,71,78,54,245,32,114,72,64,8,235,131,219,212,211,26,120,59,91,78,123,141,178,34,251,247,85,28,119,29,65,232,57,25,0,140,224,156,17,110,61,0,73,193,247,31,44,4,251,118,237,199, +52,194,14,120,88,129,28,112,183,120,227,29,15,145,250,227,216,231,56,14,55,8,50,22,210,227,61,51,231,163,118,244,0,158,6,49,200,199,160,167,125,167,145,139,75,163,158,63,214,15,76,114,10,224,254,4,116, +231,57,224,2,34,207,208,45,190,48,126,243,221,1,129,236,33,247,36,240,56,35,191,20,195,43,40,231,236,121,7,158,111,115,244,230,0,50,51,208,30,78,5,88,243,189,109,46,134,121,206,84,128,63,47,110,199,31, +142,105,124,212,32,147,111,113,143,79,46,54,36,227,60,101,73,227,211,167,76,80,4,11,36,143,144,30,219,4,118,55,128,131,140,244,14,156,112,48,1,29,14,15,60,49,252,195,242,137,35,36,127,181,122,115,234, +49,230,227,63,142,106,86,151,156,45,181,231,225,20,75,129,233,147,140,240,58,231,191,60,96,84,102,86,97,255,0,30,183,73,232,74,40,246,3,42,220,250,247,227,60,118,160,8,9,157,70,12,209,122,14,46,49,236, +57,152,243,245,228,244,199,162,135,147,7,247,203,215,178,74,79,7,169,205,210,28,117,207,63,81,82,7,113,199,217,38,62,229,37,95,253,7,24,63,83,156,224,158,212,132,190,9,251,51,128,127,235,162,245,62,132, +144,115,140,245,235,143,92,208,3,55,72,71,19,49,250,172,158,195,129,246,225,219,29,193,232,49,211,45,38,99,142,114,120,25,220,73,235,253,211,168,128,9,235,159,79,78,41,25,75,127,203,9,0,224,29,174,253, +51,215,57,82,61,58,122,123,138,79,40,16,73,142,65,199,32,59,14,64,24,206,73,36,28,103,175,115,239,144,3,124,160,253,240,15,3,146,171,207,65,159,248,153,156,241,199,28,227,189,52,202,228,241,42,131,207, +0,134,57,238,120,213,50,120,239,142,125,41,190,74,117,217,113,129,198,68,167,29,207,112,79,126,156,156,116,193,230,162,41,24,227,202,155,29,14,103,112,49,220,96,46,0,232,49,143,160,239,64,19,249,207,140, +25,100,36,240,112,99,25,57,234,51,169,49,57,199,63,64,78,113,76,50,3,141,226,86,31,88,79,167,95,244,182,3,215,220,247,53,1,136,12,149,138,110,58,143,180,204,71,62,155,98,108,140,158,163,62,189,141,40, +15,222,39,198,112,64,186,144,113,206,71,54,231,191,211,241,28,16,4,223,17,108,121,106,91,39,39,22,249,61,241,204,132,245,236,115,146,125,243,71,218,34,31,192,65,3,28,152,48,7,112,54,110,199,167,65,206, +58,241,78,218,63,231,148,160,113,144,183,79,131,255,0,125,90,103,60,30,61,250,116,195,89,71,0,173,224,237,197,218,128,61,191,227,217,121,228,227,39,168,235,208,208,3,13,220,88,35,203,97,219,34,84,92,231, +35,157,176,177,238,122,231,156,125,42,7,184,183,201,200,199,35,63,190,61,71,253,185,28,100,0,8,7,181,78,68,124,130,53,22,206,70,22,116,60,142,78,63,115,131,236,115,147,216,138,80,136,58,46,167,211,39, +247,170,190,253,118,28,113,140,113,146,126,184,160,10,166,230,200,113,183,45,156,103,207,147,30,189,86,203,29,7,93,167,30,253,227,55,150,135,31,186,87,32,96,147,113,57,227,28,12,125,132,1,142,216,253, +7,21,105,155,104,192,254,210,25,233,251,197,97,200,255,0,174,124,253,121,254,85,93,166,108,97,94,240,14,185,105,7,4,251,121,99,36,122,100,231,249,128,64,110,236,198,115,109,159,77,179,202,8,239,199,252, +75,217,184,200,237,245,235,80,189,197,155,231,22,228,96,159,189,117,62,27,212,99,251,45,113,219,60,231,154,148,202,217,57,154,239,215,162,158,71,83,202,159,94,189,191,44,64,243,40,60,207,63,208,172,68, +227,60,103,40,51,158,248,198,63,90,0,133,167,182,0,98,53,92,118,55,23,35,24,207,97,102,190,152,7,131,206,61,13,67,246,203,92,16,50,14,15,221,184,187,57,252,60,140,247,199,35,211,158,185,157,165,133,184, +251,69,202,228,118,251,57,83,193,227,30,98,145,232,56,206,61,59,64,100,132,103,247,242,156,158,114,144,245,255,0,191,234,192,1,237,212,145,140,115,64,16,53,204,36,176,94,123,252,211,95,96,123,127,168, +3,211,3,30,224,30,180,194,209,184,206,209,245,243,110,216,241,216,131,30,57,31,135,79,90,86,158,48,126,87,45,129,221,35,61,207,173,193,39,215,56,228,230,160,121,203,12,150,10,48,113,185,33,29,115,212, +153,72,237,239,199,168,160,5,104,193,192,85,83,244,91,146,49,237,251,163,129,232,120,253,106,187,196,228,224,70,50,51,145,229,206,56,56,60,31,33,135,65,146,51,140,138,141,167,236,101,131,191,37,34,224, +116,231,12,118,246,231,35,62,160,96,212,5,226,99,134,158,204,250,126,233,71,64,0,228,78,185,233,199,111,210,128,44,121,78,122,7,83,254,204,87,45,129,129,211,253,24,129,158,65,24,25,199,25,168,156,74,1, +5,164,25,35,172,55,153,244,232,45,128,239,206,6,79,124,212,5,109,207,2,91,51,216,159,33,72,7,212,143,180,115,142,58,17,205,70,86,60,16,178,88,103,7,4,197,18,28,140,140,225,174,200,244,252,143,106,0,126, +211,212,186,145,201,57,181,185,99,158,231,13,102,221,253,15,29,250,242,211,229,112,11,140,231,144,44,229,227,140,158,14,154,199,158,14,73,192,7,36,246,168,25,20,30,38,176,28,228,97,87,29,57,228,95,47, +65,237,128,71,166,49,94,69,112,50,38,177,76,142,184,200,60,243,211,80,254,135,60,98,128,45,72,16,129,178,102,3,128,127,209,93,128,234,122,127,102,122,114,58,116,231,21,84,172,121,33,174,156,113,209,109, +216,245,244,7,76,98,59,231,35,140,244,170,204,205,131,254,147,100,188,114,60,183,60,126,55,231,57,233,220,125,58,10,229,147,36,53,221,144,60,242,32,60,99,57,39,23,108,125,79,62,134,128,46,52,118,216,200, +190,184,206,113,129,3,16,51,158,161,116,115,142,71,167,108,227,56,53,17,91,114,73,55,147,28,115,210,84,7,25,198,7,246,55,233,200,25,233,205,81,103,132,112,215,182,135,158,190,75,12,227,29,133,193,207, +30,153,199,57,193,205,66,242,91,227,155,187,60,246,204,50,176,232,56,57,184,11,219,160,28,126,84,1,160,203,104,114,69,236,138,71,93,197,143,67,219,58,66,227,175,24,61,186,119,21,95,236,131,57,212,72,193, +192,4,114,58,122,233,121,29,48,15,66,123,243,205,51,53,184,60,93,90,228,14,8,182,3,158,252,180,173,145,199,57,36,98,171,61,204,89,195,79,110,71,60,253,157,70,51,211,141,217,24,233,129,129,207,0,142,128, +22,152,217,156,147,127,184,128,121,202,2,123,116,109,59,175,78,138,58,113,138,133,150,208,244,188,113,158,78,10,2,79,64,63,228,30,184,192,39,249,14,13,83,107,171,113,193,184,140,228,112,68,0,122,118,25, +60,99,215,167,227,76,251,84,24,0,75,156,140,114,140,1,0,99,142,88,228,112,56,227,143,65,64,22,26,59,114,8,251,100,164,103,3,12,184,236,58,11,76,19,145,142,65,227,182,106,7,130,3,247,110,25,254,161,125, +123,159,178,144,121,61,115,237,197,51,206,139,130,38,94,121,195,35,145,248,102,34,160,241,140,243,245,166,180,128,158,10,28,255,0,178,163,32,115,211,200,236,122,14,51,158,122,208,3,132,16,231,1,149,143, +169,85,97,244,10,182,152,235,219,60,28,142,69,66,214,241,114,124,168,91,30,177,169,233,245,133,113,199,57,224,251,242,105,9,92,117,92,143,246,200,250,127,203,1,140,250,147,233,233,76,202,128,71,238,179, +215,63,104,24,110,122,141,168,48,15,253,245,215,142,244,1,27,219,194,9,30,76,57,247,137,79,28,224,114,167,36,125,15,63,157,64,209,34,253,216,224,237,192,137,1,29,186,128,8,199,57,192,250,243,131,86,188, +194,6,208,224,243,198,217,193,61,114,72,202,130,56,232,122,224,253,106,54,146,81,208,182,114,122,207,199,94,58,41,207,115,199,110,0,20,1,84,198,157,90,56,219,160,199,149,184,117,3,166,195,129,211,156, +145,216,240,106,51,10,182,88,69,7,213,172,193,237,220,148,28,254,68,241,235,138,181,230,92,54,125,113,212,205,63,35,232,34,63,143,78,152,4,146,106,34,215,39,166,194,122,231,206,184,206,7,253,187,183,243, +224,131,64,21,76,74,189,18,208,119,32,233,234,79,36,231,4,186,227,140,242,112,58,227,174,42,6,0,31,245,118,153,255,0,175,5,239,234,124,209,216,115,158,191,76,213,195,246,166,227,124,67,7,32,23,184,98, +125,15,252,122,254,28,244,244,7,154,97,91,163,252,86,231,235,246,131,219,222,209,129,252,187,80,6,99,151,29,33,178,207,36,127,161,237,60,115,255,0,61,200,201,198,7,24,30,245,11,74,227,131,29,158,113,159, +248,245,4,140,241,129,186,117,29,189,63,76,19,170,82,235,25,221,8,57,31,119,237,60,115,237,167,125,222,156,231,131,142,152,226,38,134,240,140,137,98,92,116,220,46,219,56,224,241,253,158,120,25,228,224, +15,83,158,128,25,94,124,157,146,212,243,140,125,142,35,147,223,3,205,56,35,140,100,146,122,113,205,61,110,101,25,194,90,142,0,57,177,131,39,60,159,227,108,227,167,113,244,171,173,109,122,65,205,212,32, +28,100,8,238,241,145,255,0,112,241,207,29,57,235,212,227,152,218,202,236,231,253,38,223,235,178,224,96,99,145,205,138,254,120,198,115,248,0,64,110,228,4,97,45,137,28,124,182,80,254,89,222,123,30,56,231, +128,49,77,251,116,221,2,193,201,206,126,203,7,66,58,228,144,14,48,115,147,129,223,61,105,255,0,217,243,18,65,187,183,7,190,12,192,243,237,246,50,127,33,233,138,31,77,43,203,93,160,224,242,73,35,62,131, +117,152,239,234,123,254,20,1,23,219,100,94,74,194,199,176,48,91,168,30,159,117,207,29,113,142,184,20,27,215,110,74,193,143,64,177,166,58,145,202,228,158,217,56,192,245,197,60,90,58,175,23,241,1,140,240, +16,241,159,123,76,122,96,19,233,210,162,54,110,79,252,127,171,245,36,128,131,24,57,57,204,3,160,57,244,207,81,140,208,3,214,235,28,236,135,39,174,24,18,112,51,147,136,15,127,175,7,146,5,61,110,0,57,217, +16,244,198,254,153,244,22,224,14,249,252,56,197,86,251,43,18,73,189,81,207,25,16,119,234,112,208,246,3,142,127,151,17,53,179,159,249,127,238,50,118,217,144,61,185,216,65,61,177,211,35,158,164,0,95,23, +8,78,76,112,123,29,140,73,247,226,30,61,243,201,62,189,104,107,160,56,219,7,167,221,159,25,201,198,54,194,50,126,132,116,224,1,89,134,215,104,24,191,7,169,206,219,3,156,241,199,239,192,200,207,28,119, +235,199,16,52,46,58,222,200,70,113,194,88,16,115,211,63,191,60,103,158,58,99,28,116,160,13,57,110,16,255,0,20,29,243,129,112,72,244,235,8,36,116,247,239,233,138,190,98,147,203,67,131,216,164,253,253,127, +116,114,58,251,253,121,170,187,103,7,31,108,147,7,4,17,21,155,103,211,0,49,57,32,118,7,223,53,32,75,140,252,179,179,119,36,219,219,156,245,231,148,245,24,39,57,2,128,37,15,17,234,182,185,245,242,174,79, +61,242,68,103,156,131,156,99,167,190,41,55,198,73,11,21,169,199,117,183,185,207,79,95,41,114,61,129,237,211,210,34,46,119,3,230,166,64,28,52,49,46,113,207,97,128,15,191,25,237,205,40,134,232,228,179,67, +220,147,136,83,242,3,159,200,80,3,191,119,156,132,82,127,217,182,152,128,61,114,224,156,15,207,61,70,8,160,44,103,254,89,168,250,91,55,94,115,144,87,223,220,112,105,68,18,142,173,1,228,114,68,36,251,114, +51,142,71,94,223,65,79,242,216,114,94,30,163,133,32,17,245,253,217,7,29,249,224,246,60,18,0,209,20,88,193,24,238,0,183,7,244,96,49,140,243,212,246,244,20,83,252,181,24,44,241,241,156,225,159,145,131,212, +44,39,128,56,24,232,58,122,81,64,31,161,225,149,143,42,221,120,253,221,168,199,25,231,247,71,177,238,70,58,156,211,31,230,56,192,61,64,5,109,123,14,228,32,28,116,231,158,189,141,108,179,92,113,181,36, +43,142,162,246,81,159,127,153,71,30,248,207,29,125,43,22,185,28,236,60,117,6,242,82,70,115,208,231,31,231,29,168,3,55,236,200,228,101,80,30,58,45,183,177,39,34,51,249,115,200,201,228,114,191,96,12,70, +56,7,254,185,40,25,56,237,110,115,158,195,156,142,184,3,34,249,146,113,213,91,7,56,255,0,78,145,65,234,114,57,233,215,212,143,92,14,33,105,37,61,66,140,250,234,50,115,250,224,250,244,231,218,128,32,58, +102,225,147,42,140,247,59,112,59,1,147,108,6,65,227,29,59,227,213,191,217,184,231,237,8,112,71,70,78,156,246,22,164,118,231,35,158,190,180,246,121,185,249,99,233,129,254,156,79,168,57,228,156,146,71,30, +185,193,168,119,176,57,33,123,127,203,243,129,143,232,8,198,0,56,199,66,59,128,74,218,98,176,200,154,30,112,78,231,69,56,63,91,85,245,228,147,249,226,162,58,92,74,6,101,182,201,239,246,128,14,120,232, +82,21,61,59,99,160,228,210,110,99,145,192,29,126,91,242,122,125,84,231,25,250,243,212,83,78,72,193,32,122,127,166,171,100,158,196,52,77,232,15,81,235,245,0,107,105,208,2,49,36,89,239,254,145,32,29,122, +228,192,70,121,227,158,77,49,244,232,242,72,150,51,232,22,230,108,122,244,242,128,56,207,124,103,166,105,197,25,129,10,248,31,245,210,54,35,190,120,136,18,79,78,71,169,36,243,77,54,236,121,47,211,128, +67,39,95,198,48,78,63,12,103,232,104,2,49,167,12,159,157,79,76,127,164,74,61,248,37,66,247,28,114,9,198,114,48,41,235,104,170,118,137,78,70,114,5,195,227,243,216,56,199,28,118,237,200,202,139,113,156, +22,102,199,56,86,28,103,166,64,143,147,245,63,135,74,112,183,64,115,182,66,125,119,14,185,231,162,142,114,73,233,159,199,168,4,77,10,142,75,227,215,19,74,120,30,187,113,199,224,121,231,233,11,66,185,206, +233,143,174,219,137,199,226,62,80,65,62,196,96,129,147,154,187,228,129,211,237,25,199,1,89,72,61,59,28,115,215,57,199,62,130,148,70,199,254,89,222,16,58,13,241,125,122,110,231,31,78,216,198,5,0,80,42, +128,28,173,207,4,115,231,204,223,83,203,129,211,219,140,14,189,42,50,169,215,203,184,199,61,36,114,120,246,243,14,7,110,78,56,207,90,214,192,199,48,92,156,116,207,148,125,184,220,227,219,56,63,76,99,38, +60,50,131,254,139,49,255,0,128,192,114,120,231,137,148,12,3,140,241,207,78,248,0,205,30,91,13,187,46,250,156,157,140,223,136,36,158,158,217,29,125,120,95,41,134,113,29,214,15,95,144,174,61,58,68,223,95, +83,237,219,71,147,207,217,101,24,206,112,144,228,145,235,251,238,79,227,158,105,24,74,79,252,123,207,255,0,125,42,224,255,0,192,101,35,131,238,71,225,64,25,162,4,221,150,134,236,250,252,196,99,219,13, +9,31,160,239,65,181,128,228,152,110,11,122,249,202,63,3,251,174,199,167,76,116,232,6,52,8,144,127,203,25,193,235,254,190,37,255,0,217,143,228,59,30,189,40,204,132,255,0,168,184,57,36,150,251,85,184,25, +29,72,36,231,3,167,35,131,215,142,40,3,48,91,194,122,65,113,212,131,254,146,224,100,123,136,148,103,216,14,156,211,13,181,190,78,232,230,92,227,254,94,114,9,207,28,148,192,244,228,103,241,57,173,77,174, +78,89,101,67,219,253,50,32,123,147,209,113,143,255,0,87,176,83,10,30,88,76,196,30,191,109,132,12,99,221,15,32,228,130,71,35,173,0,101,139,107,85,228,195,33,192,39,38,225,24,99,61,56,3,61,61,71,67,145, +129,138,70,183,180,235,177,215,211,19,247,255,0,190,8,247,193,207,212,243,141,129,107,106,64,222,36,28,115,155,251,115,219,56,193,140,116,56,200,3,32,129,158,105,5,165,145,206,211,40,244,255,0,76,129, +64,252,124,174,199,220,117,235,197,0,100,139,123,82,14,3,0,120,39,206,4,143,81,254,175,219,223,24,35,214,167,22,246,184,4,180,128,143,238,220,40,198,15,160,140,246,244,198,49,249,104,11,43,98,8,243,101, +29,240,110,163,124,243,211,62,83,143,204,96,118,237,74,116,219,82,63,227,230,69,207,95,244,128,163,158,156,121,11,220,250,127,245,128,51,196,86,189,165,152,31,79,181,130,62,132,121,99,7,156,246,53,34, +69,108,57,18,206,125,254,208,167,30,228,236,57,199,24,200,28,125,69,91,22,22,61,238,93,137,3,238,221,129,207,92,99,201,29,112,114,57,246,25,197,60,89,88,12,254,241,216,143,250,122,245,236,127,118,7,31, +67,64,21,7,217,215,157,215,7,142,49,59,117,244,56,183,35,242,111,204,26,92,194,115,137,110,23,177,253,235,54,121,207,252,250,241,219,250,98,164,107,91,5,36,146,217,233,159,181,254,29,2,224,250,246,56, +200,167,44,26,112,37,191,122,112,120,196,200,231,62,185,44,185,236,120,233,239,212,0,65,152,178,72,146,233,143,25,1,142,49,208,12,139,46,61,115,140,158,51,206,105,251,192,192,13,120,185,233,243,72,71, +0,142,8,178,80,72,235,142,15,212,102,156,201,99,193,88,166,4,116,34,84,57,244,60,57,235,207,203,215,158,131,57,166,17,108,51,251,185,250,250,200,79,108,128,84,146,58,122,14,166,128,2,196,243,186,232,231, +177,221,238,122,155,65,140,103,215,60,240,69,41,207,92,92,127,223,76,123,3,206,45,135,24,227,183,60,241,221,152,181,201,226,228,12,118,121,215,191,124,145,235,140,3,208,224,26,153,90,193,65,15,37,211, +30,184,50,74,58,142,196,231,167,35,131,142,199,35,146,1,11,18,49,242,205,144,123,187,117,245,207,149,128,122,250,116,63,137,230,227,170,54,112,122,185,110,254,134,63,108,227,39,158,152,38,159,230,233, +249,24,23,64,142,185,157,143,224,70,210,64,199,212,96,227,39,138,147,125,155,116,75,163,158,160,205,32,224,115,218,49,143,211,220,244,160,8,62,211,24,251,209,145,130,114,126,94,253,58,129,239,142,135, +241,228,33,186,67,131,150,24,227,1,80,243,143,175,127,108,19,233,86,199,216,248,249,47,71,251,179,191,24,199,170,158,61,125,58,123,212,168,109,79,32,94,131,143,249,234,249,227,60,31,221,127,44,123,102, +128,40,173,228,104,64,195,31,248,2,115,199,3,148,235,211,63,175,122,149,111,225,255,0,158,67,4,30,118,39,31,154,5,31,80,15,63,157,90,86,128,55,31,106,62,187,164,144,19,192,238,32,108,100,243,200,252,248, +167,146,173,211,237,0,18,51,254,147,49,36,2,48,15,250,49,32,119,201,60,0,61,113,64,21,127,180,162,239,176,15,238,180,73,211,183,63,129,28,140,224,158,163,172,131,83,137,120,196,3,60,13,200,152,36,246, +224,119,239,142,79,224,49,35,40,61,164,200,238,215,15,145,140,240,9,128,17,199,25,29,51,199,74,22,57,72,194,134,56,255,0,166,210,63,95,95,220,183,176,199,31,135,112,4,254,211,80,6,13,177,246,16,3,220, +100,112,156,96,113,215,243,52,131,83,43,252,112,128,79,104,152,127,40,142,127,46,157,169,226,27,166,206,32,44,127,235,171,14,65,193,235,8,237,223,57,24,39,52,162,218,240,242,182,236,112,123,202,195,223, +160,65,212,158,167,35,243,52,0,171,170,177,228,201,16,30,190,83,12,158,217,38,17,207,39,60,130,123,142,185,83,168,134,31,44,176,131,254,227,125,9,31,186,24,224,158,167,175,165,41,134,252,125,219,112,50, +70,210,103,201,24,239,130,1,61,57,224,142,15,115,194,133,212,70,9,141,58,224,6,93,248,61,240,74,28,129,215,131,223,32,80,2,139,249,56,32,194,220,127,207,54,253,113,25,252,184,245,244,195,254,223,33,235, +44,106,59,133,64,125,120,206,192,121,235,140,158,71,83,81,150,191,96,64,134,18,71,83,229,114,115,255,0,1,30,248,61,240,120,244,122,139,204,99,203,133,15,124,68,160,241,215,239,21,56,32,159,192,145,235, +128,5,55,12,71,250,229,57,201,198,0,253,114,58,241,142,112,127,10,143,204,44,114,210,18,61,1,218,49,223,35,123,28,117,207,231,198,41,255,0,233,67,57,25,3,160,22,201,223,177,253,224,29,250,241,215,211, +164,171,37,201,227,7,176,255,0,80,131,4,122,31,57,113,244,244,235,210,128,43,112,196,238,96,0,245,27,184,4,243,157,234,120,244,200,236,123,10,66,144,241,146,221,58,128,128,119,233,153,137,231,241,245, +207,166,144,107,146,14,72,199,29,96,70,233,216,147,116,6,7,78,113,198,15,90,113,243,120,59,128,56,255,0,158,17,99,156,96,224,93,0,122,243,156,142,51,211,52,1,150,22,204,31,152,177,57,7,4,196,48,122,243, +251,225,159,195,235,78,43,104,195,1,155,56,236,182,221,122,146,75,74,73,30,153,198,78,7,53,123,123,130,67,48,36,114,73,183,139,25,233,218,232,142,112,78,61,114,7,97,77,50,71,146,92,3,206,127,227,214,17, +199,29,254,213,140,231,169,24,252,13,0,83,17,195,235,57,3,253,155,99,199,56,3,15,199,124,231,242,6,145,162,183,238,215,32,123,52,65,137,228,244,85,207,67,158,164,224,226,173,155,139,80,8,49,2,122,243, +21,178,254,64,220,18,113,156,244,56,24,207,115,81,153,97,97,128,138,163,217,45,1,250,115,114,15,212,113,212,118,192,160,10,222,85,191,81,36,164,117,193,113,192,244,39,204,95,192,12,119,192,166,249,81, +1,159,225,56,63,235,147,56,233,147,254,144,24,144,58,228,250,228,241,83,151,135,7,42,73,0,231,254,61,186,99,24,194,223,14,159,238,254,25,21,19,125,153,135,250,166,30,251,162,7,183,64,110,206,57,199,76, +231,167,90,0,69,75,127,239,38,79,39,55,10,164,126,27,206,65,193,228,156,140,140,243,197,75,182,19,144,89,7,210,234,49,249,102,70,207,224,125,56,35,53,85,150,216,227,10,221,14,65,149,1,24,61,191,210,88, +99,219,30,195,147,77,45,110,49,148,108,99,28,93,70,131,60,247,37,135,30,196,122,28,208,5,221,145,14,124,194,115,235,118,10,254,65,199,160,228,30,122,247,205,40,183,141,137,249,241,158,159,233,71,63,145, +102,207,168,200,24,199,122,207,51,91,116,27,178,57,63,241,49,136,125,56,15,156,243,158,65,24,53,17,146,2,79,204,1,25,224,223,166,227,129,145,247,120,246,235,159,108,80,6,159,216,144,156,249,171,158,122, +204,15,76,231,24,193,235,233,207,65,214,152,109,225,29,101,139,167,83,52,163,191,64,67,17,232,57,247,207,35,53,69,101,143,168,151,25,60,99,81,11,211,158,58,247,232,7,126,131,39,52,172,241,54,127,127,43, +103,24,198,162,231,0,227,169,192,108,227,208,142,127,42,0,152,197,108,164,3,45,177,228,96,9,164,99,146,72,7,151,228,15,80,51,215,218,164,41,104,49,153,160,3,4,112,205,159,196,144,199,223,177,227,175,21, +158,198,16,114,207,49,193,199,252,127,207,199,212,137,59,127,63,76,211,76,144,46,112,110,191,224,55,247,35,175,179,22,228,240,56,160,11,197,108,187,221,68,9,7,141,228,250,14,63,117,201,60,227,39,175,56, +235,73,182,203,28,95,38,9,232,60,162,7,78,128,132,61,187,142,220,243,197,80,18,143,225,251,81,244,221,169,73,156,231,168,27,84,227,142,184,233,199,189,30,121,81,200,155,211,157,65,207,7,215,40,127,175, +182,120,160,11,196,217,128,127,211,15,0,114,45,226,32,247,207,12,73,247,25,227,191,187,60,203,31,186,215,71,119,81,251,149,245,224,99,112,28,245,227,160,231,30,180,141,201,206,63,120,0,255,0,167,179,215, +220,16,190,199,140,243,244,52,134,64,79,62,105,199,81,246,156,227,166,58,169,198,51,207,215,158,121,160,11,158,109,128,60,222,48,239,194,64,15,62,197,215,28,126,126,212,121,214,71,7,237,146,227,61,127, +209,212,158,125,4,167,61,122,129,145,234,106,160,145,65,56,18,228,247,89,148,117,232,62,238,9,199,108,118,239,198,85,164,28,124,247,3,36,140,7,86,35,223,136,191,63,108,80,5,131,45,137,63,45,212,172,73, +192,59,237,193,7,159,82,192,128,121,207,126,188,227,149,205,159,3,206,156,145,147,146,246,120,246,60,178,145,253,62,157,41,27,151,7,9,36,195,142,167,143,204,172,7,57,235,212,1,159,173,2,234,224,156,173, +212,139,199,253,50,63,92,134,183,110,61,255,0,33,64,22,156,217,246,185,35,3,157,207,100,167,142,157,102,62,152,60,122,245,233,81,127,163,159,187,118,163,235,246,51,242,227,142,68,163,191,229,158,131,60, +167,157,118,195,2,240,18,70,114,194,1,207,92,17,246,76,147,248,17,235,233,78,2,236,127,203,234,175,30,136,72,255,0,201,67,143,127,111,90,0,80,145,243,254,151,144,115,198,200,48,61,57,18,224,17,236,58, +96,242,77,39,149,15,63,233,13,159,125,139,215,216,158,131,183,60,247,192,165,205,217,57,26,136,29,198,21,120,239,159,248,245,231,142,122,227,245,165,43,123,215,251,66,94,1,60,34,109,252,190,206,14,57, +200,224,243,159,99,64,17,27,88,207,252,189,96,156,19,159,39,30,135,130,217,237,158,220,254,52,159,103,81,247,110,80,159,164,111,208,247,195,126,120,31,129,198,42,82,215,192,28,223,49,29,183,71,38,57,246, +72,0,4,140,227,241,247,164,13,124,115,186,235,32,242,8,89,192,199,36,2,60,160,59,119,235,249,228,1,139,27,169,230,88,207,210,53,36,253,112,141,158,127,30,112,72,39,137,188,185,65,24,151,3,174,68,105,159, +76,29,221,126,132,246,28,122,68,86,237,142,124,213,108,30,115,231,14,51,200,207,151,129,212,224,100,19,232,57,33,13,189,195,114,66,158,112,64,50,147,199,61,54,175,24,237,142,180,1,38,46,7,75,144,61,79, +150,190,227,31,46,65,199,191,233,158,28,5,201,255,0,151,135,108,114,54,71,180,30,153,60,33,206,51,219,39,160,246,168,133,187,41,201,139,60,140,255,0,174,96,121,244,69,110,79,108,116,3,166,106,111,179, +40,224,68,171,198,114,22,227,220,156,230,34,78,50,115,192,236,123,80,1,182,243,31,122,103,231,160,12,164,255,0,223,73,142,189,48,59,254,2,80,247,184,255,0,83,113,156,117,218,24,131,140,103,30,94,115,238, +122,113,214,161,242,163,24,201,65,201,24,242,174,88,241,215,164,95,145,3,177,227,140,152,218,40,1,249,157,71,92,230,11,156,31,202,213,137,246,231,174,71,56,205,0,90,50,223,169,228,221,38,70,127,213,194, +6,14,71,36,160,39,242,235,237,79,91,139,227,193,154,235,158,153,49,96,123,1,229,16,9,199,175,57,252,169,129,108,167,62,108,94,219,237,111,78,112,49,255,0,62,190,163,167,175,78,64,20,194,45,91,36,73,107, +158,127,229,206,224,156,118,192,146,16,57,192,254,19,211,165,0,104,153,117,28,115,113,118,7,81,159,36,99,220,3,11,116,31,158,9,4,142,134,235,195,156,221,222,103,254,186,90,159,207,116,43,249,126,30,226, +130,152,7,73,162,92,116,197,155,14,160,240,0,140,116,232,1,24,31,204,50,168,229,110,35,24,4,255,0,199,172,131,140,96,28,121,96,103,57,206,65,206,15,122,0,187,254,152,167,31,106,184,96,122,3,53,166,79, +167,32,99,31,83,130,122,103,28,184,11,199,224,203,116,7,113,230,218,16,70,1,198,12,44,15,208,245,232,59,103,45,174,83,36,155,236,113,202,139,103,28,156,96,140,160,199,57,246,193,231,160,164,23,8,115,139, +248,142,122,230,22,219,250,40,25,60,117,228,208,6,179,71,116,184,196,211,31,115,53,128,238,58,1,111,158,59,96,156,12,113,140,138,106,164,228,31,50,105,129,244,19,216,147,129,131,198,232,59,116,28,19,248, +17,89,126,119,63,45,250,243,217,81,176,120,255,0,120,30,189,187,122,211,86,87,207,252,125,22,30,193,212,122,14,179,118,239,208,227,30,152,160,13,71,143,254,158,46,184,236,102,179,95,124,240,131,156,118, +3,4,242,122,129,73,228,156,143,158,87,239,243,92,216,242,121,60,128,51,207,78,7,225,214,168,249,216,0,181,200,24,237,185,184,25,200,227,237,64,244,250,119,56,28,82,155,133,237,43,182,6,9,18,4,228,158, +159,53,224,199,212,253,58,128,104,2,233,183,96,55,4,0,118,205,197,152,235,233,192,231,208,227,242,230,163,32,129,134,128,183,60,98,91,76,156,116,28,227,158,158,221,57,170,193,208,143,189,40,29,127,227, +230,60,30,217,226,236,227,182,63,83,216,161,49,145,195,221,46,6,72,23,109,208,243,208,92,227,223,223,181,0,89,110,63,229,140,170,61,228,183,0,117,254,225,254,185,199,94,216,133,158,48,113,182,81,147,159, +245,201,250,96,224,119,231,4,245,63,90,249,66,112,205,56,29,57,186,99,244,39,247,228,103,159,64,71,126,245,42,172,88,45,190,118,25,207,252,124,176,32,231,142,183,56,235,193,36,1,253,0,16,203,24,25,196, +167,29,188,229,61,49,199,223,78,113,142,51,140,125,120,96,187,80,220,45,198,56,228,78,50,14,78,120,23,64,241,239,207,231,86,129,82,48,60,236,103,168,187,3,31,95,244,156,159,240,199,6,152,192,54,121,187, +3,169,197,202,156,31,252,8,39,240,224,123,142,114,0,198,185,3,238,139,160,14,56,18,156,103,62,166,240,17,233,207,228,56,52,209,120,220,128,110,177,208,3,59,12,244,227,2,237,184,39,215,158,121,231,154, +66,16,2,76,151,127,248,16,188,251,16,101,63,78,126,135,221,165,227,80,66,253,169,253,9,185,131,215,156,229,243,223,28,254,20,1,41,186,99,206,102,233,252,83,202,167,244,184,57,252,201,56,193,4,84,127,110, +145,14,60,233,84,231,60,93,74,216,227,140,15,181,100,103,182,113,142,59,113,77,12,8,233,114,1,231,38,226,30,49,140,0,23,63,135,45,220,250,97,29,73,198,26,228,14,121,243,215,156,14,57,7,4,115,207,175,90, +0,123,95,200,70,4,247,0,156,16,86,234,85,29,125,13,218,142,127,12,99,233,81,255,0,104,74,189,102,156,250,102,241,207,61,122,155,192,8,237,143,79,122,97,118,7,135,159,232,103,132,28,231,223,7,175,7,169, +201,227,168,167,134,118,237,115,145,198,4,214,205,223,159,189,238,57,201,60,142,188,224,128,60,106,114,116,51,75,198,120,55,111,219,208,11,156,15,199,158,167,215,9,246,240,252,249,146,14,14,71,158,227, +63,240,37,186,234,125,64,206,122,231,173,48,180,128,99,201,184,61,126,98,246,124,123,224,22,24,228,0,113,192,206,71,21,19,73,57,233,28,167,175,89,32,36,250,101,68,100,125,62,153,35,169,32,22,190,220,191, +243,213,129,227,254,94,229,60,125,12,216,0,251,99,36,243,215,33,134,249,79,241,169,25,231,55,127,66,55,31,181,3,201,227,144,58,85,97,37,210,159,245,76,73,7,0,152,59,116,35,11,156,14,61,122,83,205,205, +199,123,117,39,140,101,97,126,135,211,203,60,158,120,28,99,211,52,1,57,187,4,99,17,245,224,253,167,35,183,28,92,147,211,39,56,35,175,210,154,110,209,71,45,8,36,125,211,112,160,231,211,38,112,115,233,207, +35,165,49,166,185,110,150,233,158,56,48,193,192,234,122,32,228,245,228,114,48,72,35,168,100,159,28,195,30,73,231,54,246,249,35,190,70,244,35,252,241,193,160,9,13,220,36,114,241,19,239,44,71,32,30,49,251, +227,142,156,115,145,223,208,68,110,33,39,239,64,64,28,110,150,34,61,254,95,55,223,255,0,215,212,179,204,148,17,186,24,135,185,182,181,192,221,219,30,103,67,206,57,61,122,100,211,212,187,127,203,40,143, +210,210,212,129,201,192,226,81,198,125,125,250,226,128,16,79,15,31,53,154,129,142,55,198,56,224,118,153,187,140,224,116,4,116,238,211,36,28,129,246,22,245,0,68,115,143,76,206,184,207,94,248,245,61,156, +67,30,26,11,108,119,102,179,182,25,61,1,36,54,70,120,198,126,157,50,42,50,16,227,114,218,32,232,8,132,118,227,28,62,7,57,224,125,79,124,0,39,153,31,81,21,168,3,156,6,129,79,224,60,254,252,100,28,227,215, +28,84,102,85,60,249,86,196,115,129,178,208,247,232,115,112,15,108,100,115,212,241,67,73,18,156,31,177,158,79,205,229,43,28,118,200,243,128,199,190,56,233,237,76,47,110,78,11,219,228,14,54,169,76,250,224, +9,178,64,39,251,199,29,198,56,0,11,190,48,9,242,163,29,57,72,109,63,49,251,198,221,206,48,6,58,156,15,74,237,34,55,72,221,70,120,196,118,170,56,227,140,50,113,239,158,61,69,76,77,191,5,39,133,78,8,255, +0,92,235,208,247,6,227,3,147,219,57,25,245,166,113,252,55,16,147,142,247,46,57,227,161,91,134,252,114,58,158,221,128,33,114,91,56,92,143,247,224,94,221,48,151,29,241,216,103,175,29,106,179,7,7,254,90, +129,207,10,234,8,31,132,189,250,224,3,145,193,201,205,92,147,127,85,149,73,56,229,111,38,227,168,234,25,186,15,161,234,1,168,155,237,11,140,76,167,191,252,126,92,125,61,135,182,6,65,237,64,21,10,147,213, +102,35,146,73,153,187,246,199,156,0,199,67,211,250,84,14,1,234,46,186,30,22,86,254,75,57,207,167,175,78,42,233,107,160,50,20,147,212,147,119,62,59,244,199,111,230,58,212,6,107,163,156,224,99,57,63,108, +184,28,100,250,21,253,50,72,35,222,128,41,148,206,64,23,139,199,63,190,147,159,110,38,252,250,245,233,199,17,53,184,94,119,221,140,242,7,157,49,207,174,49,46,113,159,94,61,134,50,111,180,247,64,124,168, +237,215,149,188,152,142,115,198,75,15,255,0,86,71,90,135,125,220,135,62,84,195,142,118,221,201,223,143,115,223,144,79,25,230,128,51,100,129,15,38,89,192,245,50,221,253,121,9,40,247,235,235,211,174,35, +48,64,70,76,210,156,245,221,113,168,40,199,35,140,79,156,127,94,230,180,76,119,89,207,147,55,32,156,181,220,135,159,96,66,143,115,156,251,84,14,110,84,140,194,196,28,228,125,161,216,128,115,237,248,242, +112,58,114,65,36,2,145,181,183,235,231,38,123,238,155,80,39,234,223,233,99,183,92,3,211,61,58,87,104,173,212,252,210,33,29,126,246,164,125,125,110,128,29,51,244,233,87,216,185,255,0,150,15,145,200,217, +44,185,227,159,66,56,199,168,234,120,245,165,33,82,220,199,56,228,2,11,74,192,31,66,121,224,227,140,127,78,0,35,205,168,24,243,87,7,32,2,183,188,126,38,241,78,15,114,51,248,247,137,190,199,159,245,233, +156,227,165,225,236,63,189,125,144,114,49,199,63,74,145,252,142,134,25,92,14,191,44,189,79,97,153,126,188,128,0,231,212,131,11,27,81,159,221,76,132,103,157,132,117,250,204,50,61,14,62,156,100,80,2,98, +208,17,137,227,234,57,219,119,237,235,123,142,7,175,113,193,227,150,55,217,191,231,188,94,227,253,32,3,140,255,0,122,252,125,48,72,245,226,162,38,200,228,145,115,235,149,141,15,254,133,38,56,238,0,110, +217,39,189,114,214,121,56,251,80,255,0,183,100,99,200,29,72,151,223,208,30,189,168,2,115,45,184,5,124,244,4,242,63,214,96,14,252,157,64,28,158,156,154,136,249,36,100,92,35,119,28,161,60,115,255,0,65,19, +140,142,1,231,156,122,140,192,210,91,174,15,153,113,143,246,172,249,245,199,19,175,168,206,127,195,45,23,80,41,225,229,29,79,22,140,121,7,57,255,0,90,114,121,239,249,30,192,15,102,28,237,150,60,30,132, +200,159,79,250,8,113,208,227,220,30,49,214,179,23,255,0,158,241,142,122,228,22,198,120,25,251,121,29,125,189,59,242,80,222,64,78,124,203,131,147,212,218,63,28,228,28,144,221,143,35,240,247,168,154,229, +7,221,243,155,208,139,118,95,199,62,95,3,29,51,223,241,160,5,102,234,26,233,1,56,233,34,142,78,71,123,179,142,224,30,122,118,168,206,242,56,189,7,167,241,103,243,34,231,156,3,208,100,247,166,27,189,164, +144,28,255,0,188,172,51,142,71,5,6,115,142,192,247,61,112,42,23,191,159,157,177,182,58,15,152,159,175,30,91,17,207,35,129,145,156,102,128,37,112,228,15,244,193,129,247,190,103,3,174,48,49,62,122,243,158, +159,94,42,155,96,31,248,252,31,83,44,184,227,220,202,222,156,19,212,119,237,67,106,23,89,226,70,83,158,0,121,120,200,224,29,176,28,158,188,231,241,231,136,77,252,184,230,67,146,121,204,247,32,113,146, +121,242,9,29,187,114,1,250,80,3,152,169,25,55,136,120,4,226,71,126,189,57,99,145,193,233,146,48,7,165,87,118,83,144,46,209,189,178,255,0,142,112,72,56,227,62,185,61,8,25,86,189,148,143,190,15,210,238, +247,240,4,139,67,143,114,73,24,233,211,53,93,175,216,117,101,39,184,251,125,246,122,242,126,107,126,153,207,127,165,0,14,234,62,243,171,115,193,10,78,125,135,57,56,199,182,120,24,52,207,50,35,212,175, +99,196,110,222,158,128,254,32,117,252,133,50,75,217,137,249,24,224,246,23,151,76,61,136,221,2,159,124,241,207,175,21,88,222,93,100,255,0,172,57,29,126,211,57,231,39,158,84,103,235,206,127,10,0,149,228, +129,64,228,245,206,60,166,4,245,227,230,66,57,245,235,253,97,105,173,249,198,236,1,255,0,60,216,19,140,231,24,65,201,236,71,176,198,105,141,121,118,63,231,176,7,63,48,184,147,29,122,224,202,48,115,237, +131,244,226,162,55,183,57,3,204,147,234,102,207,191,121,9,234,7,99,252,176,0,175,53,176,10,54,54,71,93,200,87,175,190,222,132,118,231,61,240,13,87,146,123,114,71,200,79,169,192,228,143,98,56,30,248,224, +122,247,148,220,200,126,244,178,169,61,127,210,84,100,231,175,205,39,166,114,72,233,233,76,107,132,198,90,89,11,118,205,220,120,192,198,79,50,243,142,59,244,235,216,0,8,254,209,0,192,84,115,143,72,227, +36,126,37,114,71,79,110,1,198,56,168,30,234,48,121,134,126,131,164,10,122,224,240,86,80,0,199,94,163,138,145,231,92,101,37,201,232,72,154,35,244,207,239,15,92,246,244,56,239,80,180,131,188,142,56,60,249, +170,9,192,235,254,184,99,174,59,224,227,235,64,13,251,100,100,224,65,112,122,103,247,103,140,14,50,126,209,208,224,142,0,207,99,215,9,246,152,251,199,118,135,160,199,154,189,186,241,112,71,79,83,216,129, +232,29,148,60,249,143,158,161,188,216,72,60,103,187,131,245,193,232,125,106,7,22,249,249,220,158,159,242,222,221,114,115,200,230,80,73,25,32,3,142,49,233,64,14,107,196,95,249,252,198,48,55,60,164,245, +254,241,144,255,0,51,199,64,106,31,183,168,36,23,189,198,79,75,130,57,237,193,144,0,58,224,251,254,20,141,21,153,231,206,64,79,118,188,180,24,250,239,45,211,142,152,250,1,147,80,180,54,131,254,90,67,142, +167,55,182,93,71,185,207,232,113,199,61,137,0,148,223,12,242,218,128,3,3,2,225,137,207,97,254,176,103,62,188,127,90,133,175,144,116,146,248,123,180,164,145,131,212,19,38,59,231,233,158,15,104,204,54,189, +68,158,131,43,168,91,116,199,160,207,169,24,227,240,205,49,162,181,83,196,234,15,63,243,16,183,57,232,57,1,114,125,72,25,198,49,219,144,7,27,248,131,125,235,188,245,220,36,25,237,215,158,199,177,235,215, +181,71,246,244,39,10,215,140,122,146,102,245,246,222,199,252,244,166,20,183,4,237,145,112,59,45,196,68,250,19,185,72,28,251,14,122,143,90,0,139,63,124,245,255,0,159,152,148,30,188,114,9,233,238,122,142, +77,0,15,116,51,247,174,121,255,0,167,130,191,175,32,156,227,215,129,239,154,79,61,58,134,185,227,25,197,216,4,3,223,38,221,249,227,39,158,56,227,181,77,186,17,140,96,146,57,197,220,68,243,199,31,119,57, +231,211,156,224,242,115,27,48,0,133,199,78,115,119,31,63,147,245,28,227,32,246,28,208,4,70,120,250,22,185,110,71,91,165,35,140,119,54,152,39,166,115,236,71,179,124,232,143,83,113,199,165,192,206,51,233, +246,113,223,215,35,175,214,167,86,152,143,148,156,118,255,0,76,65,223,158,140,123,242,115,223,145,223,44,62,112,201,39,175,36,249,238,216,231,213,91,190,70,113,248,227,138,0,136,60,25,227,237,68,147,222, +100,61,189,4,127,82,120,231,52,194,233,187,63,190,39,158,25,208,99,62,185,192,228,123,15,241,153,139,147,206,87,212,23,156,143,92,228,51,17,159,92,156,117,166,230,64,50,206,173,199,70,150,228,16,8,254, +233,36,123,100,1,140,118,160,8,195,12,225,84,146,73,24,243,224,7,252,87,7,142,160,243,220,102,151,11,158,85,199,169,251,90,40,235,140,240,235,211,158,185,198,63,0,199,121,59,44,4,245,1,94,66,56,236,73, +144,114,126,135,169,199,188,13,44,153,192,142,53,245,2,105,83,25,233,210,76,113,158,227,211,61,232,2,198,197,36,157,174,71,114,47,16,227,211,248,240,127,51,140,30,181,30,216,148,224,135,207,92,11,216, +179,145,245,110,157,122,126,29,205,65,190,99,144,124,130,65,255,0,159,153,73,207,126,178,131,158,7,64,105,172,211,158,49,10,131,199,252,124,72,188,103,212,207,215,25,234,57,30,185,20,1,105,190,95,186, +39,227,39,254,62,225,199,110,152,97,238,70,49,142,123,211,67,28,242,100,57,206,63,210,227,28,227,166,12,184,62,189,56,231,216,85,81,230,46,126,120,61,63,215,238,199,253,245,58,250,112,51,235,199,90,82, +37,35,153,236,192,61,3,24,207,39,61,190,208,217,56,56,192,198,122,143,74,0,149,137,57,56,144,144,63,231,238,60,31,160,221,252,243,223,28,209,81,41,113,128,211,89,156,231,254,120,247,244,204,231,240,57, +35,154,40,3,245,37,174,46,48,55,60,125,123,207,35,103,140,99,148,3,235,207,191,61,162,55,51,17,193,183,31,89,92,131,147,142,138,163,57,60,228,158,123,231,145,86,60,168,23,173,211,176,246,91,147,206,125, +220,113,237,156,123,99,162,152,109,216,113,60,128,227,175,147,120,195,142,6,54,48,231,145,208,253,9,192,160,10,70,119,201,36,219,228,142,187,228,7,35,216,228,117,207,167,95,65,138,132,220,56,198,4,39, +211,153,24,142,252,133,141,136,56,245,60,126,21,112,218,198,217,34,242,92,140,99,22,250,134,220,224,112,65,56,35,158,156,250,114,5,70,108,35,126,183,199,167,79,179,223,0,14,15,93,228,2,123,127,22,15,62, +224,2,131,79,57,36,13,160,12,130,4,82,156,99,169,203,67,131,234,121,250,142,181,17,146,227,28,78,138,123,3,12,135,159,76,8,64,24,228,158,245,116,216,133,200,23,146,145,158,130,11,188,125,126,85,207,166, +114,61,56,168,30,192,55,252,189,76,220,159,249,97,121,252,206,48,114,73,57,61,205,0,82,107,139,181,57,251,76,103,30,176,48,4,243,201,38,44,123,231,57,31,135,12,55,51,255,0,20,240,28,142,119,162,129,235, +156,152,189,58,115,211,215,53,120,216,147,143,244,135,198,71,45,111,116,15,254,132,50,49,156,126,56,207,57,105,177,98,78,46,27,220,249,55,99,140,247,1,142,121,235,158,0,57,231,184,5,35,114,235,195,77, +108,121,199,28,116,60,231,8,184,60,227,142,112,57,199,82,9,247,17,153,45,20,250,146,249,207,124,228,1,147,142,131,174,122,213,191,177,202,14,126,208,231,169,63,45,193,4,243,158,170,79,0,244,166,181,172, +167,238,184,39,147,202,185,231,175,241,69,146,127,17,237,214,128,24,88,50,224,77,98,59,245,152,146,73,255,0,123,0,159,247,120,206,1,244,136,146,51,137,44,79,110,178,28,228,241,140,12,14,57,7,60,246,197, +74,214,215,64,253,232,200,61,127,114,217,237,206,90,33,239,192,224,116,28,117,84,130,243,36,132,67,142,172,99,136,3,201,39,134,136,12,126,57,233,146,59,128,86,50,200,8,0,88,177,7,161,12,79,190,119,174, +0,28,99,156,30,160,210,7,159,36,152,244,211,142,120,120,148,123,15,231,234,121,35,21,112,199,118,57,54,193,143,39,1,45,206,78,15,56,1,120,206,112,15,83,143,74,77,151,88,193,176,25,61,75,195,1,224,122, +28,140,250,28,227,241,232,0,41,125,162,69,224,71,167,55,83,143,49,73,236,127,184,192,116,35,56,199,28,113,212,19,202,127,229,133,136,62,129,163,4,250,117,143,145,131,198,1,3,25,250,222,219,113,144,14, +157,105,245,49,90,147,233,208,146,63,49,219,36,28,28,163,9,192,36,217,219,47,160,242,109,71,92,240,126,67,144,15,95,98,61,178,1,76,188,152,255,0,87,104,24,142,0,146,46,189,127,185,143,204,251,19,154,140, +189,198,64,88,173,143,166,36,183,207,57,227,230,67,223,212,123,129,212,85,173,210,100,230,210,211,182,51,109,110,73,198,125,34,232,64,245,237,215,209,173,185,135,54,54,185,199,123,56,8,35,219,229,206, +6,114,71,94,199,161,160,10,228,93,30,76,54,224,231,60,92,88,175,31,240,36,83,140,140,227,129,236,57,168,164,107,177,210,40,14,8,224,92,105,220,126,33,73,252,248,247,200,171,187,15,107,43,51,211,143,177, +198,115,215,32,128,1,235,142,184,237,205,41,64,70,239,176,218,110,7,144,45,35,30,248,201,86,61,114,57,24,39,169,56,20,1,156,36,187,24,202,39,184,23,90,102,59,158,51,129,142,122,128,51,211,176,194,249, +183,219,178,45,209,177,233,123,166,169,252,113,211,175,185,231,173,104,121,99,7,22,54,128,156,117,182,183,236,127,235,151,56,227,169,227,35,20,210,128,244,180,180,1,113,210,206,51,158,189,63,115,236,120, +233,235,140,28,0,81,19,223,41,230,219,105,255,0,102,230,197,135,211,43,32,39,140,244,206,15,81,214,158,183,23,157,26,222,70,35,159,248,249,181,237,212,99,204,228,247,239,131,208,85,141,167,7,22,246,227, +130,56,181,65,232,15,202,182,199,161,237,245,245,4,183,99,96,226,33,199,3,22,202,6,51,140,103,236,156,122,245,231,62,244,0,223,181,93,255,0,207,163,99,222,226,28,245,255,0,102,66,127,35,77,23,87,31,195, +110,73,28,159,155,119,39,25,231,156,127,158,134,131,27,247,181,45,233,139,113,159,82,120,131,24,250,1,197,31,103,145,179,139,22,57,31,197,104,220,118,224,249,64,119,237,215,216,241,64,15,91,153,216,228, +219,184,61,136,45,201,255,0,128,28,228,112,49,192,244,235,195,204,211,14,176,227,220,199,112,217,250,144,9,255,0,31,81,222,15,177,200,48,77,138,169,29,1,182,42,73,29,190,231,7,215,167,31,149,13,4,248, +24,177,206,51,214,39,235,216,96,40,227,208,254,163,138,0,155,205,155,145,228,187,14,58,91,93,156,118,231,17,183,83,234,125,105,234,210,142,182,178,31,95,244,107,161,215,175,34,48,113,239,197,83,49,204, +188,13,60,51,14,49,183,7,235,201,7,143,76,231,211,28,82,170,207,156,157,56,253,0,144,15,111,186,252,146,123,0,56,246,224,128,92,216,236,120,183,157,115,207,16,93,158,184,233,185,71,190,51,249,156,83,150, +50,113,149,157,79,36,255,0,163,221,0,63,17,198,56,231,56,237,140,17,84,74,204,199,141,56,245,238,178,118,207,60,231,167,174,77,76,33,186,0,31,176,99,61,48,164,147,248,112,123,158,49,223,60,244,32,22,188, +150,35,59,73,30,240,202,79,108,228,145,233,254,60,156,26,13,168,56,249,27,39,146,4,56,228,99,156,50,116,207,127,92,84,30,77,214,50,44,241,143,68,114,15,4,127,121,123,112,121,3,183,67,138,21,46,135,75, +87,25,28,126,238,115,142,231,238,202,127,144,61,59,154,0,176,44,248,200,138,225,178,127,133,98,82,7,166,118,130,9,199,81,156,12,113,158,171,246,60,114,33,185,25,193,232,141,216,115,149,112,123,115,198, +78,113,131,197,70,22,240,12,139,121,7,63,120,69,112,15,176,206,252,123,244,207,126,122,83,214,91,222,0,75,142,51,130,82,110,58,115,209,128,231,191,66,104,1,141,106,51,130,151,3,174,14,196,83,201,56,0, +100,224,158,159,254,172,5,22,224,12,20,186,7,156,49,42,0,192,193,224,99,56,235,146,70,49,212,84,223,241,48,60,152,110,143,32,140,69,39,25,247,32,103,175,63,231,50,108,191,110,66,94,41,239,251,169,79,95, +162,19,129,131,140,3,211,233,144,10,226,44,103,15,118,0,231,253,100,101,79,94,217,36,117,207,29,121,230,152,85,148,253,249,138,243,207,35,215,169,7,174,115,244,245,28,154,182,32,190,110,166,232,99,57, +38,9,207,168,232,97,45,208,255,0,119,61,248,6,144,90,94,140,144,215,0,156,115,246,107,161,212,30,164,68,163,62,156,112,122,242,57,0,168,88,142,85,216,1,254,211,250,30,112,50,51,159,79,168,160,92,58,242, +210,72,57,192,196,183,3,56,233,209,112,15,3,142,217,7,21,100,193,122,141,134,55,4,30,255,0,103,188,57,227,209,35,206,121,62,253,115,197,52,199,112,49,242,78,127,221,181,189,3,35,57,25,101,246,63,134,56, +56,20,1,7,159,41,198,217,37,32,156,156,207,114,59,228,99,3,140,231,252,145,154,81,51,231,36,150,39,161,55,23,217,227,35,28,0,78,1,227,177,237,140,131,82,24,174,91,254,93,166,61,58,217,203,201,7,185,42, +125,255,0,175,61,67,5,214,0,54,172,7,98,109,152,158,157,62,230,7,61,113,145,142,128,117,160,8,196,172,62,240,200,61,188,237,75,24,234,73,32,62,70,6,56,0,231,242,167,164,138,15,250,185,79,161,91,139,224, +51,233,204,42,195,7,39,145,235,248,72,144,220,16,49,108,217,200,231,236,236,65,252,59,140,12,114,59,116,192,52,226,147,174,67,219,55,212,193,48,31,80,84,147,239,208,247,205,0,6,94,6,33,147,62,191,106, +190,233,239,242,99,63,81,145,159,165,32,157,1,199,217,119,123,25,175,143,39,57,233,23,39,241,234,61,169,140,100,25,62,82,170,244,56,182,184,36,244,238,79,174,71,79,92,240,114,25,230,21,193,218,7,35,36, +192,232,61,15,241,3,248,227,191,189,0,92,19,41,207,250,19,169,206,126,89,175,71,64,15,32,193,216,116,250,158,245,54,229,43,243,89,204,125,15,155,114,115,200,25,4,193,201,3,29,243,212,103,21,71,237,146, +17,200,4,122,152,212,224,243,207,206,237,219,158,70,71,35,167,20,225,124,163,134,4,100,255,0,207,24,112,78,113,156,249,163,156,251,113,143,198,128,46,20,133,176,77,140,228,251,60,196,243,238,98,239,211, +145,140,129,214,154,109,161,227,54,119,106,79,92,151,35,145,192,27,162,199,79,166,61,250,138,191,110,140,177,249,120,234,67,121,11,158,231,57,145,142,79,177,236,15,92,84,162,250,17,140,4,31,246,209,64, +31,247,200,60,99,211,29,190,148,1,55,217,162,207,252,123,220,246,0,24,212,31,94,119,40,39,25,61,120,227,168,207,32,183,143,160,138,113,146,126,242,196,6,64,199,66,8,198,71,39,143,81,233,80,181,236,76, +51,230,196,164,99,3,237,14,49,140,246,92,99,183,79,214,161,55,74,71,19,64,8,233,254,145,56,235,212,125,240,73,199,83,194,142,184,228,138,0,178,108,216,30,21,251,99,122,66,7,7,145,223,30,188,14,65,252, +216,214,179,231,229,100,201,246,128,1,245,5,64,252,71,175,53,79,237,106,164,3,117,16,201,233,246,137,0,207,227,58,228,244,234,9,207,78,105,77,216,35,139,148,60,15,249,120,3,245,107,142,217,227,129,140, +122,19,64,23,5,141,225,31,44,177,143,109,246,224,127,35,233,254,120,168,155,77,188,239,44,99,61,65,154,219,167,126,15,202,7,225,199,210,161,55,82,5,255,0,94,118,231,3,253,41,78,58,246,23,56,237,158,159, +208,84,77,116,237,156,220,14,113,207,218,84,100,245,234,103,35,158,125,113,147,233,64,18,53,133,210,129,151,128,103,163,25,109,71,61,15,67,130,61,184,207,183,90,65,97,116,48,12,182,224,245,221,230,218, +224,112,15,57,220,127,47,94,59,85,115,52,157,174,148,30,112,63,180,8,4,14,167,9,59,99,158,156,14,188,14,104,6,224,130,69,222,58,103,26,132,167,31,221,227,204,201,227,223,140,158,157,40,2,199,216,174,1, +200,123,18,221,247,27,114,113,238,60,159,167,106,105,183,184,57,255,0,143,64,114,57,6,37,201,234,65,30,64,207,57,232,0,237,200,235,84,181,202,255,0,203,218,131,156,127,199,237,193,200,57,207,73,250,15, +81,207,78,125,79,223,241,155,146,248,199,2,242,236,129,143,99,49,206,127,15,114,120,160,11,130,218,240,240,26,204,116,235,228,183,127,83,110,123,253,73,235,201,232,227,111,126,14,0,180,199,174,216,23, +212,247,181,29,50,70,61,122,116,170,224,204,0,37,230,110,121,11,123,114,188,115,215,116,220,227,223,57,244,238,24,12,204,0,219,116,192,117,255,0,76,148,140,158,153,249,206,73,199,4,231,147,235,205,0,90, +54,215,167,36,136,91,61,54,249,88,224,127,179,108,73,239,211,215,39,60,80,214,215,32,96,196,0,3,176,3,142,59,121,10,14,57,236,57,35,210,170,178,206,71,220,185,192,7,173,220,195,3,28,227,230,62,157,64, +7,211,147,194,42,73,183,152,167,56,199,91,217,139,115,140,247,254,88,235,193,160,9,254,201,112,6,74,176,207,65,182,51,147,206,78,89,7,3,234,49,215,128,40,22,119,61,11,40,4,231,37,160,31,135,65,215,211, +175,229,195,5,188,164,13,176,220,158,0,207,219,46,49,142,249,253,226,250,244,239,223,165,72,45,230,3,2,27,131,158,223,104,185,97,244,230,227,191,127,67,212,80,3,190,203,112,163,0,140,250,238,182,193,247, +25,35,168,235,131,158,115,128,69,48,193,63,118,0,143,250,105,104,160,227,169,3,205,83,245,206,65,199,94,244,134,27,129,199,217,165,7,175,19,220,49,60,17,157,191,104,35,61,62,189,134,56,163,201,186,3,253, +68,222,219,90,92,122,96,19,47,113,216,18,113,199,38,128,27,246,82,70,237,233,142,249,150,207,131,159,79,60,250,250,122,231,220,251,48,25,45,44,96,251,75,104,122,231,7,137,184,4,246,30,255,0,90,73,45,175, +0,4,69,114,51,206,1,148,254,100,185,192,247,206,61,197,87,104,174,135,222,73,249,63,196,29,128,245,224,57,198,56,200,199,161,192,56,20,1,57,134,60,228,202,7,98,119,91,49,244,224,121,202,72,247,232,69, +56,91,161,28,74,135,31,223,54,216,198,57,235,121,129,244,28,118,7,189,83,41,120,51,212,14,219,162,184,207,182,74,149,227,223,7,61,207,122,132,139,172,18,94,62,163,170,94,19,248,225,186,242,120,207,189, +0,95,48,38,72,50,219,122,144,126,203,143,253,41,98,127,17,223,57,165,242,161,0,228,88,176,255,0,183,115,215,61,64,159,168,61,7,160,36,3,197,103,134,156,14,25,126,162,218,248,254,27,135,111,175,229,77, +105,110,70,8,40,70,78,9,182,189,56,237,208,198,221,126,189,143,83,64,26,232,177,5,56,75,28,246,198,211,193,199,77,179,31,228,79,92,154,66,71,100,180,3,158,172,84,122,241,137,115,219,140,231,53,146,103, +156,158,21,91,24,206,45,111,112,125,200,251,43,15,175,39,167,168,164,243,220,114,200,14,59,11,27,150,63,248,245,174,7,190,125,191,0,13,66,172,196,108,251,47,79,239,176,25,233,142,88,159,92,147,145,158, +157,41,124,187,177,247,5,175,208,79,140,227,129,192,96,125,57,39,31,133,102,125,173,187,41,192,207,252,185,204,163,223,172,3,29,123,15,122,114,222,145,201,252,196,14,163,243,107,124,113,223,241,237,212, +2,249,142,247,57,34,12,116,226,86,56,63,80,72,29,58,117,231,61,14,105,12,87,3,36,139,126,249,205,204,195,223,35,129,158,217,236,7,63,90,226,240,17,247,192,207,0,148,140,30,120,25,6,48,71,215,25,245,7, +140,47,218,24,255,0,203,199,30,222,64,252,6,97,199,126,253,187,129,208,2,66,141,223,236,131,175,252,189,63,31,80,70,71,63,129,219,248,84,69,3,119,180,24,228,98,229,249,231,142,66,231,28,103,25,199,169, +61,42,97,59,1,196,242,19,140,146,22,204,156,96,140,3,228,18,122,245,7,168,245,206,31,246,134,35,137,103,233,235,106,15,29,73,196,3,255,0,175,211,222,128,42,49,3,140,219,15,251,108,255,0,151,32,159,78, +72,255,0,235,135,4,28,253,156,96,247,154,94,121,255,0,174,125,253,9,252,115,86,183,191,252,244,155,183,36,90,158,120,193,194,196,1,198,15,65,215,174,112,105,9,149,137,196,215,7,215,63,102,235,207,77,208, +128,15,30,160,115,198,48,40,3,63,100,108,121,91,82,15,7,247,215,4,243,234,60,190,65,239,207,215,158,40,88,99,81,144,150,167,131,147,190,233,122,15,100,57,233,216,0,6,112,58,10,187,182,99,130,36,159,140, +129,205,160,245,200,192,78,199,140,103,166,49,142,105,12,115,158,90,121,192,60,112,214,192,253,0,84,239,249,126,2,128,41,236,70,235,12,39,29,118,75,126,113,255,0,124,199,130,78,115,140,227,222,129,13, +158,114,97,136,19,233,38,161,193,56,245,65,158,125,1,56,56,60,213,161,30,63,229,172,196,227,169,251,62,51,207,4,149,82,122,144,48,79,56,234,105,12,68,158,9,239,213,45,201,61,57,224,31,203,147,233,220, +80,4,30,77,160,200,16,196,199,174,65,187,115,211,253,160,49,142,15,210,144,195,111,218,222,18,189,178,147,123,228,2,170,123,115,219,167,38,174,109,32,124,193,176,6,65,17,67,207,211,133,206,115,220,227, +166,51,154,107,56,61,21,193,235,147,10,123,115,133,110,167,215,241,250,0,87,88,161,28,139,69,244,1,82,231,36,15,161,24,254,103,154,112,141,71,2,209,134,6,50,18,236,253,0,0,143,76,99,63,144,193,167,101, +135,118,7,166,12,17,103,158,223,51,146,58,113,198,122,212,102,98,159,120,55,61,49,20,32,156,241,201,203,100,113,211,175,112,15,96,0,170,158,182,242,47,210,27,210,115,211,131,187,252,58,241,212,10,110, +209,142,96,184,31,238,193,120,79,30,229,135,182,48,122,116,226,151,205,221,203,52,192,117,249,99,131,242,28,100,17,158,189,121,25,198,41,77,202,40,230,73,0,255,0,174,49,147,158,122,224,117,245,250,159, +169,0,55,162,130,12,119,35,160,255,0,81,117,159,126,172,222,252,100,31,124,131,152,243,0,203,17,116,61,127,209,102,108,114,123,151,228,242,112,8,35,160,235,154,119,219,35,28,153,46,56,207,252,178,85,28, +12,116,3,24,39,167,25,252,58,188,220,146,70,201,37,199,60,18,138,71,224,3,113,147,199,94,217,247,0,132,201,23,97,49,231,24,54,173,156,122,144,75,19,249,123,251,6,23,136,146,68,114,142,188,139,78,123,103, +248,71,92,115,252,179,83,253,161,191,191,63,208,72,23,61,73,28,69,145,158,121,207,60,142,213,11,220,228,156,27,130,65,199,51,178,130,125,62,104,113,147,192,28,245,252,9,0,105,145,78,62,89,243,201,31,232, +142,121,236,78,208,220,128,79,78,191,74,12,131,156,249,249,29,71,216,101,63,158,97,32,30,58,224,231,218,154,110,38,249,71,39,174,55,92,31,110,226,2,79,185,4,246,199,92,212,109,57,228,50,143,124,94,56, +63,250,78,78,61,70,9,192,198,40,2,79,55,29,94,227,156,30,52,247,63,145,54,248,246,193,200,245,25,198,83,205,78,134,91,158,188,255,0,160,176,237,237,108,49,235,142,70,122,156,156,136,124,254,72,86,113, +158,198,233,136,199,166,90,219,241,39,63,200,97,226,102,31,43,20,111,66,215,37,122,227,131,139,127,83,198,77,0,73,230,198,71,15,55,167,54,92,156,30,164,152,51,223,35,140,241,206,112,40,50,33,227,204,206, +65,60,218,40,35,240,22,220,30,192,158,135,182,14,76,123,206,50,12,93,15,252,191,184,233,159,250,100,7,115,255,0,214,164,14,231,248,162,25,201,3,251,69,185,250,31,43,176,237,207,173,0,88,89,74,142,30,32, +59,238,183,10,120,201,207,54,252,143,113,156,142,112,122,83,196,136,71,250,232,177,223,8,248,235,200,194,194,190,152,28,125,7,173,6,18,147,201,183,198,56,255,0,76,15,145,200,228,52,36,19,212,142,221,51, +200,166,21,39,36,188,32,146,65,34,101,239,244,135,190,123,227,212,243,140,128,105,153,226,92,159,62,49,199,163,143,203,128,79,62,160,158,58,96,84,109,60,60,230,104,73,235,147,52,169,207,7,24,27,70,122, +231,223,211,21,156,35,25,201,104,142,57,27,110,23,168,199,81,229,134,28,158,59,122,140,212,190,84,110,57,32,158,51,182,114,199,3,175,2,54,235,198,58,244,0,96,113,64,22,12,214,141,214,120,129,39,159,244, +151,3,232,65,113,199,110,217,239,144,113,81,147,96,196,110,150,2,122,103,237,39,212,131,207,156,15,3,223,60,241,138,139,236,176,228,227,126,48,122,200,15,110,56,242,27,130,120,201,57,246,237,78,91,50, +199,128,62,187,194,130,61,55,8,7,61,243,156,116,61,232,1,60,187,34,78,39,183,61,51,139,145,142,122,28,52,221,112,58,227,24,230,159,229,88,16,9,184,135,24,228,11,165,252,201,18,114,49,142,160,227,166,122, +84,71,78,57,224,128,113,140,121,238,122,250,15,32,123,118,61,57,62,141,107,71,81,130,91,131,140,171,177,231,175,107,98,63,74,0,159,203,211,136,230,101,57,224,145,50,182,15,28,12,76,49,219,62,190,213,3, +193,167,100,230,89,112,121,249,100,78,122,227,254,91,14,131,32,19,215,140,224,147,81,155,39,60,147,38,79,76,180,252,227,233,103,215,143,94,7,227,150,27,71,7,230,243,56,24,200,142,235,118,125,241,98,114, +56,227,223,28,250,128,35,197,100,163,229,121,255,0,16,173,207,113,255,0,31,62,223,76,247,197,69,182,219,248,94,125,199,61,85,0,237,217,102,62,231,158,59,212,254,65,7,25,184,231,212,221,168,206,15,111, +177,14,156,227,29,179,142,188,40,183,124,28,60,235,131,145,143,181,28,100,242,79,250,39,227,159,229,212,0,85,242,161,235,184,144,121,207,146,164,240,114,56,50,28,250,129,206,121,228,30,105,140,17,70,119, +1,206,56,138,33,211,176,231,57,57,28,15,195,222,119,134,108,229,110,38,220,58,13,178,131,250,217,103,142,156,144,6,123,245,49,159,60,100,253,170,227,183,1,152,115,208,231,54,232,62,185,29,135,29,232,2, +31,52,243,177,165,200,29,145,7,78,195,4,227,142,185,252,250,211,150,225,134,65,89,24,255,0,192,61,7,112,224,15,207,156,244,237,72,205,48,198,100,187,56,238,30,76,96,245,233,9,192,245,4,241,223,56,205, +55,206,97,145,190,239,24,39,104,201,199,215,247,71,175,124,246,235,238,0,166,225,186,121,108,78,8,198,212,63,145,50,30,7,110,49,211,35,173,49,167,144,14,1,231,166,82,63,208,147,143,208,245,166,52,251, +135,45,118,49,212,144,195,61,251,133,247,63,135,191,16,153,225,28,177,186,39,221,16,131,245,45,159,78,59,116,20,1,47,218,24,125,224,65,61,50,19,4,14,248,4,158,51,234,6,122,10,99,74,199,4,69,17,228,245, +59,115,207,169,24,57,245,207,212,138,143,206,183,200,200,185,29,254,236,107,201,207,95,153,115,211,215,177,32,241,81,52,176,18,70,217,48,56,59,188,163,158,189,132,163,232,113,237,144,70,112,1,57,127,88, +32,4,227,57,36,243,239,133,236,62,190,221,72,17,249,234,56,242,162,4,156,112,64,28,244,228,168,62,189,200,24,237,206,107,150,80,50,33,39,232,176,143,209,156,227,219,39,39,183,165,68,210,33,24,123,97,223, +37,146,12,19,248,73,220,147,208,159,112,40,2,233,144,19,131,20,71,161,3,123,156,15,194,22,29,122,242,126,131,52,198,201,224,67,9,207,172,172,0,25,233,159,36,159,126,64,232,58,241,138,38,104,143,31,101, +136,147,253,230,132,103,254,3,230,31,95,199,130,78,105,173,37,184,192,54,246,136,56,232,98,83,249,131,207,183,231,145,64,23,136,36,127,168,132,0,79,221,150,64,9,232,63,229,139,122,30,217,252,51,80,176, +35,129,4,36,231,128,102,96,7,95,250,117,30,189,125,193,172,230,123,92,228,199,108,125,150,104,137,207,95,186,49,147,211,146,115,223,212,212,123,173,15,72,173,84,231,3,116,232,51,212,12,140,99,159,174, +104,2,203,171,131,205,188,7,63,244,245,159,253,10,32,61,59,99,219,210,34,28,12,253,158,220,19,198,4,234,122,103,140,136,134,114,15,114,7,92,119,170,206,109,79,252,177,177,206,58,153,202,231,56,233,181, +73,245,206,113,200,245,226,171,176,183,25,194,217,3,201,192,186,152,112,63,220,4,158,248,252,134,113,64,23,26,87,76,230,218,5,227,179,130,59,255,0,178,73,31,83,235,207,92,69,246,165,201,12,150,192,247, +200,193,30,252,145,159,78,252,115,219,34,161,107,96,57,72,14,115,159,46,238,224,246,28,224,168,233,245,227,147,239,80,188,182,107,193,242,0,28,115,115,56,192,199,25,225,78,61,73,227,63,133,0,93,123,181, +35,148,182,233,206,118,158,156,15,226,60,99,143,254,176,230,140,151,74,63,130,212,156,159,225,83,249,29,171,248,245,57,199,227,17,150,201,143,221,139,31,236,92,222,28,142,7,240,99,147,236,15,225,222,22, +150,211,156,36,106,71,66,215,26,145,207,208,100,123,119,200,60,143,74,0,115,93,54,112,35,181,28,119,67,199,94,65,243,70,79,79,76,115,199,21,94,73,201,4,23,177,92,227,57,78,222,132,153,143,181,71,36,214, +167,3,11,198,120,89,175,248,252,136,36,103,3,147,192,224,156,224,212,102,120,49,242,21,4,244,1,245,6,234,51,158,39,92,156,100,227,211,20,0,214,59,129,30,102,156,51,206,12,121,245,207,2,108,100,245,200, +7,158,128,84,4,30,130,109,60,231,28,253,152,241,140,116,34,83,212,246,235,252,233,205,44,107,159,153,14,59,121,183,128,158,253,26,244,96,159,126,245,17,185,183,201,25,43,140,242,102,184,0,119,39,139,209, +145,207,24,39,161,245,160,6,56,110,118,203,167,253,124,135,3,208,227,150,0,227,39,56,252,78,77,70,99,148,244,150,192,103,168,218,168,56,255,0,121,115,158,189,15,94,156,28,84,223,105,181,207,44,78,50,9, +51,55,110,15,47,124,63,16,71,78,245,9,150,193,185,7,105,238,11,163,12,119,201,55,248,228,250,103,183,39,176,4,109,109,59,2,7,216,91,211,5,56,199,253,179,61,125,57,207,78,245,84,218,221,114,89,172,151, +176,33,242,112,113,130,63,118,57,238,112,120,207,78,121,178,237,105,208,73,22,49,255,0,61,35,200,231,147,197,247,28,99,191,235,80,147,102,58,205,24,192,255,0,158,234,58,127,219,248,199,127,110,71,97,64, +16,27,107,131,159,154,223,219,107,241,129,142,73,45,128,78,9,231,220,14,122,198,214,183,60,131,36,35,29,132,177,127,158,48,122,156,241,208,212,204,214,39,32,221,34,128,122,45,196,114,112,6,1,255,0,143, +230,60,140,113,159,94,184,24,131,26,97,227,237,103,56,29,74,158,254,162,240,12,103,177,61,186,208,4,102,222,113,128,100,136,158,156,24,72,252,72,7,184,253,121,233,154,139,99,140,242,153,246,42,71,190, +63,116,64,233,198,61,126,149,51,67,165,182,115,115,25,30,133,65,227,182,71,218,216,30,15,81,234,71,106,136,195,165,96,129,52,7,143,249,230,132,18,0,224,131,57,39,7,142,125,71,3,138,0,143,100,131,35,17, +253,115,201,233,219,202,227,143,94,252,99,131,81,178,176,201,42,152,245,218,122,123,130,152,60,245,200,247,250,74,208,233,152,207,157,110,199,190,96,92,142,253,165,57,235,131,255,0,235,168,90,43,30,185, +128,12,12,31,36,3,131,145,198,201,87,7,167,45,159,202,128,33,125,163,28,69,130,48,67,68,173,193,57,228,3,158,167,7,184,199,227,85,157,115,252,75,131,198,22,4,198,61,57,201,252,113,233,219,32,219,242,172, +129,36,121,4,114,62,104,100,250,100,159,48,247,246,62,188,98,171,185,177,29,77,167,30,144,74,199,212,119,247,227,175,185,160,10,172,54,140,229,206,113,247,98,139,63,158,222,195,24,57,224,103,29,234,13, +164,114,21,187,99,116,81,28,30,58,174,1,32,247,206,5,90,99,100,114,1,182,236,65,251,27,158,221,190,96,127,64,115,244,168,135,217,70,114,45,88,127,123,251,60,231,142,58,179,115,237,206,104,2,60,35,40,202, +134,56,201,255,0,71,206,71,176,13,183,177,39,7,249,84,68,196,189,98,95,161,183,192,7,212,101,142,126,156,112,62,162,172,111,180,3,2,59,63,161,176,92,126,59,143,29,115,206,61,170,51,53,184,7,11,98,49,208, +11,56,211,7,158,126,249,198,122,30,15,166,121,205,0,86,105,33,31,242,197,114,114,63,213,32,28,244,206,100,202,159,112,51,147,138,133,165,139,105,194,96,231,63,117,112,50,115,215,207,206,71,65,128,7,39, +175,6,173,155,184,71,68,178,250,24,35,30,153,0,121,132,243,156,144,58,99,144,114,77,55,237,22,231,189,170,145,159,187,4,28,122,245,57,0,99,35,35,182,49,146,40,2,137,145,71,59,78,113,234,7,254,59,231,113, +192,224,250,211,75,19,130,33,99,142,114,25,193,233,237,57,81,140,156,224,117,235,208,85,183,184,180,3,153,45,201,201,192,242,97,201,28,145,234,57,235,215,177,60,116,168,133,229,160,254,40,128,199,240, +37,190,115,207,109,163,142,231,233,212,208,5,98,236,167,6,39,60,16,62,121,136,245,192,43,41,199,29,49,223,140,83,76,131,25,242,0,207,0,51,78,71,78,156,220,131,234,122,113,207,21,104,223,89,243,137,36, +199,94,18,220,28,140,14,187,186,116,0,21,233,198,57,225,86,254,209,72,96,211,30,63,233,219,177,235,146,220,125,115,140,80,5,45,228,14,45,226,35,0,240,39,98,6,122,156,93,14,156,250,227,211,174,35,45,206, +68,9,146,49,129,230,2,188,115,128,103,60,143,78,220,228,214,167,246,156,59,112,4,131,147,252,86,192,246,236,9,39,241,252,177,73,253,162,72,36,60,157,78,54,205,2,156,127,9,35,35,61,58,124,189,77,0,101, +22,102,206,81,64,31,237,57,3,28,143,187,62,1,245,228,14,7,124,208,50,113,132,32,140,255,0,20,188,245,236,211,30,61,135,30,181,169,253,164,113,131,37,214,125,174,99,43,207,160,218,217,7,25,207,56,198,1, +245,63,180,28,244,123,172,28,244,184,135,140,246,199,150,221,177,209,65,200,207,7,20,1,152,9,31,242,204,17,158,115,185,177,215,214,66,78,113,239,142,188,83,196,128,96,155,101,57,232,124,177,192,198,58, +121,128,228,241,250,158,149,124,234,51,3,149,123,222,64,198,110,161,198,127,239,216,199,226,9,237,233,76,26,141,223,36,121,217,61,9,186,131,167,212,160,36,126,0,112,112,15,74,0,168,102,140,96,152,2,158, +65,38,40,187,17,158,26,81,215,142,156,246,193,237,31,159,17,57,242,96,193,56,249,162,128,116,245,204,221,250,254,57,28,98,180,62,217,122,122,72,195,235,115,109,131,143,172,125,121,247,163,237,154,137, +200,15,25,0,224,255,0,164,90,231,175,186,140,140,128,9,7,25,227,158,40,2,135,159,18,129,242,219,131,211,62,85,175,127,118,149,134,56,231,128,13,40,157,115,243,8,50,64,199,22,138,61,250,48,199,25,236,73, +171,166,123,246,0,239,136,118,36,220,218,243,199,92,238,45,219,176,3,145,145,192,168,217,174,207,223,158,60,14,152,185,180,61,57,234,65,60,247,239,142,252,80,5,113,62,112,66,192,7,79,189,1,35,158,152, +24,232,59,243,233,223,52,83,217,165,198,77,202,28,122,77,102,125,249,193,4,128,120,231,177,62,130,138,0,253,73,50,134,254,57,219,174,121,151,175,215,203,199,184,198,79,61,178,51,19,50,147,213,199,174, +94,81,130,8,239,179,242,253,56,171,230,214,37,206,46,227,25,201,226,87,25,227,161,5,1,231,35,35,57,227,158,148,130,213,186,173,194,224,114,0,153,125,59,228,114,125,65,206,121,197,0,103,174,51,242,187, +159,248,29,217,56,227,174,0,199,61,58,227,215,165,52,249,163,145,33,206,121,6,75,193,199,176,49,176,246,233,253,42,251,91,76,15,18,198,72,57,230,238,28,250,142,11,96,103,158,72,244,29,42,172,137,40,206, +233,144,16,127,231,250,211,29,120,227,167,94,49,143,108,230,128,32,196,135,172,184,228,28,151,187,233,220,19,229,175,25,246,199,76,115,192,137,212,177,36,188,103,57,201,243,110,193,200,61,194,161,235, +207,126,160,242,106,86,243,48,0,158,215,35,254,159,109,15,224,8,133,134,7,212,147,158,73,239,25,19,147,196,246,237,220,129,61,155,112,58,253,219,60,159,193,134,115,215,181,0,64,225,212,228,21,39,7,159, +59,81,198,6,122,149,137,177,235,235,140,10,140,60,253,202,158,152,34,235,80,80,23,29,203,192,0,207,160,24,28,123,212,229,223,39,113,131,35,128,60,232,23,24,244,197,184,244,60,231,242,52,172,232,115,151, +69,108,12,133,185,135,168,60,2,26,219,232,61,51,140,80,5,127,54,64,15,239,35,24,29,239,238,250,30,217,242,143,65,144,56,236,120,197,48,206,71,87,66,15,95,248,152,94,159,78,251,2,227,242,206,58,18,106, +99,33,232,30,51,192,228,77,106,122,122,226,216,227,235,215,168,245,164,15,48,31,43,2,6,126,236,144,55,167,31,45,154,227,182,1,253,40,2,49,113,146,50,209,159,111,182,221,156,119,201,30,89,62,231,39,3,184, +245,127,218,99,98,1,42,9,244,188,185,31,206,37,25,235,212,156,240,58,210,121,178,175,241,109,250,249,120,39,211,254,61,0,61,187,159,167,20,195,51,146,71,155,147,220,108,220,49,145,144,8,181,24,57,25,232, +127,26,0,144,77,110,57,44,73,231,165,237,201,98,122,30,2,146,59,243,143,241,165,107,139,108,16,174,251,135,92,92,221,145,159,94,99,201,206,51,208,115,211,189,64,75,191,30,98,231,61,30,46,112,122,14,109, +49,235,156,244,228,115,131,74,84,156,114,79,80,126,72,192,244,63,242,231,215,142,224,254,124,80,2,249,241,156,159,58,81,158,56,184,186,92,3,211,3,97,60,119,36,1,208,211,68,240,14,12,247,36,231,4,153,174, +15,57,0,253,224,7,7,212,3,244,38,144,194,192,2,169,147,158,229,20,126,63,184,80,120,200,224,123,116,166,121,83,146,0,88,198,222,188,197,193,25,206,115,7,225,201,61,63,32,9,60,235,96,192,9,110,155,36,142, +25,206,113,238,64,39,29,58,156,227,181,53,166,179,61,62,218,73,60,237,18,227,175,169,0,96,247,193,29,49,192,28,70,82,112,121,104,79,92,143,220,147,131,235,136,198,73,238,56,207,20,128,200,220,110,143, +35,57,0,162,156,114,57,24,24,227,35,56,226,128,2,108,179,157,183,199,183,241,100,125,73,113,128,127,14,59,242,13,53,164,181,28,6,212,135,161,87,124,14,252,98,78,49,237,145,211,3,25,165,37,200,27,228,224, +116,6,68,3,219,230,44,0,231,235,207,24,207,68,220,6,6,71,57,201,251,76,96,18,79,160,111,232,125,115,140,208,4,5,160,102,37,110,53,47,112,62,208,223,175,152,71,227,142,127,90,99,50,96,254,250,248,147,145, +150,89,64,234,56,61,73,199,4,146,49,192,244,197,91,224,241,181,84,14,115,246,196,82,71,213,137,207,215,111,243,21,32,69,24,56,126,131,165,244,103,7,174,112,163,36,126,28,115,200,230,128,51,8,66,6,37,185, +7,7,140,48,24,231,190,73,250,240,61,14,58,211,194,67,140,153,38,99,211,159,48,243,211,56,94,114,125,198,56,250,86,145,219,143,189,63,0,100,249,242,184,29,177,148,67,199,35,175,113,199,106,99,50,14,142, +224,28,116,105,189,50,49,146,51,201,207,24,250,16,104,2,137,69,32,5,39,220,186,77,223,142,234,78,49,223,143,241,65,10,240,55,196,9,254,250,92,247,29,134,87,208,122,117,227,181,92,102,129,254,251,220,100, +14,206,248,199,174,12,192,140,247,237,211,129,138,133,163,132,253,211,115,142,70,78,195,250,188,188,231,57,232,49,219,214,128,32,48,227,164,150,160,103,7,17,205,198,126,185,237,142,199,161,228,99,135, +132,219,192,158,212,14,223,185,152,144,127,239,140,99,128,59,154,12,35,63,41,149,186,114,90,16,126,128,23,57,235,140,119,250,243,65,136,117,42,122,244,34,34,115,145,156,145,48,35,241,7,35,175,173,0,56, +65,187,25,185,180,35,182,235,89,61,122,125,192,59,246,234,120,169,126,206,87,63,191,211,143,127,245,24,234,113,212,140,129,237,142,61,186,85,111,45,122,110,40,70,15,9,30,49,233,147,114,1,250,115,212,241, +210,163,104,192,234,95,57,200,253,220,93,56,228,15,57,128,198,7,7,211,214,128,46,8,216,18,69,214,158,48,113,197,184,98,63,37,199,94,122,99,61,206,14,36,41,57,31,45,229,152,24,235,246,39,32,245,61,143, +211,56,3,60,214,111,32,2,9,31,239,219,161,63,152,152,12,231,140,228,15,202,141,196,231,45,22,121,31,52,49,17,145,219,155,158,163,212,241,237,210,128,47,152,174,58,253,178,204,250,145,99,39,25,207,56,201, +236,113,206,121,199,175,9,228,220,28,3,125,8,0,244,91,32,79,224,10,224,255,0,250,198,122,213,0,204,14,119,64,6,15,2,56,8,237,211,253,41,177,207,78,61,123,115,82,43,200,72,42,246,228,247,24,132,28,250, +159,222,28,118,198,123,16,115,232,1,112,69,115,156,37,250,231,168,198,159,11,159,95,238,28,96,247,228,243,71,151,121,198,235,231,56,198,49,167,47,56,206,79,17,143,112,2,245,254,85,188,251,132,231,54,221, +14,73,116,3,166,63,134,80,15,30,152,169,22,242,225,78,0,181,0,115,196,172,8,207,92,134,151,7,208,253,123,116,160,9,12,119,189,5,239,60,116,211,227,82,15,36,18,12,71,161,7,174,114,59,99,171,12,119,235, +210,233,125,127,227,201,9,63,135,217,31,168,246,61,9,237,79,55,211,127,122,223,160,200,5,8,207,190,100,113,207,66,57,245,35,140,210,139,249,134,65,107,115,220,29,209,131,248,21,112,71,191,63,135,52,1, +89,151,83,83,205,195,16,122,133,177,24,59,113,217,108,7,175,81,142,157,197,2,61,64,143,245,132,143,95,177,174,79,108,255,0,199,144,25,235,219,158,190,181,107,251,70,82,122,218,140,255,0,121,215,39,242, +231,0,14,51,198,125,249,166,62,161,40,228,77,108,167,29,21,215,146,49,207,50,14,126,128,117,206,6,40,2,179,65,118,120,51,74,184,206,49,110,115,223,142,44,216,142,217,224,96,154,77,151,3,239,75,47,82,65, +17,55,166,51,131,106,58,28,99,7,4,253,42,83,123,51,12,253,166,34,79,111,48,16,61,177,230,156,99,142,228,118,250,52,94,92,14,77,204,99,31,244,209,200,200,61,136,147,159,203,30,254,160,9,155,142,113,51, +28,118,104,36,201,252,86,216,15,203,190,121,29,148,205,113,156,25,51,142,50,98,186,24,28,100,241,10,237,29,56,246,207,189,47,219,102,60,155,145,215,130,30,114,64,231,254,154,40,250,241,158,192,138,105, +187,115,159,244,213,237,222,224,126,133,200,199,166,56,24,160,0,249,173,150,243,163,239,201,55,126,131,254,153,12,122,115,146,126,180,160,77,129,137,211,215,173,224,7,60,246,140,126,167,156,244,61,129, +112,227,143,180,47,3,168,55,7,3,223,231,39,161,244,227,142,120,52,195,57,206,76,224,128,49,202,92,129,156,243,206,15,114,121,207,39,147,156,154,0,151,46,159,242,212,28,99,149,251,103,94,217,59,129,207, +212,14,72,234,56,45,50,62,79,239,142,78,120,87,186,231,219,253,103,110,249,239,158,122,138,136,204,228,144,37,139,254,4,151,96,16,58,127,7,249,231,191,80,57,39,230,146,17,238,177,93,28,159,78,23,169,247, +193,57,201,160,9,129,112,57,145,250,15,249,238,79,160,7,230,28,143,115,159,198,144,238,199,85,113,156,124,203,46,115,143,121,7,61,127,33,216,212,66,108,1,251,216,207,29,12,23,108,58,241,219,24,231,60, +123,245,228,84,194,96,160,16,246,196,158,223,101,184,244,60,130,113,142,114,14,9,7,242,20,0,221,251,113,242,196,49,254,195,96,243,158,119,79,239,206,0,164,46,127,185,17,235,192,42,185,231,184,107,156, +113,223,61,125,73,198,94,46,87,35,247,168,15,124,91,202,185,224,224,140,176,61,122,1,158,123,243,72,39,78,127,126,138,115,213,160,99,235,144,119,55,177,201,0,145,212,14,244,1,30,21,255,0,134,33,140,12, +19,108,120,25,245,184,39,131,245,227,57,165,56,143,131,10,17,142,8,22,132,30,127,235,185,29,243,199,227,158,72,119,157,25,39,55,49,30,49,254,164,227,219,131,142,159,143,166,69,33,186,136,97,126,213,30, +48,48,62,207,128,62,135,4,129,235,234,70,115,138,0,105,151,36,1,15,167,4,219,12,129,207,63,190,193,28,231,56,0,80,38,98,64,22,160,31,80,109,190,152,255,0,90,195,63,95,211,173,59,207,137,135,252,126,64, +49,215,17,184,61,191,186,51,233,199,4,96,14,73,225,86,88,79,3,81,183,32,122,9,198,51,201,0,103,25,207,61,73,253,114,0,160,77,158,32,29,114,127,121,103,142,71,188,234,167,183,35,158,114,120,201,14,38,101, +255,0,150,81,131,142,134,107,64,122,14,194,248,12,251,147,252,248,70,104,7,252,191,70,223,83,200,255,0,199,129,231,244,237,146,64,166,7,132,96,155,164,199,111,152,227,191,80,95,241,30,254,189,192,13,247, +29,161,92,119,43,45,176,231,240,190,235,145,199,7,249,209,155,150,200,49,158,71,31,233,54,224,228,246,226,236,227,25,237,156,244,239,78,102,183,36,102,235,223,62,107,231,191,66,153,62,135,0,211,72,182, +234,47,73,206,122,203,113,140,242,113,157,153,227,32,247,206,123,208,0,99,184,60,229,249,255,0,167,132,97,239,156,78,115,199,39,230,253,57,160,195,117,140,134,13,223,6,124,156,103,144,54,202,79,60,100, +227,156,227,138,102,34,3,34,232,48,28,113,37,199,160,237,183,63,203,210,148,8,177,159,62,67,140,119,153,186,241,212,224,247,231,169,233,220,114,0,165,47,88,133,14,128,15,239,79,32,0,243,156,126,240,15, +241,231,20,125,154,239,63,235,97,3,182,233,100,111,195,153,212,0,57,200,232,61,5,53,150,35,255,0,45,228,29,71,6,110,61,198,72,233,237,199,166,41,166,8,72,255,0,95,116,120,231,104,56,252,11,54,115,238, +120,25,199,52,1,49,182,159,156,220,91,103,28,157,205,142,56,36,31,180,113,211,166,238,9,227,61,105,134,222,94,65,158,204,142,14,72,151,183,78,86,103,39,118,56,224,123,100,237,21,11,91,167,24,150,243,7, +4,144,34,61,207,102,39,31,161,36,117,235,76,16,40,56,18,221,103,156,22,69,110,163,63,193,149,235,232,7,212,246,0,177,228,39,35,117,179,19,232,110,112,125,7,7,240,201,228,103,168,6,163,54,201,140,230,49, +206,72,89,46,193,234,61,20,126,135,215,156,98,148,66,231,0,75,55,28,113,15,28,129,221,145,122,245,61,64,163,236,51,49,32,73,35,103,177,142,49,233,208,158,58,156,158,79,92,80,2,121,60,13,161,112,71,81, +45,201,35,29,184,83,199,57,30,220,19,74,21,198,3,5,36,30,166,107,159,200,141,163,166,112,15,160,237,78,54,51,250,49,232,6,97,129,186,241,131,149,228,231,142,113,200,247,20,191,98,155,169,140,19,207,252, +186,219,247,231,251,190,248,7,158,156,100,80,3,10,185,28,42,129,234,178,221,12,116,255,0,100,224,254,131,175,6,140,62,48,75,96,30,127,210,110,122,99,60,97,15,183,108,243,207,36,230,65,103,56,28,70,189, +58,125,150,33,142,231,0,33,31,134,14,59,26,122,216,220,224,159,40,231,140,226,218,12,250,142,145,103,142,152,60,231,212,80,5,125,204,56,6,78,159,243,241,115,146,57,60,29,128,227,208,1,235,248,181,164, +112,112,173,114,51,233,125,114,163,56,236,2,142,120,231,175,215,21,108,217,94,113,136,71,94,75,90,71,147,130,50,14,35,36,116,4,103,142,61,9,204,159,102,188,81,243,91,196,56,234,109,35,7,24,245,54,217, +207,29,115,219,218,128,51,183,75,145,151,186,233,156,253,174,236,182,8,231,4,142,227,57,31,143,20,121,147,127,4,215,43,142,50,211,206,216,238,122,158,121,252,58,142,152,173,33,5,201,224,219,194,115,211, +253,14,33,219,212,194,64,57,250,231,181,51,202,185,7,6,213,14,15,81,107,24,235,244,139,29,114,49,131,249,244,0,168,179,93,224,255,0,165,76,7,112,93,206,122,143,226,7,175,29,79,230,122,56,203,118,57,55, +47,207,3,230,97,142,188,100,99,232,70,115,199,35,210,114,183,0,156,89,161,4,255,0,207,170,117,31,75,108,243,223,4,159,195,20,185,156,96,11,37,228,17,197,184,78,7,56,255,0,143,99,200,193,56,244,199,35, +130,0,42,7,153,191,229,224,228,17,220,113,142,113,130,227,156,115,158,189,190,141,38,97,156,205,39,166,65,221,140,247,218,9,192,201,236,122,250,14,151,75,77,143,249,7,114,113,156,34,224,144,125,62,203, +199,80,123,142,228,14,209,147,41,228,216,243,156,227,108,99,167,124,253,153,78,223,166,122,250,98,128,43,19,41,31,235,37,124,14,127,118,71,176,57,18,127,48,6,120,233,70,233,87,251,248,56,198,216,156,125, +122,72,64,235,245,7,241,169,222,73,7,75,1,158,185,222,114,49,244,182,0,245,231,145,248,140,10,143,207,96,78,235,82,164,245,196,165,73,31,79,40,118,247,231,158,121,160,8,192,118,224,111,247,15,20,236,61, +58,228,129,159,241,39,173,59,203,112,127,136,129,200,196,15,245,56,200,56,199,226,79,231,132,55,88,233,110,192,243,192,154,67,215,159,225,219,147,235,201,231,181,47,218,27,181,172,249,61,15,159,47,111, +174,122,114,71,57,235,216,80,3,7,153,206,65,57,238,45,228,235,158,237,199,39,169,238,79,182,40,37,199,222,25,31,245,239,55,56,193,236,195,245,235,156,156,138,95,181,103,130,179,169,247,184,228,30,59,28, +255,0,46,245,25,185,10,79,205,112,0,234,69,206,222,221,14,23,105,207,62,156,100,12,119,0,50,221,2,16,72,239,29,199,24,201,236,223,143,29,205,56,134,255,0,158,120,245,34,43,146,49,215,4,2,79,79,175,98, +0,235,73,246,213,198,223,50,239,30,159,106,83,235,159,126,7,28,99,56,57,160,220,130,0,13,63,110,183,17,246,206,59,231,241,207,31,141,0,38,51,247,130,128,58,131,13,199,94,132,252,204,190,185,228,227,7, +167,112,5,143,60,136,136,227,164,50,12,231,182,60,225,211,35,57,200,200,235,197,56,78,7,86,148,231,214,237,27,242,0,146,49,140,99,233,78,51,33,35,38,64,113,222,234,49,156,125,64,7,168,207,29,104,0,2,22, +254,43,113,158,48,99,97,140,244,207,250,72,28,251,142,253,41,141,10,1,247,237,113,215,238,46,123,28,100,223,47,35,167,56,207,97,210,164,243,83,60,109,108,250,221,38,15,224,21,176,70,61,249,237,234,190, +96,7,38,16,70,9,0,93,133,28,140,99,2,212,250,12,228,231,28,245,24,32,21,188,181,232,62,204,121,235,180,55,175,113,168,113,147,248,15,112,41,226,221,88,117,183,60,158,177,149,227,211,254,66,0,31,124,224, +126,60,84,194,80,63,229,221,58,131,255,0,31,103,219,175,250,32,36,250,228,140,242,113,158,67,188,216,207,91,56,155,31,244,245,32,207,30,137,105,140,30,71,36,253,114,56,0,168,108,227,108,127,168,24,231, +238,99,211,214,248,158,159,253,126,57,13,58,122,146,127,212,140,127,176,71,97,216,95,129,248,140,231,129,87,132,176,169,231,76,141,178,14,115,113,112,65,0,117,230,212,99,61,240,56,238,59,80,211,70,71, +26,76,57,207,252,244,184,61,184,198,45,64,224,115,128,113,252,136,6,115,105,224,30,9,206,58,40,144,126,4,46,162,6,71,182,49,208,3,154,67,101,143,239,241,193,249,46,8,247,57,26,166,120,231,56,28,30,126, +183,26,104,148,224,233,104,8,207,41,246,194,121,247,91,108,30,131,191,63,134,3,62,209,25,3,254,37,153,198,112,124,155,242,125,57,97,8,39,242,224,228,129,158,160,21,126,196,228,16,12,184,231,4,45,199,183, +76,106,76,15,80,127,175,164,102,198,115,213,174,8,239,143,180,142,51,142,127,211,248,3,156,116,193,233,211,21,100,205,25,63,46,148,191,95,42,252,49,60,156,129,229,113,212,231,57,56,234,69,52,202,189,244, +188,131,219,236,215,204,63,38,139,169,232,72,199,30,184,20,1,84,90,202,164,141,215,92,158,131,237,7,190,63,138,248,129,207,124,119,198,79,65,97,109,102,32,126,246,229,123,114,39,249,176,71,31,241,245, +215,28,122,244,39,181,48,60,44,114,116,211,145,235,103,125,140,126,75,235,232,51,219,158,40,38,0,15,250,2,142,58,125,146,241,113,147,142,114,70,78,15,183,83,64,18,180,37,122,189,201,60,117,105,0,7,7,158, +110,73,39,211,156,140,15,106,132,131,145,251,203,156,123,201,46,48,123,128,38,245,244,63,158,57,107,24,15,2,193,49,140,255,0,199,181,238,78,120,28,25,49,140,159,67,159,79,70,19,1,0,141,58,48,113,209,173, +239,87,31,248,241,28,114,121,24,247,224,100,2,112,202,57,47,49,32,116,102,155,24,207,61,101,42,114,127,46,199,52,223,180,68,188,49,97,215,239,7,96,49,193,234,220,247,207,174,121,56,53,95,16,19,145,97, +8,199,57,219,120,0,239,221,135,190,57,232,51,219,20,130,56,249,255,0,68,132,100,100,124,183,163,144,115,130,71,7,140,14,51,206,114,49,208,2,83,113,106,112,124,216,193,7,3,42,138,115,211,128,220,243,211, +158,48,73,228,82,253,166,37,0,121,160,128,70,48,87,28,250,15,66,58,251,122,10,103,146,164,127,199,141,163,119,200,123,208,79,126,115,159,108,250,254,98,147,201,0,103,236,22,95,131,95,19,145,235,130,115, +239,128,122,114,56,197,0,60,221,70,191,220,62,159,116,159,212,96,131,142,190,160,115,73,246,200,200,203,108,207,161,8,0,30,231,201,111,234,61,234,51,22,238,150,22,92,244,4,222,168,61,61,78,79,108,16,167, +62,189,41,62,206,6,79,246,126,156,220,99,239,221,19,219,158,114,15,183,7,252,64,25,37,237,170,14,74,54,121,32,24,64,30,163,45,8,61,122,113,146,127,26,135,237,246,132,182,21,112,50,48,94,19,140,14,188, +70,15,235,236,57,230,158,209,14,73,177,177,28,255,0,15,218,112,8,207,247,80,156,117,237,207,108,227,20,198,132,28,127,162,89,140,244,59,110,115,199,83,204,57,228,117,57,206,78,51,234,0,241,127,104,71, +42,163,24,7,45,30,15,61,178,131,129,233,159,161,230,162,123,219,46,138,170,50,120,111,54,5,35,158,122,131,156,142,51,147,239,208,26,99,90,72,112,86,11,49,147,199,19,150,25,232,112,98,3,244,193,7,208,84, +70,202,115,200,134,212,19,220,71,113,238,121,194,168,60,96,113,248,14,196,2,95,181,218,145,242,178,12,145,140,203,15,30,163,56,35,211,25,227,219,154,79,181,34,227,108,133,64,238,39,139,31,134,209,142, +120,231,4,244,232,15,53,141,148,234,14,99,181,4,156,242,179,167,82,78,50,113,158,156,242,122,228,14,13,68,109,37,3,230,75,65,142,227,119,245,126,79,160,254,71,32,0,104,27,232,87,239,63,174,55,92,128,72, +232,51,132,60,231,166,48,63,149,66,247,246,164,128,211,198,164,231,0,93,177,63,79,184,57,3,212,117,234,58,17,68,192,71,221,107,108,250,6,85,207,226,207,142,57,63,129,163,201,96,51,190,62,157,7,217,207, +61,135,207,54,113,250,254,20,1,96,221,89,156,145,119,30,115,255,0,63,108,72,201,31,237,2,113,198,8,254,92,82,121,234,113,229,220,143,252,8,147,177,199,65,56,224,116,24,0,122,102,170,237,117,25,14,160, +227,248,86,219,142,113,193,89,143,29,191,14,156,211,193,184,0,98,94,114,50,10,192,6,15,253,180,56,239,158,120,235,245,0,145,165,61,77,214,0,228,226,89,251,231,146,68,199,30,249,244,193,230,171,179,6,31, +241,250,23,28,127,172,152,243,140,31,249,106,57,200,235,142,15,92,83,255,0,210,129,249,165,140,158,156,173,190,127,33,46,122,96,253,8,163,124,235,193,116,60,255,0,114,223,62,223,197,223,167,67,198,57, +28,80,4,24,228,15,183,103,167,86,148,231,61,56,220,121,250,147,158,8,166,21,36,16,110,253,56,11,63,185,238,49,147,158,114,49,223,158,5,88,243,228,4,143,53,87,57,255,0,150,86,199,30,227,45,159,196,15,97, +197,39,218,166,81,254,180,177,224,227,200,182,57,28,247,32,113,245,36,18,113,138,0,169,132,28,125,169,114,113,195,25,15,108,3,194,31,203,240,227,161,141,148,227,139,148,231,140,47,152,51,219,186,129,208, +118,199,30,166,174,27,185,113,247,142,64,207,22,208,116,30,187,84,158,253,255,0,92,241,19,93,206,14,71,57,39,254,92,195,30,114,58,44,103,7,208,244,207,189,0,83,17,156,146,103,81,207,77,174,78,65,233,200, +61,187,247,200,231,53,25,92,2,69,202,147,158,50,28,159,124,225,113,146,61,78,61,143,57,184,110,231,31,120,18,0,228,61,140,131,253,163,130,144,112,58,30,167,30,152,235,17,189,147,211,143,95,177,79,192, +7,168,223,108,58,228,156,147,201,252,128,6,115,200,1,32,200,14,59,230,65,248,227,202,56,254,120,246,206,98,99,17,232,251,185,228,121,179,47,35,24,201,54,231,31,227,156,123,95,146,233,136,251,164,156,31, +249,118,198,125,120,104,84,251,228,145,244,7,53,1,185,57,199,147,38,70,7,22,137,211,29,120,80,7,108,231,3,167,36,245,0,164,99,4,229,85,137,25,251,183,50,14,62,191,101,60,241,198,7,61,120,164,195,246,142, +92,1,158,111,101,7,211,63,44,0,228,112,7,225,235,86,205,203,128,113,11,159,251,119,79,199,144,14,0,235,192,30,131,158,106,179,221,201,159,245,36,246,0,218,2,51,130,63,231,152,57,0,19,237,199,65,144,64, +42,188,140,1,7,205,227,28,157,66,112,123,128,63,213,142,122,242,71,95,169,168,26,102,231,230,152,119,194,234,19,156,253,74,167,0,99,251,167,30,213,101,175,24,114,97,81,201,28,219,160,39,140,15,224,231, +35,36,28,0,123,241,128,35,55,82,125,229,137,49,215,253,68,99,56,24,228,148,24,57,199,245,57,205,0,84,50,100,114,183,39,156,159,244,233,88,114,127,218,80,112,51,199,57,246,245,4,137,130,54,207,192,228, +125,173,184,63,140,77,215,190,50,120,31,141,131,121,57,201,42,188,158,118,173,184,61,79,171,168,206,51,201,3,173,64,110,223,7,44,65,29,139,218,142,56,254,243,145,142,125,255,0,90,0,99,58,247,134,124,127, +121,110,219,57,35,161,38,2,58,240,50,78,56,236,106,50,208,177,193,130,112,56,228,220,35,15,214,223,235,130,114,1,227,173,13,114,224,231,122,47,81,134,158,200,127,41,65,56,231,30,132,241,197,68,110,31, +140,24,78,113,207,157,110,73,245,0,171,241,199,79,174,61,232,1,204,208,14,66,76,57,231,247,177,28,255,0,228,186,251,250,254,21,9,153,49,242,137,120,254,244,200,50,115,206,113,17,200,238,79,175,227,79, +243,89,134,63,117,145,198,4,177,119,61,50,79,56,227,61,122,116,206,42,19,44,128,149,217,25,234,121,120,176,72,233,146,15,175,4,227,28,115,210,128,26,247,64,228,14,131,169,51,243,207,65,131,23,78,152,238, +0,227,140,131,31,156,78,72,17,145,131,146,46,20,123,243,152,79,56,29,249,29,129,192,169,183,191,247,34,56,236,30,216,14,190,165,212,147,238,70,59,1,192,20,140,100,39,34,52,239,159,244,155,81,233,142,11, +144,122,125,6,127,32,10,140,210,18,73,138,6,3,4,238,156,96,130,115,206,35,192,206,51,200,234,61,49,85,221,143,104,108,212,99,63,235,163,39,220,147,177,125,248,239,215,142,246,219,121,200,242,163,62,163, +237,86,120,201,60,18,1,61,251,30,254,248,53,11,66,27,36,192,50,71,4,73,98,120,244,230,23,207,182,125,253,104,2,132,131,63,242,206,220,231,210,226,16,15,4,159,188,64,4,114,113,140,14,185,39,21,77,208,30, +54,64,15,127,244,155,115,211,183,50,143,127,199,160,233,157,113,107,199,16,231,219,126,159,145,211,214,223,39,143,76,143,165,39,217,134,57,181,57,7,160,251,14,65,227,254,157,135,227,208,119,160,12,70, +137,127,187,110,49,212,253,166,3,206,127,217,144,147,215,175,167,60,112,106,180,145,72,65,34,27,98,7,79,244,200,151,35,232,37,29,123,13,188,231,219,39,162,54,189,71,217,152,14,188,155,12,244,232,185,137, +64,244,232,125,65,60,212,13,11,14,4,12,0,199,125,48,30,159,237,69,223,235,143,124,230,128,57,243,28,137,200,182,180,56,231,63,107,183,110,157,177,230,19,142,223,123,249,115,9,70,111,249,119,183,3,36,156, +77,106,113,142,127,138,110,184,207,39,32,254,56,173,198,129,91,32,164,241,156,227,34,77,40,3,140,159,226,78,114,61,71,76,138,170,246,170,73,226,232,140,113,135,210,61,199,104,79,7,129,219,28,30,104,3, +32,133,231,253,29,61,242,246,131,191,31,242,215,143,208,118,230,163,43,24,193,48,70,56,237,246,94,158,223,63,30,160,114,49,220,98,181,26,204,113,205,208,57,255,0,168,49,234,121,255,0,150,56,61,120,62, +185,233,214,162,123,28,140,226,232,158,122,13,24,231,142,167,228,94,15,160,237,219,176,0,162,25,1,0,71,129,131,192,91,94,189,248,18,142,156,115,129,212,122,131,74,103,101,4,42,40,32,99,230,16,96,158,195, +253,106,129,142,156,26,180,44,0,193,13,56,60,255,0,14,138,184,7,212,2,188,15,80,121,224,100,145,138,141,173,64,4,98,225,200,60,229,180,156,123,228,9,56,192,224,244,60,113,222,128,41,253,166,227,254,121, +169,236,72,88,253,187,11,156,254,153,247,34,162,107,171,177,247,99,92,0,114,10,109,60,14,216,185,195,14,113,254,113,86,218,203,63,117,100,92,31,77,36,183,124,147,251,225,207,78,199,223,165,48,216,18,9, +37,193,227,36,46,149,215,30,206,217,63,158,6,50,71,2,128,41,253,166,227,27,153,23,177,4,131,206,112,58,9,219,143,174,49,236,114,41,26,234,236,114,4,64,116,251,172,125,123,121,231,61,62,157,136,169,222, +192,183,105,27,130,58,233,192,240,122,240,122,228,118,244,224,226,171,155,25,198,66,34,149,29,55,182,157,158,58,116,114,79,78,58,100,253,120,0,137,167,186,198,89,97,112,58,229,118,145,140,231,129,42,250, +96,12,30,167,140,84,37,229,96,74,219,196,125,127,120,84,145,233,243,78,51,215,56,254,163,21,59,90,207,255,0,60,130,227,130,219,172,212,31,196,72,190,135,145,245,233,76,107,91,156,240,172,120,39,253,108, +29,7,76,237,156,12,117,207,92,80,4,38,89,151,145,110,185,228,127,173,124,126,147,131,200,36,19,200,239,131,138,97,158,98,56,179,141,191,237,187,46,59,115,137,129,246,245,199,4,231,173,143,178,206,57,43, +201,233,153,80,142,188,30,46,51,237,192,28,251,243,72,214,211,174,48,142,51,211,108,160,14,48,115,204,199,233,206,123,114,122,208,5,35,35,182,85,172,98,231,167,250,92,248,193,244,2,83,206,127,222,233, +193,166,109,81,146,109,149,122,100,125,182,108,15,205,28,159,112,9,3,223,160,188,109,238,27,56,89,70,63,233,170,19,223,254,154,242,71,114,125,57,228,242,195,109,116,1,230,228,15,69,184,85,231,25,60,9, +199,233,208,250,116,160,10,100,194,126,83,109,30,79,92,95,76,188,122,255,0,170,57,232,114,73,233,212,210,15,179,142,150,209,129,207,63,218,18,150,235,145,193,131,142,253,8,231,62,181,97,161,188,198,65, +186,32,245,253,250,182,123,1,204,224,18,78,7,67,216,117,224,71,228,220,131,146,247,72,14,58,186,14,185,60,149,156,103,215,0,140,224,30,122,208,4,76,109,48,75,192,122,17,197,236,199,39,168,3,108,93,49, +248,231,57,234,115,25,107,30,159,103,112,115,156,253,190,239,142,122,0,169,129,211,158,6,125,58,85,191,46,115,255,0,47,87,35,131,146,29,184,35,142,139,49,24,3,30,191,224,207,46,76,146,111,103,235,209, +139,12,156,127,215,94,114,58,228,103,31,168,4,33,173,179,149,1,122,156,53,229,201,207,110,246,228,231,31,211,29,50,94,94,16,51,152,193,30,179,207,144,62,158,78,120,24,234,61,114,0,197,35,239,29,46,152, +140,114,73,108,17,245,14,115,215,252,138,172,233,43,114,39,115,207,81,184,14,7,63,54,215,62,156,168,227,142,58,154,0,188,12,44,164,151,140,30,191,241,241,63,94,58,109,136,114,64,231,143,74,111,238,51, +145,36,68,241,255,0,45,100,39,36,115,203,66,59,250,103,222,179,10,79,218,234,99,223,151,96,15,80,56,16,228,143,196,159,79,120,204,87,60,226,86,237,140,52,163,244,242,200,232,61,49,245,160,13,144,208,158, +0,183,108,31,226,103,36,103,183,221,95,64,58,158,122,250,208,118,158,85,45,128,244,1,155,142,224,228,251,3,146,115,253,112,152,92,129,131,36,135,219,115,131,250,219,55,115,215,142,195,190,42,47,244,143, +239,177,199,32,19,129,159,252,5,81,143,204,246,231,154,0,232,86,86,83,180,67,107,234,75,66,199,24,235,130,179,33,62,189,143,7,52,86,0,251,95,35,110,254,191,118,119,29,63,237,223,174,61,48,15,99,232,80, +7,235,127,159,112,79,18,184,60,158,37,143,0,117,199,24,199,208,253,120,205,68,94,114,78,110,46,0,60,224,75,142,115,215,32,55,110,152,62,222,181,113,163,147,57,219,103,142,132,255,0,105,194,120,231,214, +110,189,120,7,255,0,174,195,19,113,150,181,192,60,98,246,2,126,184,251,79,127,195,144,56,160,10,94,100,224,17,230,221,96,140,96,72,24,253,64,17,49,237,237,156,243,158,50,192,206,114,62,209,122,190,155, +88,243,215,169,54,225,115,211,183,96,56,239,121,225,102,24,243,44,192,200,227,237,182,236,123,231,35,237,156,122,96,253,56,237,31,217,156,145,182,75,64,49,143,245,240,54,122,114,127,211,14,79,83,207,167, +76,240,0,43,134,145,70,22,91,215,245,44,205,129,206,113,242,219,99,31,78,65,35,218,148,180,152,27,154,228,118,234,231,142,152,193,131,35,156,246,198,120,62,134,70,181,152,28,253,166,213,65,232,7,144,205, +215,185,23,75,199,252,4,99,215,28,149,22,174,248,205,205,185,224,228,102,5,56,62,198,237,177,193,28,255,0,81,64,16,110,217,212,222,14,252,149,35,167,188,13,199,174,64,60,228,122,84,102,104,207,222,55, +99,57,60,96,144,7,98,5,169,31,82,72,252,170,217,178,36,112,214,205,156,242,26,34,63,53,185,28,246,233,211,208,98,154,214,120,56,34,215,234,198,44,12,117,3,116,227,241,231,249,80,5,86,150,32,55,22,152, +140,127,17,136,14,128,228,135,181,108,30,58,146,61,250,113,19,77,100,195,5,136,35,158,90,219,111,97,211,236,39,175,60,158,115,199,32,1,90,13,108,20,15,146,204,144,58,236,132,254,25,55,71,30,224,247,24, +25,20,134,12,158,82,207,183,88,34,57,200,56,198,38,63,175,229,131,64,25,98,75,32,120,88,72,36,242,207,10,145,199,79,249,7,175,215,32,158,227,39,165,63,205,179,232,86,208,47,64,55,197,158,216,28,89,174, +123,231,174,125,51,210,251,91,160,28,197,105,156,140,31,179,69,143,167,44,220,254,94,217,170,178,64,184,24,183,180,127,64,45,97,108,227,142,162,38,35,39,61,241,233,214,128,35,47,98,70,67,218,129,142,129, +173,7,7,35,189,169,35,156,30,7,215,138,140,189,152,200,34,207,30,162,72,1,247,199,250,19,1,238,7,211,218,158,99,113,140,89,91,99,146,49,104,160,243,156,244,183,36,115,233,223,167,169,140,130,15,252,120, +91,142,199,253,31,215,219,236,204,50,58,3,130,126,188,100,1,165,44,200,249,30,219,39,169,223,111,142,79,63,242,225,207,226,73,199,210,161,242,96,108,97,236,193,227,25,104,24,17,215,128,52,254,61,242,71, +211,24,195,157,92,156,141,58,47,108,90,150,224,247,230,200,254,135,191,167,21,3,121,227,145,167,34,142,153,251,3,158,163,161,43,106,1,245,224,2,56,29,133,0,75,246,104,135,252,182,178,30,156,197,128,123, +228,11,32,57,199,29,129,32,125,35,107,101,224,125,162,207,24,199,250,197,199,81,212,11,85,198,61,71,35,7,146,42,38,51,103,139,82,51,158,150,110,164,228,250,11,108,250,126,95,141,52,249,227,31,232,151, +0,231,170,197,42,130,58,28,133,180,200,200,233,201,56,39,146,49,64,19,29,60,28,21,185,180,97,254,244,141,159,202,220,244,199,31,78,185,165,251,16,7,230,188,140,115,200,0,145,219,28,52,106,58,28,116,193, +7,4,112,5,85,195,156,230,214,235,36,99,1,103,193,252,77,186,227,219,244,198,77,52,161,57,255,0,70,188,200,39,238,137,200,234,125,34,235,211,168,4,227,175,74,0,176,214,16,183,38,245,63,21,65,215,235,25, +57,232,59,126,29,42,63,236,232,70,127,210,81,178,121,203,149,199,211,108,120,238,58,2,71,126,49,72,163,28,253,158,247,159,246,110,219,175,29,85,50,59,231,24,24,224,115,79,13,6,14,96,188,25,60,0,183,31, +152,220,113,145,201,193,227,175,61,136,3,70,155,110,114,90,88,192,199,105,28,231,60,100,240,8,228,227,57,28,250,117,167,27,27,68,31,52,224,125,38,35,61,242,1,35,60,113,140,231,191,78,41,187,98,44,79,149, +123,243,28,146,85,189,242,48,88,147,216,242,125,58,212,139,20,44,79,238,239,64,233,194,145,223,60,101,242,1,247,235,140,80,0,32,211,135,222,148,30,159,242,240,195,143,76,6,7,39,175,67,130,14,73,238,24, +244,176,14,29,249,233,251,252,227,129,208,110,61,243,235,129,216,246,126,200,193,201,138,248,241,156,144,6,57,29,204,172,1,252,51,244,164,219,16,200,242,111,7,56,234,172,50,57,199,126,113,208,22,233,198, +112,121,0,69,139,77,198,75,63,253,254,67,223,158,196,246,236,127,42,54,233,195,32,25,151,28,229,110,6,56,237,243,17,199,168,24,206,56,231,154,95,46,51,247,97,184,207,95,154,53,35,191,211,57,62,254,190, +152,166,181,184,39,253,92,171,199,104,20,12,251,227,29,122,140,250,99,147,205,0,46,203,83,247,12,141,158,133,167,136,245,61,7,39,30,221,125,61,40,63,103,25,28,47,160,251,66,147,255,0,124,170,55,175,108, +123,240,113,76,48,96,225,34,147,160,25,120,80,128,126,133,14,121,0,231,255,0,174,75,26,23,201,62,70,64,31,243,197,7,36,251,166,220,254,0,241,249,128,72,76,31,243,208,131,207,252,182,97,156,231,214,18, +61,137,199,111,126,84,52,10,115,230,142,135,172,167,60,246,249,109,78,51,158,220,99,61,170,31,33,200,0,68,163,159,226,88,128,233,142,127,118,231,220,158,217,198,79,25,5,185,25,204,48,231,253,192,167,57, +36,227,109,171,1,223,238,144,125,122,80,4,140,209,142,82,81,200,32,157,204,192,228,143,91,63,94,59,103,158,221,24,125,67,142,188,125,243,140,142,114,62,199,239,193,94,59,2,1,166,188,65,115,186,222,30, +15,241,51,14,79,253,185,28,244,199,61,49,223,53,14,200,249,205,189,170,146,112,62,114,160,116,25,255,0,143,67,223,147,192,199,165,0,88,35,168,243,23,29,51,137,14,15,209,109,71,115,208,250,1,76,217,16, +60,203,30,70,65,6,25,15,127,81,106,192,143,235,205,70,22,14,134,45,60,145,156,6,46,199,219,159,179,168,237,237,156,231,154,77,214,224,243,30,156,184,3,166,65,207,65,159,244,114,8,244,206,71,215,28,128, +63,108,3,172,177,227,156,15,179,231,39,158,114,246,77,235,144,0,231,156,245,168,143,216,186,180,144,140,1,200,180,111,124,253,203,17,158,125,250,115,131,193,10,39,178,207,204,182,4,12,252,197,176,57,246, +22,191,82,114,15,108,30,57,12,218,113,201,41,167,129,206,78,247,29,7,247,126,201,143,127,195,159,74,0,112,91,18,63,215,71,207,97,103,49,245,35,165,160,92,127,158,77,3,236,223,223,140,246,200,178,110,192, +158,3,91,142,63,80,1,252,99,91,141,61,79,31,98,35,161,10,95,147,216,99,236,192,158,216,227,250,83,204,214,39,149,142,212,131,143,225,184,57,231,253,155,96,61,64,1,129,7,158,40,0,50,91,171,17,185,49,206, +54,216,96,250,99,152,184,231,25,247,198,59,83,12,182,249,230,117,92,245,206,159,24,4,250,100,198,188,241,219,168,231,56,52,214,158,219,39,247,81,3,254,237,217,253,4,124,0,59,158,125,57,166,253,174,223, +32,108,65,142,62,88,47,143,76,243,208,19,219,142,220,244,228,128,9,3,91,28,159,180,68,9,198,7,246,122,30,115,216,116,233,232,122,117,36,226,145,146,216,255,0,203,220,67,56,0,255,0,102,168,246,57,37,71, +111,115,238,113,192,98,220,91,156,252,193,114,63,138,219,82,199,126,192,99,211,244,206,5,59,237,22,248,251,225,138,246,22,186,136,224,246,7,24,28,247,3,56,198,121,57,32,0,68,231,101,236,71,254,221,21, +7,227,211,60,113,129,248,138,2,205,198,46,99,62,226,17,212,122,97,178,49,223,30,128,156,115,73,246,133,32,237,220,122,240,98,191,227,235,223,104,232,114,7,66,57,61,67,36,135,145,128,115,193,104,111,15, +174,57,43,254,125,51,64,18,15,181,115,137,144,240,51,251,147,248,245,152,1,142,51,208,125,123,33,73,143,82,135,57,235,26,142,7,36,127,172,56,35,208,227,211,235,3,73,120,121,83,22,50,50,12,119,28,115,159, +80,122,158,51,198,57,198,14,105,4,215,221,9,182,200,237,137,215,130,113,208,147,207,175,56,199,82,58,80,5,161,4,164,12,21,235,183,136,227,36,19,142,222,110,115,147,216,99,32,231,181,47,144,252,134,32, +224,30,176,146,65,30,187,100,0,103,32,100,244,228,19,235,68,182,164,50,67,91,40,56,231,18,14,253,14,92,103,235,143,67,142,41,124,219,252,28,180,36,246,249,130,130,8,247,61,63,250,224,250,208,5,225,101, +33,60,71,25,232,126,230,211,206,113,128,100,57,233,234,63,30,41,69,148,152,63,186,82,71,99,17,199,115,253,230,199,56,199,175,98,121,170,42,215,220,124,214,192,0,78,12,203,143,166,12,156,251,113,205,27, +111,152,114,214,103,62,146,194,49,156,30,1,184,4,99,235,215,35,28,98,128,52,77,188,171,214,63,192,66,64,36,243,146,70,63,66,120,232,49,74,32,61,26,39,56,198,71,217,247,114,122,231,156,227,245,250,118, +206,242,238,200,206,109,201,236,69,204,0,114,73,200,205,207,211,183,169,39,161,49,152,238,142,67,139,102,28,103,55,17,28,255,0,223,23,39,131,219,35,177,193,197,0,106,155,116,98,51,110,195,7,168,179,108, +254,0,15,126,195,183,35,181,70,45,34,61,32,151,254,3,108,203,211,166,119,47,7,245,28,245,172,179,28,128,242,150,153,35,168,156,115,206,59,92,143,79,92,250,118,202,172,108,79,204,136,118,142,210,49,228, +123,139,177,220,122,99,130,51,142,104,3,79,236,113,140,145,29,210,122,109,136,31,127,238,2,7,127,65,211,36,226,155,246,112,185,218,183,62,229,163,108,115,219,229,67,211,160,193,39,3,183,56,164,81,216, +112,131,219,1,136,199,39,63,45,225,193,253,9,232,61,1,10,244,42,128,147,142,76,160,241,207,65,117,245,244,0,103,158,180,1,115,200,98,14,25,215,158,162,57,50,1,227,25,10,48,121,24,207,126,180,134,41,144, +128,39,152,113,252,11,46,113,212,123,144,113,220,142,217,170,255,0,103,139,3,62,80,250,137,72,231,29,190,218,56,28,116,198,58,227,168,169,5,173,190,208,75,64,71,28,8,100,234,51,201,205,227,112,57,207, +175,28,80,3,201,144,156,125,162,114,70,72,202,78,113,219,144,1,32,156,250,250,116,235,81,152,216,255,0,203,205,198,125,225,96,9,201,56,195,50,103,142,126,247,0,244,160,65,106,189,162,108,240,48,72,199, +30,158,118,64,29,71,83,142,113,215,46,41,15,97,24,61,57,24,233,156,115,188,159,215,35,234,104,1,158,77,207,79,180,204,7,82,60,172,145,233,255,0,45,143,56,245,234,125,114,104,219,119,206,117,9,198,112, +64,216,157,189,115,46,121,232,112,120,231,147,82,8,147,167,154,137,239,192,247,28,13,196,116,232,70,61,179,192,147,201,83,255,0,47,67,156,1,180,103,245,0,122,115,201,0,246,60,80,4,32,93,114,127,180,157, +79,169,133,27,63,80,179,2,70,1,29,243,223,169,37,216,186,80,51,169,150,206,121,22,164,244,255,0,183,177,252,129,61,77,76,32,132,227,253,32,19,147,221,151,159,108,33,60,114,120,30,212,198,134,44,159,223, +3,128,121,15,39,255,0,19,140,243,244,29,73,29,104,2,18,46,142,127,211,216,142,167,22,67,29,185,0,222,113,248,99,167,0,211,60,187,140,115,125,47,7,35,253,14,49,255,0,161,95,113,201,24,200,7,29,185,171, +34,8,200,200,145,193,232,79,152,203,159,78,70,61,190,190,188,228,187,236,209,31,148,179,228,245,62,123,115,249,35,18,125,122,231,161,199,90,0,166,32,184,36,1,120,231,146,121,180,180,12,126,167,237,185, +247,3,63,95,74,112,179,186,110,69,223,78,51,228,89,30,189,142,111,79,255,0,95,39,0,226,172,53,178,175,27,152,142,223,233,12,115,207,80,85,51,252,248,246,166,125,157,73,199,63,83,36,237,129,248,109,28, +227,245,239,64,17,253,146,227,31,52,160,156,156,229,44,212,227,232,179,242,63,207,169,166,125,134,83,144,205,25,3,215,236,185,227,140,156,100,143,251,235,61,185,238,247,179,82,126,243,176,3,63,43,92,47, +24,199,247,134,120,227,24,231,156,14,134,152,108,211,174,215,35,182,231,156,241,145,140,169,153,7,31,160,32,28,208,4,111,166,177,207,17,116,236,182,196,147,147,216,186,156,224,244,28,156,227,174,13,48, +105,110,79,17,3,219,136,97,110,131,190,38,3,249,117,235,207,51,27,65,143,245,39,166,63,214,50,231,211,239,92,28,14,49,207,92,103,138,97,177,115,247,99,85,199,102,184,64,61,255,0,229,224,100,243,142,249, +227,4,224,0,0,198,210,229,60,8,80,19,235,12,3,144,125,13,194,129,199,61,189,122,12,83,70,153,58,156,52,16,146,113,247,163,182,200,193,231,31,233,100,140,125,64,207,169,192,169,134,158,249,255,0,85,31, +190,39,140,103,0,99,63,51,158,221,79,112,62,180,198,211,194,12,181,180,7,60,243,113,19,19,245,29,78,125,49,201,227,189,0,48,216,178,240,97,182,29,193,242,32,61,176,191,242,246,65,57,198,15,191,184,167, +11,82,135,152,98,29,242,182,240,100,250,242,46,9,206,113,248,30,248,168,90,214,62,1,178,135,63,245,213,0,35,158,184,11,143,111,94,41,5,172,71,32,217,67,199,164,232,15,124,140,239,199,126,231,60,14,57, +24,0,179,228,32,39,40,163,216,91,64,72,199,25,63,233,137,145,192,199,61,51,223,56,67,10,116,8,192,140,16,198,214,216,126,89,212,151,63,76,14,123,154,136,88,161,233,104,184,29,1,184,182,7,140,12,101,155, +182,79,92,231,211,173,31,100,193,59,109,10,158,251,110,109,57,192,206,114,3,100,30,59,244,231,138,0,152,46,51,134,25,238,22,218,28,142,131,160,213,64,7,166,71,243,235,78,18,133,32,22,147,219,247,22,225, +122,113,215,81,99,207,110,228,231,182,42,33,3,12,143,179,100,117,199,218,45,243,215,190,56,233,142,0,29,59,82,27,101,193,6,212,142,56,11,114,131,183,0,21,198,56,236,59,254,116,1,108,206,56,57,108,116, +251,182,202,1,231,214,244,231,24,193,239,220,10,79,181,63,169,94,163,131,103,211,215,254,62,27,208,99,0,246,227,210,160,183,136,117,178,149,143,24,2,224,183,227,254,181,64,57,227,215,62,156,209,178,14, +7,246,125,218,228,117,19,144,15,161,56,184,83,159,126,152,0,114,58,0,94,23,111,140,25,92,30,160,133,182,4,15,102,14,120,30,157,7,30,163,7,219,93,120,251,68,235,215,56,22,248,61,251,134,7,191,78,57,231, +156,85,48,34,3,104,181,188,29,178,38,148,158,120,32,98,244,241,238,7,126,157,41,225,80,116,138,253,78,120,30,116,236,57,233,193,188,60,117,199,169,236,123,128,78,46,156,146,68,247,89,199,7,22,248,111, +168,216,58,255,0,156,30,104,243,165,108,128,102,111,171,66,15,63,197,141,173,252,186,227,208,154,132,202,203,157,137,122,51,199,175,227,255,0,31,68,158,125,71,65,129,131,140,181,174,27,3,119,219,79,108, +2,224,131,158,153,251,88,233,237,159,112,122,208,4,198,89,192,198,231,25,7,35,48,113,215,176,139,211,241,63,149,33,150,224,130,3,201,207,93,190,65,228,240,127,229,143,208,142,73,193,239,193,168,13,201, +56,249,47,253,57,121,15,25,245,55,132,251,242,113,77,55,129,113,242,94,159,96,210,116,207,83,254,144,195,60,142,7,92,242,122,228,2,86,150,126,7,152,199,31,222,49,1,239,144,177,128,9,234,7,30,160,241,154, +141,165,185,206,60,208,57,231,148,0,125,127,115,199,167,7,168,239,221,167,82,66,71,203,168,117,255,0,166,254,199,25,14,221,255,0,28,130,120,61,80,234,40,120,219,122,61,138,179,14,163,7,37,78,49,219,144, +126,167,138,0,12,178,156,151,185,3,28,227,114,243,142,248,48,253,79,4,30,62,164,177,165,25,255,0,143,144,59,14,80,96,96,118,116,234,79,65,199,225,205,56,223,47,7,23,157,243,208,1,211,174,98,237,239,147, +223,233,9,212,35,60,24,238,219,7,254,153,146,8,238,119,66,115,238,120,60,254,96,15,206,78,126,211,232,113,182,12,100,12,245,219,158,123,30,188,241,79,253,239,59,103,143,105,39,171,32,206,6,122,5,245,207, +11,248,96,231,21,158,248,100,15,179,93,31,66,198,223,29,57,4,249,3,191,7,145,254,49,53,216,63,126,206,98,14,57,243,99,95,199,43,11,1,249,28,254,52,1,101,158,84,235,60,32,244,57,42,71,212,130,188,241,192, +198,113,198,113,81,25,183,140,61,204,14,126,170,185,247,224,1,248,99,191,215,48,27,168,128,226,206,65,130,65,221,58,156,103,56,7,22,204,70,71,182,61,187,211,126,212,189,54,42,116,198,233,151,36,231,212, +90,245,227,142,190,128,208,5,146,241,47,252,181,128,19,199,50,175,215,158,159,78,125,105,187,162,63,242,214,219,234,37,207,95,171,99,128,70,57,207,243,168,86,84,108,252,200,58,100,125,160,14,115,140,12, +91,167,29,123,147,212,28,242,41,219,17,136,63,187,39,61,62,211,147,215,28,13,156,99,233,238,57,60,128,74,118,54,51,52,88,244,18,224,224,244,39,108,139,199,224,217,236,78,13,6,56,241,247,144,244,35,15, +49,7,63,238,204,56,234,126,247,165,87,49,69,159,249,101,244,251,86,49,249,40,57,25,25,231,142,48,57,52,187,51,208,71,128,14,73,190,155,235,217,135,233,249,28,228,0,76,99,81,146,100,139,7,166,231,184,7, +211,169,185,39,62,195,167,227,154,140,172,99,32,60,60,142,115,61,224,207,110,139,113,158,152,206,73,250,250,51,201,200,229,161,28,245,26,132,248,237,211,231,39,142,227,35,191,61,41,22,4,201,204,182,224, +142,230,254,232,19,206,122,121,184,199,226,114,125,104,1,90,24,73,201,123,78,152,193,184,189,63,142,26,237,127,207,183,70,152,45,206,71,153,100,56,227,253,34,236,96,122,28,95,19,142,131,145,249,231,137, +82,218,51,159,158,34,125,86,242,233,184,250,238,207,208,29,195,166,9,169,197,170,19,157,232,113,216,92,92,30,156,245,44,127,28,99,167,211,32,20,197,176,234,141,111,192,31,50,220,222,145,159,76,11,163, +234,79,113,78,251,60,248,32,60,11,199,79,54,252,231,57,239,231,255,0,62,255,0,74,187,246,104,240,73,70,112,127,233,188,128,103,57,224,149,113,131,143,124,117,231,21,19,65,22,48,182,209,183,251,211,146, +79,29,51,229,130,115,244,250,12,28,80,5,99,111,50,142,36,140,12,115,137,111,240,79,29,204,152,244,228,126,85,27,67,32,28,201,207,32,98,109,72,231,159,81,33,29,56,228,99,56,206,57,21,51,196,171,255,0,46, +40,115,212,239,7,175,166,96,235,215,169,237,249,192,193,84,224,88,12,125,23,131,219,129,14,125,186,117,227,62,128,17,152,100,3,151,219,235,153,181,33,199,169,204,157,190,131,156,212,38,22,36,126,247,241, +19,94,128,61,243,192,192,207,185,237,156,154,152,178,227,45,105,180,127,215,24,156,99,208,150,183,63,207,250,229,9,140,115,246,52,56,24,193,181,179,35,28,140,100,219,46,49,198,56,227,181,0,70,32,96,118, +137,143,169,1,239,137,29,122,103,63,94,152,199,229,73,228,184,56,201,99,131,198,251,173,221,185,251,132,251,158,15,242,169,119,198,58,218,65,220,12,195,102,1,206,112,72,242,135,78,58,103,242,205,51,126, +115,139,107,116,199,60,199,100,56,63,246,207,60,224,116,24,227,147,201,160,8,90,18,189,68,221,240,22,75,161,130,8,207,222,182,111,241,252,170,54,136,17,156,206,167,130,15,154,248,239,235,110,57,61,15, +78,120,192,25,169,25,136,27,136,181,192,235,145,105,215,145,252,32,17,215,176,233,237,85,94,97,142,26,201,121,227,62,65,246,227,12,167,140,243,130,58,30,58,80,0,68,99,239,73,55,32,112,102,60,254,86,221, +185,60,158,7,175,90,105,49,231,37,229,198,15,62,113,56,244,57,251,55,115,216,118,239,206,106,54,145,179,159,54,200,245,231,203,64,122,116,4,92,14,57,244,28,253,113,72,102,140,125,233,108,135,166,236,14, +188,96,1,116,188,247,198,56,252,168,2,66,99,199,86,56,233,153,58,243,201,201,183,32,145,128,7,61,71,28,12,148,13,16,207,35,212,130,192,231,234,126,204,65,252,253,170,35,44,121,32,220,105,195,61,119,52, +163,243,197,203,14,220,99,190,127,6,179,32,231,237,186,119,124,102,89,151,249,92,246,255,0,35,212,2,99,44,64,127,171,141,129,200,63,188,218,15,227,246,101,252,70,51,232,120,170,239,50,103,229,138,0,65, +39,30,107,227,56,231,36,91,158,63,167,35,24,166,249,170,27,139,189,51,7,158,101,188,111,166,54,220,54,115,131,219,30,188,84,109,56,235,246,157,57,185,227,105,187,32,253,1,114,121,227,28,140,156,228,98, +128,20,221,17,159,221,91,118,4,121,242,242,59,28,8,51,199,167,29,115,145,205,66,215,204,14,2,219,15,111,50,225,137,56,236,22,17,198,63,51,156,116,201,67,56,7,47,61,153,4,30,49,126,51,143,67,159,255,0, +95,231,81,155,152,15,87,183,57,60,5,93,72,241,245,14,7,175,167,110,56,52,0,227,124,253,210,220,224,115,242,222,227,142,122,133,28,227,61,113,140,140,82,53,219,28,145,13,177,56,235,254,155,158,126,145, +129,249,250,84,108,209,55,59,99,43,216,99,82,92,17,215,39,204,25,7,60,116,253,42,61,214,196,157,208,71,142,153,206,165,156,12,99,157,204,9,235,140,143,78,77,0,63,206,152,28,249,54,156,143,239,94,140,126, +5,135,227,215,159,98,9,137,230,151,181,189,169,255,0,129,222,28,231,223,206,4,227,25,32,125,79,24,52,142,150,132,28,66,132,242,126,254,164,71,126,127,213,231,223,191,31,149,64,98,131,159,221,169,250,53, +254,79,224,209,175,175,56,57,30,199,20,0,173,113,56,4,11,107,110,125,30,249,65,192,235,129,114,51,245,35,7,158,106,177,146,224,228,173,165,177,207,117,55,103,156,227,63,53,206,62,188,115,143,90,151,202, +135,57,104,201,247,95,183,19,193,198,50,112,8,200,61,63,94,200,201,110,62,236,111,199,253,125,41,29,206,75,48,237,223,28,30,114,114,1,0,136,53,217,0,11,104,135,254,4,142,156,143,249,111,156,122,247,231, +35,29,106,54,19,224,230,206,50,217,231,11,49,224,117,32,52,192,231,142,231,159,115,79,217,8,206,97,113,158,71,239,46,8,200,199,161,25,206,59,227,235,205,70,97,133,142,76,32,146,112,15,250,64,237,142,164, +28,231,39,156,17,158,189,13,0,66,82,225,128,34,204,30,227,228,148,122,244,205,192,24,29,120,60,122,131,81,178,93,242,69,180,96,14,72,59,129,199,96,65,156,231,174,63,46,252,213,147,109,110,192,49,85,24, +227,172,163,7,156,0,94,12,47,108,117,232,114,114,115,81,181,162,17,242,136,182,245,1,158,76,103,179,96,91,240,56,227,129,129,235,216,2,139,45,208,60,218,194,56,60,101,242,49,233,137,192,95,231,233,211, +136,255,0,210,15,6,221,48,123,15,49,176,7,253,183,252,134,79,167,81,87,190,201,193,194,219,246,229,102,145,127,246,223,156,246,24,207,7,156,84,109,109,40,60,4,250,249,178,30,51,200,36,198,163,25,56,199, +32,18,59,244,0,206,101,184,237,110,131,177,24,151,174,121,206,39,250,116,3,145,156,1,210,3,29,209,235,12,32,127,180,146,28,231,60,16,73,30,252,147,248,138,216,22,242,158,118,43,15,65,43,113,223,36,50, +115,249,19,249,84,109,4,184,57,129,79,28,159,52,169,36,244,235,106,221,255,0,95,168,192,6,81,134,225,70,12,118,192,30,163,29,186,250,140,250,224,28,245,233,158,89,178,96,49,229,219,28,158,155,73,206,58, +18,4,156,117,228,227,241,226,175,188,83,255,0,207,176,32,127,211,195,131,208,14,139,96,71,78,58,18,125,106,22,134,78,65,182,193,206,54,137,164,199,83,235,99,146,112,1,237,142,212,1,73,150,80,8,88,45,71, +60,224,202,167,185,227,19,15,126,73,237,215,156,212,108,146,168,230,43,65,145,130,68,242,140,123,99,237,93,113,208,0,58,242,122,213,163,3,130,197,162,101,246,23,108,131,7,176,255,0,66,83,192,39,28,123, +115,197,70,209,73,247,132,108,63,237,240,159,155,234,45,193,62,189,7,191,0,80,5,82,10,252,205,4,39,129,146,30,95,110,155,110,70,70,126,189,42,18,83,159,244,72,219,233,246,156,241,233,254,149,140,243,140, +0,70,49,211,53,109,132,234,14,109,216,227,166,46,89,115,212,255,0,20,74,15,161,60,117,29,49,81,73,35,16,67,71,42,224,116,251,66,178,253,48,209,159,110,1,198,57,233,208,2,155,176,0,145,96,173,142,122,76, +112,122,119,155,28,16,7,83,219,25,170,230,83,255,0,64,245,4,30,155,36,32,140,96,103,46,71,211,29,113,129,212,85,227,42,227,38,41,75,115,252,113,14,125,142,206,58,144,1,25,61,134,0,21,3,60,125,76,82,96, +241,254,185,49,245,1,99,28,117,61,255,0,44,10,0,175,231,100,99,251,62,50,71,111,46,92,250,103,33,176,122,243,216,96,103,154,137,229,29,180,189,217,238,33,144,245,234,114,24,99,142,222,190,185,230,102, +146,46,185,101,199,56,243,88,231,29,240,93,113,249,118,239,154,69,154,35,252,103,216,229,142,57,39,254,123,142,227,25,45,249,12,138,0,170,211,40,7,254,37,32,117,4,121,51,3,142,188,141,249,253,59,15,78, +107,181,193,25,198,149,38,14,51,182,9,88,122,245,50,158,7,235,201,246,23,90,101,234,37,57,39,177,144,96,116,237,119,144,120,25,233,145,237,81,25,227,92,157,197,136,206,112,178,183,35,144,62,91,225,206, +56,233,250,243,64,20,26,227,156,127,101,79,198,114,13,156,216,227,174,120,56,206,70,77,70,206,140,48,116,183,61,62,244,23,9,146,127,224,7,177,244,57,232,51,214,174,189,234,41,201,18,12,245,196,23,71,235, +146,47,123,227,161,239,158,57,25,174,110,227,97,195,50,30,112,190,68,227,223,161,188,86,198,58,0,120,36,2,40,2,174,58,129,166,170,96,96,147,27,140,246,231,116,71,182,58,254,60,240,20,33,27,113,103,24, +250,35,231,39,61,140,104,48,126,184,228,84,141,118,15,11,36,152,238,190,77,200,25,233,156,11,204,146,8,56,31,134,77,49,174,157,128,10,242,142,159,242,198,248,31,76,113,122,49,249,241,131,207,81,64,8,201, +41,3,203,130,37,28,253,225,49,207,108,157,173,142,160,240,63,12,26,129,173,167,111,249,101,8,25,207,73,65,247,228,176,29,189,0,239,201,197,43,93,204,135,6,103,7,156,19,29,240,202,247,255,0,151,254,163, +62,163,129,140,227,172,45,127,57,24,243,31,0,245,205,206,78,58,14,111,137,24,239,128,6,125,79,64,4,48,78,163,31,32,57,227,18,96,143,83,159,53,70,126,153,206,78,113,77,48,221,1,145,55,94,0,243,122,12,242, +120,127,79,115,233,145,76,123,171,147,156,153,79,184,146,232,99,219,34,232,112,127,28,212,30,115,156,130,178,147,140,100,201,112,71,35,168,45,116,79,29,206,71,106,0,148,199,112,1,223,114,71,31,116,203, +129,215,7,157,205,206,127,218,200,199,60,243,77,196,248,32,78,14,58,1,44,99,158,131,239,123,227,182,61,234,54,107,129,200,18,168,228,18,12,224,99,142,230,224,224,147,199,3,61,51,81,226,237,243,183,206, +97,130,57,121,9,250,243,46,72,238,48,15,25,224,247,0,152,201,116,159,118,124,118,200,54,238,113,220,103,105,201,228,122,125,113,76,51,93,183,38,224,241,193,194,218,254,3,24,39,0,142,51,158,158,132,83, +2,95,0,113,28,189,122,135,124,245,39,144,36,253,49,252,249,105,75,162,57,138,78,9,24,253,241,3,29,56,243,20,19,244,207,65,233,200,3,203,221,144,7,157,115,219,36,11,92,12,103,182,228,227,255,0,173,216, +83,9,155,171,93,93,156,114,64,75,81,211,254,218,144,15,211,159,214,152,82,243,160,137,187,115,137,6,57,60,237,243,8,207,224,61,143,90,102,203,176,10,152,75,31,66,100,206,61,134,79,29,121,28,3,249,208, +3,242,115,131,37,238,59,145,21,175,95,81,137,115,140,250,114,105,141,34,130,115,46,160,122,115,228,197,199,183,14,71,191,211,167,188,45,13,217,56,22,196,1,254,196,135,167,39,4,169,235,234,122,12,140,250, +35,37,202,143,248,245,247,4,171,156,129,232,73,231,175,96,71,57,0,147,64,18,153,147,63,126,252,243,255,0,60,99,7,183,60,56,207,208,143,200,0,41,254,98,55,221,251,99,103,29,85,6,125,248,97,235,234,61,61, +170,128,91,192,126,91,120,80,117,25,82,164,31,203,57,231,243,28,250,7,31,182,12,238,138,37,233,206,214,254,88,244,244,3,156,1,64,22,204,97,198,72,187,228,3,201,0,12,123,7,35,232,112,125,120,166,27,96, +195,133,186,60,147,159,48,46,113,219,59,129,56,29,185,234,51,205,82,102,187,28,148,131,3,24,201,42,70,115,158,78,15,110,127,94,148,205,211,176,249,150,44,242,64,89,137,227,36,118,39,240,24,24,232,125, +192,46,27,85,29,99,185,192,237,230,62,49,142,121,66,223,153,198,120,20,195,10,130,65,142,102,28,140,180,183,0,243,142,226,34,61,122,244,60,98,168,31,180,99,229,17,99,254,190,92,31,124,140,28,250,14,153, +192,60,116,165,30,121,198,241,31,25,228,92,72,217,60,118,100,29,71,184,239,216,80,5,194,136,167,11,9,32,31,188,110,46,23,208,30,150,76,61,51,243,96,244,228,230,155,142,225,64,30,247,23,42,78,15,253,131, +240,58,255,0,49,206,42,176,46,71,49,161,39,191,158,196,241,254,203,69,128,15,60,3,199,97,234,109,98,112,51,207,31,36,153,253,10,28,253,78,1,207,34,128,38,59,136,225,35,60,113,155,185,241,219,177,211,207, +24,236,51,235,232,9,80,128,217,206,215,199,251,202,63,148,103,219,61,59,254,37,0,126,184,156,158,4,150,216,193,254,57,65,57,35,191,217,192,236,58,126,116,205,163,28,60,25,28,103,207,155,7,230,237,136, +54,250,251,17,154,208,121,165,31,242,213,143,111,150,45,73,113,215,61,83,4,241,238,49,159,124,87,105,101,36,226,89,1,232,71,151,168,177,206,79,118,136,158,113,248,254,20,1,24,183,12,50,242,91,140,247, +243,230,60,14,135,2,15,196,114,63,173,33,181,7,238,201,108,199,35,24,146,232,224,31,92,71,207,78,156,251,26,71,105,48,63,210,155,208,171,195,168,119,206,122,170,142,71,127,168,205,48,51,127,12,176,169, +228,243,13,227,117,199,80,89,79,211,191,61,71,20,1,39,217,61,94,221,79,95,249,123,201,232,121,59,27,184,224,128,78,121,57,227,13,107,62,112,100,182,233,145,185,110,59,227,7,152,23,166,56,200,207,224,115, +76,253,248,25,243,237,61,255,0,209,238,129,235,159,249,233,158,120,234,70,78,112,71,64,220,200,78,60,219,65,216,101,46,1,235,215,153,51,200,231,142,122,113,154,0,127,216,87,169,123,76,142,164,67,49,39, +191,31,42,228,115,143,175,56,53,19,89,70,1,195,218,177,60,228,196,114,15,190,254,135,4,241,255,0,214,166,178,184,36,137,109,134,50,56,107,145,235,156,126,248,118,245,25,199,173,68,22,98,121,158,216,3, +255,0,77,46,63,249,35,0,255,0,146,121,160,7,53,161,28,102,208,158,160,136,243,233,193,196,160,116,207,247,121,234,106,6,179,199,204,99,183,98,50,115,177,137,29,72,0,139,144,56,198,113,198,51,192,169,24, +30,158,124,57,0,255,0,203,89,122,245,231,117,200,198,126,135,233,156,83,78,49,205,212,11,212,115,44,135,28,231,160,184,246,228,112,122,145,130,69,0,64,214,192,3,136,173,176,14,15,238,36,110,221,50,110, +8,39,145,156,99,223,165,66,109,128,31,114,1,254,237,171,227,30,231,204,247,61,51,142,189,106,217,109,167,63,109,128,30,122,238,239,219,45,118,15,94,50,113,235,193,21,27,72,188,98,238,35,156,103,107,227, +242,205,227,100,251,99,219,173,0,85,48,47,241,44,68,14,6,34,101,7,56,228,254,241,128,193,235,249,227,213,190,64,228,41,128,113,253,220,19,206,112,119,76,192,227,167,32,14,65,250,219,105,128,224,223,28, +122,6,4,117,32,243,230,30,248,28,147,239,211,53,11,60,68,115,125,38,123,129,112,6,122,246,7,57,60,156,103,159,78,152,0,131,201,147,61,87,185,226,72,147,147,223,254,62,144,14,152,201,30,157,113,81,152, +31,28,200,192,231,129,246,184,63,63,248,249,115,199,225,206,70,123,212,165,226,201,205,227,128,61,38,114,115,244,201,254,125,135,175,41,246,168,151,131,114,57,200,5,154,70,200,252,126,163,174,49,207,182, +0,32,48,205,218,118,94,49,196,241,182,48,122,16,179,18,114,7,96,61,250,28,187,236,238,70,26,121,78,127,187,50,1,142,58,230,76,231,57,224,115,142,128,116,167,181,205,169,206,110,70,72,201,4,22,39,28,255, +0,18,159,204,0,56,233,142,42,51,121,110,15,51,175,208,123,122,254,236,17,140,224,245,250,28,230,128,23,200,133,49,186,226,225,78,58,153,211,63,81,146,195,28,243,243,30,157,248,164,242,161,228,139,187, +146,72,192,196,246,248,57,199,247,194,130,62,167,61,72,237,76,107,203,92,28,205,27,122,1,229,177,206,56,57,116,199,30,217,238,58,226,152,183,86,125,14,9,61,127,227,220,17,143,81,129,207,65,211,220,156, +98,128,38,48,34,255,0,203,123,150,250,203,110,127,61,174,56,224,224,131,218,155,181,0,31,188,152,224,247,54,237,131,158,228,200,113,142,62,135,24,29,233,62,213,102,50,10,161,32,228,157,208,224,117,232, +195,130,63,207,78,161,189,178,61,98,94,184,56,104,201,207,94,126,96,14,7,29,128,39,235,144,3,247,99,239,77,49,56,63,118,59,110,253,70,124,195,220,241,130,63,28,102,154,94,216,17,151,99,216,134,22,228, +12,115,129,153,202,113,201,192,226,143,183,88,129,254,163,142,224,152,200,231,175,252,180,24,250,250,247,237,78,23,214,4,19,228,244,200,63,45,177,250,227,124,191,175,29,51,233,64,17,25,45,51,200,82,123, +3,5,177,39,191,222,19,175,25,28,247,227,174,105,162,75,126,209,68,255,0,239,91,192,120,231,39,30,123,112,61,51,239,244,144,221,233,196,103,203,81,207,24,54,153,201,207,0,9,56,239,158,163,233,197,52,221, +105,217,226,45,195,140,231,236,185,28,245,4,200,191,92,15,94,121,226,128,35,62,64,233,4,32,247,34,214,216,243,200,25,2,111,207,156,240,79,126,26,101,236,18,32,185,198,62,195,104,78,59,240,102,7,159,195, +21,33,186,177,237,3,131,208,28,218,0,123,96,255,0,164,103,62,156,123,118,24,136,205,1,63,34,56,238,6,200,89,122,99,31,35,144,61,200,207,174,58,80,2,249,187,122,199,15,83,130,109,32,25,247,249,46,121,35, +129,220,241,192,34,147,205,99,156,11,113,156,114,98,132,30,120,200,15,62,62,163,158,152,227,138,103,154,153,7,203,126,231,148,80,8,57,236,73,63,143,3,219,213,12,240,30,54,62,64,57,193,136,123,158,171, +142,249,239,211,30,130,128,7,4,231,152,126,160,90,167,30,184,89,128,207,126,216,247,199,44,40,65,249,90,50,55,12,229,237,7,35,129,146,103,60,103,168,232,65,82,120,20,25,161,56,62,88,252,82,22,39,29,201, +202,231,39,211,29,193,207,90,105,146,51,200,72,198,122,15,42,62,190,251,100,245,39,255,0,175,129,64,14,217,33,232,97,31,238,181,167,60,250,153,143,92,126,28,126,42,34,148,19,251,200,250,244,34,220,243, +245,15,206,57,231,169,168,76,167,60,8,198,72,57,17,129,128,51,146,15,153,156,125,114,61,207,20,166,83,219,104,199,127,37,152,159,199,121,235,199,110,131,138,0,156,197,40,199,239,99,246,0,219,241,207,0, +124,255,0,145,224,103,235,78,228,14,102,94,157,55,69,219,143,225,124,12,119,231,215,29,56,170,211,72,73,233,140,117,16,28,103,29,194,176,218,51,233,207,20,195,51,231,153,99,252,109,164,239,235,128,223, +82,59,241,207,122,0,182,91,3,153,98,24,234,60,238,159,80,38,56,252,121,227,189,49,152,16,115,113,0,25,198,60,197,35,166,127,231,169,207,67,215,62,132,122,215,222,27,36,201,111,215,169,133,129,245,232, +200,184,56,233,207,20,187,211,140,220,91,142,65,27,130,17,147,216,12,175,62,248,224,254,20,0,252,71,213,174,33,57,29,149,15,175,251,67,29,125,73,193,61,105,4,145,131,204,203,140,246,71,227,215,143,48, +231,219,0,12,243,73,146,223,114,238,17,219,253,84,89,237,254,217,7,158,113,197,59,109,207,4,95,198,156,231,136,225,92,119,224,150,32,15,94,195,215,145,64,14,251,68,67,56,218,221,64,44,146,130,49,215,59, +91,31,94,217,199,208,176,180,76,51,156,115,252,49,203,131,140,243,252,62,221,243,198,123,98,148,139,140,124,218,136,199,127,154,217,65,227,29,9,0,2,58,247,198,113,199,20,223,47,161,125,65,136,234,72,107, +70,250,227,4,99,28,156,103,211,61,51,64,9,251,174,161,152,250,254,238,112,123,244,33,248,199,161,239,248,138,99,109,25,206,72,28,143,150,110,248,3,145,134,233,142,191,206,157,182,32,112,47,27,28,228,131, +102,9,207,168,44,1,252,72,63,160,160,65,25,63,241,251,34,228,119,54,67,36,122,150,148,227,30,224,126,89,160,6,121,128,125,208,73,238,127,126,56,56,35,171,99,211,243,165,51,3,140,163,158,189,164,97,147, +216,245,201,199,215,240,198,75,252,148,94,154,132,188,231,238,73,96,6,120,206,79,152,64,29,49,206,78,120,224,10,79,149,9,63,218,55,71,221,102,211,219,169,246,115,220,14,185,36,142,49,210,128,35,46,9,24, +183,110,152,4,36,220,254,33,15,113,235,75,185,128,7,236,231,56,60,149,152,100,144,127,187,16,201,28,96,147,244,233,196,134,111,75,155,188,129,195,239,179,36,254,143,233,192,198,71,168,233,72,215,82,47, +75,187,172,99,188,182,128,241,159,72,73,193,39,56,227,29,113,234,1,22,246,39,152,208,118,229,39,63,142,4,121,235,159,79,124,102,147,50,28,159,46,48,59,98,59,172,242,120,233,30,63,199,176,228,138,119,219, +113,128,110,238,9,236,12,144,103,140,242,7,217,199,80,65,207,3,160,192,206,105,62,220,70,72,184,152,30,115,186,88,112,126,187,97,201,224,3,129,142,63,28,128,27,217,113,243,112,49,198,203,145,199,76,143, +229,200,62,167,166,106,65,114,7,95,44,145,199,205,28,231,128,58,18,67,126,61,59,224,98,163,26,156,195,164,205,131,223,114,48,198,115,212,218,158,195,167,255,0,172,184,106,55,60,226,232,39,25,35,35,35, +7,161,205,160,29,112,71,36,31,165,0,74,47,0,60,132,92,119,16,207,183,28,142,199,61,113,198,61,14,58,138,149,174,98,113,193,136,224,119,138,231,223,140,238,82,78,51,223,190,51,235,83,251,66,228,99,253, +51,118,15,77,209,31,78,185,181,35,185,254,184,239,32,212,46,15,13,112,164,30,160,172,31,210,208,127,135,74,0,148,73,17,60,8,135,94,76,87,61,113,192,63,233,107,128,121,245,25,36,226,164,19,70,14,55,196, +7,7,136,238,87,36,100,255,0,207,248,228,14,227,211,189,87,251,92,196,113,34,231,177,16,70,199,32,124,191,118,221,73,199,94,189,134,13,52,203,112,217,38,224,14,71,88,19,28,116,198,232,15,227,207,35,175, +61,64,46,27,152,135,202,12,103,175,2,59,156,103,184,36,234,131,63,151,29,112,56,165,23,16,158,74,46,79,28,36,255,0,250,15,246,167,242,233,211,38,169,15,56,255,0,203,96,73,238,177,40,234,125,68,93,255, +0,12,28,84,158,84,195,31,189,60,243,128,160,3,233,200,141,72,235,233,142,79,25,52,1,117,110,161,94,112,170,15,92,137,71,231,255,0,19,38,29,207,190,71,20,166,250,60,141,190,81,224,237,59,100,206,122,242, +62,217,159,81,130,79,29,143,34,168,249,51,3,247,193,61,121,66,79,60,243,219,168,231,160,237,138,127,217,220,243,243,247,28,64,49,248,146,167,7,60,122,158,63,16,11,70,254,79,225,17,115,199,16,202,73,252, +174,206,115,249,123,83,77,243,158,163,36,14,71,147,62,220,242,58,139,181,235,199,161,31,237,30,4,34,25,87,32,36,167,167,72,227,94,158,153,140,158,216,252,50,15,2,164,17,202,0,34,55,57,231,63,41,207,28, +103,17,17,223,168,206,113,236,50,0,211,116,71,37,14,222,251,109,231,32,147,159,91,174,70,57,239,211,241,9,246,173,221,223,158,185,129,198,78,73,4,254,249,137,244,251,167,142,217,228,171,71,112,73,2,221, +155,142,57,97,143,206,44,96,30,195,56,233,77,16,221,103,155,124,123,19,215,241,48,237,224,103,250,80,1,231,177,32,17,145,142,208,73,147,207,61,242,123,113,249,30,130,151,206,98,120,222,161,73,255,0,150, +51,1,248,240,72,206,49,239,239,193,167,17,47,59,173,148,183,83,243,68,56,235,158,33,67,143,175,83,201,199,80,210,101,81,255,0,30,59,142,127,136,18,48,126,170,1,199,92,122,254,84,0,255,0,62,66,14,39,110, +252,121,83,103,131,206,112,6,61,57,200,57,193,235,76,105,36,35,253,107,156,241,194,73,219,215,115,14,199,176,234,127,54,121,142,9,3,79,77,217,206,124,149,238,65,236,58,118,7,7,175,161,167,9,92,124,173, +97,39,127,185,4,100,112,63,218,183,110,121,236,127,94,40,2,48,243,244,18,77,140,158,14,226,57,63,245,208,100,28,245,231,159,173,40,19,145,201,126,58,253,225,156,14,160,7,227,245,247,206,49,65,151,144, +77,133,200,199,79,244,120,240,122,245,197,186,140,244,234,120,253,74,52,160,12,125,142,112,221,193,181,92,243,207,247,148,125,63,192,208,0,82,97,194,179,142,252,201,50,241,245,5,192,200,236,57,231,35, +160,1,165,110,179,242,202,126,108,242,110,231,24,62,224,40,232,115,212,145,142,70,73,197,39,154,189,236,110,31,182,126,200,132,114,59,157,254,221,207,31,94,105,4,241,143,189,103,50,231,214,210,38,198, +120,238,78,8,233,199,231,64,15,9,168,246,148,119,200,243,174,91,177,56,39,99,99,0,103,167,81,156,224,112,211,253,161,247,124,240,7,108,92,220,119,250,69,248,28,129,205,32,158,219,161,138,224,31,81,107, +26,15,110,75,227,30,185,7,25,168,252,200,27,36,67,114,121,231,49,47,25,227,177,35,0,31,70,3,36,244,52,0,237,154,159,105,20,129,142,77,236,254,153,255,0,158,28,156,227,159,173,49,147,82,231,132,110,59, +92,206,220,113,129,254,172,113,207,95,195,30,175,86,66,8,17,72,1,35,27,163,64,120,233,131,176,250,96,115,219,138,152,20,95,249,232,61,64,0,100,99,184,100,35,142,71,67,208,96,231,168,5,101,93,67,174,197, +24,227,253,124,228,3,212,100,121,36,116,235,223,190,57,229,225,117,14,1,17,143,76,189,211,100,99,147,194,46,121,246,237,249,217,205,191,241,6,234,62,241,135,0,241,215,59,15,114,65,24,231,183,52,162,72, +122,3,24,193,238,34,238,58,28,183,60,244,198,62,156,19,64,21,66,222,0,50,97,28,159,249,105,120,51,248,21,3,233,198,57,60,156,82,159,181,55,7,200,252,100,186,255,0,226,151,175,215,177,227,138,180,89,73, +31,52,124,243,242,201,8,28,242,54,226,54,25,246,236,73,6,131,229,140,156,130,7,95,222,195,250,255,0,162,147,156,245,207,31,173,0,83,219,116,14,223,221,12,118,84,186,144,227,142,254,120,0,240,122,250,129, +143,69,196,153,231,7,175,105,211,3,185,3,237,3,175,57,35,211,60,231,155,27,226,199,115,244,146,35,159,108,136,20,145,245,200,206,6,61,23,205,132,14,19,156,156,101,225,98,123,140,230,34,63,224,36,116,239, +214,128,42,229,129,24,108,129,131,131,29,203,103,156,16,27,237,168,58,28,116,250,158,42,97,43,1,203,40,198,1,205,189,195,227,166,114,63,180,148,126,24,239,215,166,36,18,196,1,194,198,56,234,86,30,15,177, +242,254,185,207,7,128,23,181,39,218,80,114,21,72,31,221,242,143,215,141,128,30,158,189,65,7,24,52,1,25,149,206,8,117,43,255,0,94,179,175,82,56,31,233,173,128,51,212,19,129,140,158,6,80,204,196,12,227, +3,28,249,83,19,200,198,64,55,71,174,121,199,211,218,148,221,174,120,92,244,56,219,17,31,78,19,57,28,99,250,230,152,215,12,78,68,121,7,144,20,224,117,60,224,40,61,206,49,245,236,104,1,76,132,228,157,217, +255,0,114,101,235,211,147,114,63,250,221,186,211,119,43,117,87,28,128,112,29,143,94,122,221,14,189,50,71,60,158,59,48,201,51,100,152,228,237,192,150,81,215,166,114,71,244,235,216,245,110,88,245,138,78, +120,57,150,99,237,156,25,20,123,116,7,175,24,226,128,30,66,124,223,44,158,223,43,224,28,143,250,110,222,192,116,25,233,207,5,167,107,28,20,115,142,153,70,207,227,137,7,110,50,73,3,223,20,224,167,28,195, +47,126,76,146,3,234,121,18,15,174,50,127,83,76,33,249,192,145,71,65,254,145,39,228,65,151,244,61,199,65,193,0,18,128,184,37,96,98,59,157,172,196,250,28,134,32,116,201,228,14,249,207,84,218,196,156,218, +200,195,147,212,169,236,113,243,131,158,125,51,156,119,168,8,147,167,155,32,228,96,125,165,137,28,246,27,206,58,255,0,16,252,113,79,30,119,92,204,255,0,89,165,232,113,144,126,124,117,227,57,25,61,112, +40,1,94,37,239,109,48,61,192,100,56,233,223,202,35,243,245,235,197,51,201,94,246,215,61,126,242,207,31,183,64,109,134,61,59,227,131,211,163,88,158,141,230,40,29,1,146,86,254,114,1,244,197,48,132,244,148, +146,51,159,54,94,61,72,253,240,3,190,49,239,201,2,128,39,242,129,199,238,110,7,78,178,66,79,211,62,80,207,92,228,158,6,114,41,124,182,83,149,141,248,231,151,139,35,240,35,63,167,57,170,161,161,13,201, +148,3,206,12,211,14,65,31,244,216,228,14,50,14,7,65,239,75,230,64,50,251,152,28,227,253,100,141,199,29,65,144,100,1,207,3,60,30,120,205,0,90,253,234,242,177,203,140,19,242,180,61,70,79,252,242,253,123, +123,228,210,110,184,32,229,92,15,67,60,29,186,99,40,189,59,15,111,173,84,50,197,140,131,184,125,36,221,129,147,159,245,172,79,0,118,245,235,193,168,13,220,3,130,195,175,60,184,61,184,207,152,8,239,200, +207,60,30,148,1,165,155,174,203,38,125,174,33,29,177,219,111,174,78,58,118,224,84,108,46,240,15,239,1,57,7,55,49,31,94,50,8,236,49,211,167,124,213,17,119,110,221,51,236,112,112,78,7,247,174,1,28,119,224, +125,121,20,191,104,182,60,108,82,78,79,222,144,31,99,242,221,254,88,4,100,28,129,198,0,44,31,181,14,228,103,251,211,35,125,121,223,235,233,212,115,233,76,223,120,126,225,140,159,119,39,142,159,194,197, +78,121,28,30,253,143,88,217,237,207,30,92,96,1,206,102,159,61,122,182,110,254,189,8,218,7,83,147,152,219,236,173,144,68,63,95,50,115,142,157,127,210,143,29,61,115,210,128,38,63,218,24,60,64,120,233,180, +28,245,245,35,243,235,253,33,101,189,61,12,42,122,112,187,137,227,63,195,156,244,233,156,116,24,198,65,15,149,208,73,10,245,192,221,117,145,223,60,94,14,221,120,193,235,138,77,176,157,199,113,127,77,141, +48,228,103,214,244,127,65,142,157,193,0,97,134,236,159,153,215,62,162,18,112,59,12,121,68,117,231,183,30,253,97,107,75,166,235,32,32,247,107,114,122,125,84,15,82,79,29,176,113,131,82,20,139,146,81,178, +48,78,228,115,199,167,55,253,179,199,4,227,241,166,236,128,140,148,42,58,130,21,151,25,198,115,186,243,140,145,220,14,122,251,0,87,107,41,65,36,190,120,199,22,161,143,96,49,212,31,96,1,227,241,164,22, +110,57,50,191,28,140,218,100,103,160,206,64,250,255,0,92,241,86,68,112,116,18,40,60,231,0,19,143,252,11,63,207,158,220,10,113,80,72,195,228,129,142,99,24,28,145,201,51,18,121,206,15,67,131,207,168,5,38, +180,39,0,206,7,108,11,37,227,220,245,29,187,231,233,205,70,116,244,57,204,202,78,113,255,0,30,145,117,231,3,144,125,250,231,223,147,131,113,145,219,147,180,245,36,249,81,177,192,227,35,8,252,99,161,206, +122,85,121,35,115,128,48,64,228,226,218,60,241,220,254,235,129,193,207,76,228,246,20,1,7,246,116,96,101,174,25,113,192,197,156,35,61,56,57,3,142,58,253,125,242,195,99,18,142,46,152,19,253,219,123,78,128, +30,57,25,24,4,0,51,207,108,241,78,101,117,255,0,158,129,114,70,69,186,174,6,121,56,218,6,78,14,114,122,154,76,17,247,188,194,59,124,145,12,245,199,85,39,240,198,125,57,160,8,190,205,17,63,241,248,252, +115,255,0,30,214,185,235,221,182,140,147,199,57,31,82,105,222,76,64,12,93,1,158,51,246,107,34,112,62,160,15,78,115,199,78,112,77,46,225,142,16,131,140,101,150,30,59,231,30,89,252,79,168,239,145,75,185, +128,24,104,128,255,0,118,53,60,113,213,97,233,215,140,99,223,176,0,143,203,135,159,244,156,96,240,124,155,64,79,235,223,158,70,59,242,105,166,56,199,252,188,169,57,232,22,219,249,1,142,185,28,31,76,84, +158,107,103,253,98,143,238,224,161,24,7,142,145,3,237,208,159,203,134,52,167,24,44,228,247,195,14,71,226,139,159,168,234,121,228,243,64,16,152,19,35,253,33,114,78,55,24,224,206,57,233,152,143,63,204,231, +53,31,217,151,112,197,201,61,126,80,176,16,9,238,71,147,249,231,24,199,7,173,77,230,195,144,89,220,17,199,250,221,184,207,29,2,251,114,59,243,248,55,205,180,7,62,107,238,28,113,52,152,207,29,198,208,113, +199,127,111,106,0,104,136,166,118,220,182,125,54,194,160,158,152,199,148,115,239,143,198,145,145,216,109,19,177,61,64,85,136,31,169,219,110,216,35,146,113,215,208,230,158,110,160,24,204,146,228,17,210, +73,191,248,177,145,238,61,137,164,55,240,0,65,158,76,30,198,89,0,244,193,221,33,244,247,198,40,2,15,179,74,217,62,99,130,115,215,24,25,237,242,217,161,239,212,158,51,222,154,116,247,98,15,153,131,220, +101,190,189,163,92,224,140,224,243,207,112,42,193,190,135,35,109,204,156,143,148,137,200,37,113,158,155,249,228,231,25,192,39,28,114,104,251,92,64,18,110,166,224,156,143,60,12,244,206,67,22,255,0,60,228, +99,0,2,140,154,107,159,249,107,39,185,12,248,244,61,16,143,204,116,239,142,106,31,236,183,199,19,202,0,206,63,120,220,247,60,24,126,157,51,90,47,117,110,121,121,231,32,255,0,211,116,25,36,241,146,209, +176,25,62,191,135,65,136,30,123,46,190,108,199,253,235,152,9,7,235,228,227,28,116,32,224,12,12,147,64,21,134,157,140,230,73,216,140,28,121,142,120,239,210,16,6,121,231,255,0,212,28,108,145,120,62,112, +56,236,207,158,228,240,33,4,156,227,191,244,165,19,217,238,255,0,88,231,169,193,154,219,129,206,113,254,142,79,190,72,60,245,226,154,215,54,167,163,187,18,15,6,107,114,59,118,54,96,116,207,215,159,168, +0,132,219,32,207,203,112,71,65,147,49,63,153,129,135,227,211,185,170,237,111,31,35,55,11,215,128,206,126,184,196,3,61,122,122,246,192,171,66,75,98,123,147,219,47,7,176,25,255,0,68,61,79,61,61,70,56,226, +55,75,50,73,44,87,39,161,150,221,125,250,155,14,71,29,243,200,228,158,65,0,166,208,70,58,92,94,96,158,66,180,131,161,224,243,26,251,99,158,167,143,65,17,142,36,28,207,118,71,98,60,205,223,153,43,143,115, +249,17,222,243,71,99,200,102,29,185,51,218,231,191,31,242,14,239,250,254,60,198,214,246,24,3,28,118,27,237,219,32,113,158,52,240,59,142,167,167,214,128,41,23,129,0,97,45,251,125,89,200,228,2,114,78,79, +30,157,50,61,49,81,180,240,15,249,252,63,237,25,36,4,99,234,64,231,29,249,29,51,235,59,67,107,200,202,1,201,230,104,120,246,63,232,0,140,28,244,61,71,110,162,22,130,212,96,137,45,249,198,115,42,103,143, +113,104,1,232,121,250,244,52,1,27,92,91,224,22,123,175,198,105,58,246,251,164,156,103,174,57,231,61,120,170,237,115,105,206,94,108,251,205,113,216,227,24,39,158,189,113,158,79,24,21,57,138,33,192,54,237, +131,234,167,24,28,5,97,104,64,57,32,250,28,123,84,126,84,96,31,150,220,147,247,114,64,233,255,0,110,153,39,242,207,110,40,2,169,158,212,156,137,92,100,112,26,107,129,159,168,222,163,145,199,62,149,9,158, +220,12,9,80,243,140,27,137,58,241,156,143,60,16,79,30,160,30,217,60,219,49,69,140,249,118,217,39,161,36,113,235,159,179,244,61,176,51,207,78,42,38,142,50,48,35,182,36,19,209,148,158,221,51,104,127,28, +175,28,251,26,0,166,215,16,96,147,52,39,211,116,179,123,1,157,183,7,240,57,31,225,92,220,219,147,146,246,76,59,22,158,224,122,117,255,0,73,24,199,124,159,173,104,145,183,32,71,7,25,227,120,231,240,251, +32,231,183,225,80,177,4,227,100,121,235,254,181,198,79,97,197,191,25,239,193,231,144,59,80,6,115,92,218,103,30,101,128,25,207,23,23,3,24,237,197,198,122,28,119,25,235,156,96,87,146,107,2,65,255,0,137, +88,224,255,0,203,213,202,156,253,62,211,216,231,223,28,231,131,90,187,164,7,1,99,0,118,243,165,228,30,122,253,148,131,234,1,31,227,77,46,255,0,196,168,58,99,14,207,208,231,28,219,15,175,3,60,99,129,212, +3,21,165,178,4,146,250,98,243,206,46,110,113,248,102,124,122,118,235,215,147,81,60,182,0,13,167,77,98,115,202,79,49,250,116,115,211,29,242,71,113,91,141,52,195,238,195,33,231,25,69,29,51,142,119,66,7, +3,161,56,199,78,217,168,90,121,178,70,203,197,231,145,181,48,61,185,132,14,56,201,252,122,17,64,24,12,246,191,120,38,154,73,200,24,145,178,9,237,134,59,191,60,103,212,212,45,44,35,28,105,203,201,24,222, +15,232,67,28,99,161,56,173,246,154,76,99,253,51,159,246,71,94,152,225,7,78,188,123,116,53,11,52,132,100,73,116,50,49,180,132,200,32,30,164,40,108,14,224,251,243,212,0,14,125,238,96,7,4,233,221,120,34, +72,253,123,0,131,158,184,201,245,29,69,69,246,139,92,253,235,82,71,31,235,98,7,158,195,0,100,12,240,50,8,232,107,125,131,182,73,158,237,64,198,72,76,1,131,142,15,152,6,58,117,227,7,240,21,156,100,115, +61,211,99,159,186,15,110,164,125,161,112,127,159,61,40,3,43,207,180,192,44,177,31,80,175,1,206,123,231,203,39,61,57,201,193,252,105,165,237,91,159,46,62,153,207,153,16,227,182,119,68,7,113,207,255,0,170, +174,148,7,254,90,79,215,35,48,3,142,216,255,0,143,130,79,126,115,142,79,76,226,152,99,137,142,11,220,103,169,219,110,160,17,248,207,223,208,140,30,231,154,0,207,43,14,70,216,226,255,0,191,144,28,253,127, +112,192,99,191,94,72,227,25,164,49,161,200,10,23,56,206,201,109,135,76,228,243,107,206,61,0,57,237,210,175,24,32,98,114,111,56,236,182,171,143,199,23,30,190,231,31,76,84,15,103,106,231,147,116,184,228, +19,3,100,227,61,71,154,120,61,56,239,129,237,64,21,13,185,36,109,243,49,200,201,54,252,117,232,194,216,12,144,49,211,24,237,158,66,253,153,128,192,47,187,212,60,99,140,250,136,7,166,122,3,248,28,84,198, +202,211,4,121,147,19,145,214,6,227,145,147,193,61,250,1,159,174,77,51,251,62,211,63,235,46,57,36,113,28,201,248,123,247,32,128,121,207,175,0,16,155,71,56,249,156,158,51,204,100,158,115,144,60,163,236, +113,220,118,7,172,109,101,38,73,13,48,4,156,252,170,71,169,249,133,190,6,122,242,77,88,54,54,171,255,0,45,110,125,192,107,143,253,150,50,115,211,174,79,20,223,176,219,127,12,247,106,121,233,231,254,121, +242,136,245,238,120,234,61,64,42,155,73,0,249,75,19,212,146,0,56,193,201,193,181,39,57,227,28,143,126,73,168,77,172,128,140,99,130,71,206,160,119,7,60,218,143,235,245,199,53,108,217,199,142,46,111,179, +208,129,246,130,127,51,0,192,199,57,252,241,221,159,97,140,245,185,212,15,190,249,7,183,25,183,239,223,191,127,90,0,171,246,105,71,62,96,92,140,146,173,25,32,118,235,106,167,169,247,227,30,152,168,188, +169,208,231,237,12,190,128,0,120,244,44,97,80,58,224,96,242,50,71,124,222,54,10,6,22,231,81,98,125,89,207,29,7,75,126,57,244,231,56,230,163,107,28,156,153,174,187,231,38,81,143,65,204,88,201,207,94,125, +122,245,0,168,13,199,252,254,55,60,103,247,127,252,70,51,142,128,12,245,198,78,42,51,231,127,207,226,156,30,242,66,132,243,221,74,18,127,195,183,174,128,181,0,113,60,237,255,0,3,99,235,147,147,14,71,175, +94,231,39,173,35,91,228,28,51,158,157,102,156,30,57,4,109,64,57,239,199,31,149,0,101,191,152,217,205,225,98,51,200,146,223,215,39,159,47,145,192,60,244,231,2,161,44,203,192,189,199,61,11,192,121,200,60, +5,140,175,95,94,230,181,13,169,206,124,178,196,227,150,158,82,115,193,254,37,198,7,57,245,239,237,19,90,190,7,238,113,198,56,149,136,57,56,199,35,229,63,80,70,15,114,70,0,51,67,202,120,55,112,146,120, +203,27,125,222,220,180,96,242,56,228,103,166,58,209,229,220,54,118,221,91,128,114,120,22,205,207,65,255,0,44,15,212,116,29,65,197,94,251,36,216,202,194,64,232,65,144,128,122,119,49,145,245,35,144,65,199, +97,77,251,36,135,129,16,7,161,6,76,177,246,255,0,86,7,39,35,24,247,199,76,128,83,242,174,200,218,46,226,32,1,130,5,150,122,123,194,8,60,117,62,188,16,42,39,75,193,149,91,196,239,147,182,209,143,7,28,17, +31,31,150,115,142,162,180,126,194,199,145,20,126,249,146,82,120,239,132,135,175,167,39,216,158,205,251,27,28,255,0,163,71,145,158,127,210,186,103,174,124,188,231,158,164,28,250,114,5,0,103,40,190,83,143, +181,194,70,79,81,104,48,61,203,68,199,63,78,228,116,207,40,209,93,54,55,79,17,201,224,226,216,159,195,108,10,79,226,122,147,207,53,124,216,168,228,199,24,206,7,18,78,49,158,63,138,29,195,62,188,129,233, +212,84,127,98,78,240,131,199,31,233,19,31,212,91,113,245,28,208,6,113,182,185,206,3,66,71,63,121,35,36,250,244,136,245,234,122,125,58,211,77,189,201,192,196,28,119,41,180,250,12,2,139,211,60,227,3,191, +110,47,27,8,129,193,136,47,29,124,219,131,159,95,249,96,189,179,234,15,67,222,155,246,72,189,35,83,142,166,89,199,230,124,161,158,61,206,62,148,1,76,219,221,231,238,219,48,4,99,10,205,143,200,174,6,121, +193,247,57,192,168,218,27,163,145,182,37,234,9,93,192,159,65,195,156,99,158,163,161,233,201,173,31,178,193,211,117,177,200,254,41,174,14,123,118,94,49,193,61,7,233,74,108,173,142,79,250,9,61,129,184,156, +96,12,228,28,17,143,94,135,31,157,0,101,8,110,176,70,216,135,160,204,159,92,147,230,168,201,24,254,30,188,243,198,19,236,215,47,140,8,83,144,50,94,97,215,212,45,192,244,231,156,117,235,90,134,206,223, +32,121,58,113,255,0,183,171,172,253,70,24,118,207,56,31,212,6,218,217,115,251,141,56,1,142,62,213,117,159,94,238,7,231,145,146,63,16,12,197,181,184,236,45,201,199,39,117,201,207,113,140,93,250,119,31, +165,21,171,228,219,255,0,4,86,4,224,103,55,174,1,0,100,140,23,201,224,156,231,35,208,146,115,69,0,126,180,181,211,140,131,110,156,117,204,246,189,185,206,77,215,57,63,211,215,21,9,188,96,121,183,140,15, +250,237,109,250,31,180,227,143,96,1,237,222,167,104,116,242,57,121,78,120,229,109,151,235,128,98,62,191,143,7,6,154,32,178,207,202,236,191,86,182,193,30,152,242,9,31,135,78,158,184,0,132,222,147,255,0, +44,35,28,244,89,225,39,35,167,73,143,56,207,115,206,62,148,134,228,158,124,190,15,96,241,183,167,240,137,1,231,161,4,175,39,168,239,57,183,131,28,49,108,228,140,45,179,18,61,70,96,3,167,67,128,121,30, +224,180,199,108,129,178,24,116,60,193,102,64,39,145,200,182,114,61,115,156,131,234,122,0,85,55,40,56,48,144,123,18,145,118,246,243,199,94,7,66,70,15,173,68,215,81,19,204,62,196,143,41,120,231,36,3,112, +121,246,199,167,57,230,167,145,109,155,162,2,114,50,124,171,97,199,185,251,54,73,231,128,63,17,211,53,158,24,72,3,100,92,30,50,145,22,228,28,99,22,170,127,51,248,80,0,46,173,70,71,150,228,224,14,86,212, +246,24,254,51,158,199,25,38,162,123,235,96,121,10,6,57,204,86,249,207,114,54,177,28,99,191,176,61,41,166,221,64,63,36,120,207,247,99,25,233,140,102,220,31,115,212,231,211,60,70,96,61,86,40,61,183,71,25, +201,255,0,191,28,250,117,160,0,222,89,48,235,9,227,230,204,86,188,116,25,29,199,3,60,140,131,215,56,230,49,61,147,30,30,1,142,112,18,219,62,189,148,159,174,51,142,192,241,148,49,237,60,165,136,255,0,122, +48,14,71,28,149,132,103,144,122,245,198,58,12,84,108,177,131,146,150,4,146,57,17,38,79,226,99,252,14,64,207,92,142,5,0,77,230,91,142,76,145,224,231,0,45,169,224,99,185,135,223,235,198,120,230,154,210, +91,19,204,192,103,254,153,218,115,158,163,34,0,70,113,207,191,78,106,35,212,130,182,91,70,48,4,49,147,199,253,179,95,192,227,28,117,61,153,229,196,120,48,219,156,99,56,181,143,0,227,175,221,252,58,103, +57,205,0,72,100,182,4,131,114,156,118,43,107,200,247,253,216,63,159,183,208,66,103,182,3,139,152,142,79,0,8,6,125,240,168,64,235,211,3,191,122,15,146,8,197,189,169,3,131,254,140,160,251,224,133,244,3, +7,63,165,38,216,71,2,43,113,239,228,19,206,115,215,105,227,252,6,61,8,3,60,248,71,34,116,207,57,200,139,159,65,254,160,224,103,30,188,114,5,33,184,94,113,60,61,250,164,103,242,196,43,255,0,215,234,48, +106,76,160,255,0,150,86,220,156,147,246,68,60,246,228,166,115,147,244,239,235,133,19,68,160,230,59,85,24,57,205,180,88,245,57,27,121,252,58,123,228,154,0,174,38,82,50,178,161,35,178,198,131,158,123,121, +88,228,140,142,189,59,246,69,150,85,60,72,132,117,254,0,122,243,210,32,114,15,184,239,208,154,156,221,194,59,91,0,120,5,109,148,231,61,57,94,159,227,223,213,5,218,12,21,142,46,132,156,89,6,206,79,191, +211,190,9,30,131,154,0,141,166,157,135,250,222,249,0,12,254,161,8,231,191,177,227,28,84,38,119,228,151,201,4,130,60,183,61,61,72,76,158,48,7,30,224,158,149,57,189,32,156,70,84,250,45,142,61,7,69,36,19, +248,14,189,250,211,13,233,63,192,78,122,255,0,160,200,57,245,56,97,145,234,63,12,80,5,70,154,80,115,188,115,156,19,20,192,228,251,136,248,232,113,199,76,103,182,90,215,19,241,213,190,144,185,60,253,99, +207,244,231,138,176,111,36,193,218,144,158,15,252,185,202,15,80,6,113,187,143,199,7,175,181,51,237,115,54,72,88,72,236,69,188,163,140,147,147,133,35,29,51,142,157,179,216,2,185,185,184,193,202,176,255, +0,182,56,63,170,96,126,127,175,21,17,184,113,213,156,117,60,68,141,140,245,232,51,129,250,247,200,226,174,52,211,115,251,184,138,158,194,205,201,201,245,223,183,63,159,124,129,145,204,38,73,143,72,162, +3,169,45,98,195,244,203,115,238,122,114,56,230,128,32,105,201,228,180,164,118,197,170,49,231,184,236,51,142,14,6,57,62,180,158,121,80,49,231,99,184,16,32,97,207,247,113,142,62,185,28,158,106,124,200,115, +136,19,175,63,232,32,241,158,163,4,31,204,3,216,224,1,64,71,124,102,221,121,233,255,0,18,240,0,57,201,251,195,30,189,15,76,240,15,52,1,95,207,128,240,230,231,233,246,120,136,207,126,145,55,92,115,156, +126,36,243,31,153,105,206,77,193,60,231,247,72,58,118,57,140,131,208,99,7,250,85,131,11,117,251,44,126,152,22,136,9,235,220,39,113,212,28,244,200,231,144,209,9,207,252,120,41,227,161,183,254,96,46,61, +115,201,244,28,80,4,6,234,216,17,143,61,143,76,24,173,206,57,61,153,58,122,13,163,158,1,231,132,75,136,247,103,108,196,19,218,43,61,220,96,243,152,193,28,245,24,207,31,74,176,99,97,211,77,140,30,231,236, +204,15,232,71,62,252,231,169,235,76,6,69,198,52,226,122,116,183,151,29,177,200,113,159,124,231,167,83,154,0,97,158,62,233,56,231,131,228,217,231,169,231,36,14,113,145,208,250,146,113,78,19,64,120,249, +198,121,255,0,87,106,8,247,63,186,57,29,184,62,244,190,108,131,254,92,24,113,192,54,242,246,228,2,124,243,248,231,211,181,40,185,144,116,177,92,245,192,130,101,28,123,137,73,192,207,160,247,7,52,0,23, +135,29,100,35,56,36,69,102,70,120,227,62,94,9,57,39,147,215,220,211,79,146,64,27,166,199,169,75,53,4,228,241,128,153,244,237,159,214,165,23,51,99,155,63,166,35,186,13,128,122,6,243,70,125,7,227,197,53, +174,110,65,59,108,159,28,240,90,236,126,35,109,200,233,130,61,122,113,232,1,22,216,122,6,32,156,30,90,215,166,113,252,81,245,39,182,71,126,194,151,203,39,133,120,178,49,195,45,153,60,30,184,219,140,250, +140,231,169,237,76,55,119,60,226,213,134,9,200,18,221,228,117,228,131,112,79,94,184,28,119,207,52,159,108,185,28,24,102,24,235,181,238,219,190,78,63,124,59,30,71,99,216,116,160,9,60,169,73,3,43,215,157, +171,167,247,198,50,54,147,143,76,1,207,36,26,145,96,99,140,178,242,48,55,199,100,79,60,100,109,94,9,24,200,193,244,168,197,229,199,120,238,1,25,63,55,218,250,103,28,143,180,224,115,199,32,114,115,201, +32,82,139,169,200,234,249,201,227,23,36,1,255,0,2,156,247,233,193,198,56,7,176,4,166,211,131,155,136,190,187,45,179,207,7,166,210,49,215,142,157,133,68,108,131,100,253,162,221,179,211,49,192,126,160,157, +196,244,237,143,160,3,38,148,51,191,222,32,103,35,44,46,9,39,63,245,211,4,227,24,200,224,241,207,52,205,171,206,233,112,122,125,203,142,62,152,39,182,59,242,112,120,28,208,2,125,136,130,8,146,2,79,93, +176,219,156,117,3,59,153,114,58,99,29,251,242,41,126,197,32,39,139,66,59,23,182,136,12,125,19,35,28,250,114,77,49,209,14,127,122,204,121,224,173,192,29,242,6,36,207,39,212,15,233,85,202,197,192,44,254, +159,47,158,167,60,245,203,182,15,28,245,31,74,0,185,246,66,62,98,44,72,35,180,81,241,142,135,6,38,29,253,57,227,52,125,157,207,11,246,62,71,65,109,25,245,231,34,208,144,127,47,122,166,12,0,124,204,71, +215,205,57,25,227,144,191,150,125,126,148,111,181,233,153,36,62,129,138,243,208,96,52,100,159,160,7,30,180,1,101,173,217,73,200,132,103,29,33,42,7,161,192,181,56,57,238,79,214,154,99,25,0,152,49,211,148, +144,142,51,201,255,0,69,227,60,231,142,224,103,34,160,38,219,56,54,228,131,156,110,98,59,251,193,128,49,234,7,94,125,106,51,246,96,127,212,66,188,231,44,233,158,184,234,208,96,125,121,245,224,117,0,153, +163,76,244,182,63,68,101,199,126,246,192,231,215,184,57,61,241,80,178,168,199,16,0,61,35,110,185,232,115,106,79,235,244,168,152,91,57,201,183,133,136,206,48,209,55,94,217,54,227,159,211,166,49,76,205, +162,240,32,32,224,112,60,131,158,120,199,250,48,252,186,227,56,60,208,4,192,160,232,35,3,56,207,148,113,234,121,22,76,113,211,3,147,215,57,24,169,84,193,140,249,144,142,163,24,35,249,233,190,220,3,129, +219,61,13,86,86,131,4,44,18,28,14,155,173,135,191,123,124,247,245,30,253,105,87,105,60,89,204,57,4,19,37,150,122,240,70,109,155,60,14,248,234,59,228,80,5,143,221,131,159,180,194,184,57,234,195,175,97, +157,52,131,215,140,30,220,210,110,64,56,187,131,131,252,69,122,115,223,236,74,127,65,81,225,88,255,0,199,189,192,233,128,62,194,199,216,31,244,60,96,159,78,160,253,40,219,24,235,5,199,178,172,118,96,143, +196,90,96,246,233,253,120,0,83,32,3,38,250,216,123,110,32,12,117,199,238,84,99,233,129,211,215,33,162,100,25,7,80,181,57,231,27,198,71,168,201,0,99,220,19,215,2,164,30,95,202,76,87,137,201,0,136,237,137, +252,49,108,122,144,63,33,158,216,112,216,73,249,239,208,100,125,216,173,243,193,0,240,208,224,122,253,223,108,115,64,17,135,31,243,255,0,111,142,59,130,0,237,247,79,167,212,156,146,51,78,222,71,252,196, +109,187,242,124,211,156,127,186,15,115,144,51,211,32,96,244,122,249,100,16,101,212,137,201,201,48,194,57,24,192,27,97,61,9,231,35,185,206,58,83,252,184,71,35,251,67,175,37,161,141,73,3,3,36,139,80,9,246, +24,199,229,64,16,44,132,103,58,133,169,25,201,193,157,127,51,228,147,212,242,115,216,122,84,194,80,1,63,110,180,7,182,37,184,7,183,82,32,231,211,25,61,51,154,126,20,231,229,188,98,14,7,238,198,64,247, +11,107,142,199,212,115,208,138,7,148,51,251,187,163,129,201,40,224,131,158,248,180,24,29,129,207,60,123,10,0,133,174,0,60,94,68,73,199,220,184,184,201,60,242,71,150,56,207,211,169,227,25,164,55,67,4,153, +213,142,49,247,167,207,167,31,40,227,29,179,159,167,74,152,180,3,150,73,215,130,112,35,114,71,175,63,99,36,122,231,39,60,243,154,4,150,188,100,92,100,30,133,92,118,245,54,131,158,163,149,255,0,235,128, +86,243,212,224,153,27,219,15,112,49,248,96,231,191,76,117,234,106,69,104,72,31,189,145,178,122,9,39,36,3,206,121,67,158,188,129,208,253,106,198,251,86,254,9,78,113,213,219,245,205,158,9,39,146,72,7,60, +125,93,254,136,120,218,122,242,28,228,112,70,57,54,62,199,142,220,16,71,25,0,131,116,3,141,210,244,60,111,152,145,255,0,144,51,159,167,225,192,197,46,235,94,67,164,141,199,44,102,185,65,145,211,32,218, +112,122,103,239,12,251,84,165,45,71,204,4,121,57,56,44,71,76,224,228,89,118,57,239,159,214,163,63,100,228,237,66,115,213,101,144,31,127,189,103,180,115,201,232,58,159,106,0,76,90,227,136,220,103,7,254, +62,38,57,227,142,13,137,35,233,128,115,199,83,79,88,225,32,230,218,67,234,68,140,70,6,123,125,137,79,76,17,207,20,128,64,79,5,215,29,113,55,3,240,251,25,206,125,113,215,233,154,148,34,30,142,195,208,153, +216,127,237,144,235,235,210,128,34,100,139,167,217,216,231,156,150,113,192,28,117,181,254,188,250,30,129,22,4,59,118,193,142,112,6,1,236,58,230,1,140,243,220,99,24,169,140,121,60,73,156,228,228,206,184, +0,116,4,155,62,152,25,224,99,185,235,71,146,8,255,0,89,25,60,99,23,48,130,122,245,38,203,39,183,28,116,245,160,10,237,110,153,207,151,10,243,255,0,61,10,143,167,22,196,122,31,189,193,250,208,32,136,117, +138,54,35,61,37,99,131,212,231,253,28,143,78,152,227,57,246,159,201,193,227,201,60,159,249,111,110,79,7,167,205,102,70,79,92,115,142,121,237,75,177,134,112,99,7,158,60,251,78,49,232,62,200,59,103,156, +12,123,80,5,127,32,144,54,216,169,29,114,172,216,231,57,255,0,151,94,222,228,247,201,160,90,228,224,233,206,115,253,201,240,49,238,12,25,199,215,63,173,79,229,202,216,196,145,227,191,239,237,84,251,142, +45,207,92,113,158,7,24,239,74,34,148,30,76,67,191,223,136,244,231,24,22,167,215,25,62,189,113,64,21,254,194,49,133,176,145,73,207,222,152,28,118,63,47,217,193,233,192,57,207,175,187,76,12,157,108,206, +14,64,253,238,58,250,230,30,224,240,71,29,207,173,104,44,115,19,242,202,7,93,164,173,169,25,57,192,27,172,129,244,207,7,156,244,237,47,147,48,228,205,16,32,100,226,24,25,189,248,251,23,225,220,30,126, +148,1,149,242,143,189,102,234,115,142,46,130,126,24,85,28,113,220,127,58,114,149,232,44,92,147,192,63,106,99,198,51,208,58,100,113,156,231,25,237,129,197,246,86,31,122,100,252,96,182,25,7,175,252,186, +99,159,66,56,35,160,168,192,4,130,25,115,147,131,229,90,3,192,246,179,30,220,227,56,235,235,64,20,219,106,129,254,134,195,174,127,210,228,234,126,151,29,186,244,25,239,220,211,1,66,73,54,178,140,156,16, +183,44,202,59,14,178,115,200,35,111,191,189,104,144,122,9,92,122,108,138,2,59,231,143,32,114,14,48,72,24,3,24,165,1,243,195,75,129,213,133,188,100,253,72,16,253,58,30,63,74,0,206,27,65,255,0,143,41,200, +207,86,153,148,0,115,159,249,110,6,15,30,132,125,120,167,51,41,28,218,184,56,200,205,201,61,207,7,23,89,31,136,252,5,93,49,72,73,253,228,185,28,228,219,177,206,113,211,253,28,131,147,232,8,244,231,25, +97,140,1,254,177,199,168,22,178,30,122,99,229,181,81,212,28,250,243,218,128,43,121,139,131,139,98,59,19,231,183,81,211,36,92,228,0,59,127,141,30,97,199,48,103,191,23,18,123,96,127,199,192,247,231,156, +123,147,79,99,252,59,220,227,144,13,172,139,156,99,254,152,131,219,211,167,191,21,27,6,198,124,180,126,217,54,242,131,199,109,222,95,215,250,208,1,132,108,226,3,146,64,192,186,147,25,244,24,186,4,243, +142,157,120,236,49,74,96,13,156,66,71,210,230,227,142,157,127,211,89,123,30,123,123,244,16,21,148,103,109,164,39,185,221,111,56,0,103,215,203,25,28,117,28,103,35,61,138,21,156,1,139,24,14,127,187,4,228, +158,122,242,132,12,246,227,211,57,228,16,7,60,15,211,116,203,147,247,126,211,63,233,182,240,254,29,51,239,76,242,25,122,53,201,57,25,197,237,216,255,0,218,164,15,168,235,214,158,22,114,14,108,34,83,207, +45,111,114,58,115,218,34,49,235,212,244,3,20,221,146,18,196,89,219,30,50,192,219,221,16,0,207,173,187,30,49,156,116,30,212,0,171,28,163,56,23,29,178,90,246,240,113,156,245,19,174,51,199,161,226,164,30, +126,8,49,76,15,98,117,43,209,233,200,13,114,71,215,145,244,170,237,31,57,251,37,129,247,54,215,188,127,228,142,63,46,252,241,73,176,131,197,173,135,215,236,247,120,233,211,6,213,112,122,252,184,198,14, +115,130,104,1,231,237,0,253,217,84,244,207,219,175,73,61,135,34,124,100,14,167,191,126,217,70,50,241,147,46,71,102,187,188,98,50,121,233,62,58,250,241,207,61,40,9,47,1,45,44,136,244,75,59,131,140,255, +0,192,23,28,241,202,129,201,61,197,73,229,92,255,0,207,173,190,49,209,44,174,62,110,7,80,16,140,116,228,245,57,250,208,4,34,71,94,14,113,216,180,215,30,163,185,184,39,208,145,212,158,114,105,194,225,199, +59,67,103,161,50,76,216,199,185,184,193,238,112,112,50,49,239,82,149,148,125,235,112,131,56,226,206,69,3,130,57,253,216,201,192,245,201,231,35,209,70,0,193,143,147,200,205,179,12,16,123,102,49,216,250, +244,244,36,228,2,6,186,81,213,84,18,63,188,128,15,76,230,224,142,157,201,227,167,4,156,57,110,211,161,138,55,35,166,230,92,143,126,102,43,207,78,248,207,81,214,172,110,96,70,33,24,61,51,27,114,71,76,128, +153,234,78,79,108,14,7,20,187,152,114,32,64,125,0,32,116,227,168,29,122,142,63,250,224,16,53,210,116,16,198,70,59,180,36,227,232,101,62,221,6,59,98,144,92,198,70,60,152,148,243,146,4,60,240,61,31,61,123, +103,219,140,147,83,238,144,142,109,64,245,109,138,113,142,188,119,252,7,65,238,41,8,144,100,173,188,184,227,238,196,79,60,247,243,147,191,113,140,115,138,0,174,211,71,233,26,147,211,41,17,206,113,200, +249,178,121,207,90,4,177,113,153,10,241,206,200,208,113,232,62,98,49,207,94,71,76,12,96,84,164,55,57,134,113,206,112,99,56,245,35,38,225,137,0,114,15,184,233,216,218,78,65,183,155,25,207,30,96,29,135, +64,28,126,61,253,69,0,69,186,38,63,44,238,189,248,242,179,143,161,35,56,25,192,199,211,165,25,198,49,59,17,236,216,61,58,156,112,79,78,253,122,241,82,236,183,56,221,107,49,4,140,16,101,25,246,32,174,6, +9,198,115,199,52,162,27,110,72,180,108,159,225,38,86,206,79,124,96,126,35,3,232,40,2,185,105,71,34,105,70,7,80,91,30,185,200,39,61,187,143,208,84,102,91,172,156,92,92,17,211,134,152,241,212,156,42,140, +143,199,159,124,213,223,38,19,242,139,30,121,231,108,199,159,168,149,120,252,73,238,48,42,54,182,135,128,214,50,6,35,180,87,77,147,211,32,121,224,127,46,188,19,138,0,168,210,94,127,207,123,156,14,121, +19,16,113,199,66,8,246,234,120,168,90,107,146,112,101,153,137,193,63,235,78,14,122,116,62,135,24,29,114,125,170,225,179,181,25,63,100,124,156,245,134,239,60,240,122,77,216,16,112,15,25,24,30,173,251,29, +160,228,91,176,62,240,94,17,236,126,105,179,198,127,196,250,0,84,221,114,65,34,105,193,233,214,112,123,241,134,94,9,207,112,51,198,114,49,76,105,174,148,149,15,41,227,57,62,112,36,246,228,40,28,240,79, +24,237,142,113,87,154,43,113,144,45,65,224,231,48,92,30,123,253,249,155,60,244,199,167,74,66,144,140,1,2,16,113,199,217,165,207,167,86,126,188,128,125,201,61,13,0,102,188,247,74,64,1,152,245,193,105,15, +97,234,50,57,231,169,239,248,70,46,175,6,113,19,143,109,207,200,227,184,143,216,247,31,227,166,98,136,242,109,192,234,56,181,115,143,160,18,142,61,15,30,189,234,22,136,30,18,221,61,57,179,151,130,120, +60,9,249,237,143,78,189,49,64,25,230,234,240,253,232,167,35,24,249,100,99,207,126,10,113,249,17,235,156,211,76,183,0,31,221,92,224,147,206,236,30,7,80,66,46,0,28,99,7,158,9,207,6,219,69,46,113,246,120, +112,120,255,0,143,41,137,199,169,196,222,190,156,0,125,240,107,181,187,255,0,207,37,7,254,188,231,245,61,188,236,113,235,248,30,212,1,23,157,46,78,248,174,121,60,110,146,76,143,65,192,25,233,211,191,57, +247,60,242,127,229,148,170,15,118,148,156,122,140,23,95,78,153,206,122,244,167,136,92,116,68,244,57,180,155,63,250,48,99,241,7,223,160,164,104,228,31,120,196,184,239,246,102,7,156,31,226,114,59,142,253, +240,64,192,200,3,119,177,229,21,199,29,119,74,113,142,70,113,54,6,113,131,130,121,30,228,83,12,178,0,114,71,176,36,140,99,143,226,185,31,158,1,3,20,21,148,12,171,198,115,159,249,116,39,156,117,239,248, +228,145,198,122,241,76,217,41,7,115,0,15,66,45,70,79,97,213,148,140,241,223,183,67,197,0,47,218,9,4,17,15,78,73,57,231,146,14,77,195,125,56,231,60,146,58,211,11,231,57,88,136,39,60,47,168,234,49,56,31, +145,253,120,167,121,79,192,242,213,134,48,119,68,62,135,239,187,127,245,254,163,52,190,91,12,237,129,50,123,136,178,122,228,96,49,43,158,79,245,230,128,26,74,127,18,193,220,96,196,231,25,237,205,208,231, +167,160,207,28,142,176,179,192,50,60,139,54,201,32,150,182,152,243,248,92,112,125,72,28,103,175,56,169,76,114,14,60,151,56,29,65,137,113,245,12,15,61,120,207,4,99,145,76,33,135,240,78,78,48,54,203,107, +143,192,121,100,122,123,246,160,10,238,208,231,230,143,77,0,129,193,182,186,4,241,211,229,151,111,224,9,201,4,251,213,118,104,48,115,30,153,207,253,59,221,30,6,73,36,137,64,224,245,30,159,157,95,18,63, +221,217,112,191,240,59,94,123,99,62,79,205,238,120,199,39,24,57,161,183,30,10,77,239,137,97,201,235,217,109,192,28,251,128,61,40,3,36,164,7,131,246,44,115,144,45,110,72,25,231,3,46,195,7,167,57,200,231, +60,241,9,88,70,64,88,54,142,226,11,188,103,61,112,81,143,78,128,103,161,227,211,88,151,28,8,238,126,162,69,108,228,241,210,37,227,235,142,79,175,20,214,14,127,229,141,225,30,242,2,57,228,28,8,250,99,167, +32,55,56,227,160,6,59,71,17,94,82,19,193,0,8,46,176,51,142,120,135,167,57,247,36,122,224,192,97,67,144,137,24,227,144,144,223,3,223,156,132,237,215,32,30,56,173,205,185,255,0,150,55,57,63,119,12,115,223, +130,162,44,244,199,62,163,131,207,12,100,144,131,136,174,7,3,35,46,72,247,36,66,72,231,190,64,244,24,160,12,31,179,166,119,21,199,161,43,168,1,159,92,20,61,135,126,190,196,12,192,214,220,96,121,96,245, +63,45,240,24,199,124,194,9,35,61,206,62,167,145,188,194,108,17,182,232,158,51,145,41,3,25,237,228,96,227,63,135,191,32,68,119,127,113,142,123,188,115,57,227,61,150,1,244,224,127,46,64,48,141,171,243,129, +14,57,235,246,220,227,25,206,124,178,61,185,25,250,30,105,166,212,158,173,25,62,130,91,188,240,56,224,168,24,244,29,189,49,91,97,212,114,203,22,71,36,155,121,186,241,158,13,184,239,211,156,253,121,164, +38,54,7,11,22,65,32,130,151,10,1,233,212,219,227,31,152,62,253,128,48,133,187,127,113,88,15,73,174,84,28,244,235,25,237,219,57,164,104,229,29,22,44,3,213,174,46,79,175,76,168,228,156,116,3,61,179,212, +236,51,42,159,186,6,0,206,35,184,110,78,122,102,215,25,198,49,159,255,0,83,73,7,130,185,62,166,217,201,192,234,50,214,4,227,167,32,228,254,20,1,132,222,120,28,249,30,163,51,78,79,81,156,252,195,7,56,227, +35,167,182,3,55,200,120,45,14,64,237,37,193,253,124,252,99,211,3,30,189,107,109,221,50,113,4,100,99,140,219,201,147,239,205,136,233,208,227,29,58,244,168,154,102,199,8,132,48,192,42,132,16,122,116,22, +203,142,57,228,113,199,78,13,0,99,179,100,17,185,9,57,228,61,193,4,247,235,33,207,92,244,201,201,35,25,168,11,178,244,113,198,70,0,185,201,237,206,88,129,249,99,235,90,166,86,207,205,30,64,255,0,166,103, +60,231,32,19,104,125,123,158,253,241,138,133,156,48,224,21,35,60,180,104,223,135,54,155,114,125,253,185,160,12,179,116,195,35,36,103,253,171,128,15,168,33,87,145,206,79,39,129,215,213,13,231,172,178,12, +224,240,243,243,255,0,127,34,35,166,57,250,117,171,172,100,61,0,199,111,221,99,183,125,176,174,57,206,59,113,215,213,2,92,54,118,135,62,131,107,119,239,247,84,96,96,158,160,15,165,0,80,55,79,130,203,60, +252,142,243,77,219,57,232,132,12,244,200,30,216,235,72,111,165,28,155,153,148,115,207,155,49,224,251,8,251,30,1,200,250,30,106,233,130,244,130,118,182,59,2,175,144,64,60,231,61,63,15,206,171,180,23,157, +192,25,235,185,49,156,247,25,117,207,226,57,29,113,147,64,17,27,233,59,221,72,163,215,19,30,131,166,124,150,237,253,9,53,3,223,12,146,215,50,156,117,108,204,49,255,0,146,248,198,58,100,247,28,12,102,166, +54,183,71,143,221,130,115,140,205,26,156,145,199,6,80,126,185,29,129,25,3,52,134,202,236,142,26,44,28,227,253,34,14,79,127,188,88,254,56,96,79,24,226,128,42,73,125,24,231,237,14,72,24,203,60,131,39,24, +57,221,106,64,233,207,63,153,21,87,251,69,51,129,113,130,70,63,215,56,61,114,14,13,147,99,30,223,157,104,53,133,203,28,55,151,130,73,4,77,110,114,49,223,247,109,199,243,207,110,41,159,217,83,114,7,149, +158,113,153,237,199,94,252,69,156,126,7,211,28,112,1,76,106,49,240,26,116,35,143,189,44,217,206,59,98,200,103,240,224,30,190,148,167,80,136,159,150,226,21,199,127,54,86,35,255,0,37,199,175,76,119,39,21, +108,105,151,120,35,253,27,130,121,107,176,191,250,12,75,252,241,158,158,149,11,105,151,99,146,208,140,99,145,168,176,28,246,0,166,7,24,228,15,94,59,208,5,118,190,4,28,93,65,211,251,242,48,231,61,132,25, +30,255,0,90,131,237,192,2,13,205,183,190,69,201,57,237,143,220,246,61,199,78,181,108,233,179,144,119,125,152,227,4,31,237,60,96,129,237,15,35,175,61,121,61,200,168,77,129,92,156,219,147,131,143,248,152, +18,125,7,75,110,156,231,140,175,168,192,160,10,207,116,141,201,187,136,112,112,68,55,93,241,142,112,128,231,249,112,64,230,170,73,42,49,230,238,51,212,2,34,186,0,126,95,135,92,119,231,185,208,54,143,142, +124,174,58,19,168,3,192,236,15,217,78,59,112,71,25,3,184,168,158,209,248,1,97,7,176,251,121,35,235,129,107,215,31,204,250,80,6,126,112,120,184,135,30,134,43,140,224,250,18,221,242,56,207,4,243,215,4,62, +118,62,73,32,57,206,63,117,32,63,159,81,158,221,113,219,168,171,15,105,34,228,8,224,247,255,0,76,148,228,129,254,205,176,199,7,160,236,122,122,86,107,118,7,37,45,198,14,50,110,110,142,14,123,98,1,158, +228,99,28,254,116,0,1,116,121,86,31,240,27,121,152,31,174,70,115,238,8,232,105,132,222,3,128,238,14,8,226,9,148,123,240,73,25,31,67,239,236,198,73,1,32,139,110,189,165,188,198,58,244,251,51,100,142,51, +245,227,210,163,116,32,28,44,36,159,73,46,177,244,63,232,163,233,156,126,61,168,0,41,126,231,13,35,227,142,74,48,227,167,32,227,183,28,246,61,179,80,27,107,204,242,239,238,60,183,60,126,103,7,160,207, +7,165,55,50,100,143,46,19,142,255,0,188,110,58,243,155,51,198,125,120,224,115,70,37,237,28,99,31,244,201,216,19,142,153,54,131,244,231,175,28,208,3,77,189,216,4,239,144,251,40,124,114,125,216,122,117, +199,24,7,60,98,160,48,93,14,64,148,145,208,150,85,35,167,102,83,245,252,186,30,142,117,155,57,253,216,234,114,177,30,157,241,254,139,208,127,60,245,57,168,138,156,146,89,115,207,2,23,250,224,108,183,29, +185,198,0,246,206,40,1,194,27,194,65,8,224,117,31,190,85,231,158,160,68,195,7,191,215,38,145,163,187,207,32,48,3,140,220,115,215,142,22,12,231,145,211,56,57,224,84,24,110,152,97,223,152,39,35,140,227, +31,184,227,211,57,7,174,7,74,97,112,15,204,88,227,160,88,174,51,232,9,2,62,50,59,227,167,210,128,36,100,184,25,207,31,91,137,198,127,43,101,62,156,175,108,83,72,184,199,6,50,127,218,158,108,142,227,146, +128,250,158,71,99,129,138,132,178,55,241,176,56,63,242,202,231,35,215,254,88,113,143,126,190,252,212,103,27,137,6,70,39,60,148,185,95,78,198,16,56,250,30,122,208,3,156,93,18,112,45,79,63,197,36,142,49, +140,224,146,160,18,6,65,7,3,215,29,42,60,77,209,146,200,156,116,80,220,119,56,25,231,242,61,120,39,36,211,63,121,202,226,66,15,251,51,96,140,158,9,49,247,250,12,12,100,247,169,85,120,229,36,4,119,45,114, +6,125,62,88,138,247,207,25,62,244,0,207,222,175,240,91,116,234,21,248,224,140,159,148,254,61,7,4,231,173,52,203,32,234,208,116,231,43,39,78,131,60,123,244,60,247,52,230,81,130,121,199,168,150,245,127, +93,158,160,142,63,44,230,153,177,179,149,141,219,131,214,75,246,31,129,1,72,244,233,158,62,180,0,195,36,128,1,155,82,58,242,140,216,207,212,12,245,206,64,224,227,154,105,150,65,140,53,152,30,240,179,16, +71,175,202,0,31,67,211,169,167,24,223,181,176,60,30,146,222,1,198,71,118,25,62,135,29,248,231,138,122,199,32,24,48,47,57,227,204,187,108,12,103,56,219,128,122,245,60,30,220,208,5,127,54,98,127,213,88, +177,245,22,224,231,223,230,148,99,160,199,29,249,239,76,47,41,228,67,110,1,25,36,91,198,50,120,234,11,159,166,120,29,49,212,85,221,152,255,0,151,69,36,116,56,185,60,247,235,11,103,158,185,57,236,72,25, +166,108,151,57,91,54,201,231,229,243,71,231,132,80,8,227,28,1,250,228,2,168,89,143,240,67,200,31,55,217,208,224,103,29,159,159,81,192,235,64,140,182,73,217,198,127,229,218,61,191,158,238,58,142,118,243, +192,36,213,229,19,30,77,155,2,113,146,90,85,220,49,223,128,9,227,175,126,72,57,193,167,249,83,17,159,178,184,32,159,249,106,70,51,142,164,130,79,175,94,157,40,3,48,196,122,238,139,140,244,129,8,199,242, +56,199,169,233,219,140,199,153,23,42,12,39,146,72,251,56,207,95,113,142,15,76,12,2,51,142,107,76,195,57,4,11,86,30,194,229,58,119,224,161,200,57,231,215,183,187,62,207,113,142,109,39,247,219,52,36,254, +27,163,63,76,14,61,5,0,80,87,113,192,142,2,79,28,192,163,143,117,242,200,231,28,243,129,206,13,41,121,113,255,0,30,246,255,0,79,33,71,215,164,39,176,237,250,26,180,208,76,57,251,29,208,227,163,75,104, +7,4,247,242,199,81,142,15,126,157,65,44,219,56,0,11,75,206,79,123,155,111,200,129,15,3,30,191,92,226,128,43,153,110,6,127,115,22,49,159,150,9,1,0,253,45,246,241,237,245,162,166,97,112,113,139,27,198,206, +120,243,173,249,30,185,17,140,228,28,247,197,20,1,250,179,229,69,202,152,19,29,79,250,120,35,30,188,73,248,103,240,52,8,226,232,18,60,103,167,219,35,60,127,192,164,249,143,3,167,57,250,208,109,213,70, +119,130,121,229,67,16,59,113,200,207,96,15,29,241,142,149,23,150,132,231,204,147,238,147,196,110,115,130,125,95,24,235,207,78,8,207,56,0,15,242,147,7,8,0,63,220,186,95,76,244,91,149,4,231,191,112,122, +10,140,192,152,231,127,39,3,51,175,29,248,255,0,75,227,211,3,219,32,211,138,43,142,12,141,233,136,255,0,194,64,1,231,223,57,232,5,68,109,100,25,34,55,32,158,1,136,30,228,242,60,207,160,255,0,60,128,73, +228,196,23,163,22,237,153,149,71,110,230,227,159,231,215,241,111,149,144,48,157,58,98,224,22,192,245,196,164,103,190,115,143,67,205,64,214,206,127,229,151,67,255,0,60,84,131,232,114,39,199,28,228,99,4, +14,9,165,91,105,122,24,71,167,17,91,143,174,9,151,159,199,57,28,242,48,104,2,95,37,207,43,4,111,140,156,52,128,240,63,237,183,62,217,227,57,226,144,71,33,25,49,67,199,3,152,143,78,156,179,146,79,76,114, +79,94,0,53,93,173,238,57,62,72,192,61,68,80,96,99,29,0,149,122,115,200,4,14,231,181,48,197,112,50,4,44,79,97,246,120,207,175,253,54,24,3,212,103,63,204,2,119,141,243,247,33,207,124,164,106,64,206,56,36, +115,207,28,241,199,94,245,93,149,199,247,6,61,237,208,100,140,241,144,79,111,124,99,29,105,162,27,205,223,234,0,198,63,229,135,78,123,145,40,247,192,252,123,83,188,169,251,198,7,108,152,134,58,118,30, +97,224,99,208,125,113,205,0,66,203,41,94,89,7,3,172,246,254,189,134,65,56,227,60,117,228,245,197,68,86,76,103,205,227,24,230,104,48,72,246,57,35,183,127,122,185,246,123,131,150,16,130,59,48,133,121,237, +212,147,250,114,71,165,85,104,103,56,62,66,228,250,71,31,242,36,30,212,1,17,89,198,8,184,143,232,215,22,220,14,157,4,36,231,211,4,28,247,198,41,141,246,145,252,81,99,129,147,119,2,231,190,72,54,224,19, +215,156,18,121,197,88,242,228,198,76,35,35,166,4,99,160,239,200,227,39,158,221,70,58,80,98,124,31,220,250,127,12,64,253,58,123,143,231,144,58,128,84,196,132,252,243,70,58,253,219,171,94,220,255,0,207, +168,227,232,113,215,61,141,70,113,145,251,212,24,28,17,113,104,114,120,60,145,7,227,212,103,129,142,57,186,99,148,15,245,64,125,90,17,142,252,0,125,62,184,200,227,158,24,86,101,0,249,107,198,6,9,140,251, +99,191,35,191,94,135,189,0,85,219,25,59,140,161,135,61,110,237,70,14,51,206,200,65,244,245,224,245,4,210,52,106,167,229,148,47,94,183,177,3,206,56,230,19,158,131,29,15,95,90,185,153,79,72,83,129,207,41, +147,140,231,36,32,245,200,4,127,74,55,75,158,35,57,255,0,100,161,192,244,201,143,36,122,231,147,211,158,5,0,82,35,35,33,209,137,235,155,149,207,28,12,4,139,25,7,32,156,17,249,240,211,20,108,78,89,51,207, +30,108,100,227,177,230,54,219,255,0,124,142,253,69,89,103,156,103,17,75,216,0,171,7,82,59,229,57,206,58,99,211,218,162,47,57,32,20,144,99,56,249,45,199,82,126,241,10,61,185,255,0,10,0,129,162,133,121, +49,161,231,25,243,237,242,71,190,228,94,63,250,221,129,37,2,91,128,127,113,25,25,206,67,90,54,51,142,164,17,219,140,112,61,58,84,199,237,4,229,86,99,235,132,132,140,103,183,113,207,110,63,94,88,94,228, +127,4,231,31,244,201,14,115,199,240,131,220,231,219,28,241,64,17,50,217,228,110,182,95,92,7,181,30,249,193,36,227,158,59,224,245,233,76,242,172,242,64,181,136,227,187,52,68,40,227,174,51,143,67,199,60, +227,142,106,70,154,110,63,117,114,196,14,112,132,14,231,128,160,14,157,120,250,211,68,210,99,6,11,147,199,67,20,140,58,231,3,111,60,231,144,49,159,173,0,70,98,182,39,253,85,186,129,159,238,3,207,211,0, +247,245,236,115,235,20,145,192,191,118,24,137,233,144,35,200,193,30,160,131,238,58,247,227,173,90,243,36,35,13,5,206,15,92,219,206,167,174,48,9,153,48,63,159,60,114,69,41,7,160,130,228,14,50,76,47,156, +243,193,63,107,7,4,31,113,207,95,64,12,207,45,15,30,74,149,234,9,91,97,144,51,140,147,200,239,212,142,163,20,166,218,6,201,107,101,24,232,85,225,29,114,122,2,127,51,219,60,119,171,238,172,220,52,82,176, +62,177,149,233,236,47,198,71,224,63,44,97,158,89,28,8,152,231,131,149,148,14,115,217,111,128,246,206,71,191,184,6,121,183,136,30,33,57,237,135,136,144,127,5,32,240,120,233,223,175,6,152,84,169,249,97, +193,24,206,74,245,29,242,19,158,135,35,128,9,233,235,121,162,97,202,219,103,131,184,110,184,3,61,120,197,241,228,241,198,59,147,130,122,194,81,178,51,107,208,245,243,39,32,117,232,77,216,231,156,103,63, +65,64,16,252,220,254,235,129,206,3,50,168,233,147,145,24,252,112,122,227,142,41,164,150,228,196,58,250,150,206,73,255,0,103,129,144,122,126,21,107,99,113,251,148,66,123,155,137,179,193,61,141,208,247, +193,207,63,134,11,124,176,72,38,52,246,253,228,204,113,211,171,95,112,49,200,24,244,28,30,104,2,185,100,199,40,73,3,31,47,108,113,146,54,103,57,237,199,174,121,164,14,131,172,50,176,29,248,28,103,3,131, +22,58,228,156,240,121,21,57,81,129,196,99,220,51,142,188,103,39,81,95,97,216,245,228,227,21,3,244,32,24,207,161,50,201,145,215,157,191,218,13,234,58,143,234,72,2,121,177,241,155,121,71,98,70,208,62,160, +20,25,235,235,208,30,121,165,243,97,25,204,108,185,245,79,195,177,224,99,185,60,231,30,149,1,39,60,74,128,96,19,251,201,134,125,58,94,96,15,207,211,174,77,32,4,245,124,245,63,44,215,63,159,252,124,243, +238,115,200,227,189,0,76,110,173,148,243,17,39,35,162,47,60,96,28,146,72,29,65,231,252,75,205,229,166,0,54,239,159,81,229,126,184,111,233,249,244,168,88,176,7,44,221,249,243,166,224,243,198,13,215,29, +137,235,140,116,197,52,51,19,159,49,184,232,55,202,122,159,123,131,249,114,14,113,158,77,0,61,175,180,254,134,216,245,255,0,99,241,231,112,224,246,237,143,165,49,174,116,242,120,181,7,140,242,87,167,167, +18,158,252,118,25,169,3,58,242,178,184,235,213,229,4,116,238,183,32,250,31,65,207,52,166,71,201,38,121,135,76,225,231,61,62,183,25,0,254,99,174,123,80,4,6,123,14,246,171,207,83,149,95,110,251,179,198, +120,207,225,211,12,105,237,58,173,160,227,140,15,44,130,48,123,238,83,142,189,121,24,200,235,86,12,146,18,127,125,55,94,190,108,131,175,61,60,198,199,227,252,232,243,15,241,77,40,62,191,106,148,115,131, +147,195,115,233,156,30,48,50,6,48,1,80,221,91,103,31,217,241,18,121,7,114,1,199,170,249,185,7,57,232,79,63,92,208,39,135,175,216,35,92,118,44,112,122,112,2,203,212,100,100,12,231,158,245,160,132,255,0, +207,73,91,161,27,174,174,8,244,29,115,142,115,250,99,131,83,239,56,24,103,30,184,184,156,254,91,148,129,239,215,32,251,80,6,64,154,19,255,0,46,8,115,158,3,73,206,127,217,221,199,242,36,253,72,77,208,158, +154,123,46,122,225,88,131,206,122,150,61,71,76,17,199,3,189,106,153,152,119,152,247,255,0,95,32,199,78,132,192,114,0,35,219,215,175,13,243,151,175,239,3,118,34,80,113,239,197,184,231,223,57,244,231,20, +1,151,136,65,226,208,228,242,113,19,145,233,234,199,169,231,220,143,90,56,228,45,172,131,159,224,130,92,231,60,103,229,3,24,224,158,123,14,249,173,95,60,15,152,180,195,129,130,206,71,175,115,109,198,125, +115,140,30,71,83,76,55,4,243,230,182,9,28,22,45,143,174,109,176,113,237,199,94,57,228,3,60,150,7,2,11,128,122,100,219,74,71,28,127,207,23,7,182,70,112,8,252,40,243,24,28,249,82,246,193,22,236,79,115,200, +22,192,227,61,72,60,125,79,23,204,171,212,202,190,156,149,4,246,227,22,216,32,119,201,246,207,164,123,212,242,39,193,3,174,246,39,129,232,44,241,131,207,114,122,99,29,128,43,9,91,166,201,129,244,123,121, +87,30,227,17,1,192,28,241,233,235,194,227,143,191,50,231,176,73,134,63,15,36,1,215,161,35,57,234,65,57,152,203,216,93,63,82,1,14,231,147,159,91,96,15,32,246,244,207,52,198,154,66,48,110,166,247,192,103, +201,207,95,248,244,56,201,231,3,62,244,0,171,180,224,25,167,56,206,67,23,199,92,244,48,158,188,116,231,61,71,7,46,27,0,199,153,54,59,102,71,3,131,198,71,150,184,31,231,61,234,185,222,126,99,123,113,199, +98,6,1,199,81,155,64,71,92,1,144,123,82,225,136,193,185,151,35,3,39,31,64,64,251,63,7,3,61,128,206,1,6,128,45,6,11,200,149,135,78,90,230,85,60,246,249,99,36,254,29,177,78,47,140,109,145,242,115,156,94, +92,144,113,159,250,103,156,227,159,108,131,142,152,168,81,199,75,201,114,71,114,0,28,245,249,98,207,78,217,244,166,152,165,60,125,189,250,18,78,244,7,255,0,69,6,199,110,184,252,58,0,92,221,158,178,176, +7,128,14,161,120,61,51,255,0,44,219,129,223,62,185,3,25,192,74,99,170,48,4,124,195,81,212,51,201,237,182,53,228,96,147,140,100,123,231,52,254,200,248,25,191,144,30,196,73,31,113,144,115,229,158,57,206, +70,57,232,71,116,54,67,57,254,210,144,19,219,204,0,156,255,0,219,12,122,119,227,24,24,228,16,11,120,29,149,134,1,193,254,209,213,59,245,198,31,29,56,60,14,220,241,79,10,127,132,76,122,96,46,167,170,130, +123,228,18,27,216,114,7,81,140,117,170,233,104,163,134,188,44,14,58,170,190,121,228,15,146,62,157,201,56,247,226,165,22,112,49,56,157,79,76,255,0,170,4,158,157,60,210,120,30,221,207,98,8,0,152,9,71,0, +92,224,244,255,0,137,150,162,221,250,0,87,4,103,35,161,199,35,142,148,242,100,219,194,78,72,228,230,250,251,232,65,249,0,227,220,103,25,236,106,17,99,7,79,54,35,212,140,20,39,35,253,230,192,232,57,199, +167,122,79,178,192,188,153,162,7,61,11,91,227,174,122,134,7,183,79,115,211,165,0,59,50,19,131,28,224,116,56,212,111,135,61,78,6,194,87,24,206,50,115,233,138,97,50,17,140,220,116,227,23,215,221,58,158, +131,167,185,207,76,158,69,59,236,208,158,60,248,126,162,72,70,71,169,0,231,29,15,94,157,243,193,67,5,191,252,247,182,207,95,154,72,120,198,15,33,88,103,212,28,158,156,129,64,12,204,131,36,45,209,207,115, +123,122,120,228,255,0,26,228,117,252,249,205,72,29,251,173,207,62,151,247,36,116,192,60,186,251,241,199,167,213,4,54,227,31,191,131,140,100,172,145,231,4,245,1,92,147,142,59,158,157,177,131,47,238,7,73, +151,3,36,112,184,206,79,36,134,62,227,175,191,61,72,4,127,49,60,172,170,7,67,246,185,72,24,237,150,148,231,3,191,235,206,11,246,38,6,239,52,245,193,23,44,120,198,114,51,187,31,143,80,61,5,47,152,160,140, +50,146,71,76,174,120,227,254,122,100,14,57,59,113,250,83,252,197,36,98,85,83,158,161,145,113,215,156,151,61,59,31,94,64,52,0,192,177,142,76,114,63,161,50,19,206,121,227,28,245,57,227,215,158,185,81,229, +142,168,65,25,200,101,207,35,35,143,151,140,231,144,120,30,221,4,155,152,228,11,143,195,204,140,231,208,96,163,14,61,61,243,198,105,204,179,55,220,152,243,208,175,217,198,65,235,143,221,12,247,201,245, +205,0,71,251,163,144,20,47,56,251,169,158,121,57,207,160,231,167,39,241,169,23,201,61,101,81,142,118,149,128,147,215,251,204,9,28,118,56,244,234,77,53,96,156,143,188,92,30,8,45,15,25,24,236,170,50,65, +25,25,224,18,125,105,226,214,98,126,97,40,227,174,33,57,35,167,25,3,28,96,14,40,1,9,67,156,121,108,7,92,199,106,185,250,157,216,234,122,231,39,211,35,52,5,136,140,59,64,131,160,199,216,243,201,228,103, +120,246,232,123,241,205,61,109,100,200,7,126,222,185,40,157,51,193,249,50,56,207,175,78,49,142,105,255,0,102,24,28,183,57,234,137,140,112,15,249,201,239,129,205,0,65,229,192,70,85,225,98,114,51,155,92, +103,140,156,130,64,246,247,201,167,168,183,92,146,83,61,56,146,212,0,126,132,143,78,128,154,121,179,140,158,74,143,79,149,71,35,208,231,159,126,231,142,113,79,91,40,136,249,139,131,254,203,70,57,227,166, +71,24,250,227,240,228,128,66,69,191,103,219,206,71,239,44,189,240,67,111,221,211,219,240,239,65,138,51,210,224,15,67,231,218,1,233,129,251,192,63,15,173,76,214,176,99,147,41,35,174,26,50,1,227,140,142, +79,242,227,218,160,54,246,99,37,150,64,115,201,220,50,122,118,243,6,122,100,18,7,215,145,64,3,66,0,199,218,147,166,127,215,218,103,175,3,253,120,253,1,61,127,8,60,174,114,110,148,245,233,115,22,73,231, +35,43,62,62,185,3,191,6,167,217,96,189,76,199,31,221,44,1,199,57,249,156,18,71,160,0,116,247,166,249,154,120,254,41,198,79,160,57,62,159,124,147,129,248,113,64,17,249,92,127,172,39,24,31,44,217,63,134, +217,121,25,192,224,14,157,49,72,35,97,156,180,156,131,255,0,47,56,56,57,207,6,80,78,79,168,207,83,214,172,137,116,246,227,204,185,224,96,5,221,156,117,63,42,175,35,60,253,239,254,178,239,178,232,102,186, +0,241,195,200,189,142,70,7,25,206,1,36,254,157,0,34,8,20,114,151,13,198,70,36,7,182,112,14,243,198,115,253,61,227,99,140,131,21,215,94,243,54,48,114,65,0,96,115,215,250,158,42,83,37,137,31,235,46,183, +125,119,12,246,25,63,134,114,125,127,0,201,167,128,63,121,114,14,127,218,3,3,30,132,231,240,25,234,59,208,4,91,80,146,68,87,3,212,249,132,140,251,2,141,206,125,185,4,96,12,230,144,162,174,120,152,228, +228,238,243,121,62,185,88,199,227,142,131,167,57,167,27,141,48,12,51,92,49,206,62,97,38,7,81,215,112,61,51,156,142,221,115,77,243,180,146,127,229,224,17,131,193,152,117,245,39,175,61,248,233,219,145,64, +13,223,26,142,81,184,32,147,190,224,112,115,254,210,116,231,182,113,216,140,226,51,45,190,112,209,55,60,231,125,193,60,245,200,102,32,122,31,148,158,190,198,172,180,214,10,1,73,174,87,160,200,103,62,227, +170,122,122,96,116,239,154,140,205,11,96,9,110,72,238,9,61,59,0,74,113,248,126,70,128,25,190,200,3,152,100,36,117,201,149,115,236,73,70,198,120,233,143,92,224,138,70,54,199,24,182,32,158,159,191,144,30, +122,228,4,3,249,1,223,57,56,176,134,3,247,166,152,19,212,22,5,120,244,249,51,207,167,56,245,235,82,3,106,114,90,103,56,56,35,44,65,235,156,133,35,244,57,62,158,160,20,54,192,50,13,175,184,2,89,88,227, +35,166,216,179,158,122,145,143,229,77,2,216,100,125,149,135,166,101,152,28,158,152,11,16,57,244,228,227,190,107,64,201,98,1,24,102,247,11,39,7,223,57,231,232,79,29,206,105,164,217,158,2,62,65,231,11,180, +14,190,138,115,219,242,193,193,230,128,51,246,196,114,86,6,231,60,137,38,207,28,158,164,127,232,60,228,96,142,237,42,157,60,163,223,248,174,9,199,184,223,142,199,140,254,125,43,65,214,216,125,196,159, +158,184,66,203,233,206,98,35,29,58,245,7,183,74,112,138,6,3,10,192,145,215,203,101,198,51,142,68,36,231,35,175,122,0,206,80,49,143,179,231,131,130,30,232,28,99,177,19,227,220,96,115,147,129,72,67,158, +150,210,99,159,186,247,44,112,58,146,76,135,131,211,36,31,92,117,206,143,217,215,39,106,72,217,227,56,126,221,240,34,201,244,235,199,62,152,45,107,39,36,22,129,241,234,200,227,61,186,236,228,253,48,61, +104,3,56,245,192,130,224,116,3,6,113,128,58,240,87,61,186,243,208,82,237,147,248,45,166,99,234,100,185,7,7,140,99,103,183,63,135,28,214,162,216,33,95,154,45,163,30,147,100,250,242,35,199,29,143,56,166, +182,159,23,98,57,235,145,114,121,199,170,199,235,156,28,126,93,192,50,136,144,112,209,78,185,28,225,110,79,25,245,42,61,123,243,215,173,38,112,14,67,247,225,163,185,39,128,1,56,61,15,110,122,123,118,209, +251,4,99,59,65,233,131,255,0,31,68,100,255,0,219,6,199,211,175,127,114,195,167,18,15,206,170,185,233,254,144,51,249,91,122,254,29,40,3,59,112,96,112,19,211,230,142,108,241,216,228,28,231,3,167,61,134, +105,185,200,251,176,227,61,124,187,140,244,199,79,41,250,127,187,158,157,71,21,162,214,0,100,9,1,110,231,253,35,216,242,13,171,99,159,165,2,194,65,210,69,35,208,181,194,131,248,11,92,117,239,158,9,227, +174,40,3,55,203,95,189,139,112,112,58,35,2,114,61,94,207,158,158,164,19,206,5,70,232,193,78,99,128,142,79,10,190,167,214,216,99,156,14,135,36,227,158,250,141,103,42,227,230,235,145,195,221,21,245,224, +11,126,114,62,158,249,168,254,206,235,156,176,199,7,159,181,146,71,175,48,96,227,146,121,245,235,220,3,48,42,224,110,134,28,228,244,17,3,201,193,201,54,192,254,121,28,30,148,184,28,5,183,182,97,232,76, +100,245,206,73,16,46,115,129,158,49,235,198,42,217,132,142,11,168,30,191,233,96,140,250,5,136,156,251,14,180,211,8,239,34,227,39,130,183,231,241,207,147,142,79,63,253,122,0,175,180,142,60,171,52,239,141, +232,15,95,77,131,220,130,71,160,28,115,72,6,122,11,81,216,143,48,46,49,215,143,47,7,145,156,15,254,184,148,164,105,200,104,241,211,152,239,201,62,220,70,51,249,96,117,0,117,45,62,95,64,201,142,231,203, +190,232,61,204,127,136,25,3,220,244,32,17,60,101,176,2,192,59,2,174,164,144,112,123,196,123,231,146,56,233,206,105,158,65,227,44,128,15,71,76,245,244,242,0,235,159,186,121,24,39,24,20,226,45,192,249,229, +112,49,216,94,227,159,118,95,161,35,7,191,74,96,146,215,160,148,118,251,194,113,211,212,128,57,245,56,201,232,73,226,128,29,228,244,196,206,0,35,248,225,3,168,39,33,163,4,100,117,227,245,167,5,97,202, +201,130,50,120,33,135,175,59,29,9,234,120,206,126,153,230,23,154,212,140,27,128,59,140,61,198,114,63,28,1,207,32,16,61,185,168,188,251,51,129,246,196,7,142,178,207,223,254,2,216,252,251,158,104,2,254, +227,252,114,145,142,227,127,7,60,116,145,135,94,189,122,253,69,53,142,121,243,200,237,247,38,31,94,141,200,227,39,159,126,153,170,134,107,108,16,47,33,206,59,76,217,24,237,143,47,60,31,66,115,200,199, +60,195,231,71,156,11,184,72,28,228,75,41,3,128,121,38,3,147,215,57,56,24,32,15,80,11,172,35,39,6,228,15,64,22,97,156,246,4,158,79,3,128,7,215,181,70,201,110,6,13,214,113,131,183,50,113,159,66,164,19,250, +245,198,79,53,92,76,131,254,94,163,35,61,165,39,241,32,91,147,215,36,228,100,231,138,97,145,91,173,200,35,177,18,191,175,56,197,160,206,121,244,247,205,0,74,99,180,35,230,186,111,76,31,56,103,129,207, +60,245,231,142,1,235,198,5,70,99,178,25,197,192,232,126,249,151,215,160,37,79,78,248,28,241,239,76,37,14,115,114,20,99,175,158,235,140,103,39,38,212,103,233,159,212,212,101,226,201,196,234,121,227,116, +228,158,123,228,91,251,227,190,125,78,69,0,76,69,160,199,250,68,127,240,31,63,174,115,238,115,140,246,201,99,146,59,24,157,173,207,13,49,97,142,57,185,207,185,226,38,3,215,156,115,143,76,210,51,144,48, +102,140,103,254,155,57,207,79,250,103,128,125,6,209,193,227,147,204,59,67,28,135,70,39,131,146,228,17,245,48,96,156,12,228,99,38,128,6,54,57,255,0,88,65,60,16,166,96,114,59,228,192,78,57,57,206,49,156, +119,53,3,37,137,60,72,115,131,252,83,28,17,223,31,103,61,176,122,251,213,175,36,183,240,196,64,239,229,187,116,25,231,108,0,30,184,245,61,55,122,35,89,140,228,172,10,122,146,97,155,129,239,136,240,48, +9,231,190,123,244,160,10,37,109,185,196,169,219,25,105,135,211,24,140,12,125,113,248,83,72,132,125,217,151,219,231,155,241,227,96,198,62,135,147,245,173,1,109,25,31,52,150,227,0,231,247,77,211,234,97, +111,243,156,241,205,48,219,65,147,153,98,35,174,68,123,64,199,184,180,29,121,192,201,31,128,160,12,210,209,142,60,244,201,206,70,233,59,127,188,164,147,236,6,56,0,240,106,54,101,29,37,137,191,224,100, +113,199,94,23,250,245,252,107,75,236,240,99,153,32,200,206,114,200,9,24,200,255,0,150,10,216,227,176,238,6,59,84,111,4,56,251,208,31,171,196,79,174,63,212,147,199,161,233,211,147,64,25,161,212,145,151, +83,237,184,28,247,31,197,198,1,63,79,206,152,229,120,218,92,158,223,188,32,114,51,198,211,144,115,254,115,87,204,17,156,101,225,3,161,198,207,195,56,182,56,238,70,11,30,184,25,168,141,180,68,240,99,61, +192,93,139,158,114,51,155,92,118,193,199,36,250,231,144,10,7,24,193,101,206,120,223,43,156,147,235,243,156,119,244,235,249,66,202,239,247,101,133,127,221,121,243,235,252,51,46,115,211,31,169,34,181,13, +180,96,241,176,99,167,206,188,243,216,139,124,126,60,231,233,81,27,104,73,251,227,175,105,84,117,29,63,213,14,221,136,160,12,195,246,129,156,73,27,142,248,107,133,29,125,4,167,7,147,206,65,61,42,34,101, +193,220,16,228,227,114,153,219,61,207,222,221,156,231,25,227,140,113,210,180,154,218,35,140,51,100,15,225,158,62,57,235,204,71,159,76,99,169,200,233,80,53,148,68,147,186,92,243,134,243,225,4,142,231,112, +136,18,58,96,103,184,198,104,3,48,161,96,67,241,206,115,229,185,224,244,231,96,56,207,32,128,70,79,166,5,70,98,56,192,81,147,128,113,19,103,215,248,182,241,198,114,49,158,252,86,147,89,71,211,124,157, +79,222,185,140,140,115,219,96,7,63,137,29,62,145,27,24,73,251,242,103,217,163,36,227,184,33,14,62,131,31,65,64,25,173,11,231,1,27,223,247,76,125,200,224,176,29,127,46,221,170,187,193,33,36,225,184,255, +0,166,50,96,99,140,140,1,129,207,183,83,144,15,3,99,236,17,129,196,204,48,114,1,88,219,158,131,147,23,183,66,73,235,140,156,228,251,1,57,34,81,211,171,164,56,3,62,133,20,12,103,184,244,199,0,138,0,231, +204,114,41,60,198,122,28,181,188,167,24,61,14,91,3,35,211,191,110,105,12,69,198,11,70,167,63,123,236,228,113,244,201,32,117,199,29,125,69,111,157,57,243,147,50,30,216,219,111,143,196,30,59,123,117,3,173, +66,246,46,78,76,169,233,194,68,160,227,156,100,241,252,207,74,0,194,54,141,207,239,143,113,129,0,28,122,228,130,113,207,67,206,49,154,107,91,3,130,100,108,122,152,134,125,58,108,0,125,125,113,91,102,199, +185,100,30,152,17,49,200,232,50,35,56,56,231,36,117,237,76,251,43,140,109,217,215,169,76,231,32,241,133,136,243,237,193,246,245,0,197,54,107,159,245,135,158,114,98,141,65,7,25,28,40,39,39,159,97,249,211, +13,159,202,65,114,196,117,33,227,7,161,199,71,30,196,142,195,245,220,104,220,28,2,153,60,255,0,170,127,76,28,126,228,158,58,31,94,166,152,193,199,252,179,143,3,147,251,137,142,72,29,70,45,177,252,243, +235,197,0,96,125,137,79,86,148,128,123,75,187,60,244,249,92,129,142,156,12,251,119,13,54,177,28,143,152,244,206,231,102,30,224,229,148,127,63,195,154,223,253,233,24,16,169,227,145,246,118,219,129,236, +208,41,227,169,4,231,57,250,212,12,88,19,148,140,156,30,145,186,15,114,121,92,123,113,199,110,58,128,98,155,68,7,161,199,61,70,236,103,208,153,8,3,143,229,235,77,107,56,78,126,85,252,124,161,143,79,188, +217,227,158,157,241,140,103,141,98,64,235,26,17,233,190,65,207,168,251,217,63,228,250,212,12,202,62,237,186,119,231,124,199,63,147,15,161,224,119,235,64,25,141,97,14,50,99,7,3,174,228,231,30,152,157,127, +30,6,106,51,101,110,51,254,139,147,255,0,93,34,25,199,0,243,120,61,51,208,246,231,21,160,101,95,238,0,87,56,195,202,23,63,174,71,174,15,111,168,166,25,31,57,11,199,214,127,199,168,29,51,248,118,237,64, +25,143,105,17,251,182,176,174,51,247,165,143,35,255,0,39,120,239,211,212,144,106,7,180,136,2,4,22,225,186,96,60,103,156,244,56,190,60,143,94,163,145,207,67,172,194,86,234,48,14,71,18,77,207,24,227,32, +115,142,113,200,245,207,0,213,120,166,207,221,36,96,114,94,98,125,200,218,248,246,235,206,40,3,33,237,148,28,139,120,144,115,134,30,81,28,241,158,110,72,227,208,14,226,155,228,122,65,106,217,193,203,67, +0,235,142,237,49,25,199,211,166,13,105,52,51,159,186,204,15,247,75,93,245,224,142,183,10,127,79,126,164,211,90,222,231,130,31,103,92,135,154,241,127,149,211,122,100,99,177,233,145,64,25,166,219,63,242, +194,17,199,85,123,85,31,151,218,49,199,29,120,233,201,235,81,27,107,112,126,123,104,201,28,159,223,217,128,63,15,180,100,125,8,60,227,168,206,52,54,92,103,137,114,127,217,184,187,101,25,231,4,23,114,122, +30,131,3,161,60,210,24,46,184,195,74,51,212,135,191,237,233,177,72,207,227,142,188,158,148,1,152,97,183,4,98,213,70,58,109,188,181,29,61,49,113,203,28,142,152,250,118,168,153,33,255,0,159,89,187,158,47, +45,7,94,1,5,221,177,215,156,238,63,152,206,177,134,239,3,47,48,28,127,14,165,223,185,249,91,147,236,163,131,159,122,140,219,93,62,6,231,60,247,26,153,25,250,8,185,253,126,148,1,144,225,49,242,193,40,56, +25,6,239,79,110,252,158,7,24,233,212,231,183,113,81,40,92,255,0,170,184,29,126,228,182,0,28,103,28,227,255,0,215,223,25,57,214,123,41,201,59,153,121,199,240,106,89,39,158,198,221,185,35,219,241,53,93, +172,102,7,146,163,190,76,90,129,207,61,64,107,50,61,123,231,60,103,158,0,51,219,110,127,212,93,14,120,253,253,128,7,61,15,92,14,227,212,243,192,168,200,139,248,188,245,24,25,205,197,142,122,227,31,44, +224,244,245,245,252,70,131,89,220,0,7,152,128,231,140,67,122,167,156,158,166,203,215,212,255,0,90,97,178,185,60,153,65,231,167,239,212,140,31,238,181,137,3,241,207,63,137,0,20,115,8,25,30,120,206,78,86, +123,50,6,121,206,5,192,199,7,140,103,53,27,24,251,52,248,35,248,133,163,227,131,199,23,125,248,201,199,95,122,208,54,83,3,146,224,147,206,54,51,31,169,197,128,63,67,145,142,71,35,154,13,132,206,0,87,110, +49,156,67,33,218,122,227,229,181,231,211,160,227,61,40,3,52,2,1,219,191,24,28,152,237,143,61,200,2,240,143,65,248,117,235,65,89,91,163,202,64,198,7,217,173,155,243,111,180,146,121,207,3,235,223,139,70, +198,96,120,151,7,57,203,69,40,231,174,49,246,112,62,159,214,152,214,115,1,131,48,29,112,74,56,39,142,167,247,68,99,212,129,236,14,121,160,10,126,92,128,156,187,100,245,6,210,216,116,245,255,0,73,4,145, +219,242,29,40,217,140,157,199,39,175,250,36,36,247,228,230,236,113,143,126,65,230,172,155,43,158,72,184,206,61,152,142,48,6,55,42,245,207,82,0,207,166,42,63,178,93,242,13,192,35,57,32,128,14,50,1,25,15, +254,31,153,228,2,18,139,143,154,92,14,184,54,144,99,166,122,125,191,28,231,131,145,207,227,136,118,196,132,55,156,84,240,0,75,40,148,156,247,32,94,56,35,166,57,7,174,7,53,104,218,77,201,107,132,25,232, +60,198,228,28,247,19,231,61,62,132,243,218,155,228,184,200,50,6,25,224,249,178,158,49,211,2,86,227,158,57,32,245,160,10,219,224,7,253,99,19,147,214,202,53,56,193,228,230,114,57,238,63,35,65,146,3,252, +67,129,142,109,162,83,143,112,39,207,30,160,113,86,60,142,115,136,216,128,57,38,225,177,223,180,131,159,81,245,28,246,107,64,221,22,40,48,113,193,123,197,207,169,35,127,36,125,56,237,238,1,76,189,167, +241,22,238,114,34,183,237,207,114,221,51,140,30,115,159,122,66,246,60,141,238,58,140,249,118,163,191,168,136,156,245,228,17,211,3,21,100,218,177,57,54,113,63,98,124,235,178,0,227,209,48,57,231,4,147,211, +240,60,133,25,197,132,35,7,7,51,221,30,113,145,199,144,220,227,168,4,14,164,119,160,12,246,54,35,7,206,144,3,158,208,175,30,191,234,122,99,167,36,158,125,105,11,89,159,187,59,231,24,206,16,224,15,247, +99,25,255,0,19,158,122,85,211,111,27,117,176,141,75,30,51,44,231,161,24,235,8,199,94,51,253,56,140,91,70,56,54,80,156,246,221,112,217,62,228,41,232,121,233,130,122,119,160,10,46,208,12,129,112,248,60, +100,195,25,200,7,129,147,192,61,243,140,245,246,201,87,77,186,145,255,0,30,80,147,158,194,232,227,175,111,44,247,207,112,48,125,104,160,15,212,82,179,3,247,34,62,184,142,219,223,57,13,111,212,123,140, +254,4,210,19,46,57,88,128,247,142,219,129,207,164,25,28,119,192,235,249,220,49,168,7,16,145,199,123,183,39,243,220,189,57,235,142,228,130,49,72,68,42,62,112,1,207,252,253,72,220,247,227,39,191,78,79,90, +0,207,98,79,24,137,72,201,63,187,136,127,232,48,1,216,227,242,237,138,128,149,200,203,68,49,220,162,2,79,56,193,242,201,199,124,251,125,43,76,201,17,63,197,232,74,201,112,9,252,75,103,24,224,224,241,193, +207,34,144,136,155,37,120,224,112,210,92,28,241,207,252,181,81,245,7,161,60,119,52,1,154,66,99,59,147,140,255,0,203,49,235,211,34,32,125,123,142,157,9,163,110,58,121,68,30,132,198,199,215,183,150,49,223, +169,207,65,222,180,2,197,201,50,34,253,94,225,139,125,64,155,24,61,120,3,158,6,69,70,241,196,121,18,238,193,231,2,228,147,234,1,50,96,14,6,57,239,249,128,83,216,72,35,17,122,28,9,63,80,2,142,164,17,212, +231,166,104,40,202,115,176,96,119,30,97,31,145,101,246,231,24,235,232,42,199,149,22,6,119,156,100,2,13,198,64,231,4,145,33,198,79,208,156,231,218,147,202,135,144,75,125,127,210,78,51,244,115,142,131,31, +174,69,0,68,15,64,23,129,215,135,24,231,211,205,29,121,238,123,140,250,56,227,35,40,152,60,100,150,62,248,255,0,94,0,252,78,51,235,221,166,218,49,206,246,192,60,12,220,15,230,231,7,240,60,122,211,76,49, +118,147,31,239,52,227,62,128,229,143,7,35,60,115,239,206,0,36,49,196,112,118,15,166,227,199,36,158,76,199,60,145,143,199,52,190,82,3,187,231,7,60,97,155,233,218,78,1,254,19,131,214,170,152,16,130,17,227, +25,198,8,243,243,158,253,6,72,29,122,254,28,154,97,130,76,224,76,167,31,237,78,163,24,207,28,28,122,147,207,83,214,128,52,124,152,216,103,247,128,158,222,108,192,158,255,0,194,248,237,211,183,126,249, +97,183,80,73,193,245,59,154,236,241,219,5,72,57,252,189,114,56,172,239,45,198,71,154,184,29,132,175,145,235,193,143,146,125,199,56,239,142,24,209,30,210,176,227,238,254,236,227,254,251,136,116,56,200, +227,242,0,208,6,137,129,113,146,135,215,33,239,8,63,249,16,31,192,231,241,197,35,91,43,245,140,227,29,231,187,3,4,250,121,131,147,158,9,7,60,245,172,163,28,164,100,49,227,143,185,6,126,188,160,199,97, +145,215,249,140,178,1,204,152,60,227,117,188,7,7,161,228,196,70,56,227,159,92,96,208,6,144,179,139,32,96,39,92,102,123,174,157,135,15,156,147,215,143,160,226,156,214,72,48,62,92,12,140,139,171,194,58, +227,63,235,215,130,51,238,122,158,43,20,172,164,253,248,216,103,59,141,173,175,62,152,253,222,71,79,81,223,30,236,100,152,253,231,135,142,1,107,120,6,63,239,156,158,125,249,239,183,161,160,13,159,178, +194,184,220,78,114,15,203,113,121,145,235,201,186,234,64,3,39,175,82,58,10,137,173,163,236,100,35,208,220,94,156,250,96,173,208,235,200,60,231,131,138,199,195,41,193,150,220,113,222,205,9,3,142,114,1, +193,244,39,130,50,125,105,27,104,4,22,82,9,36,21,180,64,188,227,24,223,24,7,169,238,123,227,173,0,106,155,117,35,133,148,227,39,139,155,236,228,116,60,221,158,131,3,4,103,158,162,162,123,66,65,37,37,32, +131,242,253,174,228,18,125,247,93,18,79,226,58,231,29,43,52,136,203,16,72,206,58,152,109,20,30,125,30,49,131,212,114,125,113,214,154,99,139,239,121,182,227,168,33,173,172,139,14,195,133,80,15,39,29,15, +74,0,208,251,30,7,16,202,114,121,2,246,113,219,175,55,99,145,76,54,221,182,206,167,142,183,82,17,223,32,159,182,55,3,212,253,13,103,18,160,229,90,208,142,196,219,218,46,58,250,2,121,244,199,28,244,197, +59,122,255,0,211,1,215,5,45,226,192,35,158,70,194,125,248,39,24,192,227,24,0,182,214,216,201,223,32,39,36,134,186,118,0,224,231,35,237,57,25,231,215,223,57,230,51,3,156,126,244,129,212,127,165,48,206, +48,114,127,126,127,151,224,42,177,149,177,202,196,79,0,31,38,35,215,166,6,206,121,61,51,244,61,169,26,71,60,172,112,0,48,50,97,85,245,255,0,103,25,245,237,223,138,0,123,219,130,112,93,135,253,190,140, +231,159,82,71,3,177,60,119,234,42,3,106,188,229,216,251,155,166,201,207,96,71,25,207,124,143,207,52,239,53,199,13,20,4,246,251,128,142,56,7,247,36,1,142,49,234,114,15,122,103,152,231,149,183,132,143,111, +35,159,82,9,136,117,7,255,0,173,64,14,91,85,228,228,28,96,145,246,135,36,14,135,4,130,6,71,57,24,61,122,118,67,0,207,222,65,140,17,185,228,111,195,229,139,25,63,225,216,230,163,219,116,73,41,105,9,4,117, +97,8,7,241,218,51,140,227,211,25,239,70,203,178,113,246,43,18,64,227,33,88,147,207,80,163,61,71,96,120,30,220,0,59,201,143,60,189,190,78,122,71,112,127,19,136,219,244,234,41,172,128,12,9,109,200,247,73, +135,94,185,204,57,31,143,211,218,143,46,240,115,246,27,35,207,37,99,124,114,120,3,106,1,192,200,231,234,79,6,131,29,225,207,250,21,160,237,144,146,130,7,211,103,95,203,219,214,128,35,43,30,126,253,177, +60,158,76,200,15,95,72,15,231,145,207,181,48,237,28,98,217,185,228,41,157,143,94,188,66,185,234,125,61,59,212,194,222,243,254,125,173,87,159,226,18,109,35,62,187,15,25,247,61,59,116,9,246,75,131,247,162, +211,131,17,156,121,178,47,175,170,119,235,215,211,234,64,34,2,1,247,162,70,35,251,162,98,9,199,253,114,231,158,158,184,35,61,104,243,96,28,11,120,192,60,28,165,193,61,58,130,20,28,117,30,156,28,15,73, +62,201,115,201,198,154,184,193,192,184,70,231,142,197,115,145,239,200,244,227,33,13,164,199,7,117,135,251,192,43,119,30,139,147,207,25,25,207,67,193,20,0,121,150,195,173,188,57,30,130,229,57,199,66,90, +32,15,166,1,198,122,230,145,164,128,129,251,184,215,4,241,153,192,28,146,14,74,117,4,30,160,12,100,99,166,28,45,100,29,90,203,230,224,17,25,0,246,224,133,250,247,252,135,52,225,104,58,52,214,131,62,131, +241,32,244,235,232,59,14,180,1,92,201,108,1,225,6,123,137,101,83,244,230,60,123,240,70,125,6,5,48,53,171,28,133,124,247,197,219,40,36,96,231,152,240,127,14,114,122,213,198,180,140,114,102,128,242,15,202, +31,140,103,220,227,223,167,245,168,90,218,211,39,117,212,75,199,204,50,231,60,228,140,23,218,15,212,117,60,12,245,0,135,125,144,251,203,32,237,255,0,31,210,28,126,10,128,241,223,166,113,159,74,4,150,29, +49,48,227,143,244,169,58,103,176,198,79,126,125,57,245,195,190,205,102,122,92,190,71,167,43,207,39,171,142,9,206,48,120,246,233,75,246,107,66,63,214,185,60,145,195,0,121,255,0,174,131,249,250,245,197, +0,68,36,176,39,239,220,14,191,118,230,76,244,35,35,0,147,244,235,237,210,145,154,204,12,44,243,119,63,53,212,188,115,208,225,1,63,67,156,142,180,255,0,177,219,115,134,151,36,245,3,32,125,118,202,167,219, +161,227,177,57,163,236,150,227,63,189,148,156,116,100,144,103,7,218,126,252,246,231,183,161,0,131,22,199,56,184,151,160,233,115,62,71,184,31,151,65,235,154,80,32,206,18,103,98,15,31,233,19,159,204,25, +1,200,237,242,228,96,240,15,89,214,222,220,127,203,103,95,92,25,134,120,56,207,239,71,60,142,8,245,62,130,143,38,208,158,110,36,92,112,127,123,112,51,143,101,156,140,246,232,61,241,64,16,18,167,143,49, +206,63,233,181,199,65,201,198,88,143,200,31,198,155,181,51,209,177,211,153,46,243,223,39,228,239,239,140,0,51,159,89,138,90,12,226,226,118,3,174,36,185,24,39,215,18,182,57,3,233,223,29,226,38,212,19,182, +89,87,144,57,123,211,250,137,84,3,158,253,122,208,4,194,53,218,48,165,184,227,116,151,173,250,108,227,243,3,168,237,193,177,65,192,64,115,156,243,123,128,126,167,3,223,28,99,223,188,102,72,87,238,203, +43,112,71,91,214,227,167,5,165,207,182,121,200,239,72,36,92,143,222,54,59,43,53,240,227,140,156,9,123,231,174,123,156,80,4,203,28,132,130,33,141,134,114,1,123,176,49,158,195,31,159,62,221,48,3,241,47, +31,184,140,250,141,243,145,233,221,7,81,156,224,228,123,228,213,83,36,125,166,80,61,254,216,64,227,24,230,66,120,227,56,198,58,240,41,4,241,174,115,50,231,174,67,95,1,158,227,59,177,206,59,14,65,231,25, +160,11,129,164,92,102,206,219,25,228,230,115,248,19,229,156,145,211,245,169,132,172,0,63,103,182,3,7,28,204,112,120,31,119,203,200,245,31,79,74,207,23,176,30,134,22,32,156,130,247,204,122,241,193,147, +169,231,4,140,125,51,138,113,187,183,198,25,97,7,28,229,175,179,131,159,71,24,30,156,17,142,15,3,52,1,124,221,72,188,8,160,35,130,66,199,112,72,236,51,251,150,31,158,62,188,211,13,243,28,129,28,67,184, +202,203,145,249,219,129,206,127,1,211,222,128,158,220,147,129,15,83,129,186,252,227,232,25,192,193,231,158,58,131,158,153,60,216,143,252,177,141,198,120,255,0,143,163,211,191,51,142,249,198,50,79,183, +2,128,47,11,233,58,40,128,100,114,48,234,125,112,115,15,60,123,14,188,142,212,141,125,32,193,43,22,122,231,39,39,7,25,7,201,206,115,223,0,140,28,116,200,170,174,189,86,222,28,99,210,96,71,60,96,180,216, +32,31,239,12,99,28,103,57,144,57,207,203,111,6,78,15,59,87,175,214,101,200,224,122,159,175,96,9,86,250,96,62,89,34,81,158,48,196,156,115,216,195,223,35,156,2,71,83,197,40,212,46,79,252,181,78,253,195, +12,122,144,98,233,252,184,252,17,119,14,124,136,123,113,184,30,122,127,207,70,198,122,245,3,175,174,41,226,89,50,87,203,140,175,160,114,7,230,27,39,182,8,207,215,61,0,24,215,247,68,243,112,164,123,22, +3,56,233,196,125,241,158,72,239,142,164,21,23,119,45,192,184,114,123,237,154,64,71,230,128,255,0,90,112,46,121,88,199,94,49,48,228,244,225,89,206,63,95,235,78,62,111,4,91,185,199,247,100,94,58,140,231, +118,122,17,215,175,212,226,128,32,55,23,195,238,203,35,47,92,121,142,79,36,250,130,61,121,198,59,81,231,93,185,27,140,195,142,49,46,15,115,207,221,232,62,157,13,75,151,110,176,220,158,216,89,148,119,199, +114,70,63,1,156,212,170,72,200,54,119,71,166,11,75,25,233,201,206,84,231,223,31,142,40,2,15,244,156,156,203,112,63,237,166,78,79,39,63,188,32,245,39,143,79,194,164,81,115,140,43,222,55,60,237,105,49,199, +94,142,51,159,175,97,237,83,170,147,210,198,97,193,235,42,140,158,131,24,133,184,234,58,100,115,201,224,83,136,10,6,235,71,4,14,247,100,17,215,183,217,185,206,122,96,131,239,200,0,12,84,184,199,250,219, +229,57,254,236,132,240,120,206,233,115,206,51,158,156,30,106,80,46,0,230,91,246,28,103,16,187,31,196,121,222,221,177,205,71,152,200,192,179,147,145,131,182,234,82,122,115,192,181,35,235,198,9,57,239,154, +54,194,56,54,19,57,227,39,237,18,177,207,227,110,189,114,121,197,0,76,170,249,249,141,246,15,253,59,75,159,175,250,193,232,123,255,0,60,83,188,136,75,13,194,252,123,125,145,136,252,204,135,158,59,99,175, +25,61,96,17,219,55,93,46,118,35,210,89,186,118,251,168,62,167,161,252,58,189,99,182,31,243,14,184,29,58,61,192,61,122,13,184,231,142,56,61,127,32,9,68,17,12,16,111,87,144,50,214,109,143,76,253,254,71, +167,39,158,152,171,11,28,4,0,239,113,129,255,0,78,67,119,83,198,8,207,95,155,131,140,254,117,79,202,180,60,27,27,174,123,179,93,243,207,183,231,208,84,203,111,105,159,248,242,148,147,220,27,211,193,193, +207,0,103,220,14,113,206,123,80,5,130,150,188,98,107,172,115,199,216,56,29,123,99,215,144,56,30,188,103,40,22,215,143,222,92,28,158,250,122,117,25,227,148,0,100,246,231,24,232,72,21,25,183,135,181,148, +188,96,125,219,240,64,57,29,200,61,59,19,158,135,146,120,22,8,192,200,181,156,99,212,94,129,140,245,31,63,83,201,237,238,7,56,0,147,203,181,99,157,238,59,146,214,16,241,143,169,4,30,252,113,212,128,104, +242,236,191,231,170,143,173,149,191,191,208,158,158,254,157,248,140,36,93,4,55,67,61,113,29,217,0,126,50,19,198,123,12,142,128,227,154,112,68,3,253,85,214,0,233,229,93,142,123,231,50,227,36,250,145,212, +243,222,128,26,209,90,19,149,154,60,247,205,165,176,192,193,235,243,12,127,63,65,234,44,54,216,24,150,15,168,130,208,19,142,153,12,9,224,99,169,199,56,244,167,12,242,22,57,23,28,100,197,113,131,215,0, +98,109,195,235,199,65,216,1,78,18,76,58,110,249,115,143,158,237,120,250,18,234,57,206,65,247,206,13,0,66,82,32,64,89,226,239,214,27,82,7,62,203,144,7,160,198,56,62,180,255,0,45,27,36,220,65,207,3,253, +30,207,7,243,95,76,251,17,142,122,3,39,155,41,200,12,185,234,67,92,72,126,163,6,38,199,28,129,206,9,246,160,73,47,31,52,3,208,239,228,227,7,161,136,28,243,140,244,232,121,160,8,90,214,19,159,222,32,35, +159,150,222,205,127,246,154,253,7,56,200,192,61,114,45,156,68,242,255,0,165,154,231,215,176,192,28,131,192,247,169,26,89,58,111,143,61,51,230,14,125,70,76,100,113,223,60,15,206,153,147,146,75,193,201, +35,37,148,159,76,140,65,158,131,25,207,67,142,122,80,2,155,72,135,42,224,242,57,15,102,78,59,96,114,61,135,7,183,83,209,235,109,16,234,78,122,103,125,178,131,200,235,182,6,227,233,159,241,102,226,7,203, +52,92,96,227,204,64,61,115,204,3,28,116,252,135,180,69,164,255,0,158,176,245,231,50,166,127,15,147,61,49,215,60,158,192,208,5,213,130,216,14,99,201,25,36,249,144,30,191,246,197,71,76,245,239,222,157,246, +107,114,199,247,32,227,167,207,110,79,108,99,228,24,198,15,56,207,161,192,21,75,204,155,0,44,240,224,14,130,100,63,81,141,131,56,255,0,30,48,57,2,204,228,230,104,143,166,103,81,192,227,166,222,125,178, +1,235,142,40,2,251,219,218,99,30,89,92,131,206,96,207,92,127,14,204,116,239,215,28,117,205,68,45,236,73,229,16,31,246,164,136,30,156,242,100,232,71,234,51,156,213,83,111,188,12,156,250,21,120,220,1,255, +0,126,199,94,122,158,51,212,247,97,176,82,9,27,176,71,56,8,57,39,213,93,72,237,212,123,128,123,0,93,104,180,229,207,238,145,135,78,46,45,212,113,255,0,3,228,251,146,72,57,233,77,39,79,94,5,178,28,119, +243,237,207,61,51,147,42,231,143,167,30,157,42,129,177,92,96,23,29,121,56,199,108,242,25,206,6,113,158,185,250,114,193,167,100,112,253,178,48,236,48,64,199,63,186,111,166,7,60,245,199,80,13,15,55,78,94, +182,176,228,114,119,75,110,220,228,127,211,94,73,235,143,83,219,154,79,50,192,241,246,107,69,28,31,153,224,239,238,11,96,129,145,215,129,142,69,80,251,1,80,126,124,118,24,148,140,126,106,190,227,4,117, +52,139,106,8,229,242,0,63,242,244,50,61,242,3,140,115,232,61,15,98,64,47,23,176,25,63,103,180,198,123,75,17,199,177,30,98,99,191,184,200,198,13,68,243,88,131,196,86,195,145,145,186,44,0,57,227,253,43, +25,231,169,30,196,96,212,66,205,113,145,36,135,212,36,249,36,100,241,196,45,233,158,56,227,56,233,77,54,77,206,26,124,30,153,152,156,240,56,193,133,121,199,110,221,58,208,0,103,178,12,24,69,108,49,198, +67,33,36,244,60,9,192,245,201,231,158,180,173,113,96,112,90,27,83,245,145,3,115,237,231,49,235,211,35,142,69,66,109,138,227,50,206,158,153,149,9,250,237,17,3,158,59,241,156,231,154,104,66,6,126,223,34, +158,49,188,38,7,61,248,83,212,250,145,220,140,115,64,19,27,141,56,174,12,16,231,182,217,151,158,79,96,199,7,183,78,253,122,84,70,91,2,115,228,129,215,7,237,3,61,250,227,31,250,22,64,199,181,73,185,215, +166,166,156,255,0,120,47,4,103,140,4,124,103,190,6,126,163,154,81,52,197,64,26,164,103,182,112,158,185,192,62,66,224,227,165,0,68,127,179,240,14,210,0,198,65,150,67,223,145,242,202,63,15,167,110,198,253, +60,130,0,96,123,226,226,110,122,228,128,93,179,239,215,183,32,100,212,190,107,224,231,82,82,115,140,170,43,0,122,247,24,224,158,70,78,122,156,118,4,205,130,191,218,106,15,7,253,82,31,92,247,60,145,219, +184,28,10,0,170,223,217,228,131,251,198,206,79,250,233,79,127,64,232,58,129,140,147,206,115,147,77,111,236,192,167,17,206,63,224,82,158,123,145,155,160,115,199,169,206,120,227,138,184,100,155,4,141,77, +91,7,169,183,220,0,0,144,126,233,24,207,182,115,244,226,19,61,231,65,168,199,140,131,205,174,56,235,200,10,57,56,227,158,71,98,40,2,153,254,207,39,229,142,96,58,103,121,24,28,224,225,167,108,146,51,220, +30,248,224,26,1,178,7,136,37,110,58,52,156,145,142,195,206,28,250,115,250,113,87,55,93,183,63,109,182,57,29,237,84,255,0,78,184,224,251,113,235,75,254,149,255,0,63,150,204,65,200,81,104,160,245,206,120, +3,0,118,193,250,247,20,1,77,154,204,228,139,89,0,60,131,230,150,228,255,0,187,117,235,236,7,32,158,42,50,176,17,197,188,227,208,143,48,254,88,184,193,250,231,233,214,180,54,222,16,14,240,221,112,68,37, +65,255,0,190,84,227,161,25,7,167,214,154,209,221,30,153,97,159,238,128,123,242,3,198,9,250,254,116,1,72,198,160,96,65,48,207,25,17,59,31,253,42,199,29,199,61,240,13,35,0,58,65,49,199,127,179,63,39,174, +73,251,65,233,248,147,142,72,171,6,218,233,178,12,101,200,206,50,136,192,127,232,36,99,39,168,244,244,164,251,37,200,28,66,221,71,30,92,96,100,103,159,152,241,215,174,125,59,80,5,83,25,39,38,222,83,207, +35,200,99,156,103,28,125,163,223,220,251,103,32,177,144,2,63,209,221,114,113,147,12,171,207,3,168,184,193,250,231,240,2,173,181,173,233,224,91,246,207,252,176,28,112,114,126,126,127,46,63,51,81,27,107, +229,233,107,146,6,120,75,66,72,227,0,18,199,29,123,96,158,79,24,192,0,174,84,28,225,89,0,206,65,89,57,247,3,237,42,62,157,179,211,20,155,118,244,222,71,25,249,92,18,62,190,127,228,115,239,154,145,173, +238,136,203,90,31,161,22,71,159,92,25,120,237,207,60,129,235,80,180,19,142,182,204,163,56,193,91,62,123,146,24,73,223,160,29,7,20,0,50,142,128,204,63,9,8,61,248,196,195,28,113,201,235,80,178,18,115,230, +79,198,127,229,148,189,240,113,204,141,129,193,198,112,58,244,56,37,205,21,207,65,106,196,117,24,251,40,253,55,158,61,193,239,215,177,67,12,220,19,106,164,31,239,53,169,199,76,255,0,203,81,142,72,228, +15,169,227,52,0,210,54,143,154,71,60,14,12,109,223,182,55,242,71,25,207,126,157,113,76,103,94,135,118,115,222,22,199,57,199,221,200,235,129,156,159,169,226,158,97,117,39,253,19,29,193,83,106,56,246,62, +97,60,250,126,28,210,143,52,116,179,115,142,255,0,184,39,158,56,33,155,183,167,191,4,245,0,129,152,3,130,153,0,100,131,4,199,61,187,21,7,223,233,192,60,82,2,188,254,232,99,176,22,211,246,198,50,122,103, +142,192,129,245,233,49,145,198,71,217,101,207,32,101,144,246,227,32,71,198,14,59,224,12,112,123,197,231,57,192,251,52,223,64,64,56,29,62,111,37,186,14,185,3,30,220,208,3,11,174,72,16,70,120,227,253,18, +86,57,7,129,130,153,63,167,173,68,238,224,29,182,209,30,57,197,141,192,29,184,33,98,114,113,235,128,79,56,30,179,52,142,49,254,141,114,121,236,87,145,234,63,118,15,39,129,158,59,243,77,203,158,176,92, +116,61,37,99,234,57,194,241,211,3,169,3,56,25,20,1,80,151,99,143,178,194,7,98,108,175,125,7,95,244,101,252,193,200,252,41,164,73,140,125,154,223,129,223,79,190,198,7,98,66,0,127,195,39,21,109,131,30,124, +169,58,142,60,231,207,126,228,103,142,255,0,203,184,54,145,156,197,48,24,192,253,249,207,249,60,99,185,206,1,227,144,10,12,88,116,138,0,125,5,142,160,163,191,160,207,211,25,3,166,42,185,89,152,231,201, +132,244,228,91,234,106,65,224,140,16,167,56,4,253,50,71,0,113,162,203,16,193,104,100,4,140,103,118,224,61,57,108,243,233,198,123,227,161,168,216,40,63,117,138,159,239,73,25,193,199,251,153,207,32,14,252, +245,38,128,51,221,110,84,127,170,132,14,156,166,167,233,220,186,142,190,220,212,12,101,39,110,197,28,15,148,27,213,30,128,225,144,147,207,166,48,114,62,154,5,80,240,34,218,50,121,204,99,223,28,133,25, +62,185,245,3,61,12,126,90,18,71,150,49,223,231,182,206,115,215,44,199,60,14,15,30,190,148,1,157,135,63,120,148,56,63,199,114,7,3,182,98,199,108,138,133,188,206,2,207,183,7,140,75,56,227,235,229,169,206, +122,112,49,145,220,86,169,132,28,128,163,142,197,237,58,253,114,199,7,168,207,30,153,29,33,48,198,14,60,168,14,56,57,251,63,169,231,33,9,200,198,59,227,177,236,64,51,74,204,113,186,231,39,222,230,111, +234,128,246,206,115,199,78,153,163,203,144,115,231,48,236,51,112,15,113,156,6,113,199,78,198,175,61,188,71,159,42,28,3,216,219,12,30,115,130,214,255,0,158,8,206,57,39,179,124,152,215,238,67,15,231,105, +143,108,254,232,96,131,237,142,113,207,112,10,44,143,131,155,133,207,57,204,202,79,67,142,114,192,19,219,183,231,80,180,36,245,149,95,142,65,145,92,123,116,25,252,135,233,205,104,73,25,231,48,64,58,244, +54,231,156,123,91,103,56,62,253,185,245,143,107,46,54,199,30,121,193,6,32,71,62,162,219,61,61,243,237,131,64,25,134,221,57,36,174,119,30,50,167,142,195,230,143,29,9,198,126,185,60,138,139,236,177,158, +126,65,199,35,100,64,227,29,73,242,253,57,231,167,92,214,171,9,1,207,148,132,245,60,144,115,248,66,184,245,237,249,30,66,37,32,252,145,39,251,207,38,61,65,251,135,60,103,29,253,199,90,0,199,54,106,120, +6,34,7,77,203,17,227,223,228,4,158,126,184,224,18,106,54,178,7,141,208,18,59,121,80,159,78,112,87,63,134,125,240,57,53,180,124,213,57,221,0,25,224,6,159,183,126,16,116,239,207,60,125,41,133,238,6,126, +88,10,246,196,146,250,145,145,251,178,65,207,110,71,212,96,208,6,3,88,110,60,170,145,206,118,196,128,30,120,224,21,61,179,192,199,83,223,136,223,79,140,127,203,29,223,246,203,147,142,185,219,33,35,129, +252,129,35,183,69,230,78,113,128,139,200,7,19,202,6,58,1,143,148,127,42,104,146,112,79,239,20,28,17,129,121,46,79,35,176,148,114,71,78,190,157,232,3,150,107,1,146,13,174,57,235,229,75,156,17,220,135,35, +143,161,252,49,85,222,192,142,69,152,126,157,99,152,16,49,156,19,145,237,158,122,227,142,57,235,218,105,207,30,96,3,60,143,181,204,189,70,51,143,57,243,142,217,29,129,236,49,25,102,99,146,65,56,35,34, +121,127,12,226,85,56,207,78,15,184,245,0,227,141,147,12,145,102,128,130,121,33,193,25,199,114,173,146,65,25,61,206,7,25,2,155,246,73,122,136,80,12,14,173,156,14,255,0,194,184,31,95,231,93,131,22,198,48, +163,253,163,60,159,142,225,246,145,207,24,28,231,212,243,204,123,75,156,127,163,158,192,121,163,39,182,72,105,220,241,220,144,121,200,207,168,7,36,109,230,94,145,169,29,212,30,71,63,135,92,1,147,216,245, +230,163,48,74,65,30,91,48,206,70,3,31,195,62,103,62,216,30,184,227,175,90,96,114,57,49,12,17,194,201,8,246,234,237,130,122,1,144,7,30,245,11,219,49,201,196,100,116,207,218,45,64,35,39,168,25,193,57,233, +143,64,40,3,149,242,101,227,253,29,73,247,89,65,239,192,195,246,255,0,57,231,17,20,155,63,53,178,224,29,188,137,27,215,166,88,177,231,60,123,158,58,87,80,108,216,103,119,144,128,250,220,66,113,236,48, +126,95,64,122,117,224,28,84,31,98,148,158,36,181,3,167,205,52,77,128,72,199,252,180,198,115,237,233,201,226,128,57,207,42,92,159,244,104,241,193,226,62,114,113,193,4,245,63,81,223,160,232,207,42,113,146, +182,224,112,115,182,56,143,110,153,220,115,255,0,124,158,216,174,145,172,152,2,67,218,147,142,70,245,7,166,1,63,54,14,51,206,15,95,214,15,236,214,32,146,109,58,116,243,148,30,164,231,27,64,57,231,28,227, +158,188,28,0,96,249,55,12,73,54,188,99,175,145,25,35,219,130,7,226,125,59,83,26,218,94,127,209,219,24,254,27,88,15,32,224,224,111,4,125,14,120,247,57,173,211,97,32,24,87,182,65,235,246,134,31,135,94,255, +0,238,228,96,2,42,7,182,148,28,249,176,99,39,24,189,97,216,145,208,31,65,219,159,173,0,98,155,114,73,221,110,231,0,228,155,100,206,113,215,2,229,71,110,156,99,29,48,70,43,180,9,146,77,172,199,223,236, +168,0,192,61,49,116,73,207,225,220,131,91,134,222,110,165,161,0,28,241,119,33,207,191,250,163,159,199,20,198,134,92,96,24,73,245,55,83,130,127,32,49,199,96,64,227,223,20,1,137,246,124,253,216,9,32,112, +26,29,131,232,72,184,32,224,244,192,7,138,105,182,39,57,141,65,193,233,26,103,0,12,253,235,156,254,96,115,145,235,157,102,134,224,246,183,29,78,126,209,114,71,184,255,0,92,188,117,199,3,167,126,42,51, +12,227,140,219,129,233,231,92,117,224,119,155,29,176,122,114,59,147,64,25,70,216,40,255,0,84,132,231,63,52,113,159,110,159,105,28,246,207,57,198,61,233,141,1,28,108,128,243,140,24,163,36,115,143,249,234, +72,247,199,74,214,41,58,130,74,35,127,185,44,222,157,177,62,15,124,142,252,99,154,136,181,208,56,72,78,8,61,36,156,253,120,55,57,63,76,147,140,208,6,86,210,191,243,236,188,14,124,172,12,119,39,107,55, +60,113,145,214,152,89,20,228,201,109,140,255,0,14,1,61,121,63,123,208,245,4,15,210,181,204,215,49,142,99,32,251,197,51,16,78,122,31,182,12,129,147,212,115,206,122,154,97,190,187,29,6,0,31,243,237,47,226, +127,227,240,140,1,156,158,125,177,131,128,12,147,112,135,143,58,33,239,145,198,122,18,86,38,199,212,158,223,133,48,48,124,127,164,192,56,36,29,193,179,237,254,168,99,25,238,15,79,106,218,251,101,201,0, +224,0,120,59,173,91,3,241,107,190,127,76,243,198,121,49,155,187,172,31,222,66,57,29,109,71,81,158,167,237,103,57,207,215,222,128,50,128,56,200,186,182,4,142,224,31,78,114,176,147,156,14,49,158,252,131, +213,165,123,53,196,13,193,233,187,159,92,102,220,142,123,115,142,184,56,173,38,186,186,206,4,209,140,119,91,118,29,127,237,232,175,215,25,61,7,189,49,174,238,1,203,72,132,247,38,217,138,245,227,149,156, +158,252,228,28,122,243,128,1,152,86,219,130,210,71,158,122,42,227,255,0,73,248,246,28,103,222,163,38,217,72,196,171,146,120,36,71,219,208,27,94,184,201,29,71,76,243,156,233,189,220,228,143,157,48,48,79, +250,60,128,231,219,247,235,140,251,241,131,198,41,134,230,98,217,18,70,184,245,137,151,244,23,68,15,99,129,215,189,0,103,51,91,158,183,17,228,142,6,212,4,30,122,226,213,59,246,57,252,242,4,69,45,200,63, +191,67,140,103,5,1,232,61,96,61,50,112,122,145,147,198,8,173,67,52,135,57,146,220,1,212,149,62,231,7,55,75,235,146,57,3,168,247,135,205,148,182,4,182,103,57,36,239,137,125,177,131,118,72,60,14,160,159, +95,96,10,2,11,92,127,174,76,224,117,17,30,123,241,228,168,199,126,15,183,90,62,197,106,220,151,182,62,159,44,3,167,7,172,71,219,241,235,239,113,188,238,14,235,78,121,0,205,111,219,61,63,210,115,140,103, +169,199,127,83,85,220,75,129,150,181,193,56,32,77,9,254,87,125,58,125,61,104,1,159,99,180,3,56,183,126,122,133,136,243,201,228,136,138,251,114,15,190,57,33,166,218,223,254,120,91,158,72,228,66,51,245, +255,0,71,62,159,94,188,209,229,241,140,193,147,193,196,241,3,236,115,246,175,94,121,63,215,12,104,134,57,88,79,7,25,185,183,29,61,55,93,177,206,58,103,242,60,208,0,109,109,142,127,115,108,59,16,18,217, +189,64,192,120,1,199,95,167,30,153,166,53,156,68,124,176,192,121,232,33,183,56,252,86,2,79,62,167,215,129,73,228,169,206,22,28,245,39,237,86,231,142,123,27,147,250,247,198,15,90,79,40,169,24,120,58,30, +151,80,244,29,246,137,201,192,61,179,140,30,123,80,3,62,194,79,72,99,61,115,251,155,126,15,94,191,100,39,25,232,70,115,207,60,154,67,167,28,143,244,34,231,147,242,69,107,215,241,178,247,239,214,164,242, +137,228,253,159,29,243,121,14,73,61,241,246,144,113,215,60,14,195,25,226,163,251,43,125,229,48,128,1,224,92,198,196,119,255,0,159,147,207,190,61,137,25,160,9,23,74,66,1,58,124,228,245,218,34,182,199,224, +5,160,252,198,57,244,32,209,81,125,145,143,32,198,65,228,145,33,206,122,99,228,155,0,122,114,123,123,228,160,15,211,147,51,19,254,162,102,63,195,137,163,231,233,139,97,158,79,61,71,92,130,77,30,114,116, +107,89,155,216,75,8,198,73,63,199,16,0,117,56,11,131,208,244,20,214,187,4,28,192,56,227,230,130,76,247,254,45,221,242,71,96,61,243,81,121,227,180,32,119,226,54,25,233,221,166,7,143,92,117,199,3,60,128, +76,90,14,73,179,186,86,231,36,24,27,177,238,177,142,1,35,28,12,231,185,168,159,236,231,145,21,224,60,30,82,48,58,122,236,25,206,15,175,242,165,50,228,103,202,143,211,230,82,72,244,200,251,74,231,39,211, +215,215,53,19,75,223,202,140,122,157,147,5,232,6,126,91,190,189,58,244,231,161,232,0,133,173,143,84,189,61,248,9,143,231,215,245,170,238,176,115,152,174,253,70,98,95,230,100,4,2,121,206,58,117,3,4,84, +190,96,39,62,76,76,163,61,30,97,206,58,225,174,27,234,0,245,245,164,50,198,167,148,140,118,229,230,39,219,172,223,78,220,123,244,160,10,78,32,4,229,39,30,230,32,73,62,255,0,49,227,28,158,50,58,19,85,143, +150,199,10,39,237,193,132,1,223,7,146,188,142,184,201,199,165,106,121,209,16,54,172,99,158,79,152,253,189,1,99,223,223,29,49,129,75,230,130,62,73,35,92,231,25,145,176,64,227,179,19,215,156,117,228,129, +154,0,199,42,189,48,252,103,172,106,48,115,201,255,0,88,216,224,243,199,90,83,17,232,20,142,156,148,36,122,14,65,60,243,199,94,245,167,231,78,126,237,212,64,100,224,44,178,241,248,100,96,30,122,255,0, +92,208,36,188,3,34,245,113,233,246,167,25,31,247,201,227,208,15,200,138,0,201,242,157,184,194,31,251,102,6,58,246,33,137,56,227,34,154,99,144,0,67,68,8,235,242,17,142,189,203,14,56,60,129,207,108,115, +91,6,123,161,128,110,135,160,255,0,77,147,63,64,22,62,127,63,126,123,49,174,110,129,226,119,239,202,222,74,113,219,188,103,239,103,184,224,3,245,160,12,109,179,117,253,203,14,127,137,0,29,10,242,199,39, +166,15,76,100,28,209,131,156,149,182,25,57,37,154,17,211,25,228,171,14,188,117,63,83,154,212,55,87,39,172,210,103,142,183,210,46,121,235,205,177,239,216,117,206,62,140,55,19,244,251,76,131,142,247,146, +73,159,202,20,227,233,159,198,128,40,23,192,57,107,112,123,98,107,117,7,29,253,142,126,158,184,245,110,241,156,153,97,201,199,2,226,216,147,128,64,3,37,72,192,198,73,199,25,29,170,255,0,218,39,3,139,183, +56,232,62,211,114,51,158,153,24,207,253,242,106,54,158,240,140,121,129,128,255,0,167,187,204,115,198,78,210,160,119,231,35,175,2,128,42,111,7,171,196,63,222,158,216,140,142,184,219,38,121,200,239,140, +14,57,234,229,120,250,102,28,12,116,120,91,166,121,57,35,182,14,58,2,63,26,145,154,228,158,65,60,127,207,213,227,100,251,19,39,78,152,233,248,84,109,231,147,146,178,31,97,121,112,56,245,193,151,62,185, +56,31,141,0,43,201,15,59,164,135,24,31,120,219,227,143,98,224,158,159,166,123,83,9,182,32,146,208,245,234,60,146,121,61,126,89,15,185,207,208,99,29,13,242,1,204,59,177,217,174,239,15,234,37,3,245,61,249, +237,77,46,249,201,128,245,7,137,174,100,206,115,253,235,131,158,131,168,231,129,199,74,0,105,107,113,252,81,224,112,70,62,189,54,146,120,207,229,212,115,76,223,17,232,33,199,251,178,30,254,193,50,7,28, +3,158,189,123,202,110,27,56,242,6,56,251,235,33,250,156,249,188,99,142,8,245,252,16,220,174,112,32,201,234,0,83,147,142,152,13,39,227,156,118,230,128,34,50,70,7,223,183,92,156,0,45,174,9,244,234,37,92, +112,122,231,20,205,232,122,180,28,119,251,45,239,208,156,11,145,237,192,207,122,152,222,42,158,109,241,156,159,245,113,3,207,111,154,94,125,65,246,245,234,223,183,12,99,201,57,25,200,9,109,156,156,127, +14,242,120,233,199,168,207,81,144,8,188,208,184,196,182,164,227,140,193,121,199,35,214,224,140,142,6,64,224,119,226,144,79,32,32,137,173,127,239,213,208,227,219,247,132,254,181,49,191,3,33,146,99,215, +0,67,109,198,71,7,230,110,253,6,125,250,129,154,67,119,25,195,20,151,160,193,107,91,30,113,211,156,22,245,239,193,207,210,128,33,55,60,16,211,66,7,7,10,151,0,30,153,206,27,32,14,167,36,251,30,226,22,185, +99,157,151,8,122,130,3,92,231,242,243,87,161,235,248,99,189,91,55,106,112,10,177,233,128,109,236,143,166,78,118,250,113,146,7,113,192,3,12,107,136,243,200,96,59,145,6,158,61,120,32,169,233,142,48,15,36, +230,128,41,27,153,1,201,184,126,152,4,61,199,255,0,29,231,175,78,57,239,78,251,99,28,15,62,126,7,240,188,131,60,17,159,154,96,51,200,201,234,49,145,158,149,55,155,1,7,6,80,78,120,48,233,252,125,9,95,174, +6,70,59,3,81,190,214,232,210,145,212,5,75,49,211,221,84,131,244,192,250,131,205,0,55,237,94,183,23,95,236,227,146,58,119,251,73,231,167,248,83,77,194,30,12,247,164,127,178,202,185,233,130,75,72,223,136, +61,255,0,1,72,99,231,42,215,24,39,248,254,206,8,246,0,14,70,59,143,196,116,200,168,253,60,233,71,174,86,46,59,17,149,66,58,100,103,167,191,2,128,17,204,68,19,231,95,251,147,53,185,233,156,117,83,254,79, +3,144,76,103,202,60,111,212,143,161,6,6,4,147,207,72,143,110,195,211,159,90,151,203,159,162,200,199,28,128,0,3,29,78,113,17,61,253,114,61,105,141,12,196,243,34,131,158,11,21,39,232,65,139,24,238,71,114, +79,25,193,160,6,226,12,16,6,160,216,245,72,8,235,232,118,255,0,46,253,123,20,101,64,62,88,175,15,7,239,69,106,125,49,192,3,215,7,39,159,110,148,243,20,169,207,218,33,61,56,4,2,79,4,240,45,248,63,150,5, +68,68,135,171,198,7,110,100,235,248,91,158,0,57,25,7,175,94,104,1,134,57,59,65,113,206,57,242,173,186,119,24,17,176,233,140,118,244,246,4,82,19,133,73,241,201,192,138,216,228,227,156,131,111,245,61,123, +15,122,80,140,196,2,209,228,243,150,243,143,39,168,200,137,7,95,167,126,1,166,60,44,50,76,144,41,28,125,217,73,207,99,144,128,250,156,231,62,152,226,128,7,181,149,186,69,113,211,169,138,205,65,7,24,56, +242,112,125,0,224,123,30,106,47,178,92,142,177,79,143,120,173,194,255,0,223,66,37,198,50,59,250,138,119,151,130,15,218,109,129,227,57,73,250,250,96,198,78,79,215,159,169,160,131,218,238,204,123,249,115, +127,45,159,215,183,74,0,111,217,238,200,192,137,243,232,86,30,65,247,242,143,60,30,189,125,115,74,45,175,135,252,187,177,235,218,12,253,120,141,123,255,0,62,244,224,142,70,22,242,192,145,207,48,92,116, +60,245,27,65,63,253,122,112,138,92,100,221,88,129,158,190,76,184,60,99,174,240,122,251,3,156,113,129,64,12,22,186,137,255,0,151,110,217,249,154,221,123,103,0,20,25,246,245,250,98,164,22,186,134,48,96, +69,56,224,137,173,243,158,167,35,203,110,123,158,9,193,224,116,53,31,149,32,224,94,89,245,192,219,12,185,25,232,127,215,244,244,24,206,123,154,105,138,95,249,248,128,143,104,36,235,207,63,52,131,177,7, +156,15,214,128,30,214,215,68,224,194,1,63,222,120,207,61,51,196,92,31,92,241,215,166,120,81,101,112,112,94,52,32,231,248,162,30,153,32,21,228,15,192,100,99,60,83,22,41,71,75,152,20,30,193,20,31,196,27, +156,251,119,199,225,138,118,219,129,210,230,220,118,201,0,123,241,254,148,115,248,245,29,71,96,0,241,100,152,230,8,216,30,8,217,110,220,145,129,146,83,223,156,31,79,193,62,203,24,255,0,150,49,161,207, +56,17,47,232,16,15,94,249,227,0,116,164,95,181,156,129,113,106,196,30,63,120,139,249,126,248,131,235,212,30,15,165,77,229,223,228,97,224,61,201,251,68,67,63,95,223,113,248,147,198,6,113,64,8,182,246,220, +101,70,70,49,147,14,58,158,48,195,145,156,243,131,158,224,247,113,181,183,198,66,112,121,60,64,48,112,48,6,66,231,240,206,123,119,193,228,223,30,166,220,14,57,251,84,88,237,215,253,32,123,114,122,250, +241,77,104,102,254,47,35,142,160,93,194,71,254,149,126,184,30,180,0,241,111,109,238,49,158,241,238,61,206,66,200,163,61,56,238,123,243,82,4,181,94,89,128,60,245,219,159,192,25,58,156,228,241,129,216,213, +111,40,117,34,14,72,255,0,151,180,246,199,221,185,198,125,58,243,216,226,151,201,3,162,66,196,122,221,38,123,145,214,233,136,31,135,215,182,64,39,100,181,110,3,131,199,25,72,219,233,144,3,113,255,0,2, +165,16,198,64,10,202,113,255,0,76,149,73,227,24,192,218,51,208,126,126,188,64,16,100,126,230,216,250,226,237,50,115,207,252,253,130,127,0,7,67,142,181,41,76,241,136,7,253,189,176,239,147,194,220,144,127, +14,6,121,25,230,128,38,16,1,201,46,61,72,44,15,225,181,135,81,200,3,252,40,17,177,28,79,56,193,32,128,242,40,31,80,178,12,250,114,50,51,207,66,76,2,0,114,8,135,175,240,220,183,28,227,28,206,79,191,255, +0,94,165,251,52,64,124,194,63,127,223,49,234,78,56,243,79,31,159,65,64,11,246,86,97,149,150,98,78,120,253,241,24,200,207,38,94,220,30,135,244,52,245,179,184,218,112,202,64,227,231,19,146,78,50,15,203, +187,174,0,56,25,233,220,145,64,182,180,0,110,104,129,35,156,249,228,159,174,46,23,255,0,175,239,79,242,44,74,242,208,140,14,190,92,196,145,233,150,189,0,122,116,38,128,1,107,116,49,204,24,246,121,250, +142,120,27,73,239,233,207,74,95,178,92,16,55,52,45,158,223,233,25,56,237,180,193,147,219,24,57,246,238,21,109,108,142,10,78,84,145,208,67,38,58,231,33,141,233,24,239,159,124,115,193,18,253,138,33,143, +223,182,15,82,98,96,8,227,140,53,230,61,15,231,237,64,16,127,103,92,31,153,124,128,125,60,187,128,199,255,0,37,249,239,219,63,174,83,251,58,228,28,145,108,78,121,59,110,73,245,227,17,160,199,226,121,199, +122,179,246,40,79,2,114,1,193,24,64,48,15,127,248,250,60,118,7,210,129,167,192,115,139,147,156,115,142,15,174,120,156,182,58,15,92,250,231,128,10,194,202,112,114,203,107,220,103,117,199,7,142,159,47,4, +143,200,123,224,133,251,43,227,149,178,25,35,134,123,160,79,92,117,66,15,167,95,78,152,226,83,167,64,72,219,116,91,208,6,147,35,7,254,187,1,233,143,254,181,60,105,208,17,147,60,220,115,247,91,30,156,31, +56,231,39,61,115,198,126,148,1,16,181,151,25,22,214,45,140,96,159,56,131,143,81,177,179,158,121,57,192,61,71,2,158,182,242,231,62,69,136,232,8,13,32,4,117,207,49,145,233,215,223,144,69,59,251,62,219,167, +218,28,30,184,49,146,113,244,243,114,7,108,254,92,142,21,172,80,96,45,210,41,237,186,53,92,129,159,239,51,116,32,156,143,126,121,160,0,192,196,157,209,90,130,63,184,242,14,249,234,16,12,231,158,228,251, +117,167,125,151,61,97,80,58,241,185,189,79,7,11,146,126,163,131,198,77,51,236,99,63,53,220,92,130,57,88,206,115,193,24,8,71,167,36,19,156,156,131,78,54,170,156,11,168,136,57,192,109,128,103,39,63,242, +192,238,231,245,207,166,104,2,81,101,140,129,23,175,240,49,199,215,247,128,246,207,97,199,189,11,11,161,254,30,167,0,197,38,236,246,199,206,79,28,156,12,243,206,122,211,68,81,236,59,174,96,4,116,32,71, +208,224,14,69,184,57,192,199,113,198,125,5,52,68,160,227,237,41,183,208,42,54,113,238,214,196,150,60,125,61,193,224,2,97,9,234,177,161,227,146,97,155,161,224,255,0,23,92,14,157,115,193,24,167,253,157, +185,249,20,31,95,38,95,92,146,126,240,235,140,126,36,98,154,21,79,6,82,120,234,99,92,17,143,250,224,160,245,233,142,153,245,169,68,49,156,110,46,122,96,172,49,49,62,153,38,220,156,113,142,190,221,40,2, +49,111,54,49,185,23,158,209,75,235,199,82,50,73,28,231,175,92,83,140,51,237,255,0,88,163,174,51,28,192,115,198,56,7,142,51,131,156,16,14,48,106,97,12,107,134,222,64,28,128,241,66,0,193,236,60,156,227, +147,158,221,115,201,52,225,229,227,59,119,22,233,136,213,79,224,68,124,224,127,129,160,10,254,77,193,0,252,167,161,251,179,14,57,207,117,61,63,188,15,83,197,30,85,215,85,88,129,245,242,238,48,63,29,224, +117,24,234,122,12,3,86,132,136,120,49,72,7,251,34,46,113,215,104,199,56,233,130,57,234,59,84,131,203,231,106,220,14,157,22,47,207,230,97,143,160,3,24,239,156,80,6,113,91,220,159,158,17,142,199,237,107, +245,206,217,0,61,57,235,210,130,53,18,0,223,107,143,97,118,120,3,57,56,252,184,62,254,181,162,26,76,240,151,62,217,49,15,94,160,51,122,244,228,103,63,90,118,101,61,86,231,63,239,39,39,254,248,39,211,219, +142,61,8,6,75,11,243,193,88,27,183,200,211,130,63,239,162,63,169,224,117,238,170,53,16,7,201,180,127,189,49,231,31,83,142,61,79,215,138,219,65,48,224,36,248,235,135,120,198,122,145,201,140,123,99,143, +79,106,82,38,57,62,91,243,208,51,198,123,142,160,38,61,250,14,157,243,154,0,193,7,82,31,196,8,61,177,40,56,231,184,96,8,245,250,116,39,144,226,218,128,0,111,39,167,105,143,78,123,200,6,56,199,229,91,59, +156,16,60,183,7,156,157,241,1,219,61,81,79,97,244,231,215,144,153,142,48,141,147,233,44,62,221,63,119,192,231,215,212,102,128,49,3,106,36,240,236,61,71,35,243,38,94,248,57,231,242,169,191,226,97,129,139, +149,67,142,67,130,70,112,125,36,98,114,126,160,116,231,6,180,76,119,109,130,4,200,51,201,19,67,239,211,48,145,156,96,128,57,234,79,165,6,222,114,57,146,227,223,51,197,142,127,221,182,32,115,211,4,127, +82,1,157,186,248,96,155,232,128,231,254,89,156,117,234,121,29,78,122,228,246,3,173,61,69,247,95,183,199,245,242,148,244,250,131,199,94,58,250,140,102,172,181,188,228,127,27,118,249,167,64,14,61,140,7, +61,251,99,56,62,148,191,101,147,159,149,207,176,117,43,158,227,254,61,149,129,231,185,199,215,173,0,85,102,191,61,111,85,184,24,219,26,129,239,219,31,227,208,118,164,45,123,145,255,0,19,12,17,234,128, +140,244,35,239,12,116,244,227,57,230,167,107,35,201,100,29,122,157,164,243,219,253,90,145,245,61,127,44,215,123,36,238,128,117,7,0,115,200,233,129,249,224,30,226,128,28,166,236,144,27,82,131,61,131,33, +29,79,94,37,76,158,188,125,123,211,204,119,140,167,23,246,249,227,179,15,94,191,233,60,142,160,12,103,156,243,210,162,91,72,135,31,48,206,15,42,195,216,99,32,113,207,211,129,211,138,148,218,68,87,27,136, +228,103,10,121,244,25,11,156,159,110,125,72,25,20,1,27,67,124,122,234,17,144,57,24,221,207,62,158,119,29,78,71,61,114,57,25,163,236,211,245,55,223,79,145,78,79,191,239,215,142,249,35,235,154,13,172,9, +252,64,228,243,152,221,206,56,24,31,39,79,92,231,167,165,60,71,107,255,0,76,78,58,150,133,143,167,76,160,39,175,108,253,125,0,35,48,205,208,93,171,117,207,238,92,255,0,232,23,0,113,207,175,83,158,212, +159,103,185,199,19,59,12,131,129,16,94,252,224,53,193,227,191,3,211,220,153,140,118,163,25,22,199,60,243,109,33,200,244,56,81,143,195,25,237,238,220,217,224,16,182,152,227,39,200,43,245,28,33,57,239,142, +167,31,90,0,132,219,220,168,193,105,121,239,133,231,61,49,251,236,224,123,19,159,160,168,90,213,155,27,222,76,228,115,182,54,57,25,254,245,198,238,158,184,198,63,10,181,190,212,127,203,43,79,197,88,3, +131,232,35,224,103,177,7,167,108,19,71,155,104,7,11,102,14,58,40,250,244,253,207,79,78,61,77,0,83,251,38,112,119,202,224,117,196,80,156,1,129,131,153,152,241,215,169,28,242,123,3,236,168,14,64,144,177, +4,16,97,183,234,73,60,238,148,140,3,219,3,167,24,171,94,116,39,0,45,161,199,1,73,98,122,118,197,187,113,236,62,188,26,71,146,54,1,86,27,50,49,156,134,63,252,96,28,119,61,7,183,160,5,35,108,167,171,56, +0,147,242,195,108,167,143,86,4,130,9,231,30,157,253,20,91,219,129,243,44,132,247,38,43,44,30,14,120,231,28,113,244,234,106,86,218,78,4,54,128,158,7,57,207,60,117,136,18,122,241,131,207,66,41,187,73,0, +8,237,134,114,112,177,131,142,71,114,152,227,175,61,61,50,104,2,55,142,221,121,8,167,35,167,151,108,9,36,147,146,17,15,97,215,7,130,41,4,112,28,22,183,94,184,226,24,7,110,185,104,215,175,174,57,231,147, +217,90,3,253,216,241,216,8,215,39,241,3,39,24,201,227,215,140,114,43,180,42,63,229,155,231,215,202,24,236,8,203,103,60,127,178,125,201,207,0,18,152,109,193,36,219,244,227,37,45,240,58,174,112,132,99,7, +208,3,249,156,194,241,91,18,127,118,171,244,134,50,56,39,143,245,128,142,167,158,163,184,237,64,182,137,134,74,72,58,231,8,128,41,3,32,128,177,31,215,185,199,213,175,107,6,65,223,42,146,8,249,173,201, +56,25,7,56,143,25,235,235,158,6,72,160,0,67,103,128,4,64,243,218,222,62,222,165,95,249,254,124,102,144,195,111,255,0,60,71,254,3,161,233,208,241,48,231,243,254,84,207,177,91,147,204,206,121,60,27,105, +20,142,220,133,132,228,255,0,128,224,246,81,167,90,30,76,179,224,30,118,219,220,16,59,28,19,108,0,250,241,158,230,128,26,22,60,145,229,140,103,168,141,84,247,228,254,244,243,142,121,0,116,245,20,227,20, +124,20,136,147,215,38,53,24,24,237,182,82,14,49,200,206,1,206,64,20,162,199,79,4,126,254,97,200,206,232,36,56,199,79,249,100,58,247,29,120,201,60,208,108,236,134,0,185,147,35,177,130,81,200,24,193,43, +1,0,122,227,143,173,0,53,145,251,33,193,198,63,114,58,227,142,75,227,211,244,238,51,81,188,115,3,131,19,158,56,62,74,145,244,229,142,7,95,207,166,77,57,173,237,243,196,238,64,237,178,224,15,126,126,202, +64,7,219,4,227,235,76,48,194,1,2,118,228,158,49,117,219,254,221,8,227,140,244,28,30,135,168,4,70,41,176,72,82,51,254,204,43,219,31,222,201,199,24,24,227,235,205,71,228,79,159,189,180,158,132,172,89,199, +111,190,172,24,241,219,142,58,158,214,4,48,231,63,104,24,235,207,218,151,167,99,254,133,244,245,246,228,12,169,8,191,118,233,71,67,128,110,72,250,100,89,130,79,29,191,3,197,0,83,242,167,63,196,79,29,197, +190,15,254,57,199,94,157,115,158,49,72,209,222,129,144,16,231,166,90,49,143,169,17,99,7,232,65,232,125,238,12,146,8,184,45,158,14,62,214,51,215,191,217,49,252,186,119,160,176,28,249,173,158,126,235,220, +131,223,57,6,207,30,227,36,131,215,61,104,2,150,203,224,51,155,124,103,145,152,120,7,216,195,131,158,121,224,113,234,112,20,71,124,84,228,219,0,57,24,242,9,61,185,196,61,191,62,185,234,13,76,101,85,201, +50,49,207,118,150,97,215,208,125,152,31,200,241,143,74,137,166,14,127,214,0,49,193,243,102,207,28,140,126,227,166,56,245,233,238,0,4,45,29,240,35,63,103,35,144,72,72,219,131,207,31,187,3,30,185,61,136, +232,5,56,44,196,141,255,0,102,110,191,242,206,0,79,225,179,131,216,140,131,249,26,118,232,185,221,38,15,92,137,46,27,57,234,79,238,0,227,252,79,92,82,98,208,156,153,128,57,245,185,227,31,246,205,125,187, +250,250,145,64,12,49,224,252,201,108,123,127,170,128,244,255,0,128,2,49,248,83,188,184,78,50,144,30,220,36,36,115,237,229,250,231,0,127,141,59,253,16,46,4,203,232,48,243,14,125,191,119,199,174,63,157, +68,205,109,200,243,228,227,3,137,231,92,19,236,35,244,246,247,160,0,249,10,120,84,83,156,113,20,67,235,255,0,44,73,32,224,119,206,123,14,5,70,198,3,208,41,57,36,252,168,185,252,224,32,103,175,79,203,154, +97,88,79,73,103,35,3,3,237,87,35,24,232,65,84,0,244,252,50,56,232,67,63,116,163,37,174,88,15,250,125,186,92,118,60,30,157,241,207,243,160,7,17,109,131,152,152,147,217,124,179,238,127,229,128,237,233,210, +162,101,181,25,204,87,0,30,14,210,71,175,247,98,199,208,227,158,249,205,38,232,14,118,181,227,30,164,11,251,190,185,60,146,1,60,247,198,65,239,73,145,198,209,114,62,183,247,132,241,207,33,151,28,254,31, +78,112,64,32,99,104,1,1,111,49,232,38,144,30,195,161,182,193,231,156,31,195,147,138,133,158,219,143,150,251,62,215,15,250,98,219,143,207,175,76,85,253,167,239,22,186,92,244,39,80,185,244,244,217,193,246, +34,163,102,149,78,86,91,129,235,141,70,241,113,208,224,144,184,3,191,110,148,1,158,207,109,255,0,81,3,233,139,217,193,60,122,11,124,15,92,240,58,102,160,47,106,24,144,111,179,158,191,108,184,62,153,224, +70,163,156,131,156,123,30,130,180,204,183,131,56,243,155,190,127,181,46,128,199,94,173,9,31,161,61,126,181,25,158,236,131,145,62,1,193,219,171,76,70,120,231,31,103,30,220,156,142,122,130,48,0,51,78,206, +170,247,67,147,214,242,235,60,30,216,219,198,58,122,244,207,106,102,27,39,18,220,16,56,230,246,240,241,158,160,23,29,255,0,218,24,234,58,140,233,25,110,112,120,114,112,113,187,86,148,156,14,64,199,217, +198,113,199,81,211,131,197,71,230,220,147,140,68,15,82,95,82,184,62,217,226,21,246,224,99,167,189,0,103,180,76,15,73,207,184,190,186,0,253,65,184,31,143,29,233,74,12,228,71,54,78,115,254,151,59,12,140, +250,220,241,208,158,70,79,92,102,174,150,184,110,162,219,39,4,255,0,167,206,70,122,231,27,127,92,116,239,138,137,161,185,35,135,178,245,193,187,185,62,188,143,148,126,89,232,71,39,4,208,5,85,9,220,31, +251,253,41,7,25,224,238,156,245,239,74,21,121,251,128,14,6,73,57,192,3,254,123,231,61,253,58,28,243,204,166,43,145,130,211,90,142,188,45,195,251,145,247,165,83,232,79,66,120,207,60,8,216,220,161,225,237, +72,201,60,92,185,231,211,253,105,3,63,95,83,216,80,2,108,78,254,73,201,60,16,15,167,92,204,112,120,234,115,236,77,49,212,2,64,142,6,235,140,44,93,253,7,157,143,169,237,237,128,3,132,215,28,229,97,96,78, +78,39,110,158,197,139,12,15,79,229,81,111,124,228,236,95,163,198,217,199,29,75,12,15,234,7,99,64,17,50,183,33,98,140,123,41,65,238,56,19,96,99,142,64,253,56,168,118,204,51,148,126,188,109,144,126,92,54, +59,14,78,125,51,205,89,46,72,192,17,55,78,162,50,51,200,31,242,219,191,3,0,114,73,226,152,24,140,110,134,63,170,172,31,134,51,112,57,233,64,21,218,89,0,195,69,39,28,242,233,211,220,16,195,56,56,206,122, +154,174,93,115,145,25,92,255,0,122,69,0,240,65,199,238,31,169,244,250,231,181,105,249,131,251,138,188,113,143,178,123,12,115,117,145,193,246,36,228,115,138,12,241,129,134,3,144,7,252,185,99,56,200,198, +110,49,235,215,168,235,140,80,6,49,228,157,161,121,234,124,231,3,57,206,70,44,136,200,247,198,62,149,19,249,192,16,8,3,32,231,237,170,160,30,195,155,64,51,233,156,158,56,29,206,217,184,133,115,148,82, +1,207,43,166,14,153,232,90,235,56,244,192,39,167,28,28,179,237,150,217,255,0,84,140,123,110,109,59,223,28,164,164,250,112,59,244,29,232,3,156,127,57,184,57,63,247,18,93,188,246,63,184,245,237,234,120, +237,81,52,103,57,32,238,198,57,212,193,227,177,226,17,156,127,245,242,49,93,35,93,192,224,143,33,14,122,21,54,157,1,60,156,205,207,61,61,63,49,81,121,145,16,127,115,249,125,135,63,248,244,227,31,174,49, +199,165,0,115,133,1,206,246,124,117,193,213,95,244,81,3,115,223,144,0,245,198,41,134,20,61,9,32,28,96,234,109,159,214,216,2,62,132,243,222,186,50,209,242,4,57,206,64,27,173,3,100,2,6,10,79,140,122,116, +30,156,213,118,93,223,242,193,148,14,62,252,107,244,228,77,140,103,60,251,30,148,1,135,246,120,241,206,62,166,253,91,28,130,65,221,0,250,158,163,169,232,56,133,173,226,57,2,64,156,231,141,66,12,240,56, +255,0,151,114,61,123,251,10,223,101,36,112,141,192,207,55,10,49,219,180,141,223,25,206,51,212,250,26,239,20,238,72,49,7,193,227,247,178,30,7,95,186,227,223,145,143,76,250,128,97,155,117,29,46,8,30,135, +80,133,152,156,142,159,185,25,244,192,29,248,231,154,67,10,140,102,121,143,111,248,250,129,201,25,255,0,104,168,35,175,56,193,24,231,215,89,161,155,28,91,147,238,173,115,249,15,156,131,207,161,235,145, +205,68,209,79,156,8,230,31,141,214,71,28,118,61,7,161,24,3,173,0,101,24,97,63,122,234,117,199,80,22,209,177,159,92,203,232,115,208,114,49,142,153,97,183,183,227,23,114,242,121,27,45,71,60,129,156,179, +14,125,1,28,15,82,77,106,27,121,79,38,43,174,115,147,229,221,116,30,249,3,161,246,233,199,177,246,38,35,59,46,242,49,247,146,224,12,144,123,2,120,245,24,62,152,200,160,12,182,142,32,63,227,230,98,87,3, +253,93,151,25,244,249,143,95,195,240,168,218,33,206,38,148,147,216,195,100,115,237,247,243,237,250,19,91,77,102,84,99,51,115,211,49,93,31,203,9,199,79,235,142,245,25,181,80,115,190,94,49,145,228,95,116, +63,240,0,6,113,147,249,208,6,41,132,117,243,157,123,156,219,89,244,246,249,186,119,200,207,61,58,83,12,101,57,251,67,125,90,218,212,96,115,199,1,187,145,208,17,248,243,91,101,16,15,245,175,199,76,197, +117,249,116,231,57,35,129,199,167,74,137,150,37,255,0,150,143,245,251,45,215,95,94,84,112,115,193,207,122,0,196,49,179,30,103,56,61,190,199,3,2,65,29,63,114,6,63,63,106,107,91,49,207,206,164,247,198,157, +17,35,131,236,7,211,129,216,86,184,88,9,255,0,89,33,39,214,214,232,126,95,43,100,246,232,79,166,49,79,43,8,7,18,184,236,63,113,40,7,223,12,128,227,208,117,239,244,0,192,104,89,72,204,137,211,143,248,150, +65,156,125,124,182,235,199,97,215,167,171,2,56,39,247,177,16,123,27,24,151,35,175,56,139,143,79,199,32,28,214,219,5,28,137,92,131,243,17,228,74,0,207,60,96,2,9,244,199,39,24,207,74,105,42,122,74,70,122, +241,114,1,31,65,25,0,14,64,253,113,64,24,190,84,131,35,204,128,100,28,31,179,198,195,190,50,62,206,15,94,56,36,12,3,140,224,84,102,25,142,64,146,220,247,255,0,143,105,1,235,254,205,163,2,112,114,63,241, +211,211,27,76,72,25,75,132,199,186,92,185,192,200,25,31,103,35,60,30,64,31,142,106,185,45,222,226,12,145,242,254,230,124,15,114,124,128,48,123,14,157,121,205,0,101,155,105,7,38,72,126,96,62,237,187,167, +31,248,11,193,231,216,250,210,11,89,84,96,77,24,238,1,132,48,25,3,251,208,41,29,184,30,231,131,90,36,159,249,237,14,121,232,28,113,212,112,209,0,72,237,159,195,25,226,187,7,201,253,252,100,19,192,220, +70,56,192,192,17,245,28,140,19,234,63,134,128,32,54,179,246,185,65,245,129,0,29,48,70,16,159,174,0,224,250,12,212,66,206,97,187,55,10,216,198,63,116,189,253,8,136,103,223,142,42,209,47,255,0,61,227,57, +235,181,216,117,32,255,0,117,121,227,175,92,18,58,83,72,148,31,245,203,219,164,141,147,239,203,32,245,224,158,164,242,58,128,10,198,214,92,252,211,71,128,58,21,233,142,252,131,131,142,120,35,249,154,97, +128,19,131,44,103,147,156,43,28,114,51,192,35,142,120,39,131,207,38,173,59,74,56,13,187,143,226,149,193,63,80,39,99,215,219,223,129,138,96,18,12,19,12,103,63,222,149,135,215,27,165,3,142,188,245,244,245, +0,172,214,167,144,37,132,142,126,238,208,71,174,126,97,129,158,188,145,236,123,64,109,28,231,247,177,156,247,223,208,115,192,62,112,199,235,143,126,42,243,111,232,32,136,228,96,0,234,6,15,214,97,215,28, +147,159,211,134,49,151,31,241,232,172,7,77,140,58,30,188,139,161,250,14,160,158,128,208,5,31,177,158,70,238,70,114,67,169,24,231,25,221,49,207,94,216,193,224,242,64,33,182,147,128,28,0,125,100,183,30, +156,96,202,115,245,39,60,12,213,204,56,233,99,38,122,141,140,231,147,234,69,216,31,94,79,20,1,47,107,75,160,120,227,124,172,189,7,25,23,223,231,156,240,104,3,57,173,46,50,6,248,200,56,28,201,109,156,255, +0,223,236,143,174,51,219,234,195,101,57,231,124,39,235,52,0,129,233,146,113,129,239,248,86,168,142,99,156,218,79,235,146,215,25,61,113,255,0,47,158,157,123,113,216,116,83,19,16,63,209,111,79,169,67,39, +95,79,154,235,167,190,51,237,64,25,2,205,177,134,48,131,215,34,123,115,159,169,18,15,195,143,108,116,162,181,246,48,60,219,234,29,57,1,176,51,130,48,119,78,78,49,129,223,34,138,0,253,6,103,127,249,249, +144,15,92,5,231,233,158,192,114,51,223,191,57,140,187,143,249,120,156,228,116,4,127,241,99,3,28,131,219,233,205,68,201,114,14,89,102,60,12,128,173,220,243,201,66,122,156,117,56,235,207,90,77,142,71,48, +73,159,86,89,9,3,212,237,143,27,122,243,140,119,160,1,157,200,200,154,98,87,190,73,201,231,144,3,182,115,159,113,237,76,220,231,59,218,237,187,229,87,111,35,29,183,12,15,234,125,179,79,91,121,206,127, +209,164,113,212,109,141,199,254,132,152,35,241,224,251,99,12,54,215,13,157,182,78,58,127,203,37,99,249,152,249,255,0,35,232,0,133,152,140,31,183,112,49,140,48,62,164,228,110,30,135,190,51,223,154,139, +61,128,189,36,115,209,177,198,120,225,15,76,103,242,3,165,73,246,27,214,63,45,164,128,117,39,200,86,62,189,4,56,199,61,242,49,143,94,79,236,219,236,243,109,48,32,30,69,166,65,62,224,4,234,56,207,99,200, +160,8,195,144,8,242,175,152,158,229,164,0,123,159,229,146,58,246,228,3,11,186,247,134,239,142,230,234,85,31,166,15,175,60,85,195,97,123,128,76,19,2,127,233,211,140,115,232,231,212,122,16,125,169,134,198, +243,161,75,140,142,129,109,14,51,158,219,136,227,143,81,158,115,64,20,1,143,144,214,215,44,50,127,229,250,224,28,1,220,6,29,78,71,95,173,52,189,168,57,54,119,39,217,175,159,242,25,152,159,232,63,30,110, +181,140,224,252,194,232,103,63,242,232,70,122,241,158,157,57,3,112,247,0,84,77,106,221,210,255,0,142,79,250,50,128,59,113,243,175,183,94,221,49,210,128,43,238,179,110,182,46,15,60,27,217,143,78,156,44, +131,241,39,233,131,77,63,98,198,62,198,120,36,237,23,51,183,39,215,45,140,246,25,201,25,169,76,36,240,35,212,64,28,228,64,131,31,95,244,165,224,144,114,56,35,158,148,134,53,231,113,212,70,1,0,148,10,7, +92,100,44,238,0,231,215,212,119,20,1,7,250,0,228,219,34,240,126,252,243,113,215,160,243,71,28,242,125,207,190,90,77,153,228,69,7,167,18,77,200,198,49,147,112,163,219,43,239,198,49,82,121,105,201,251,69, +255,0,7,238,148,35,182,122,153,87,131,215,57,61,121,207,56,112,9,252,55,23,190,224,166,115,140,114,8,185,36,30,122,140,127,49,64,17,239,181,63,242,202,17,232,68,243,129,245,226,231,191,176,25,239,223, +38,251,82,8,196,73,129,255,0,61,101,110,59,140,121,231,167,126,220,241,83,100,28,126,254,243,212,229,152,117,239,131,112,220,243,233,239,138,110,194,57,243,174,207,24,199,152,224,117,232,0,56,231,161, +231,24,199,78,192,12,95,179,99,42,208,238,246,142,83,199,92,113,47,63,79,81,218,151,204,128,100,22,137,120,254,236,128,247,201,255,0,88,163,215,147,146,51,199,92,210,30,15,50,222,158,249,243,163,237,158, +6,231,4,17,245,207,167,106,70,86,60,163,222,147,142,51,115,110,7,78,131,51,2,7,78,248,238,121,160,6,151,67,146,46,80,119,249,75,251,227,254,91,3,223,35,230,201,60,140,244,168,90,66,51,254,152,219,122, +144,75,143,95,250,122,31,253,113,215,29,156,209,220,146,113,37,210,231,144,26,230,18,64,231,251,179,168,7,142,58,231,249,130,59,145,214,89,253,243,115,30,126,164,121,205,129,232,71,7,145,201,28,0,68,102, +39,145,118,119,118,249,241,129,198,114,5,230,0,30,255,0,95,122,120,145,128,36,221,140,30,198,98,8,235,193,255,0,78,0,19,219,167,29,15,66,71,138,118,255,0,150,146,100,1,210,117,110,6,7,247,215,7,174,122, +142,49,156,244,128,197,115,209,140,159,140,195,30,220,43,147,192,28,144,14,121,200,160,7,150,98,7,250,83,0,121,255,0,143,144,51,215,254,159,178,61,64,4,28,244,237,81,182,9,255,0,143,194,14,120,31,104, +4,99,182,1,190,28,100,115,198,127,149,49,161,152,142,93,143,25,42,101,124,113,211,24,136,156,243,207,127,194,170,152,228,13,202,161,227,156,187,159,212,196,127,158,61,7,168,5,179,24,63,242,242,15,126, +102,136,12,243,147,131,168,103,60,241,159,64,112,122,210,20,35,149,157,129,3,143,223,198,7,185,199,219,49,192,245,60,251,226,169,21,148,116,142,51,142,58,149,28,123,249,109,158,221,113,129,236,105,55, +72,65,6,27,114,70,71,50,231,3,211,2,30,51,143,83,207,79,96,11,44,133,184,251,72,63,246,218,22,228,116,56,251,104,199,127,94,114,49,131,138,2,176,3,19,185,232,56,40,195,191,247,47,114,64,201,246,235,223, +154,164,89,193,230,11,95,197,217,177,215,142,45,243,201,199,83,199,176,166,239,143,56,251,61,179,31,164,141,158,59,126,224,253,120,239,249,80,6,129,82,126,243,150,60,114,24,130,120,61,127,211,121,245, +28,113,234,65,197,33,71,24,40,72,24,238,220,231,175,79,181,28,100,15,226,60,145,131,131,140,213,222,188,143,178,218,1,208,144,36,24,234,7,252,177,4,96,231,211,183,108,102,51,212,5,182,128,145,200,30,83, +227,177,199,49,117,0,246,239,206,49,64,22,155,143,188,91,161,25,3,39,211,147,246,162,0,255,0,245,99,174,33,41,207,241,242,122,148,32,245,25,206,103,80,15,78,61,243,192,235,30,230,227,253,14,223,35,31, +242,235,43,116,246,8,6,78,64,39,252,78,80,187,227,254,61,109,129,244,54,77,131,238,50,163,255,0,172,125,56,160,9,54,176,231,105,56,234,10,3,211,57,225,101,207,79,175,122,70,42,56,42,61,254,89,143,175, +101,115,248,231,147,216,112,5,71,186,66,14,33,180,94,160,98,213,7,254,133,22,65,199,81,146,61,177,81,179,145,213,45,71,191,144,128,241,201,200,242,148,123,103,159,200,242,0,242,234,8,32,31,94,99,185,250, +227,239,175,61,186,3,143,200,55,122,231,136,217,186,125,211,114,1,61,78,6,242,58,250,250,254,81,22,45,158,45,120,227,63,102,66,63,19,180,17,211,168,232,71,97,213,54,146,6,5,167,183,238,151,28,12,159,225, +24,29,50,123,243,223,154,0,156,149,61,96,115,207,127,63,0,113,215,114,183,169,31,78,122,243,81,237,82,70,32,199,161,25,231,176,255,0,150,35,241,231,215,235,73,137,71,32,216,142,189,96,31,65,206,193,142, +9,238,14,113,142,69,5,165,3,151,179,224,140,159,39,24,61,120,204,103,158,188,122,243,147,138,0,82,27,119,24,81,144,112,20,145,216,99,13,15,24,227,25,207,99,207,20,252,122,48,36,246,61,115,223,164,7,142, +227,215,223,147,81,9,164,78,214,100,117,36,195,238,115,255,0,46,252,156,125,77,40,185,96,121,123,5,245,38,29,160,246,201,38,220,126,92,115,244,20,0,255,0,159,142,97,0,231,239,7,235,140,28,255,0,162,115, +142,131,175,63,78,3,129,255,0,45,45,127,239,153,49,249,45,158,49,216,100,103,147,211,138,4,224,224,238,177,61,49,181,2,140,123,133,143,36,103,24,61,251,96,211,196,232,7,63,103,94,159,117,101,59,185,232, +48,128,30,189,186,116,29,40,1,152,101,60,61,179,103,28,2,83,156,127,183,104,158,191,65,248,228,184,249,164,125,219,110,163,248,208,245,231,181,171,12,159,200,250,212,139,43,182,10,249,96,100,96,173,180, +228,242,58,28,115,156,16,1,199,29,242,106,96,210,247,104,250,96,31,177,92,146,51,158,167,202,228,247,24,35,56,199,3,2,128,43,168,152,28,236,182,0,241,247,119,116,232,120,182,3,57,246,167,1,41,206,126, +203,158,224,2,185,207,108,249,106,48,127,92,0,42,112,211,129,195,199,199,253,56,93,145,238,115,229,28,99,185,237,208,145,128,41,124,217,113,131,34,100,255,0,118,198,233,112,50,59,249,35,35,131,223,7,29, +51,208,2,191,150,113,151,22,231,215,146,115,245,228,30,189,123,83,124,184,71,38,43,67,158,185,220,112,73,237,243,175,126,157,122,253,220,244,178,207,35,96,48,183,35,169,38,206,114,112,50,8,249,162,206, +14,114,126,159,66,91,128,27,7,236,131,191,205,101,56,24,231,177,140,227,168,237,130,72,234,79,0,16,152,237,123,219,89,19,158,127,214,158,112,112,70,38,31,135,28,15,81,213,68,54,185,201,182,178,25,192, +198,233,65,57,198,50,77,196,127,153,7,142,199,180,162,53,236,44,206,113,140,90,206,1,228,30,63,117,193,239,158,152,250,240,133,36,92,31,42,14,115,131,228,202,57,233,192,54,196,125,122,227,175,76,80,2, +24,45,75,17,246,43,86,25,231,247,205,131,199,4,110,187,3,30,167,60,227,143,74,112,134,212,103,253,6,16,1,56,219,112,184,207,209,111,178,71,39,182,49,211,28,138,105,51,145,129,12,44,8,234,200,248,250,243, +109,142,121,28,96,224,17,210,164,30,106,40,221,107,110,6,122,136,164,39,215,28,90,227,249,231,215,25,200,3,60,171,33,214,214,33,140,113,189,70,65,250,222,241,142,132,243,207,39,217,225,52,223,186,208, +70,188,116,243,160,31,158,235,210,122,12,113,200,62,189,3,26,65,222,218,0,114,15,203,20,161,185,255,0,183,113,158,79,78,79,76,12,241,71,158,58,125,146,28,142,152,130,80,9,207,82,68,59,143,191,56,63,80, +5,0,41,143,77,35,136,98,3,25,32,205,106,192,244,199,38,236,100,119,239,159,94,184,80,154,120,24,88,160,239,198,235,113,129,129,140,108,184,60,2,59,103,36,247,238,130,115,207,238,87,60,244,134,80,57,233, +143,220,142,71,110,122,224,142,148,161,203,99,16,77,145,215,100,47,223,143,249,224,78,63,62,184,235,64,18,133,179,56,2,8,14,127,187,36,56,207,208,187,96,143,175,191,67,79,242,160,199,203,110,7,82,74,180, +39,35,220,153,20,12,122,96,159,110,73,161,30,108,225,109,238,151,216,33,224,123,19,108,8,200,30,160,129,145,237,83,3,49,28,165,242,243,208,41,199,174,48,109,207,127,195,240,205,0,86,242,225,57,38,57,6, +14,48,190,67,28,227,146,6,242,49,219,248,177,144,73,231,52,42,68,73,202,72,167,140,147,28,76,121,207,60,30,14,61,185,235,205,92,69,147,57,38,240,19,199,220,114,120,199,247,32,3,7,57,28,243,158,123,102, +192,76,96,151,184,24,206,115,19,147,159,198,60,159,111,229,154,0,160,168,132,227,230,192,199,6,16,217,30,234,170,227,220,14,255,0,65,79,88,212,244,12,189,14,5,145,3,168,206,64,81,199,113,158,131,142,166, +175,149,200,31,188,185,99,129,140,196,115,215,147,150,140,227,57,238,56,169,214,3,216,77,212,103,45,10,243,219,239,194,71,83,232,70,15,122,0,204,242,193,42,15,152,71,3,254,61,25,114,6,14,51,176,245,32, +255,0,245,192,21,32,137,14,27,203,153,200,227,136,229,92,159,80,66,224,15,175,175,0,142,107,85,45,201,193,34,65,255,0,109,237,83,57,245,6,204,158,59,254,158,181,47,144,131,37,145,153,136,200,6,123,82, +56,227,181,144,207,167,166,127,58,0,203,72,144,127,203,41,151,240,148,28,100,14,234,188,245,7,169,235,199,21,48,133,14,6,47,50,61,28,1,140,116,251,152,198,121,231,147,245,230,174,136,23,140,69,18,131, +215,116,182,249,224,113,210,204,103,160,244,28,100,247,20,255,0,41,9,36,11,92,140,12,121,168,73,252,5,183,111,76,122,119,52,1,76,71,24,1,74,94,103,145,159,53,65,60,245,4,196,125,186,126,7,174,94,177,71, +203,20,191,193,199,6,120,114,125,193,242,128,245,201,206,121,197,90,242,143,36,71,104,216,206,64,39,60,99,145,182,203,159,76,142,122,131,232,28,20,99,230,138,3,212,112,164,145,131,234,109,49,142,220,255, +0,137,160,8,150,20,236,47,70,114,120,185,131,145,147,140,175,217,220,224,17,234,64,200,228,211,188,152,176,55,61,224,246,251,69,179,30,49,215,54,184,233,156,231,25,231,210,157,228,163,224,249,80,227,208, +40,39,57,228,129,246,28,245,247,206,6,105,223,101,131,28,219,70,7,174,208,61,122,255,0,162,47,29,126,184,160,1,98,132,129,135,188,207,97,231,90,244,250,125,144,255,0,158,198,151,201,82,78,30,235,142,229, +237,152,28,245,0,11,53,39,252,131,158,231,217,237,48,1,72,84,99,144,85,186,156,99,32,91,240,115,140,118,207,39,29,208,91,90,159,225,132,158,122,44,184,63,247,202,39,168,236,7,80,61,104,1,124,156,96,7, +187,29,51,136,173,200,61,50,121,180,57,250,156,15,126,148,166,28,99,50,222,19,237,4,24,246,31,45,160,252,121,57,29,49,131,77,91,43,82,70,33,136,228,17,254,174,112,63,94,51,207,167,108,117,205,72,52,235, +108,134,54,192,247,194,172,195,144,114,120,10,65,252,15,212,142,128,2,50,155,115,131,114,79,171,64,135,161,207,31,232,88,233,234,9,198,113,200,38,144,7,232,38,153,78,59,218,250,244,233,101,142,220,246, +169,141,148,35,254,93,101,218,59,108,148,12,117,32,252,153,57,63,167,127,67,236,182,223,195,106,195,159,250,105,200,227,174,72,233,158,57,233,192,246,0,102,38,92,254,252,18,7,70,179,44,78,71,112,214,106, +61,186,227,142,167,20,133,166,28,153,92,245,251,182,64,140,245,3,2,220,113,216,145,223,35,35,184,108,237,193,207,217,91,175,4,22,7,57,227,185,39,29,49,233,210,147,236,86,224,143,244,89,114,79,163,18,14, +58,250,140,244,237,142,57,160,0,125,165,184,83,35,119,4,217,178,146,49,232,35,192,61,58,253,113,205,33,142,243,3,11,47,60,0,109,152,115,206,112,60,191,76,243,129,239,65,180,181,28,249,18,38,56,229,156, +19,211,182,15,94,120,231,29,123,10,67,107,7,24,134,98,57,229,92,156,251,115,31,94,58,100,242,122,224,240,0,223,46,240,228,24,255,0,56,194,253,51,251,163,159,82,72,227,249,202,32,188,60,108,132,12,156, +151,120,148,117,4,112,209,46,62,159,90,106,197,104,188,27,123,175,96,27,31,65,196,36,28,246,235,220,102,151,22,67,31,187,184,95,111,147,129,207,31,53,184,206,50,61,7,78,122,80,2,24,46,186,1,0,61,241,37, +184,7,233,184,168,199,167,110,156,211,126,207,118,199,3,201,62,205,45,155,28,103,7,171,175,62,163,39,165,56,139,46,223,104,95,92,172,71,223,188,67,142,221,177,143,83,77,11,96,57,119,124,18,58,195,9,224, +227,158,131,220,228,142,49,235,64,9,246,75,161,215,202,228,241,243,193,198,58,131,251,253,185,200,56,239,140,96,113,195,62,203,118,8,27,35,231,210,72,148,147,255,0,1,115,192,252,7,235,153,4,122,95,12, +210,201,212,156,136,34,7,56,232,14,223,95,113,211,167,122,144,13,39,156,188,190,197,150,33,206,72,232,163,145,233,206,72,244,38,128,43,253,146,231,180,75,159,123,146,120,31,238,228,251,96,28,158,112,113, +212,251,37,192,25,104,97,199,175,159,40,32,250,99,32,117,207,215,190,59,90,221,164,130,7,156,165,179,208,178,163,103,241,61,56,244,227,57,20,241,54,152,14,209,36,68,156,244,116,99,128,120,192,50,3,159, +94,119,114,56,35,168,5,15,42,81,156,36,42,1,35,151,124,231,140,18,124,240,112,15,92,245,246,201,164,242,229,236,208,46,15,24,150,115,219,157,219,110,212,122,113,220,113,140,26,213,19,105,253,60,229,64, +57,249,163,233,143,82,178,147,158,79,24,199,108,211,222,93,56,143,248,251,141,151,166,60,176,61,58,135,151,140,241,198,125,49,64,25,6,57,112,126,120,186,117,95,181,115,156,231,145,123,159,203,24,232,55, +119,85,89,129,56,25,237,184,197,168,158,49,140,228,92,18,114,49,207,60,251,243,90,91,172,142,127,210,70,59,21,129,78,8,228,244,155,39,240,233,159,201,11,217,129,145,114,199,63,197,246,114,167,208,116, +184,235,215,249,100,244,160,10,98,41,142,115,129,142,167,202,212,179,147,131,193,243,136,7,7,142,8,200,244,164,16,147,193,115,255,0,2,91,238,113,233,230,74,56,239,248,253,49,124,75,106,7,55,146,168,60, +124,177,177,24,227,63,242,242,127,31,233,65,146,211,7,253,50,224,18,56,253,207,28,127,189,114,49,234,112,48,71,124,241,64,20,188,168,199,14,199,219,106,221,17,140,17,159,248,250,95,200,117,207,56,164, +16,219,142,3,122,129,152,238,65,35,142,230,235,243,36,145,215,167,21,108,203,108,63,229,242,108,119,62,68,44,79,231,119,143,94,78,125,123,138,77,246,191,243,253,113,147,142,144,90,99,174,123,221,147,220, +116,29,56,239,154,0,166,99,183,31,122,69,235,211,247,163,174,61,103,63,159,63,94,13,6,11,102,193,12,122,255,0,12,147,140,140,128,126,236,132,99,158,157,249,226,173,180,214,96,16,111,166,200,198,79,217, +172,135,94,57,255,0,74,63,153,244,192,201,205,69,230,89,158,77,243,48,25,24,48,217,231,219,254,91,17,215,56,207,95,174,40,2,31,178,91,128,123,140,119,55,12,62,188,185,28,96,118,31,80,56,168,154,194,221, +179,251,179,192,231,27,148,125,64,47,140,143,67,212,247,169,207,217,78,8,156,54,73,193,104,172,198,127,239,137,186,96,116,233,199,76,156,211,183,66,49,251,213,198,1,24,91,113,200,207,253,53,227,167,31, +206,128,42,29,58,12,124,177,115,140,242,228,28,19,142,133,135,24,56,57,244,252,162,58,114,46,49,17,207,168,101,56,233,216,130,15,226,63,250,215,140,144,1,159,56,40,56,249,143,217,249,201,227,248,207,61, +115,156,247,168,203,193,192,51,196,73,63,221,131,7,175,25,4,244,233,198,49,223,156,80,5,81,100,160,241,11,140,116,202,194,72,206,120,201,7,32,103,211,215,6,162,107,80,78,68,110,57,238,144,159,78,159,184, +35,167,166,58,116,60,85,236,166,126,87,143,211,25,128,103,211,146,220,119,0,129,201,57,227,154,24,142,23,112,30,202,200,65,57,245,82,70,58,99,60,208,6,113,181,3,179,228,147,255,0,44,98,56,201,3,254,125, +151,61,185,203,115,156,112,77,68,214,195,145,137,178,57,255,0,143,120,113,199,39,254,89,227,36,128,6,57,199,108,241,90,249,234,21,203,114,113,146,0,30,131,229,56,25,250,83,78,227,192,46,61,195,156,103, +3,238,142,62,167,191,66,112,57,160,12,95,178,145,206,110,57,231,254,60,224,235,147,198,74,140,158,72,56,237,207,99,80,188,88,60,173,209,61,246,218,64,14,71,108,129,252,250,227,158,130,183,137,101,81,243, +76,15,170,177,29,179,218,80,61,137,36,112,70,122,114,198,105,78,63,121,63,211,122,140,96,112,57,184,3,63,151,248,128,97,108,3,162,106,7,142,67,91,68,71,98,122,48,3,158,156,115,156,14,105,167,182,5,242, +241,255,0,62,189,189,182,56,254,127,149,110,25,36,7,105,158,228,243,140,151,136,143,99,197,199,3,169,228,28,113,235,70,217,63,231,226,99,207,25,145,48,49,140,143,245,253,122,243,130,71,98,13,0,115,143, +180,30,94,243,39,31,122,209,248,207,57,198,242,120,206,62,153,239,77,216,59,25,242,57,203,218,220,14,59,244,124,117,235,143,126,156,87,71,135,4,16,243,147,140,127,173,140,140,245,61,102,201,35,145,140, +158,158,180,192,228,146,11,74,59,13,206,78,57,239,182,67,255,0,214,252,104,3,155,104,219,61,51,158,9,104,110,199,185,224,63,4,30,188,147,211,154,104,141,155,59,65,44,71,4,65,121,199,174,15,152,15,29,61, +122,142,58,215,72,80,49,192,149,177,232,75,251,247,105,135,25,28,140,103,158,57,232,195,108,167,150,149,134,48,114,25,137,30,184,205,208,28,122,241,159,228,1,207,181,187,147,202,49,247,48,222,129,220, +227,184,61,7,126,199,175,2,147,236,242,113,132,11,193,251,241,222,142,63,151,248,123,10,220,54,106,217,204,229,177,198,92,49,61,199,7,237,96,99,215,184,236,77,70,246,77,192,18,168,237,214,98,63,16,47, +8,228,14,231,25,245,28,80,6,41,178,157,185,41,24,247,100,186,199,65,156,252,153,244,198,14,71,67,233,77,58,116,221,252,158,249,32,93,224,116,207,38,51,128,56,201,199,190,115,192,213,125,58,86,199,239, +98,0,116,202,207,158,195,140,92,28,147,193,207,174,115,216,150,255,0,101,220,55,11,34,28,2,70,5,207,110,78,15,154,196,30,156,243,235,154,0,201,254,206,151,254,122,69,248,181,217,3,233,136,113,147,220, +12,100,143,90,114,216,176,228,60,4,103,60,173,211,30,163,168,242,70,115,252,179,219,138,212,109,42,224,117,144,113,234,110,120,207,175,204,123,15,243,158,90,52,155,131,159,222,198,120,231,254,62,56,39, +28,146,95,56,60,14,7,245,200,6,105,181,92,253,228,83,215,114,173,217,201,198,112,63,118,125,48,71,78,185,239,132,251,58,127,207,66,15,125,169,112,113,248,22,78,127,168,57,233,90,39,71,152,15,245,209,143, +169,184,7,191,102,147,31,152,35,249,136,78,151,112,188,249,241,142,128,19,36,195,145,232,65,227,62,199,154,0,171,229,32,4,249,146,156,119,253,242,241,233,247,193,235,223,7,244,168,182,196,167,30,107,2, +65,206,239,61,186,122,147,112,15,174,56,31,159,75,45,97,56,192,51,160,237,196,183,12,48,127,187,242,242,0,207,99,223,182,77,70,109,38,199,250,248,242,123,153,110,178,15,252,10,2,1,192,245,35,29,79,112, +1,9,142,34,121,156,245,24,249,103,207,254,148,15,92,227,232,71,53,25,134,14,191,104,57,29,177,116,122,122,1,57,25,239,216,251,243,204,166,214,92,229,174,211,130,78,208,211,55,83,220,155,99,129,223,175, +124,122,83,77,190,24,19,50,159,125,204,57,30,198,212,19,250,147,239,220,1,134,59,94,134,224,227,143,188,147,241,223,146,210,103,28,28,103,35,177,192,38,162,49,88,129,131,62,14,8,36,153,127,17,134,144, +140,115,233,158,58,113,196,198,1,222,72,242,72,39,57,39,215,189,191,183,160,198,126,149,3,218,70,70,68,177,131,193,63,187,114,61,121,196,99,182,127,49,158,56,160,6,181,181,134,8,251,66,126,12,65,252,140, +131,35,30,184,254,85,11,90,88,255,0,207,202,247,224,72,7,28,99,146,228,103,190,20,254,121,57,127,217,7,79,62,47,92,249,120,60,129,193,204,125,136,61,187,231,189,52,217,115,255,0,31,17,156,250,32,0,119, +239,142,222,157,248,199,122,0,129,172,236,223,56,153,64,246,32,244,245,35,118,58,103,175,126,56,168,27,77,182,234,183,17,130,70,114,206,71,7,166,7,150,14,51,156,224,246,237,87,77,137,7,137,211,158,197, +51,199,24,193,206,114,125,71,20,27,7,227,247,241,15,111,33,15,167,247,131,28,254,189,125,240,1,152,108,35,25,11,119,111,158,51,202,131,212,247,48,147,245,228,119,252,98,54,42,56,251,100,4,156,244,49,158, +188,119,131,156,28,140,122,244,173,70,211,110,9,255,0,89,1,25,199,252,123,196,9,250,147,23,175,76,113,238,42,47,236,217,123,136,91,130,57,183,141,79,167,56,133,136,245,239,237,233,64,25,141,105,26,245, +157,24,227,251,201,207,231,111,233,140,242,61,51,199,17,53,172,61,229,67,220,2,209,228,123,28,40,35,156,245,228,140,26,217,26,100,163,254,89,219,16,112,121,143,60,251,126,227,129,211,175,28,96,251,177, +180,249,70,127,117,6,57,39,16,243,248,31,39,119,56,231,144,70,104,3,19,236,177,245,51,70,49,212,140,55,0,14,184,140,146,51,192,29,7,32,247,53,25,183,65,210,111,94,138,255,0,209,71,78,188,12,142,226,181, +218,202,81,243,8,173,201,7,60,70,115,220,227,149,247,61,62,128,118,166,27,41,241,145,12,56,30,129,123,30,164,5,200,199,182,15,96,122,80,6,43,91,38,127,215,243,211,27,38,11,156,129,207,200,14,122,224,3, +239,131,222,39,129,56,45,113,0,199,175,156,167,140,250,167,124,227,146,115,156,231,165,107,61,181,192,63,234,34,56,239,130,185,24,228,156,199,140,245,239,219,35,142,106,33,5,206,8,242,99,255,0,128,236, +63,136,62,87,29,207,39,142,212,1,149,177,6,65,184,131,144,113,130,199,56,62,190,95,61,186,115,211,154,66,33,39,253,108,100,96,30,25,148,145,237,140,15,160,207,56,173,3,111,34,242,98,62,251,68,100,96,158, +159,234,193,255,0,235,119,24,205,55,203,126,115,11,12,116,59,83,30,217,56,24,199,76,126,60,116,160,10,13,28,25,251,234,71,95,245,128,227,234,56,63,145,63,143,74,66,32,193,25,92,159,247,79,29,250,190,56, +254,181,124,69,46,78,22,68,246,219,30,125,120,30,96,227,142,71,108,241,237,27,195,38,126,244,160,123,36,92,251,228,203,207,62,188,241,239,154,0,162,82,15,239,40,110,217,88,75,12,103,145,156,147,143,124, +128,120,200,6,131,229,245,220,79,92,100,91,224,103,232,71,25,228,15,126,115,86,76,19,96,143,50,235,25,234,60,181,35,190,0,19,15,192,119,207,229,31,145,39,102,189,231,140,130,61,58,31,223,48,25,3,167,175, +214,128,43,176,131,56,127,47,62,167,236,132,253,126,101,108,112,49,140,31,95,106,96,251,48,206,36,65,208,140,29,55,0,231,142,177,3,207,168,61,177,205,89,48,54,6,239,181,147,206,114,139,146,121,29,124, +194,122,245,32,3,159,199,49,155,92,156,255,0,167,96,247,85,30,189,7,39,232,121,228,228,138,0,135,22,228,242,225,134,115,144,116,209,207,94,191,41,227,175,60,99,176,164,43,109,212,237,246,38,77,48,103, +56,237,235,200,227,222,167,251,50,1,130,47,8,57,200,100,110,184,0,227,110,58,115,249,131,219,52,198,182,64,9,11,115,211,63,51,74,58,113,252,41,211,145,223,29,184,160,10,228,91,177,25,68,192,199,62,102, +150,9,28,241,141,141,156,117,206,121,193,207,80,41,133,109,186,21,135,0,1,140,233,153,0,244,231,202,254,158,198,167,54,202,70,124,185,115,216,51,204,6,61,201,141,136,0,123,100,16,61,42,38,182,94,246,242, +28,246,19,92,31,166,0,129,184,206,48,79,95,76,208,4,12,144,140,237,72,0,36,255,0,22,156,63,14,32,192,231,242,198,121,237,3,164,125,188,146,121,63,43,89,28,145,147,217,49,250,17,199,79,75,98,222,28,159, +244,99,248,77,116,167,142,57,255,0,71,3,142,131,61,122,231,61,84,217,192,65,38,217,201,198,57,185,186,61,56,225,124,190,71,39,4,15,76,102,128,50,155,4,228,44,67,168,92,173,161,231,131,211,202,199,65,198, +65,250,158,106,22,12,15,202,169,158,188,71,105,253,17,122,129,219,241,244,173,134,178,183,35,136,10,142,58,220,75,239,253,251,114,71,39,175,95,110,106,22,181,183,81,254,175,7,36,255,0,199,195,131,200, +228,96,68,14,58,253,73,200,32,80,6,65,206,72,48,163,147,199,205,12,4,103,140,228,169,7,232,120,231,158,69,52,160,83,147,107,14,79,113,111,8,63,143,83,233,219,183,173,107,136,96,36,230,1,245,107,201,6, +58,14,78,7,83,206,123,158,188,14,30,45,98,111,187,28,99,32,100,11,217,187,251,12,159,175,30,131,154,0,197,25,228,27,78,7,113,107,17,234,61,163,108,227,7,160,35,61,243,209,12,104,195,155,66,15,94,108,208, +231,240,17,143,92,246,56,62,167,3,93,172,202,242,170,57,61,5,205,211,17,158,189,151,35,212,228,31,174,113,76,54,100,0,223,57,29,241,52,248,245,224,146,56,198,56,228,156,117,25,224,3,35,236,219,193,197, +177,28,224,98,192,14,120,235,251,179,159,110,59,117,164,54,172,57,54,228,12,144,115,102,188,30,121,57,133,178,126,188,159,204,141,111,176,62,79,18,103,177,55,18,28,115,156,129,230,254,135,128,58,14,212, +191,99,157,65,218,102,255,0,128,204,237,145,156,224,131,184,0,64,231,212,240,58,208,6,72,183,85,235,9,27,135,79,177,69,142,120,35,63,99,36,103,168,61,51,207,92,210,53,172,71,57,93,157,193,54,145,1,234, +58,89,17,250,14,63,58,210,107,107,129,147,153,135,212,72,112,79,253,178,57,63,78,120,29,122,213,118,138,92,157,207,33,237,202,55,176,237,2,156,231,142,248,236,5,0,81,91,104,137,56,104,207,99,155,120,134, +59,100,226,204,31,232,49,223,177,246,52,198,21,161,206,120,111,38,34,78,126,182,94,254,152,235,147,90,31,103,102,3,228,145,179,220,69,63,29,15,24,136,245,31,228,84,109,106,224,19,182,85,199,7,16,220,30, +199,39,34,6,32,117,60,143,169,29,192,41,11,54,228,45,194,41,199,104,35,63,162,216,99,185,233,129,248,224,212,45,167,59,19,155,200,79,126,109,163,28,240,15,222,179,95,196,252,199,212,227,165,199,183,10, +114,222,99,122,230,27,129,159,252,150,60,99,24,32,116,25,235,205,69,228,160,56,41,47,175,16,185,253,90,5,56,57,207,67,211,166,65,4,2,131,105,239,208,93,219,231,208,196,163,36,244,60,91,54,15,174,20,158, +64,62,204,109,58,64,50,215,145,245,24,218,89,64,234,122,11,49,212,245,231,216,138,209,49,67,195,8,100,56,198,63,114,9,4,115,255,0,60,63,17,234,115,223,171,63,209,212,243,3,183,210,217,201,3,211,34,220, +241,193,199,28,253,114,40,3,47,236,13,147,254,151,25,3,3,150,152,96,156,255,0,118,216,103,183,94,58,251,212,111,167,227,173,218,48,32,15,245,247,0,254,3,202,29,129,255,0,2,51,90,165,172,112,67,65,33,250, +219,191,205,156,246,251,48,199,215,159,206,153,254,134,51,136,89,115,142,177,200,14,71,110,97,3,29,176,13,0,99,253,132,199,210,118,193,207,75,139,175,78,159,234,73,7,167,80,63,76,151,139,105,0,192,123, +131,129,252,51,94,99,212,99,108,7,142,185,0,228,246,35,156,236,43,91,227,229,135,7,212,196,221,56,233,152,72,250,28,243,215,7,52,172,80,99,5,87,35,31,234,226,24,7,24,63,53,161,61,49,235,143,200,208,6, +47,146,227,239,73,116,7,160,146,244,103,143,95,47,184,62,132,123,12,230,138,217,13,183,248,144,145,254,205,190,125,186,217,156,123,243,158,135,156,240,80,7,219,6,107,82,62,236,185,198,65,11,41,28,119, +31,47,31,136,56,28,250,212,102,75,115,214,25,216,113,147,251,197,227,175,112,15,32,253,57,252,171,135,191,232,133,78,56,255,0,143,219,117,207,166,54,194,189,71,79,215,145,196,138,117,19,146,88,3,143,186, +110,247,14,189,182,175,61,125,142,7,4,245,160,9,11,192,196,98,222,66,58,124,198,126,163,142,153,245,239,199,79,78,42,18,98,39,136,27,140,243,153,70,122,244,249,248,24,3,57,29,189,249,152,11,243,140,188, +99,28,124,210,169,232,1,28,19,147,215,208,122,212,152,191,94,147,219,140,246,243,98,39,25,61,137,39,32,126,39,243,192,5,108,69,222,35,212,112,76,135,211,61,50,73,237,249,251,16,237,208,0,7,144,199,211, +30,112,246,32,99,158,189,58,99,211,156,213,144,247,224,124,215,11,193,39,137,98,227,29,56,219,219,175,215,28,118,11,186,228,140,181,206,112,59,220,219,113,156,242,1,32,103,35,220,242,57,236,64,42,2,135, +3,201,96,57,193,13,112,73,207,64,0,199,61,48,79,24,232,56,160,70,164,228,43,15,111,222,142,51,199,45,156,118,24,250,119,233,104,139,150,192,23,50,12,122,61,169,201,227,166,27,144,123,158,61,125,8,141, +162,186,29,103,144,116,192,63,102,60,241,254,201,39,166,7,57,61,199,74,0,140,199,144,73,70,35,182,223,55,35,183,28,12,253,126,167,4,113,81,24,193,56,218,254,156,163,115,211,168,10,114,120,199,175,3,160, +53,35,69,113,212,93,77,248,37,185,30,184,206,210,61,185,30,190,216,140,180,195,63,233,119,67,25,228,36,29,135,97,177,134,49,142,221,123,245,160,6,27,120,207,222,216,164,255,0,122,39,99,248,149,140,119, +207,166,58,212,2,205,67,228,72,152,32,241,228,75,235,255,0,92,143,0,228,244,233,193,201,226,167,55,5,126,83,117,118,223,84,140,99,142,159,36,4,115,233,147,239,138,132,207,41,198,217,238,253,190,85,60, +244,199,203,108,79,62,248,224,14,69,0,13,110,163,36,203,146,15,252,241,147,215,190,219,83,206,112,6,122,156,100,118,49,152,98,238,232,122,100,155,105,7,0,243,214,221,70,1,29,72,29,50,8,238,166,89,201, +31,189,212,79,92,97,51,219,215,236,132,247,232,49,143,65,193,168,89,174,58,137,47,0,237,185,27,56,250,125,143,245,252,9,238,0,30,96,135,0,239,78,188,127,162,174,236,241,158,176,245,30,253,189,49,81,152, +109,73,193,148,131,255,0,94,240,174,7,95,226,69,227,182,49,250,83,9,188,235,246,137,57,231,230,142,114,79,229,102,7,111,212,83,89,174,193,25,185,24,231,239,69,116,6,51,198,71,217,66,244,233,129,156,140, +14,180,1,32,182,183,57,249,217,151,177,242,45,177,219,140,129,147,142,185,239,208,250,149,251,52,3,144,36,228,12,237,182,136,245,29,113,176,175,191,243,198,69,68,37,184,31,122,120,248,200,230,59,190,195, +174,62,204,15,64,58,103,167,65,197,60,60,131,31,60,103,254,216,221,231,143,111,36,14,123,112,7,174,57,160,5,54,176,113,254,179,158,121,130,204,123,243,200,63,158,51,73,228,91,168,198,209,158,71,220,178, +200,7,212,121,156,112,112,6,63,42,107,51,146,127,213,131,216,155,121,192,231,146,121,12,50,113,233,143,97,156,83,62,114,120,54,188,240,127,209,230,39,211,39,42,64,61,71,57,239,218,128,39,83,109,24,57, +183,66,61,74,216,116,238,112,88,246,231,219,158,105,67,90,28,254,230,28,231,169,142,199,168,236,118,206,160,118,207,30,191,74,173,208,97,188,146,115,140,125,140,54,123,247,143,175,225,142,120,35,187,60, +200,65,249,161,129,185,31,242,234,131,211,166,212,7,56,224,146,1,4,103,56,20,1,116,121,44,14,32,133,136,206,8,134,209,143,78,195,237,63,159,7,241,236,210,145,144,49,103,1,62,166,222,0,127,17,246,160,59, +246,254,149,72,205,0,201,242,33,235,255,0,62,192,227,169,227,114,140,251,118,30,217,229,226,91,44,13,214,195,56,35,2,214,34,56,235,195,16,121,61,58,245,237,156,80,5,159,42,69,57,91,27,51,159,239,65,9, +39,160,237,114,196,227,250,15,165,55,18,128,223,232,58,104,0,156,239,134,53,231,60,115,246,144,0,227,167,92,246,237,85,204,182,0,12,89,150,7,210,218,31,168,200,243,6,63,0,127,14,166,29,218,105,255,0,151, +39,207,92,139,72,216,245,200,199,239,72,193,35,175,25,198,7,90,0,176,235,43,12,27,61,53,78,73,0,67,9,231,219,253,51,28,228,251,243,142,73,52,197,134,93,196,11,125,56,123,24,20,123,242,18,236,227,144,57, +35,0,85,99,38,158,184,31,100,148,99,0,226,198,21,236,65,3,7,63,67,193,227,7,56,165,87,211,193,226,210,76,122,155,96,51,248,40,199,126,199,159,126,104,2,119,71,3,149,211,186,240,4,111,233,219,108,205,128, +50,51,206,79,226,51,11,69,49,192,11,100,160,255,0,113,37,231,62,163,206,62,221,199,29,206,115,75,191,79,60,53,147,128,189,127,209,137,36,244,201,249,177,129,223,36,231,165,55,26,110,63,227,217,206,113, +141,214,202,51,248,134,254,99,191,35,128,104,1,166,218,109,191,234,237,14,115,200,73,201,29,73,233,59,1,159,112,15,176,53,9,130,76,103,203,136,99,251,145,92,250,250,153,143,99,206,7,61,134,106,195,46, +156,127,229,132,106,123,150,130,38,198,0,31,55,205,131,158,184,199,65,143,96,195,22,158,71,41,0,3,31,242,233,14,120,198,9,60,243,237,146,61,168,2,191,151,34,129,130,185,199,101,185,28,231,156,225,206, +115,129,142,50,59,122,209,243,15,189,128,122,100,11,208,127,48,167,232,49,219,242,18,60,22,127,194,45,136,231,143,179,38,236,253,22,35,201,198,56,38,145,98,128,116,49,128,59,172,9,140,99,60,254,228,250, +242,59,98,128,33,38,64,48,2,159,163,221,143,199,30,75,142,56,235,215,245,160,59,169,232,122,119,55,152,234,114,63,227,212,130,71,126,58,253,106,208,91,112,185,18,133,62,214,209,245,246,38,208,175,7,161, +207,56,3,61,40,38,62,210,161,56,254,43,107,126,191,248,14,63,152,253,113,64,17,9,220,12,24,163,110,191,242,210,239,191,7,129,100,79,25,61,207,231,205,2,226,76,96,219,33,29,136,107,163,211,211,253,11,4, +250,156,143,195,39,50,238,43,144,36,135,7,254,157,44,219,182,78,7,217,88,103,30,248,252,249,97,119,207,15,25,199,65,246,43,32,188,30,133,254,197,145,223,190,125,125,104,1,77,203,128,63,209,193,227,39, +9,114,79,211,11,109,215,233,140,1,199,186,27,217,7,72,7,25,224,45,206,64,233,208,219,156,30,163,35,142,224,250,70,211,204,160,156,33,231,0,173,173,184,63,152,179,32,15,124,0,79,94,49,76,251,85,193,42, +50,120,232,22,222,1,193,29,9,91,60,31,124,129,206,15,184,0,176,47,238,7,63,100,86,31,237,25,84,247,60,238,179,110,50,121,238,121,252,23,237,179,176,230,206,63,169,24,199,79,239,88,114,115,158,189,115, +249,64,46,110,9,24,118,7,254,189,225,29,49,255,0,78,156,30,231,39,35,211,209,223,106,156,99,18,49,245,62,69,191,56,245,34,5,29,243,235,239,138,0,155,237,82,116,251,36,99,31,222,142,34,24,224,14,51,101, +158,157,48,163,29,189,67,133,210,241,190,214,22,61,120,138,47,111,250,135,158,153,28,158,189,51,210,171,11,185,199,222,46,115,192,196,86,195,144,125,163,7,145,158,56,234,123,83,77,196,164,241,188,125, +124,149,207,166,64,69,31,161,201,199,67,64,23,77,202,112,62,201,8,207,76,197,0,231,182,65,178,25,246,192,25,253,106,63,180,28,224,217,193,234,49,20,71,159,248,13,168,244,245,237,211,138,129,101,145,191, +191,198,115,181,163,83,215,177,25,200,237,158,15,108,119,167,111,147,145,153,65,57,57,243,225,80,57,245,217,253,123,96,158,51,64,22,13,207,115,101,9,199,164,112,119,199,36,27,126,157,125,243,207,166,84, +78,72,3,251,62,51,193,57,219,110,125,56,249,173,72,30,220,231,62,253,41,41,102,3,116,183,24,25,25,251,93,175,3,158,155,128,227,3,212,99,158,249,169,213,14,15,207,33,200,24,63,105,211,120,227,143,188,51, +193,235,223,168,207,74,0,177,230,231,254,92,23,182,63,119,98,48,63,27,99,207,56,61,113,142,157,41,198,87,255,0,159,32,167,4,131,182,205,73,234,59,90,158,9,250,99,24,250,71,228,22,199,46,79,111,244,173, +44,0,123,156,108,56,207,4,31,196,158,41,69,179,103,152,216,227,147,139,189,51,245,218,152,7,29,186,12,244,244,0,144,72,224,18,109,65,61,190,107,96,6,61,214,220,30,254,196,251,240,65,246,167,36,102,203, +118,15,56,146,223,230,245,56,242,71,183,167,97,239,81,249,4,96,139,121,27,146,14,110,172,71,94,196,132,0,14,59,143,200,212,159,102,24,230,222,101,36,224,1,117,100,123,142,113,229,177,57,237,235,199,182, +0,5,154,67,247,116,249,65,61,214,91,83,143,195,203,227,143,167,97,199,20,239,50,124,103,236,83,99,24,199,250,49,224,145,159,187,25,30,152,206,56,234,198,163,16,160,235,28,157,58,25,236,78,125,134,96,110, +79,174,51,248,209,229,14,88,67,47,80,9,18,89,15,229,104,51,147,192,3,24,227,0,113,144,9,60,201,48,3,89,221,231,129,149,104,9,199,24,24,42,15,226,0,200,252,50,110,155,160,182,189,3,25,192,104,192,63,151, +29,121,247,235,144,56,44,66,58,27,123,147,147,218,75,110,59,227,229,183,4,247,227,30,167,212,25,149,23,254,120,92,15,118,242,136,233,234,45,193,29,240,71,65,232,56,160,6,98,98,73,107,123,190,156,22,120, +255,0,92,156,227,39,211,232,6,106,69,89,14,64,183,184,32,1,144,94,49,147,245,35,176,39,7,240,197,74,20,144,1,142,114,184,56,218,84,247,61,182,140,100,250,243,145,233,209,68,96,147,242,92,47,35,147,231, +31,228,113,142,48,78,57,29,198,104,1,130,34,199,155,121,121,235,251,248,129,4,116,32,96,18,127,15,241,167,152,24,143,146,9,186,125,223,54,33,143,167,39,191,36,147,159,108,212,130,60,115,186,126,63,216, +185,24,199,99,247,186,247,231,191,74,122,161,255,0,158,151,93,113,144,146,118,199,208,227,161,28,31,169,236,1,92,90,202,223,242,201,151,4,143,156,163,2,115,140,31,151,223,28,247,56,39,184,176,182,109, +131,150,81,158,71,221,32,123,0,169,249,243,156,254,53,33,64,49,153,47,122,31,249,101,46,57,24,227,9,131,215,175,97,249,84,235,30,224,0,23,68,227,57,217,113,159,169,28,123,140,103,57,232,58,80,4,34,201, +88,100,21,56,238,3,231,143,96,187,125,186,244,169,62,200,164,3,191,24,233,144,72,0,242,0,221,27,15,200,14,127,28,88,88,246,245,251,64,56,193,204,82,1,142,188,146,223,207,223,174,105,254,64,35,57,144,99, +129,185,54,142,190,255,0,231,159,126,64,32,251,12,108,57,120,242,113,201,10,113,245,63,102,57,60,227,158,132,254,82,46,157,22,57,48,158,122,0,153,231,35,31,241,236,120,228,96,158,252,103,165,74,34,68, +238,216,235,144,157,135,126,79,65,207,110,71,108,100,210,254,231,24,253,225,247,5,65,254,108,1,245,31,160,160,8,255,0,179,226,35,63,186,3,215,124,96,12,224,241,136,7,229,145,234,69,39,246,106,28,29,240, +30,221,23,140,246,226,220,244,207,83,248,147,82,133,129,121,38,113,233,200,63,142,54,245,31,136,165,89,173,208,144,90,224,12,146,8,40,49,211,57,200,60,156,145,207,185,197,0,48,105,80,103,5,237,207,62, +164,30,156,103,22,188,103,175,94,199,32,116,19,38,151,108,63,229,165,183,94,70,236,242,78,49,255,0,30,199,158,156,1,154,86,185,180,3,153,102,237,247,222,44,115,145,142,64,30,131,191,95,165,51,237,22,164, +143,223,156,250,110,132,245,31,238,227,167,7,166,120,244,197,0,76,186,100,32,125,244,198,15,33,164,244,239,139,60,126,191,128,20,255,0,236,168,219,164,139,219,159,52,119,246,107,81,159,207,161,207,29, +106,3,61,175,25,155,4,140,125,248,179,248,228,224,231,62,255,0,137,20,209,113,104,120,19,185,227,129,189,7,60,14,137,207,230,64,233,158,7,32,22,70,149,1,231,204,67,142,121,152,250,99,162,91,147,147,158, +203,250,117,113,210,160,3,229,116,92,255,0,181,112,123,14,70,32,25,237,211,249,158,43,137,109,184,249,164,61,135,239,20,103,168,200,38,85,231,175,232,59,129,79,18,197,129,133,153,179,254,218,140,156,228, +240,38,57,224,14,123,119,227,168,4,159,217,144,243,251,204,156,96,144,215,56,199,115,196,36,122,117,235,212,14,162,134,176,140,103,23,17,224,100,96,139,166,63,65,136,251,224,158,126,156,241,78,71,136, +19,251,185,176,113,147,158,7,208,137,49,206,78,15,29,186,211,247,160,251,162,76,19,192,222,195,211,169,50,1,156,245,227,147,215,147,64,13,22,41,144,198,69,35,212,67,124,7,94,8,196,120,207,175,62,223,73, +30,217,84,112,91,142,8,88,174,254,189,200,30,252,242,127,10,110,245,97,141,132,231,214,115,131,249,55,30,156,55,63,141,27,80,227,253,28,55,7,164,249,237,255,0,93,61,135,29,121,245,205,0,32,137,79,4,190, +125,173,238,88,131,248,186,140,28,251,158,220,81,228,197,200,45,39,25,225,173,101,201,62,132,52,160,156,247,25,61,253,205,59,202,92,103,236,114,242,49,159,61,66,147,219,25,124,115,129,158,71,76,210,237, +81,140,91,58,158,223,233,49,158,78,120,57,151,25,25,207,108,241,208,100,144,8,196,74,114,85,152,14,185,22,146,119,227,180,173,147,219,183,92,98,159,178,64,112,25,192,239,155,89,206,71,168,6,82,59,123, +99,175,115,73,177,127,231,138,130,51,247,174,80,54,72,227,143,49,198,61,250,99,185,164,4,131,210,49,211,254,94,81,191,45,161,186,113,239,143,195,32,15,34,65,252,82,18,8,227,236,196,103,158,72,205,207, +190,113,212,244,238,72,82,206,0,230,80,125,237,215,32,156,243,205,193,239,211,131,140,116,233,147,228,3,12,208,169,234,9,150,92,169,206,113,254,160,231,131,142,191,152,53,17,217,252,50,90,30,196,181,195, +142,192,244,242,14,14,63,31,196,240,0,240,210,19,141,211,16,63,233,146,174,15,25,224,206,64,62,188,142,217,231,154,113,70,39,62,108,224,146,48,74,194,6,122,146,115,56,57,245,207,39,156,116,170,204,0,28, +189,166,56,32,11,151,199,94,127,229,212,255,0,49,131,159,90,81,130,51,139,76,96,158,37,145,137,236,58,90,129,207,3,57,226,128,39,100,118,35,55,19,12,240,57,182,231,61,200,51,147,159,254,182,125,41,13, +177,35,137,165,224,231,153,45,84,156,118,255,0,93,211,29,127,3,201,205,66,84,30,119,91,175,167,19,176,61,184,197,168,254,125,193,29,169,192,30,1,123,62,164,146,82,231,242,230,219,191,126,134,128,37,16, +184,200,13,39,225,60,71,39,254,3,54,6,120,244,25,205,48,219,190,1,59,240,70,57,185,137,71,174,127,214,227,7,156,244,29,122,18,13,57,179,145,205,169,231,0,8,238,15,57,200,31,53,167,57,244,36,142,49,79, +12,195,24,75,83,211,143,179,202,115,211,159,248,244,0,253,59,118,60,154,0,172,208,103,168,3,3,161,186,183,201,31,140,189,187,231,158,160,243,210,63,33,248,218,35,10,15,83,115,108,125,70,57,147,7,235,159, +110,71,21,167,251,198,25,48,90,140,146,63,227,210,82,59,117,13,111,208,129,236,113,218,154,192,145,180,69,102,51,233,108,217,198,113,198,232,73,224,142,7,28,241,235,64,25,254,68,237,206,98,193,60,102, +230,219,212,100,99,205,7,3,175,225,214,148,91,79,235,15,29,71,157,102,112,125,121,152,242,115,253,48,1,205,91,84,152,31,245,16,14,199,22,96,231,243,135,25,244,199,29,134,41,251,28,115,228,167,61,15,216, +21,185,199,31,242,203,62,184,254,99,52,1,68,195,112,15,250,184,88,31,86,180,57,237,158,37,198,70,0,237,199,79,74,105,23,61,224,183,62,163,54,167,62,223,44,164,128,59,240,71,31,74,212,8,192,115,31,7,168, +58,102,7,211,229,140,147,237,193,245,61,41,194,54,60,249,81,247,192,251,9,207,30,198,1,147,211,252,77,0,100,111,144,125,235,107,49,223,253,76,4,145,146,7,1,199,111,81,239,205,53,156,156,31,38,213,65,227, +136,97,31,167,154,163,243,250,242,5,108,52,50,224,254,229,113,254,206,156,112,125,78,86,12,113,248,15,76,85,127,40,147,147,26,103,147,206,159,41,56,57,237,228,117,245,57,193,247,192,192,6,127,155,200, +226,3,234,60,152,219,158,217,6,125,163,129,233,142,216,235,82,45,196,75,247,163,133,177,199,252,122,66,71,94,185,251,88,39,142,157,185,237,87,126,201,25,251,225,6,71,69,211,165,3,61,248,242,186,99,175, +97,201,239,154,105,178,132,12,238,101,57,198,5,131,143,66,188,121,96,227,143,94,227,130,104,2,177,184,183,108,239,138,1,158,223,98,183,3,175,32,98,236,31,169,235,223,29,170,38,123,54,229,173,99,199,108, +90,68,73,193,247,184,110,157,70,24,30,163,56,235,119,236,81,128,57,207,253,184,203,211,174,56,57,60,246,37,71,126,212,191,101,183,228,23,80,120,7,58,116,135,175,63,197,50,159,231,223,142,134,128,51,91, +236,7,239,89,39,81,214,210,19,248,255,0,173,199,208,122,113,212,84,88,211,50,115,96,188,244,197,140,71,146,122,224,76,61,71,124,113,206,6,113,163,36,22,224,252,179,47,92,13,186,124,160,118,56,63,233,88, +231,233,131,214,154,96,140,231,51,38,73,39,38,194,94,57,227,254,94,192,232,113,144,71,60,158,15,0,20,196,26,71,5,172,137,224,241,246,44,122,127,118,232,99,63,136,252,169,124,141,40,253,219,54,80,123,11, +69,207,78,14,26,240,114,125,126,184,238,68,205,111,24,24,243,206,51,143,150,198,76,122,227,139,253,223,76,231,240,231,12,49,91,241,155,146,49,255,0,76,110,16,99,160,207,250,97,24,60,116,244,60,119,160, +8,254,201,166,129,184,90,182,51,144,68,16,14,56,39,239,94,16,125,206,211,223,167,90,133,224,177,12,54,218,6,255,0,182,54,99,129,220,3,56,193,232,59,158,156,213,213,138,46,171,122,227,29,112,146,224,14, +78,63,227,228,242,59,156,253,15,4,84,109,149,63,45,219,147,193,206,251,128,79,60,16,22,114,1,247,30,135,208,80,5,19,111,102,65,197,168,31,88,237,1,198,1,0,17,43,14,157,70,64,245,239,81,172,54,224,124, +182,174,79,65,133,179,32,116,255,0,166,128,12,123,142,160,230,174,50,201,158,46,152,245,63,235,239,7,63,95,59,29,253,14,123,99,4,81,182,82,56,157,201,235,242,220,93,15,65,206,101,28,144,61,253,122,230, +128,41,148,136,14,109,92,156,30,63,208,198,126,135,204,3,61,189,185,252,90,18,223,57,251,36,128,227,3,13,103,252,204,220,31,212,128,61,115,87,246,79,131,251,233,79,176,185,187,199,28,243,130,221,61,113, +197,52,197,57,231,207,148,125,110,238,200,60,113,144,214,228,12,146,123,231,166,48,40,2,160,72,7,31,102,152,100,118,54,71,183,169,159,3,61,199,165,55,100,73,202,195,63,161,37,172,15,28,147,192,118,233, +244,61,57,201,169,222,41,129,39,206,36,147,212,93,93,253,63,134,17,143,92,116,24,24,199,20,195,29,193,227,237,17,117,201,243,39,188,62,189,51,22,79,235,211,167,90,0,174,84,17,131,21,200,25,255,0,168,126, +57,233,209,78,122,14,199,219,36,83,113,142,118,93,117,207,220,179,35,140,116,194,100,145,158,152,230,173,121,119,0,224,79,104,73,24,229,238,136,227,175,37,87,61,50,79,62,222,148,142,151,39,171,89,176, +60,228,155,197,201,32,227,27,101,24,244,61,14,78,104,2,175,150,31,25,134,233,186,231,109,180,7,131,206,126,85,231,242,227,3,131,75,228,42,146,126,205,123,211,156,67,26,242,61,188,146,163,25,233,198,125, +206,48,237,146,255,0,10,90,18,115,140,27,243,235,255,0,79,67,143,169,28,100,1,81,249,115,2,79,149,106,59,110,9,127,158,122,18,126,212,120,231,147,249,241,193,0,70,136,21,35,101,226,1,143,249,102,160,227, +156,100,172,64,227,57,36,28,245,201,25,206,33,41,8,32,109,188,4,123,15,174,120,132,244,237,143,203,181,72,209,177,0,148,135,61,255,0,117,169,128,57,200,229,39,98,114,125,191,145,168,218,60,224,149,139, +63,238,107,56,228,244,255,0,88,48,57,244,200,236,115,64,8,74,46,2,181,206,113,146,89,120,28,231,156,192,196,227,3,162,227,7,175,67,81,52,142,50,4,142,61,140,50,130,7,108,149,181,7,36,116,234,123,227,28, +208,214,236,15,69,61,128,3,88,60,125,76,223,175,111,106,65,3,142,136,227,35,31,41,214,71,60,116,6,81,142,220,127,142,0,3,13,195,168,3,204,35,232,147,169,228,243,156,218,96,115,158,114,113,219,25,32,87, +105,228,193,1,240,51,212,130,122,241,252,86,108,78,125,58,103,175,188,237,110,195,164,76,196,28,143,222,106,96,250,240,12,185,234,58,12,140,126,65,166,30,131,200,148,245,3,19,106,131,167,113,182,94,59, +245,236,71,182,64,42,180,179,30,9,83,140,158,145,14,63,27,19,215,160,224,115,207,80,13,68,211,76,78,65,80,115,156,111,182,65,235,130,90,200,126,36,31,166,42,219,192,216,207,145,56,32,158,62,211,170,115, +233,195,9,7,67,198,79,78,167,56,203,62,206,237,128,201,112,160,19,146,110,47,148,143,78,126,207,192,31,212,122,80,5,51,113,48,227,116,61,248,50,217,176,236,72,230,37,193,63,78,121,200,2,163,243,229,39, +56,183,35,61,158,197,186,227,61,70,0,29,178,59,129,218,175,155,69,25,0,78,15,56,197,230,160,185,198,65,206,45,189,125,240,50,70,123,152,222,208,237,200,18,28,96,29,215,154,135,81,201,25,54,164,122,245, +60,80,5,127,58,66,6,22,213,122,246,211,216,159,67,128,132,14,228,113,223,145,218,162,102,145,142,118,219,3,206,79,151,167,110,61,120,7,202,201,29,200,206,120,7,60,138,176,109,216,17,132,36,158,198,242, +244,250,99,27,173,138,147,237,212,99,165,70,99,149,15,17,142,184,230,242,228,31,66,50,214,227,7,147,159,65,207,208,2,13,185,39,121,132,1,212,21,211,241,142,61,84,113,215,61,56,62,184,166,24,163,60,9,33, +25,231,3,251,52,3,248,12,55,232,114,50,112,106,214,37,228,108,67,201,4,11,249,73,250,255,0,170,28,118,35,0,31,99,72,209,158,187,118,251,173,245,193,199,191,16,28,99,62,158,253,168,2,153,182,206,65,104, +138,242,115,139,94,227,182,204,15,110,189,185,168,154,218,2,49,149,7,25,249,86,18,125,58,249,131,161,244,246,228,243,87,202,146,120,145,129,245,55,247,57,61,49,247,173,72,252,191,62,42,23,71,235,246,156, +103,168,55,179,156,31,252,4,198,120,236,125,125,120,0,160,246,144,17,187,33,184,231,48,68,73,0,99,170,177,39,39,142,1,61,178,49,77,251,21,177,228,39,126,49,10,159,97,214,55,32,100,100,103,36,100,12,242, +51,161,180,176,0,220,1,211,63,233,183,36,254,4,91,143,126,196,254,24,164,199,80,110,216,30,57,23,83,224,118,231,247,35,57,247,233,208,116,224,2,137,179,139,146,17,199,31,243,193,15,94,56,255,0,69,235, +235,211,142,188,212,77,101,24,25,8,91,156,12,196,128,156,142,115,254,141,183,219,60,103,183,76,85,230,100,76,19,168,1,244,184,35,29,49,203,38,115,245,32,30,123,84,79,33,35,141,65,148,116,255,0,143,148, +57,199,95,189,30,14,125,55,114,56,239,64,21,69,140,125,4,81,251,225,98,7,215,156,64,8,199,115,211,183,74,99,105,195,56,242,99,200,4,228,160,236,121,201,16,99,159,175,124,228,115,86,25,159,39,26,131,158, +223,235,99,61,122,140,40,92,116,39,24,231,0,113,205,68,99,144,143,248,253,144,14,199,123,99,240,196,131,158,249,254,180,1,9,210,228,3,136,20,169,29,122,245,231,145,246,98,70,123,0,127,250,200,116,233, +64,59,98,136,119,251,169,199,78,239,10,143,192,143,229,79,242,159,63,242,16,147,167,240,239,111,110,9,156,144,79,167,126,49,210,163,120,110,58,139,201,182,228,115,184,140,250,224,11,158,135,211,142,231, +28,1,64,17,255,0,101,221,49,225,34,81,201,203,121,74,56,231,146,96,39,191,185,30,190,136,116,219,177,156,45,190,7,173,196,104,51,208,245,136,19,237,129,207,95,76,30,85,193,39,23,83,183,175,204,217,30, +135,105,186,25,35,39,128,115,129,248,80,214,183,44,8,23,55,67,142,235,156,117,231,230,187,239,249,156,125,40,2,51,166,94,127,211,170,131,219,237,17,145,146,122,156,46,113,140,19,199,30,131,188,109,166, +221,103,62,101,152,199,247,103,80,123,224,228,145,219,61,0,231,191,60,184,218,223,103,229,185,156,143,239,52,40,217,247,63,233,7,159,215,174,125,154,45,174,250,121,210,185,207,56,130,44,31,76,157,231, +142,153,7,143,126,244,1,3,105,87,120,207,157,109,142,122,92,175,242,4,245,207,126,121,252,42,22,210,110,249,62,124,32,28,144,69,204,138,191,129,200,29,7,4,140,85,195,111,113,156,72,210,46,72,231,236,136, +73,36,228,242,8,4,250,101,179,154,141,173,28,224,238,124,224,115,246,116,81,142,153,198,27,143,230,115,222,128,51,219,78,185,82,49,121,110,63,222,188,108,245,231,33,164,0,245,3,25,231,190,121,168,218, +210,231,167,219,109,8,245,55,101,114,112,113,146,36,227,168,7,39,215,25,173,47,179,48,24,46,223,141,188,125,134,63,231,151,110,7,115,193,231,165,49,173,185,36,153,15,24,192,134,48,61,193,255,0,70,99,143, +199,31,168,160,12,179,101,49,201,251,77,155,40,36,127,199,240,7,25,234,65,118,61,248,227,208,247,200,139,236,165,7,204,116,243,198,126,123,192,204,127,49,146,58,12,158,189,179,90,77,107,27,12,22,192,61, +71,145,19,117,232,112,109,129,4,123,224,117,207,165,48,216,194,63,229,164,128,17,159,248,245,129,191,19,182,219,60,103,182,120,29,121,160,12,209,16,28,99,77,29,142,38,13,159,174,208,73,234,126,153,39, +7,165,39,147,156,252,150,39,158,129,198,51,199,57,104,200,57,227,131,192,239,138,186,214,182,163,146,242,156,117,34,214,44,143,81,129,105,245,233,147,239,140,84,38,27,76,31,158,224,231,28,173,160,0,227, +166,113,109,140,159,195,191,61,112,1,80,192,132,255,0,171,178,207,253,117,135,129,215,180,124,16,120,60,14,221,58,84,38,0,79,2,203,4,247,120,255,0,14,76,39,167,78,222,185,237,87,76,54,217,249,90,232,1, +211,54,225,125,7,4,68,24,30,123,117,199,177,53,25,181,181,110,76,183,35,223,99,12,158,128,125,206,115,211,235,218,128,41,24,8,232,182,39,158,130,72,65,245,239,16,252,71,230,78,105,62,201,49,60,65,102, +122,247,132,159,196,148,28,118,198,58,246,233,87,141,173,176,201,50,220,140,100,100,166,115,142,79,6,60,159,231,143,76,84,38,11,67,156,77,40,0,158,118,194,167,215,171,39,76,99,7,24,60,244,235,64,21,154, +218,233,122,89,217,158,196,129,15,115,215,3,0,140,118,235,253,26,97,186,3,31,102,178,95,127,42,60,250,114,20,250,14,72,234,122,241,193,180,22,205,115,137,228,36,99,37,150,220,227,175,67,229,130,71,94, +115,138,112,22,157,174,92,253,35,181,35,24,62,138,123,116,198,122,128,57,192,160,10,95,103,186,63,242,206,221,125,64,36,30,253,195,129,220,119,0,116,227,176,109,110,6,65,88,216,224,231,247,196,1,211,63, +198,122,2,56,244,239,199,55,11,218,118,157,241,232,98,182,231,174,58,197,252,243,245,168,241,110,67,108,153,198,14,115,228,218,145,237,213,71,160,234,65,233,158,152,0,16,125,154,96,56,91,117,199,7,51, +14,199,191,239,122,254,61,241,211,138,104,130,229,84,156,219,145,254,244,156,255,0,192,132,216,200,244,44,62,152,53,96,136,192,4,92,31,248,18,89,128,79,226,195,3,142,135,7,185,61,170,54,49,158,4,228,142, +248,54,159,135,10,195,129,232,121,207,94,132,80,4,63,190,29,86,3,146,120,204,170,113,144,15,30,113,201,193,207,60,146,14,122,228,39,239,178,71,151,7,174,79,154,120,246,63,104,246,192,192,245,192,231,53, +54,87,168,153,216,123,165,187,30,185,198,55,131,245,201,206,56,60,83,90,80,58,221,72,0,235,182,40,115,248,237,148,126,25,199,185,56,205,0,66,101,117,56,43,24,239,133,89,6,49,192,228,74,73,245,192,28,251, +26,111,155,198,91,0,159,238,9,179,207,224,126,185,39,175,110,6,102,251,66,28,147,125,56,246,54,227,142,115,206,36,110,51,207,224,122,212,77,37,161,36,29,66,76,159,91,87,200,62,195,105,4,103,243,61,70, +6,40,1,11,33,232,95,62,129,38,29,126,171,128,59,14,115,212,228,28,83,27,98,231,33,191,24,92,156,142,195,35,128,71,78,191,83,214,134,54,195,56,212,102,57,235,182,207,60,245,39,152,191,51,76,243,109,201, +57,212,39,56,56,230,200,231,30,188,40,227,147,198,121,31,136,160,4,201,60,171,30,115,255,0,46,237,159,209,113,158,115,142,59,244,207,17,178,228,140,239,60,118,128,254,103,229,207,92,231,146,78,122,102, +166,19,91,224,238,191,159,161,228,217,156,250,129,207,126,158,153,193,200,61,159,230,91,17,198,160,228,247,205,187,131,245,32,91,201,211,145,212,16,122,122,80,5,67,26,175,80,253,8,59,145,215,240,206,87, +183,25,237,232,105,76,104,113,202,142,221,14,127,34,195,63,159,99,211,173,90,197,179,117,212,8,39,24,205,180,231,31,136,177,35,223,169,28,211,127,209,79,93,72,241,211,54,211,113,244,255,0,137,121,199, +229,248,26,0,173,178,53,28,177,36,140,240,8,224,117,228,72,121,24,200,0,126,125,138,180,18,212,12,141,68,184,207,35,201,144,99,166,122,105,120,30,231,168,193,227,147,69,0,125,140,111,84,158,116,249,23, +36,103,62,104,29,58,159,248,151,40,3,3,174,62,180,11,188,228,11,17,142,48,197,238,7,232,52,227,147,129,207,191,57,231,3,17,174,98,83,180,219,48,227,141,175,6,125,243,133,36,241,216,140,245,245,160,92, +162,224,172,119,43,158,160,48,60,228,227,33,98,3,28,14,164,112,56,247,0,218,243,195,12,253,147,25,29,86,75,144,222,188,3,167,47,29,177,211,56,245,21,11,62,121,251,60,167,60,159,223,220,12,126,31,217,196, +114,121,239,216,241,200,25,102,248,124,199,202,185,35,147,192,231,39,167,27,64,36,115,142,125,120,244,120,191,36,96,45,224,25,238,88,242,7,79,149,112,6,7,183,81,207,39,0,22,139,142,84,193,41,25,254,245, +211,240,127,218,251,0,245,237,140,224,246,205,66,230,35,198,201,84,244,28,93,2,61,57,22,35,175,56,235,253,106,47,181,28,240,183,152,245,222,202,123,246,56,32,28,30,127,3,140,138,79,181,205,147,181,46, +134,8,193,51,17,159,169,33,115,131,159,92,231,62,185,0,71,85,39,42,215,94,131,31,107,192,231,215,236,7,62,252,251,123,80,161,200,3,205,184,92,244,226,108,103,32,227,15,98,57,207,208,14,132,241,74,215, +179,140,127,175,94,15,45,114,136,125,192,39,112,252,61,65,197,51,237,87,45,200,123,146,113,200,23,86,248,0,251,236,39,191,175,78,122,80,2,150,184,94,60,201,191,224,68,3,223,156,27,33,245,62,128,142,113, +138,97,23,12,114,38,144,113,140,43,169,56,30,223,99,219,239,193,200,197,40,158,114,78,69,219,19,193,205,202,16,62,152,76,19,248,119,30,185,40,94,98,56,146,112,112,70,214,153,72,28,99,147,228,159,199,160, +253,69,0,70,99,155,248,166,156,30,121,221,110,3,125,9,180,0,255,0,250,248,239,76,2,224,125,214,152,142,122,189,143,96,125,109,243,234,114,61,71,28,226,149,154,78,3,57,233,213,231,136,118,60,252,208,156, +227,190,61,254,180,132,115,205,192,94,153,205,196,24,227,31,244,195,29,61,125,198,121,160,4,243,46,1,234,120,25,57,54,36,231,232,45,8,246,193,228,158,221,5,63,204,186,60,134,60,246,31,96,29,241,212,219, +46,51,192,224,28,15,108,138,174,234,135,12,215,160,115,218,124,156,244,31,118,53,3,208,227,60,19,219,57,136,182,51,254,152,15,80,15,218,27,39,29,115,132,220,7,29,122,96,119,20,1,124,125,184,244,87,32, +115,195,88,30,57,56,255,0,84,59,119,3,233,206,105,27,237,189,2,176,232,14,69,139,15,167,8,59,242,49,156,15,173,80,14,164,228,221,41,227,56,251,91,130,64,62,131,147,192,224,17,244,7,20,214,146,54,206,46, +212,123,249,238,79,169,206,20,146,59,224,231,140,244,160,11,140,111,64,27,137,231,32,252,182,224,18,121,232,189,56,235,131,199,29,185,17,31,180,182,119,153,48,56,249,68,68,243,142,193,137,233,156,118, +245,235,84,204,144,144,127,210,184,82,58,60,135,145,129,198,24,96,117,234,64,245,235,202,121,177,15,185,124,87,215,24,227,215,172,199,191,98,7,56,250,0,11,44,37,201,36,206,202,1,229,146,51,208,14,57,206, +57,252,127,12,138,65,44,185,0,44,216,7,24,9,207,78,135,4,14,190,196,254,181,80,202,156,129,168,76,122,224,40,81,255,0,160,201,211,158,216,245,226,151,13,128,69,252,195,140,145,216,147,244,114,125,189, +120,56,247,0,186,37,155,4,254,245,7,32,255,0,163,182,114,79,174,229,236,71,126,227,131,217,165,164,207,47,56,198,70,22,39,63,78,60,225,131,235,156,117,234,64,170,140,142,216,198,161,49,198,51,185,38,36, +156,255,0,178,216,198,56,201,31,92,14,104,10,193,177,246,153,75,2,62,240,96,9,232,0,220,61,184,3,169,234,40,2,203,3,193,47,116,115,235,9,233,199,64,101,61,206,120,29,79,224,98,33,122,153,110,65,4,245, +182,108,1,215,174,91,145,198,78,7,28,99,189,27,100,199,19,144,71,25,198,8,207,208,110,56,199,39,168,233,158,69,0,204,184,255,0,72,124,118,11,147,142,216,249,71,78,189,71,57,20,0,223,50,53,56,243,166,199, +247,124,130,63,45,209,145,207,57,228,246,29,122,187,205,182,232,210,59,103,63,122,52,231,3,29,192,192,193,201,231,242,234,79,54,112,64,251,76,195,223,99,244,255,0,128,183,225,212,240,113,140,82,137,238, +49,129,113,47,67,201,18,131,232,56,243,15,176,207,226,120,160,4,243,109,148,231,121,235,199,238,162,35,142,157,121,237,73,246,152,186,249,139,129,255,0,76,163,7,242,2,154,102,187,198,62,210,199,57,235, +246,142,217,238,175,156,246,247,198,56,198,41,76,147,176,230,227,0,99,35,55,192,147,147,217,102,39,168,199,24,29,56,160,6,27,139,96,14,251,164,92,231,131,18,128,167,183,63,55,25,255,0,100,122,119,168, +77,213,160,255,0,151,200,142,50,6,20,40,231,223,203,7,240,199,231,222,81,36,170,114,110,23,61,129,123,209,145,233,143,181,47,230,125,58,83,140,242,240,126,208,171,208,147,155,146,70,6,58,181,217,231,147, +207,92,247,233,128,8,62,211,106,72,197,200,233,156,5,97,158,188,255,0,171,199,32,245,227,20,211,115,6,56,156,17,156,100,110,29,189,64,246,199,127,76,224,96,90,251,76,205,144,183,155,72,29,65,156,145,200, +231,113,186,94,249,207,191,94,244,11,155,156,115,126,252,122,75,48,232,113,208,92,158,163,143,124,158,185,160,10,191,107,132,2,4,224,99,174,233,74,228,117,28,49,227,233,220,245,165,91,178,6,212,157,177, +211,10,238,65,207,3,4,58,131,143,76,117,57,198,48,106,216,158,102,231,251,73,198,125,94,86,207,95,75,179,244,36,0,50,123,227,20,221,215,76,79,252,77,6,211,144,1,105,192,234,51,146,46,143,82,15,110,190, +160,2,64,34,251,84,195,254,90,202,71,251,18,177,3,215,172,153,207,183,229,156,208,47,37,7,253,101,231,61,7,152,216,56,36,231,133,39,156,118,246,199,106,148,69,54,121,212,128,206,9,217,37,195,117,201,237, +113,249,127,44,211,197,188,235,143,248,152,182,73,199,47,112,184,7,29,71,152,71,161,228,254,57,28,0,48,205,43,14,102,187,35,208,201,40,35,190,14,83,158,222,158,227,209,84,207,158,26,236,147,208,139,134, +82,63,242,17,30,190,153,245,244,119,145,113,128,70,160,196,142,127,214,200,79,110,153,124,251,183,234,56,169,86,59,176,184,251,108,108,112,49,150,99,219,184,12,71,215,223,156,142,77,0,70,22,240,12,135, +190,28,129,204,231,211,128,79,151,130,71,176,199,126,51,75,186,233,115,153,110,113,206,1,187,199,61,191,229,153,61,61,71,56,235,145,195,188,171,178,73,251,84,39,146,62,102,113,198,71,28,41,252,58,142, +1,165,242,175,59,220,64,125,203,74,58,246,200,24,199,83,198,120,62,188,16,6,9,39,231,116,178,227,142,126,214,1,28,243,147,228,156,227,219,57,252,6,37,89,46,8,192,121,219,142,162,240,231,176,227,22,185, +62,221,79,208,212,38,41,242,63,210,108,193,32,100,180,115,176,199,224,121,250,158,112,63,2,223,34,94,79,218,172,185,207,72,36,207,212,229,73,192,207,124,31,74,0,186,26,98,0,43,63,24,57,107,198,3,3,3,141, +214,221,184,227,143,124,158,140,46,225,185,87,56,199,91,198,35,177,233,246,64,120,254,167,131,129,80,44,19,103,137,109,155,35,160,129,137,200,206,120,48,144,58,30,135,29,58,84,158,77,208,31,44,214,202, +125,77,163,96,119,235,229,1,201,56,255,0,245,80,4,155,228,231,168,245,205,204,164,245,57,24,54,97,189,59,231,61,42,54,154,69,234,161,184,25,45,51,30,153,254,245,186,145,143,248,9,7,167,99,71,151,114,163, +31,106,178,4,30,65,178,92,247,200,201,192,29,57,244,238,59,210,4,156,12,253,170,204,250,109,178,143,110,7,82,8,151,61,58,96,112,127,28,0,11,121,179,130,19,32,245,222,231,30,248,40,15,96,112,6,127,163, +190,222,191,197,28,109,234,55,62,123,100,28,128,63,47,112,73,52,111,148,112,110,45,185,207,63,100,136,116,7,156,52,195,144,7,113,212,145,147,221,222,108,184,255,0,143,216,87,32,99,253,30,219,244,204,224, +142,59,103,142,252,245,0,70,190,135,161,132,145,192,198,36,32,15,78,19,24,28,96,156,96,250,113,72,183,113,28,98,216,228,19,201,142,126,185,29,113,183,57,231,158,61,120,57,160,201,33,7,55,214,231,253,232, +45,128,29,59,27,130,62,152,63,135,28,166,93,191,229,250,215,129,208,69,108,15,111,73,152,116,239,219,234,0,0,18,53,192,32,17,20,105,233,186,25,185,235,144,50,248,227,61,251,231,174,51,76,107,149,206,15, +148,188,242,68,82,115,223,168,148,31,175,35,215,158,200,3,140,145,113,110,121,234,69,175,60,250,43,99,39,175,36,224,103,156,226,165,1,128,249,174,173,7,191,151,11,99,29,70,124,207,167,111,124,224,208, +3,86,120,201,192,145,115,234,81,176,64,192,3,155,161,199,80,123,96,253,13,27,227,57,253,244,92,227,130,172,56,232,51,254,150,190,131,28,144,9,199,96,105,217,43,207,218,44,219,146,57,91,96,71,78,129,166, +76,103,28,242,121,228,115,74,28,140,124,246,140,72,228,110,180,95,200,137,241,158,195,145,130,15,92,240,0,128,32,63,235,97,247,224,240,123,112,110,201,201,57,244,233,237,82,175,76,9,16,15,117,7,142,63, +233,179,122,14,58,115,193,244,80,222,214,231,158,190,116,0,100,231,57,196,167,60,14,160,247,231,34,158,17,28,18,68,68,156,242,183,17,159,253,172,24,31,76,174,125,207,20,0,171,8,110,119,171,28,245,1,8, +231,61,140,249,24,237,140,99,25,2,158,109,155,56,14,128,246,201,10,123,231,143,180,224,18,125,123,147,193,230,162,242,98,61,81,14,51,201,157,51,239,210,124,241,199,4,12,125,77,56,121,81,241,229,70,253, +249,148,55,243,156,1,248,96,254,148,1,100,90,56,27,141,196,99,175,25,139,243,32,204,113,142,184,239,200,246,167,249,36,125,233,20,159,111,178,128,79,108,124,192,224,243,193,39,167,92,212,42,201,242,176, +180,136,227,145,135,30,252,2,46,134,79,57,199,225,236,103,4,145,197,162,3,198,62,99,158,190,191,110,201,200,244,250,103,208,2,65,30,238,55,177,29,113,182,44,114,61,152,255,0,34,49,201,29,140,162,12,156, +0,126,172,169,143,113,192,98,15,191,106,128,23,255,0,159,60,156,140,109,124,125,14,126,218,199,166,14,49,201,231,62,174,30,97,7,54,133,125,127,210,100,7,3,142,139,114,216,61,121,199,127,122,0,178,176, +145,209,119,114,112,55,42,243,142,156,194,73,207,3,166,59,246,169,86,30,0,242,192,245,38,69,7,31,95,178,227,30,156,228,125,42,154,249,171,200,181,39,60,127,199,244,231,220,15,188,121,56,198,59,122,242, +49,32,50,19,205,169,206,59,222,76,78,61,129,76,117,247,250,19,154,0,178,32,206,73,10,113,216,92,109,207,97,156,68,184,237,253,105,12,65,64,59,120,30,151,68,123,103,43,25,61,115,198,120,199,76,98,160,37, +129,63,232,172,61,254,214,15,227,204,103,29,123,2,51,244,167,43,185,207,250,59,99,175,23,100,227,219,229,136,99,232,64,244,197,0,59,49,228,253,252,131,200,251,99,145,199,108,52,99,158,195,7,161,236,57, +167,22,139,209,187,3,251,252,251,244,250,247,31,151,28,51,229,111,249,99,46,125,22,233,121,224,119,104,125,114,122,146,125,170,79,44,99,38,11,159,108,222,34,129,216,224,249,4,123,113,219,183,160,3,67, +38,14,55,143,164,175,128,7,176,96,56,24,231,244,21,32,104,78,51,188,224,117,243,246,254,24,243,179,211,219,31,78,148,208,176,174,73,138,227,219,253,50,54,250,244,131,174,7,65,212,231,222,157,230,219,14, +12,87,25,237,254,151,22,127,16,109,254,167,169,227,29,59,128,74,100,128,129,137,10,241,211,237,71,249,249,252,127,158,49,213,68,200,56,18,72,6,70,15,218,11,99,220,126,255,0,245,231,175,83,138,65,45,175, +104,167,36,1,159,244,152,27,243,6,60,103,167,32,125,112,77,74,46,109,70,223,221,73,145,208,23,183,108,114,58,226,46,252,122,115,64,10,46,84,3,254,147,56,231,7,108,142,120,62,132,76,64,235,208,14,61,241, +79,23,49,16,115,61,225,56,28,137,29,191,155,28,119,252,49,223,56,104,158,212,113,181,193,201,224,188,62,216,227,106,231,62,135,29,123,244,15,23,48,131,208,99,176,118,143,56,239,141,167,174,56,207,56,247, +238,0,225,50,127,207,205,216,201,254,35,149,245,199,14,59,129,233,199,7,61,229,19,40,233,115,41,231,57,33,72,231,212,52,135,31,128,31,76,244,106,221,38,56,41,131,140,140,0,1,224,117,4,142,195,255,0,173, +78,23,125,0,84,249,122,156,245,244,3,14,8,31,67,140,128,115,215,0,18,9,87,57,23,77,238,10,39,56,25,24,37,27,168,60,115,245,167,249,232,58,221,33,247,45,8,56,62,219,65,253,57,193,244,225,5,192,25,98,21, +123,28,172,167,30,234,68,202,56,207,35,140,244,197,56,74,237,202,144,192,14,48,39,82,51,193,228,221,1,159,192,244,206,123,16,8,94,101,232,183,104,0,206,14,99,127,168,192,129,207,110,228,126,32,102,162, +243,88,158,110,226,62,129,160,136,143,124,110,183,239,238,123,113,218,174,102,94,15,204,127,221,55,7,190,58,27,177,250,100,82,179,204,189,1,57,29,146,115,223,57,1,175,115,208,119,0,245,24,234,104,2,183, +156,216,195,93,64,0,31,243,233,22,114,58,116,133,114,49,223,57,201,28,2,70,24,100,234,86,237,65,25,200,91,72,199,168,234,66,140,158,185,60,126,88,169,140,147,147,247,36,36,119,217,49,199,212,125,183,7, +245,30,134,154,210,78,63,231,177,232,78,34,144,145,128,123,253,180,159,208,243,129,158,244,1,22,246,251,162,238,53,244,205,149,187,103,39,221,191,166,115,211,189,56,72,200,51,246,152,9,206,114,44,98,24, +198,8,227,37,127,50,57,25,226,158,39,148,140,21,149,137,236,82,80,195,159,67,117,158,123,99,168,7,223,1,150,94,115,20,141,198,62,111,180,2,62,161,110,48,115,199,25,56,201,227,131,64,12,50,179,16,26,231, +211,254,92,97,35,29,128,200,98,163,0,15,215,166,48,162,82,160,149,185,24,231,165,172,67,215,61,16,15,108,117,237,205,56,74,224,125,199,4,127,179,115,199,30,191,106,4,1,199,113,158,14,7,100,55,18,114,26, +55,42,79,67,231,168,246,199,250,73,233,195,96,231,245,2,128,32,50,190,114,179,54,113,213,96,140,112,123,96,35,1,211,212,126,20,138,100,39,150,145,187,140,193,14,73,228,113,251,176,123,243,200,237,207, +106,153,110,19,28,194,192,231,57,95,59,118,59,228,180,196,103,28,126,28,117,20,227,36,77,146,99,126,163,25,50,0,7,124,230,124,241,158,196,99,61,186,16,6,144,248,255,0,86,199,161,199,147,10,250,103,160, +199,168,253,115,218,163,44,221,224,152,117,201,9,7,182,74,130,140,15,62,188,244,25,61,76,251,173,127,138,35,248,75,38,71,175,30,118,127,151,111,65,82,160,180,63,194,87,39,161,184,145,73,231,29,12,195, +30,156,100,103,52,1,68,182,58,219,74,65,60,110,22,170,120,24,201,253,217,207,215,219,29,113,73,247,176,69,174,121,201,6,75,65,156,244,235,7,61,135,28,127,49,165,229,217,28,16,153,207,82,110,228,29,176, +122,77,142,62,167,235,154,113,134,207,130,177,144,72,234,183,57,245,28,150,185,36,251,142,58,14,58,208,6,96,4,228,11,49,158,128,125,162,208,144,112,58,143,179,145,159,166,125,58,114,91,229,50,156,253, +137,9,61,9,154,204,247,228,255,0,199,191,183,61,127,199,65,162,131,36,40,113,206,65,251,68,32,255,0,227,243,159,243,248,210,8,97,245,151,140,224,249,246,103,161,244,251,71,110,122,142,220,231,154,0,162, +82,110,246,145,140,131,199,153,103,147,207,39,152,71,108,228,117,56,24,233,74,169,40,7,108,17,129,212,96,217,144,15,253,248,94,254,227,160,227,154,187,228,65,158,26,81,144,114,76,246,103,167,79,249,104, +125,125,15,210,157,229,198,50,3,190,58,115,61,128,199,62,234,65,236,79,3,36,116,38,128,42,170,220,168,33,81,23,211,30,74,159,192,172,92,127,35,244,198,16,173,235,117,41,193,207,252,178,60,241,215,48,245, +192,227,233,233,210,201,142,48,15,205,216,117,155,79,239,212,103,203,250,244,0,28,98,161,112,113,129,32,3,208,79,166,113,238,51,25,239,198,61,59,245,160,10,237,29,209,227,204,140,28,15,151,202,140,147, +215,28,44,4,100,156,117,35,250,80,35,184,31,122,104,7,166,33,66,113,238,60,144,1,252,122,244,167,148,108,103,204,28,18,51,231,233,167,62,159,242,196,227,243,199,175,20,204,72,188,150,92,127,179,62,156, +56,239,147,229,30,123,241,211,191,108,128,63,51,47,31,105,183,36,28,12,90,198,78,127,239,158,195,159,108,123,28,5,231,25,63,105,140,245,4,11,53,233,193,231,35,142,131,177,235,208,212,44,242,245,19,108, +246,23,154,122,238,252,82,223,35,232,91,140,99,189,52,51,146,7,154,184,245,55,150,135,243,219,1,201,201,252,115,239,154,0,176,101,159,24,75,200,199,183,217,74,243,215,61,15,63,151,108,103,154,141,154, +232,243,246,203,118,198,15,250,134,4,253,126,65,147,245,235,142,56,160,23,193,249,227,35,57,230,238,221,115,142,63,231,129,207,94,50,70,51,219,60,160,36,156,230,44,116,230,246,12,142,252,124,139,193,239, +144,49,142,189,40,1,133,238,14,65,185,139,0,118,86,7,212,142,72,207,35,24,28,1,138,141,154,64,49,246,132,207,95,245,96,231,216,14,73,244,201,199,182,77,74,193,155,163,219,129,187,254,130,48,3,142,220, +110,81,216,127,158,145,152,228,60,121,240,143,111,237,8,113,216,103,31,105,92,30,73,224,127,245,192,33,50,50,242,102,143,212,145,30,9,250,224,0,49,158,167,169,60,228,1,77,50,231,254,91,71,255,0,125,99, +219,156,50,224,244,227,31,83,154,178,176,63,121,35,39,142,63,180,33,207,32,231,173,198,113,201,239,215,60,82,152,88,115,189,51,200,44,215,240,131,219,161,251,74,159,110,130,128,42,153,216,96,9,162,4,100, +253,242,8,193,234,71,153,145,245,3,3,39,210,161,123,153,143,73,16,128,120,196,142,185,207,127,150,79,229,145,211,175,36,92,251,57,36,102,88,199,127,249,8,196,7,254,59,119,159,243,248,83,126,198,14,51, +52,39,35,190,160,59,145,215,109,208,29,125,126,156,138,0,207,55,50,147,204,144,131,220,249,204,199,158,48,51,32,35,242,244,233,154,172,247,110,58,205,22,220,246,120,243,142,49,146,243,142,120,63,94,9, +239,157,134,177,4,114,214,248,255,0,175,240,14,126,130,255,0,159,193,126,128,85,118,211,99,39,150,140,14,191,241,250,113,158,191,195,125,211,35,161,254,93,0,51,126,220,164,99,207,199,29,85,237,114,113, +142,135,237,57,108,3,129,211,235,192,166,27,194,72,34,232,40,234,1,91,102,252,241,116,73,61,135,62,156,14,49,120,233,200,57,18,91,175,25,195,106,12,8,63,65,123,159,204,145,200,24,237,81,29,50,62,88,203, +25,25,193,85,212,79,35,156,252,166,241,135,32,244,30,222,134,128,41,155,166,31,242,222,22,231,140,193,25,227,215,137,243,248,240,61,64,226,163,55,57,255,0,151,136,212,251,67,9,29,71,111,63,35,175,57,3, +28,158,217,171,205,167,219,12,101,135,28,243,126,113,211,158,5,193,201,253,127,153,128,216,91,131,129,33,7,145,255,0,31,236,57,199,60,7,224,114,51,207,28,243,64,21,77,207,173,212,106,70,115,251,152,207, +25,233,145,33,24,61,176,115,248,212,127,104,206,7,219,35,227,166,96,140,126,4,137,51,248,159,199,35,138,180,108,162,92,144,235,223,57,191,144,28,117,227,247,157,51,201,200,61,136,231,25,132,218,39,110, +70,56,11,122,204,73,235,220,147,211,142,120,247,233,64,16,22,47,130,111,45,152,246,221,12,68,253,48,100,30,189,251,250,115,77,242,115,130,46,161,35,147,133,180,143,28,118,200,118,228,30,64,247,239,205, +56,192,249,27,98,118,82,217,63,233,68,146,63,224,46,59,103,168,60,211,124,147,156,53,181,200,238,63,210,91,25,30,228,183,56,198,112,113,156,224,224,226,128,29,228,72,249,2,120,78,112,6,109,192,207,168, +202,28,142,220,228,30,192,99,147,19,217,76,64,219,37,184,30,173,5,206,63,151,25,207,92,253,57,233,46,199,28,8,110,113,212,1,120,84,231,156,127,16,233,220,2,59,116,235,76,43,38,79,238,175,1,35,63,45,193, +115,232,9,199,57,227,191,231,210,128,32,251,20,153,249,158,208,103,183,145,114,9,252,131,14,121,57,227,24,52,191,98,110,10,201,111,147,156,126,230,94,160,246,6,32,115,207,35,142,157,187,203,182,69,228, +197,126,79,174,75,100,30,58,109,97,142,217,63,202,144,253,168,231,106,222,227,176,33,198,122,113,140,1,212,243,142,190,156,242,0,193,99,55,80,45,95,28,224,193,39,7,159,88,191,207,165,40,178,184,207,41, +100,62,168,71,243,65,219,39,212,123,99,133,6,243,161,138,243,169,201,49,179,103,167,125,189,115,200,192,227,158,153,225,142,215,4,242,183,132,241,144,33,32,245,7,0,236,198,7,28,100,244,31,64,1,47,216, +238,200,202,199,167,124,189,50,164,114,120,192,196,71,57,235,206,115,145,245,164,54,247,67,36,195,101,145,217,68,156,119,234,45,200,233,206,227,129,239,215,17,40,155,140,199,123,131,211,247,39,60,99,57, +249,57,206,123,122,30,180,224,173,159,155,251,65,71,25,217,15,56,207,76,24,192,250,103,184,252,64,3,28,92,161,230,43,46,113,193,18,156,126,6,219,31,168,254,85,3,187,231,253,77,137,239,146,238,163,240, +31,103,199,61,128,29,115,158,149,103,202,28,145,38,166,61,51,111,22,49,245,224,245,232,48,58,146,113,216,242,65,56,50,234,127,132,49,129,212,250,176,255,0,3,205,0,84,243,73,227,236,250,120,3,60,43,146, +8,39,185,49,3,147,199,57,192,207,76,103,44,50,133,206,45,237,58,159,186,196,245,199,111,36,115,239,219,28,123,104,136,49,200,125,64,145,146,127,115,2,231,223,146,72,199,25,200,247,29,170,35,25,254,22, +191,207,171,73,108,15,190,84,99,31,152,250,80,6,121,184,97,194,218,90,18,120,201,146,79,174,48,177,156,245,29,187,126,2,22,154,67,159,244,107,69,56,201,62,100,223,200,70,8,244,200,4,142,131,34,181,60, +150,111,188,215,231,142,72,150,34,9,62,191,63,115,158,253,248,30,160,180,82,1,15,127,234,114,232,15,94,58,79,140,123,0,14,63,2,0,48,204,131,57,104,173,9,232,113,45,208,32,147,142,71,151,130,61,57,231, +145,214,162,103,79,227,130,212,46,70,14,249,201,28,142,126,101,231,57,247,234,126,181,191,246,20,32,252,218,137,235,146,100,207,229,251,225,143,194,154,218,122,0,15,252,76,0,245,44,122,244,198,76,160, +122,99,215,168,160,14,112,188,36,238,17,195,128,57,3,205,57,4,99,141,197,122,99,208,129,223,111,57,20,39,4,68,153,29,247,73,248,28,130,112,121,231,28,143,124,86,239,246,105,201,10,111,57,231,230,121,58, +113,207,203,48,246,228,113,218,134,210,110,48,63,214,144,122,102,105,206,73,245,196,237,219,233,236,5,0,115,239,26,179,15,145,58,117,45,118,121,235,215,33,112,14,0,60,129,215,142,112,211,10,116,100,143, +215,45,113,58,15,168,82,114,61,63,200,173,179,166,92,143,249,103,51,103,161,18,92,145,215,31,243,215,119,233,193,238,114,42,38,176,188,24,196,115,14,112,121,187,39,176,224,137,70,63,175,243,0,197,48,169, +224,45,167,76,252,211,200,49,255,0,125,16,58,103,158,131,191,67,72,109,65,234,182,89,35,32,155,135,7,182,57,193,232,58,115,212,113,233,91,98,198,236,2,124,171,174,228,237,91,230,39,241,19,144,71,83,208, +99,191,67,81,27,43,188,100,173,224,199,32,176,189,81,216,3,247,206,59,156,244,201,244,4,80,6,55,217,85,127,138,219,175,107,178,15,29,70,50,15,185,3,29,71,78,40,16,38,48,166,220,16,57,43,121,25,29,123, +135,114,112,61,70,115,158,49,90,77,5,218,224,133,185,201,207,32,220,227,25,227,239,35,3,199,182,9,250,138,140,197,120,9,33,47,115,223,13,63,184,207,205,24,30,252,113,158,156,10,0,160,109,206,51,190,6, +29,126,91,164,4,231,216,115,128,125,243,206,51,205,70,96,108,252,200,140,63,218,186,78,112,61,73,61,129,231,29,249,24,6,175,56,212,23,128,47,64,39,24,253,225,60,255,0,192,7,215,161,236,6,115,196,37,181, +19,193,75,146,0,224,21,148,113,159,120,206,113,142,217,228,208,5,38,128,119,75,124,22,39,6,245,7,7,35,28,198,121,24,235,237,192,206,112,159,103,143,35,104,182,231,146,77,252,62,184,233,228,146,71,57,39, +143,199,53,97,158,96,126,107,107,178,115,215,99,183,78,159,55,216,216,144,64,239,198,115,239,76,222,228,29,208,94,14,123,161,218,14,49,147,190,211,211,174,1,252,57,36,2,179,64,1,56,54,188,117,63,105,73, +6,71,35,133,128,253,114,0,25,231,142,13,11,7,57,2,15,114,36,192,60,231,144,33,238,63,193,106,87,112,71,250,171,128,70,127,231,154,158,59,128,108,137,239,215,25,29,106,7,216,127,229,156,222,164,177,136, +254,159,96,3,143,76,231,175,35,176,3,154,22,232,162,28,159,71,56,207,64,79,238,57,207,212,31,90,104,181,159,31,242,201,135,126,89,189,199,38,2,1,198,113,142,184,61,121,21,14,35,228,121,60,129,206,225, +30,79,231,106,58,103,161,245,63,131,118,103,4,68,7,96,3,42,253,15,201,106,120,227,218,128,37,54,142,121,99,24,255,0,190,177,249,11,86,198,125,122,125,58,84,77,108,125,34,24,239,134,63,150,109,57,29,249, +252,185,52,223,45,6,114,137,145,253,230,36,30,253,26,16,56,199,110,15,94,57,168,241,25,60,193,17,231,168,81,207,177,196,99,25,245,35,175,214,128,36,54,135,166,251,85,206,87,230,141,1,3,39,131,254,133, +131,142,185,247,233,212,210,253,141,186,153,173,61,7,200,141,159,160,251,15,115,238,62,152,3,13,217,30,51,246,104,248,57,27,67,245,56,234,2,1,142,125,184,252,203,138,198,49,136,17,73,254,242,73,211,175, +240,227,219,131,193,160,6,155,89,1,202,188,24,247,134,30,71,61,63,209,84,142,126,160,99,30,229,162,218,94,128,91,144,49,200,142,62,248,60,145,111,253,51,252,170,96,0,28,44,121,199,42,98,147,211,219,39, +235,143,108,100,80,76,217,4,8,241,201,226,222,102,235,220,2,7,66,0,231,167,126,162,128,42,27,105,65,231,201,7,57,57,42,7,78,192,219,99,35,29,73,192,35,158,194,163,251,51,115,185,226,231,0,237,117,0,1, +244,182,25,199,92,147,236,58,86,145,123,156,112,84,113,255,0,60,37,254,164,0,62,189,58,98,143,50,239,158,1,63,221,17,62,113,236,62,247,115,192,224,251,118,0,200,107,88,65,63,53,185,245,37,148,145,237, +205,177,31,82,123,142,157,233,162,221,113,242,139,126,61,199,110,128,31,177,100,103,175,31,67,214,181,204,151,3,36,64,73,24,199,238,38,61,72,207,4,128,122,114,48,191,128,168,119,93,130,72,183,35,63,244, +236,217,231,62,231,131,223,4,224,241,64,25,198,221,142,73,48,14,58,121,204,61,250,139,69,30,156,158,249,231,20,159,102,99,198,228,246,196,242,96,158,115,146,32,31,142,115,252,235,75,117,241,228,64,192, +142,254,84,192,126,37,20,224,119,233,192,235,212,84,103,237,223,197,3,243,143,227,153,115,159,103,199,175,7,7,131,199,165,0,103,53,182,8,249,128,192,234,38,185,57,61,184,242,71,175,61,56,193,197,87,146, +9,49,254,185,113,208,141,247,108,199,4,14,130,44,122,146,8,244,29,50,78,179,155,210,70,45,223,234,37,147,35,158,188,169,3,175,76,241,211,60,102,171,176,186,239,109,43,103,158,36,113,199,76,253,211,156, +15,225,29,113,198,13,0,100,249,108,9,204,174,71,39,253,85,201,237,140,252,214,231,56,253,71,30,244,224,174,62,237,195,14,248,22,178,49,237,147,204,30,254,231,131,211,165,105,121,50,159,191,105,55,169, +34,105,187,228,227,5,0,231,57,239,199,30,193,134,12,117,179,184,108,228,228,201,49,3,56,245,43,207,168,239,219,7,130,1,156,82,112,14,46,39,250,181,148,128,14,157,205,184,25,231,140,19,199,82,71,88,74, +92,158,13,212,216,234,74,218,184,60,117,25,251,54,58,250,145,211,156,86,153,133,78,127,208,230,82,70,239,189,49,232,122,156,57,247,234,125,48,58,82,11,104,200,207,149,42,242,73,31,63,177,231,115,251,241, +223,25,205,0,103,237,148,125,235,155,158,231,152,91,60,14,199,202,0,247,236,59,211,4,110,58,61,209,234,78,45,89,179,212,100,144,23,182,70,72,238,120,199,21,172,45,224,83,196,76,125,132,106,91,191,172, +160,158,157,191,253,72,98,182,231,54,175,143,250,228,59,227,161,23,88,29,255,0,199,181,0,101,21,159,158,110,179,140,12,195,42,146,6,121,36,70,223,200,140,147,239,76,38,111,226,107,222,59,108,184,28,228, +117,2,15,126,115,140,113,90,166,59,80,9,251,54,222,184,204,10,248,25,24,233,117,147,159,76,3,222,162,48,217,159,191,26,169,233,134,181,113,249,127,165,12,231,167,57,235,239,146,1,156,50,58,199,116,196, +247,217,62,57,32,100,255,0,163,159,127,94,113,200,233,69,95,16,89,240,4,49,18,70,6,235,89,14,15,127,189,115,140,247,206,122,242,125,1,64,31,69,125,162,60,225,165,188,60,146,114,24,30,131,169,37,27,35, +61,55,16,120,164,18,68,199,1,238,121,254,243,56,206,59,255,0,175,233,215,215,3,57,239,82,60,231,25,51,42,140,227,44,170,1,228,116,219,35,12,100,15,94,132,156,84,102,102,28,139,136,88,247,220,139,158,61, +213,11,100,250,131,147,215,38,128,16,199,19,54,127,121,147,158,76,132,251,30,178,19,130,120,232,127,83,148,48,195,140,153,49,140,240,89,1,35,3,3,145,158,115,235,223,185,166,51,179,15,245,246,103,184,12, +167,112,207,24,198,7,175,28,126,57,198,64,242,14,147,89,99,3,254,122,142,248,198,21,122,241,201,227,245,228,1,124,168,178,165,101,82,113,207,239,149,125,250,109,110,70,125,248,236,15,37,26,4,207,202,32, +110,188,9,211,61,8,199,205,11,14,14,115,250,241,209,67,190,57,158,200,115,247,115,50,243,199,35,42,7,28,116,207,110,120,52,198,126,6,103,180,221,236,211,227,140,142,118,129,220,147,207,215,156,154,0,12, +24,192,48,131,233,254,147,14,61,56,255,0,70,61,206,123,28,126,116,8,177,128,45,17,129,231,63,104,132,131,215,140,155,110,227,250,84,100,41,60,92,89,2,71,117,148,227,156,119,35,233,147,200,233,218,161, +8,9,255,0,143,219,62,189,60,169,137,227,176,196,128,244,231,36,251,227,38,128,39,49,174,73,251,36,92,113,143,180,219,146,15,35,248,160,250,244,3,191,109,160,55,203,13,247,108,99,250,125,162,219,112,250, +21,132,3,211,129,208,123,83,12,96,253,235,171,97,130,113,136,102,102,207,208,205,144,122,116,235,239,138,54,237,255,0,150,214,207,131,222,214,115,193,24,32,19,48,83,235,199,211,189,0,35,91,228,1,246,72, +251,142,110,109,70,238,71,92,218,146,72,235,146,199,57,29,122,208,150,172,51,139,72,84,247,2,75,102,233,156,103,22,103,4,126,185,36,226,164,37,112,9,146,217,114,58,139,25,122,15,117,184,4,143,192,31,161, +197,52,50,47,75,152,62,163,79,118,60,100,255,0,20,164,227,142,73,62,135,158,192,13,54,224,116,180,66,65,254,244,7,131,215,165,176,0,28,228,100,99,175,190,16,219,49,198,109,35,28,12,128,34,232,71,35,2, +30,152,60,1,250,228,211,154,113,140,139,187,98,50,63,230,30,231,30,156,110,193,207,126,115,146,106,22,144,243,254,153,1,235,192,211,95,142,185,254,38,246,237,219,60,208,4,203,0,7,155,108,14,56,1,64,35, +159,72,198,15,29,70,59,81,229,71,131,251,136,70,79,70,13,145,145,193,60,113,239,142,78,61,56,170,222,97,199,23,208,41,57,200,254,206,117,244,63,220,198,8,237,207,3,61,248,60,233,65,192,191,136,12,30,69, +131,12,0,51,255,0,60,241,143,92,144,62,184,160,9,188,164,28,121,86,131,174,119,52,191,150,86,69,94,221,59,246,29,41,164,34,228,4,180,199,251,38,224,99,128,78,118,206,64,235,198,49,140,84,34,105,15,63, +108,71,224,15,248,246,117,61,7,172,36,30,0,199,97,219,0,230,147,237,47,158,46,97,3,253,171,101,39,142,159,48,132,145,232,49,207,78,135,38,128,39,3,28,134,178,80,59,19,125,235,140,127,173,32,159,94,14, +56,25,56,165,15,199,6,207,220,143,237,3,207,61,132,139,219,176,232,127,0,107,53,196,164,28,92,67,147,220,68,23,167,214,28,253,59,251,99,53,3,203,54,6,110,242,59,100,0,57,56,60,249,39,3,147,235,158,104, +3,80,206,196,5,205,177,29,112,19,81,62,253,77,193,199,62,217,231,181,64,101,126,161,109,113,158,164,223,3,199,92,102,224,118,231,28,16,57,247,172,255,0,61,134,65,184,76,3,140,124,157,122,231,253,72,235, +130,122,83,76,171,207,204,173,142,184,42,70,121,228,102,221,127,207,79,74,0,209,243,192,35,229,182,207,25,62,102,160,71,94,160,27,146,189,249,254,116,214,184,92,146,82,220,224,12,230,91,222,120,231,254, +94,134,61,123,126,184,172,255,0,53,7,252,179,86,231,254,122,32,30,216,6,221,176,7,28,254,99,138,85,184,143,31,234,179,158,187,103,81,207,111,249,96,56,227,174,48,113,211,52,1,120,92,174,113,178,30,224, +98,91,226,6,58,255,0,203,223,110,220,240,106,88,238,23,254,153,130,71,37,26,243,24,231,251,215,44,15,127,211,165,103,125,169,9,255,0,143,124,175,80,77,202,142,51,211,31,103,4,245,250,17,207,189,59,237, +144,30,26,204,224,119,251,64,108,142,51,140,66,115,235,142,57,29,142,40,3,87,205,67,247,153,72,233,141,247,96,254,146,149,193,57,207,126,190,213,32,48,185,59,131,55,29,165,188,24,39,61,114,88,250,123, +118,244,172,102,187,133,135,22,123,64,200,229,200,252,126,88,88,118,231,24,231,161,29,207,180,197,156,125,156,128,51,193,102,199,57,207,63,103,233,199,174,7,29,168,3,111,203,181,25,202,178,241,145,153, +231,39,145,199,4,240,14,7,59,9,166,109,182,199,221,145,64,244,185,157,65,25,3,39,49,183,78,231,63,153,172,161,61,187,28,121,73,128,56,220,88,246,29,8,141,121,199,167,124,227,173,60,60,7,164,17,158,115, +144,36,29,58,146,78,51,131,146,70,223,166,71,20,1,164,5,169,56,47,40,7,31,118,226,102,30,195,136,215,156,115,200,235,223,0,237,121,75,98,64,73,31,183,89,166,28,231,29,211,57,31,203,245,203,243,162,94, +60,148,81,212,157,239,199,184,27,248,0,118,193,228,12,119,195,188,235,118,7,40,128,250,151,144,145,212,159,225,192,250,227,61,15,166,64,52,252,164,207,23,18,125,76,179,183,124,246,140,227,24,61,241,145, +218,147,236,170,249,63,106,101,25,57,221,44,184,207,215,202,228,244,238,70,58,142,107,59,48,17,242,133,30,184,145,142,127,60,122,244,7,166,120,60,83,247,91,129,243,96,143,247,152,244,239,200,31,79,195, +243,0,190,45,81,115,139,213,83,206,127,126,248,224,231,159,151,56,39,219,244,166,125,157,1,230,228,17,211,34,86,35,63,66,163,29,206,71,30,216,170,130,72,139,13,132,99,175,221,7,29,63,188,157,125,121,32, +122,26,112,43,207,39,219,230,136,113,159,78,6,127,30,6,113,212,80,5,143,179,160,60,221,142,127,186,55,96,140,96,147,184,126,29,58,227,62,177,176,140,3,254,144,91,4,145,136,145,179,207,253,116,7,191,57, +30,180,205,241,240,50,237,236,178,192,156,246,245,207,191,229,78,93,128,130,97,148,129,211,18,194,127,148,108,71,233,211,184,52,0,192,34,63,122,98,65,60,230,4,39,175,169,159,57,250,245,254,79,81,111,158, +160,250,230,217,72,56,231,60,92,96,125,61,251,98,158,29,15,72,238,7,98,5,196,107,201,206,1,31,103,35,3,167,56,237,198,69,42,130,217,2,59,214,32,116,23,73,183,158,152,2,220,142,0,35,128,58,17,142,244,0, +187,173,177,202,70,112,123,90,70,192,159,66,26,114,123,251,28,227,7,154,136,189,160,57,40,172,127,218,177,64,23,156,244,251,64,3,212,159,204,154,178,33,144,129,242,95,47,25,192,154,34,121,224,253,228, +76,240,6,15,79,233,32,243,144,17,155,242,135,0,97,237,155,25,235,140,54,121,60,28,14,167,174,6,40,2,152,158,197,65,249,83,174,79,250,10,54,122,99,111,250,65,253,9,231,235,192,39,182,96,0,133,28,127,216, +57,7,161,192,253,227,112,49,223,39,177,60,28,217,109,205,193,254,209,198,50,67,27,97,192,206,113,251,229,193,62,135,220,247,57,140,195,147,146,53,22,233,140,77,108,7,124,255,0,203,192,57,35,234,0,39,20, +1,84,203,7,36,90,198,163,3,25,211,227,63,160,36,142,56,206,14,56,62,180,171,44,67,159,179,66,115,145,205,156,75,245,192,3,61,186,18,49,215,21,41,88,148,243,30,164,113,253,233,160,235,142,196,72,195,4, +131,207,78,49,159,71,134,139,128,35,212,187,242,215,80,16,57,206,64,18,168,245,254,132,113,128,8,68,170,72,197,180,24,207,123,82,49,233,140,62,50,122,1,140,227,158,189,44,70,87,188,86,249,61,246,109,24, +39,146,126,108,145,215,212,15,196,97,119,196,160,134,23,131,60,227,237,150,195,243,38,235,168,239,156,115,158,185,165,6,46,191,233,99,159,249,255,0,181,232,71,24,2,239,131,158,160,145,199,127,64,5,44, +112,118,165,143,232,115,244,221,34,227,140,247,244,168,247,72,57,95,178,41,28,100,57,94,231,166,46,49,142,189,143,25,206,50,64,176,146,91,227,230,55,25,4,18,90,234,205,142,61,57,188,32,250,250,244,231, +168,50,121,208,142,158,105,199,80,110,173,151,161,233,129,123,207,244,246,230,128,32,82,228,96,181,153,39,185,152,156,129,212,128,101,127,212,14,157,177,78,17,57,234,182,140,9,192,253,238,62,128,29,227, +147,142,223,78,252,216,243,237,200,195,66,252,255,0,122,234,223,140,122,226,247,39,175,28,156,113,244,165,251,69,176,251,145,39,76,97,238,147,159,195,237,140,7,31,151,167,168,4,95,103,113,206,219,101, +232,87,247,236,64,255,0,200,216,7,241,56,237,208,26,112,138,76,114,246,160,2,114,11,220,30,227,156,139,145,223,174,115,158,245,101,110,227,7,34,11,127,111,222,196,252,227,175,250,242,48,79,187,103,143, +94,36,23,74,196,97,45,87,211,115,91,177,231,208,121,205,201,224,241,142,157,135,0,2,168,87,234,36,183,0,113,133,55,68,251,244,188,35,61,120,227,240,207,46,11,46,70,37,136,14,112,72,191,56,207,210,103, +30,135,174,62,152,171,158,97,60,230,215,110,115,196,22,237,198,72,207,203,39,60,156,251,131,235,75,231,32,198,249,109,215,29,15,217,226,233,223,248,199,79,76,147,233,64,21,182,205,147,135,136,250,254, +234,253,142,1,61,129,231,174,125,59,14,40,72,231,238,233,131,128,118,219,106,103,158,122,0,199,185,39,129,192,63,133,92,23,81,12,127,164,219,103,39,173,165,175,65,198,126,121,125,186,156,228,12,113,158, +29,231,161,4,253,178,219,145,218,214,205,112,9,224,2,174,127,28,156,30,195,7,20,1,2,198,113,243,75,130,14,127,227,211,82,35,7,174,1,137,207,175,184,207,3,142,1,9,7,229,145,178,122,159,177,106,32,114,0, +227,253,23,147,219,160,35,181,75,231,66,120,107,235,85,233,255,0,46,246,199,211,174,95,169,244,231,57,245,232,240,209,144,64,212,109,84,231,169,181,183,251,184,234,127,120,65,252,7,29,199,90,0,96,89,113, +247,221,123,15,244,93,73,123,30,194,14,72,227,28,115,72,166,112,216,105,37,39,140,98,223,82,29,79,0,238,136,118,239,156,115,200,169,194,168,224,234,86,143,140,103,253,18,211,39,57,193,25,236,122,115,156, +227,160,205,76,176,219,156,3,168,91,2,114,72,251,45,168,7,60,240,64,24,231,167,167,57,238,104,2,4,73,91,163,92,147,207,11,5,232,237,142,166,48,78,61,9,199,29,9,21,40,138,115,255,0,63,71,35,188,87,0,227, +211,37,27,245,198,58,115,210,166,22,182,172,14,53,27,54,62,240,70,190,157,213,72,24,239,211,39,219,25,119,217,45,176,113,125,107,207,56,38,37,63,136,222,164,116,228,17,232,122,230,128,35,17,74,63,229, +141,211,103,131,128,224,14,123,228,174,71,235,143,67,154,95,40,131,243,65,112,58,228,18,196,145,207,56,243,240,63,33,192,233,142,178,125,146,223,248,174,172,143,161,243,227,29,253,21,254,163,35,181,59, +236,105,156,165,197,145,246,51,145,199,56,192,25,206,8,207,169,7,211,168,4,94,79,76,91,77,207,251,126,195,167,239,14,120,7,140,243,219,190,87,236,242,158,22,210,111,251,252,71,28,100,224,49,239,211,145, +158,188,245,47,251,50,175,37,236,220,143,89,100,39,142,227,7,45,215,142,254,196,145,74,45,201,24,63,100,192,244,89,59,15,247,28,117,239,223,190,50,77,0,62,59,121,250,27,39,235,222,227,177,199,99,50,228, +250,130,7,167,168,167,27,86,35,155,23,200,235,153,128,60,123,253,171,235,198,7,94,216,197,66,97,62,150,196,142,51,231,149,7,215,27,163,252,7,32,96,100,12,98,144,41,7,104,16,14,57,197,209,3,191,76,66,127, +201,206,104,2,210,217,3,140,217,199,207,247,238,48,125,191,229,224,145,235,131,159,241,156,90,0,50,44,226,255,0,192,181,25,233,156,126,244,255,0,94,217,172,240,183,3,133,104,128,56,198,47,228,95,167,68, +30,253,125,250,116,169,20,220,140,114,164,14,1,26,163,146,15,167,9,236,49,207,122,0,184,33,135,144,109,98,227,174,47,151,35,158,78,64,60,100,227,147,215,28,247,43,246,120,8,33,109,144,99,158,110,131,96, +99,1,134,67,14,59,96,118,252,106,37,158,227,0,23,24,245,254,211,151,61,177,184,40,60,14,227,60,241,128,14,104,55,19,12,143,57,7,78,127,180,110,79,110,73,196,96,114,126,157,253,133,0,74,45,225,198,221, +153,227,31,37,202,156,122,241,246,115,142,112,48,125,79,61,40,16,66,0,204,83,96,142,0,185,64,72,233,218,223,57,199,126,56,60,128,9,168,188,251,131,140,73,184,240,79,250,124,153,233,216,52,89,231,56,3, +36,142,135,208,200,175,114,126,111,52,41,255,0,106,254,64,127,244,73,192,239,193,253,115,64,18,44,86,153,249,163,157,122,112,215,64,254,28,68,152,36,240,123,158,189,79,46,49,88,96,156,92,113,159,187,113, +147,223,160,233,158,167,167,242,168,252,233,84,0,210,169,35,177,212,164,7,156,30,155,20,99,142,188,117,232,121,164,251,101,192,232,98,29,57,107,231,126,59,117,115,201,36,31,195,56,20,1,50,37,161,251,143, +122,184,245,185,193,3,35,182,59,103,176,197,74,30,37,24,86,187,115,237,57,108,129,206,73,4,96,227,160,231,57,24,25,205,84,23,243,140,130,208,31,92,221,183,225,214,85,57,29,178,8,198,58,246,79,237,73,87, +35,108,103,160,24,155,112,57,198,115,251,210,49,245,60,99,218,128,44,121,170,73,203,95,123,29,242,118,231,248,92,15,167,25,61,15,76,83,119,163,28,238,188,35,161,249,165,30,199,165,194,227,28,241,193,198, +63,24,127,181,152,0,12,104,113,212,7,24,4,242,51,135,35,167,60,28,156,251,80,218,160,39,34,56,248,29,11,18,71,191,18,14,254,167,215,138,0,156,178,40,4,203,112,51,216,188,217,247,198,102,61,51,211,60,250, +250,155,227,96,14,38,96,120,230,73,206,61,65,253,248,30,228,129,140,14,181,18,106,188,12,68,135,191,202,216,250,158,100,237,215,36,244,198,106,65,170,113,150,132,19,220,151,83,223,175,223,35,158,120,224, +147,159,122,0,82,70,14,217,138,103,143,191,49,36,113,201,197,226,129,159,200,253,5,27,100,0,1,118,199,174,57,152,253,57,251,89,56,199,3,60,227,223,154,107,106,144,145,145,30,79,112,21,78,115,216,31,48, +142,79,182,114,122,118,168,151,81,141,191,229,136,206,114,6,192,121,28,255,0,112,142,49,140,147,199,167,20,0,240,178,2,73,154,85,30,165,152,15,127,249,106,221,125,206,63,30,41,193,36,63,118,237,136,244, +220,199,183,64,60,204,227,240,24,29,136,232,171,169,196,64,37,85,113,145,141,139,211,143,250,96,199,143,167,97,207,34,166,251,109,179,112,85,139,28,125,216,206,114,113,233,105,198,126,131,140,1,223,0, +21,10,130,112,110,92,144,115,192,144,15,124,183,152,0,0,244,4,99,154,148,71,25,3,55,50,144,49,159,222,1,207,60,114,216,199,211,145,216,156,230,172,125,170,219,145,229,203,233,146,140,56,3,140,147,103, +140,227,211,216,129,198,105,69,205,176,28,9,84,103,146,73,192,228,112,9,177,219,156,251,241,131,222,128,33,242,227,35,34,226,112,7,25,50,28,99,254,250,198,59,250,245,245,20,134,48,113,137,238,50,127,136, +72,158,167,158,100,250,115,206,63,149,131,118,139,202,249,196,100,224,134,92,119,227,230,178,39,25,25,62,135,61,184,167,125,176,128,78,251,128,56,28,148,96,122,103,57,176,0,143,108,17,239,214,128,42,253, +153,178,9,187,189,95,76,74,8,231,177,253,230,7,94,113,201,207,110,239,16,48,227,237,247,185,199,4,75,158,14,122,126,240,255,0,81,252,170,113,118,15,33,228,231,158,35,143,4,123,145,97,215,241,238,71,57, +20,162,102,24,32,203,147,206,49,0,231,220,181,131,99,142,132,129,233,140,80,4,2,48,131,105,189,188,7,61,221,241,147,232,124,197,239,232,58,130,71,57,166,178,198,51,255,0,19,11,128,125,222,66,121,250,206, +188,228,241,249,253,46,249,237,145,135,184,3,185,243,32,7,223,24,178,0,147,233,248,210,25,37,110,146,222,231,160,217,36,71,235,143,244,81,215,158,6,61,64,239,64,20,25,70,56,189,185,35,183,205,46,88,240, +48,187,110,9,36,30,158,135,243,164,242,178,14,46,174,207,95,249,105,42,244,228,245,153,191,30,57,199,175,75,224,220,117,13,168,14,79,83,1,206,123,252,182,217,199,215,25,199,30,129,71,218,27,172,183,163, +142,141,229,28,116,231,63,101,234,122,241,199,212,117,0,204,104,91,25,55,23,39,147,143,154,92,224,123,121,184,244,232,61,243,211,49,24,2,242,247,23,103,190,4,146,143,78,199,112,239,211,140,231,2,182,12, +119,68,127,173,185,192,235,251,132,98,125,57,107,92,156,250,118,199,20,195,109,114,113,153,174,151,35,31,241,231,25,231,234,45,91,4,158,58,99,212,244,192,6,64,17,127,207,107,195,215,254,90,125,59,16,123, +247,227,130,120,227,133,253,222,113,230,93,31,66,93,56,29,79,87,92,122,100,119,193,173,70,176,184,99,254,178,118,207,65,246,40,137,31,157,137,60,245,35,191,227,147,27,105,115,30,175,54,120,224,216,33, +239,158,71,217,23,61,58,99,191,124,145,64,25,68,195,217,174,115,206,65,40,87,0,244,200,152,99,158,199,39,62,167,154,105,120,207,1,101,98,49,156,149,245,247,148,156,243,158,157,7,25,230,180,127,179,103, +4,159,50,76,115,193,210,211,32,99,212,89,243,239,131,156,103,156,83,77,132,153,198,230,231,160,58,72,97,223,56,34,219,211,30,157,248,235,64,20,65,0,225,97,148,146,120,0,169,7,158,7,14,15,175,60,122,244, +52,110,32,140,194,223,66,205,215,7,183,218,122,123,241,244,237,86,205,132,199,36,38,121,28,157,38,48,58,244,203,91,55,110,157,253,70,41,134,198,101,31,114,44,255,0,216,50,60,228,158,120,251,16,60,245, +237,219,20,1,0,145,9,230,21,7,60,228,182,115,233,205,214,15,78,61,127,42,60,200,249,37,85,121,3,3,60,115,129,143,244,229,246,232,51,83,11,27,130,120,133,78,56,192,211,96,234,112,7,38,211,35,62,231,39, +168,237,144,216,220,255,0,113,212,140,224,255,0,102,91,40,227,220,70,61,58,112,56,6,128,33,51,70,167,133,228,30,165,93,177,143,166,160,152,250,117,31,76,83,124,204,243,242,158,120,27,92,250,245,7,84,99, +211,216,116,169,26,206,232,114,35,144,142,128,125,138,16,57,207,65,143,81,206,48,8,199,182,99,107,123,181,234,142,59,96,90,91,18,123,242,126,81,159,243,212,28,128,70,100,199,36,160,231,131,178,65,130, +113,207,58,136,0,131,144,0,244,230,144,77,33,201,30,89,231,130,235,48,30,185,4,94,183,110,78,51,245,160,193,114,167,59,38,62,161,97,181,94,128,117,201,35,128,122,247,238,57,52,210,183,60,230,27,145,140, +228,132,182,232,61,121,81,237,193,31,142,121,0,107,76,228,242,35,24,235,180,78,62,167,139,193,144,125,251,117,247,137,166,193,57,147,111,176,50,5,237,198,214,189,231,215,168,31,202,164,104,174,155,254, +89,206,115,158,177,219,131,248,126,243,147,142,189,57,252,234,45,151,11,247,132,202,58,16,82,215,175,35,167,157,187,60,246,57,63,76,96,1,134,99,193,89,219,142,114,164,242,49,233,246,182,227,212,247,207, +231,27,74,199,59,110,101,4,103,161,95,200,102,124,125,15,63,161,167,144,253,203,30,71,222,138,1,200,28,127,203,198,115,239,143,199,174,88,209,177,25,42,152,3,56,34,0,123,115,242,221,143,212,243,233,210, +128,35,243,37,4,226,226,227,167,124,127,241,210,61,57,231,214,154,94,228,231,109,195,245,231,33,9,61,121,4,176,199,108,240,115,207,214,134,83,255,0,60,99,246,201,65,234,6,115,57,250,241,159,175,90,111, +150,199,63,184,139,29,129,216,71,98,15,250,194,50,63,16,61,73,232,0,194,110,136,39,237,46,79,65,242,192,192,113,211,229,36,227,159,239,103,63,170,109,185,201,63,108,108,159,88,128,233,211,161,32,15,167, +191,28,83,140,4,144,12,22,216,207,252,242,140,228,99,218,80,6,56,234,58,228,158,212,141,8,92,129,4,3,208,249,49,17,140,14,131,205,63,146,156,241,239,200,0,99,144,12,201,114,217,60,147,177,0,56,255,0,121, +9,244,252,185,61,170,35,19,49,200,185,97,159,69,136,231,240,54,238,57,247,231,219,154,83,2,131,207,217,65,193,255,0,151,88,122,12,241,254,180,156,140,245,231,143,209,68,104,167,33,96,193,254,236,49,47, +28,250,134,252,57,235,222,128,26,109,228,108,226,229,201,35,24,48,219,243,140,127,211,175,94,15,113,239,220,6,155,105,65,3,207,111,251,226,17,244,4,11,82,7,232,61,125,172,24,195,14,177,144,73,4,8,211, +245,4,31,95,166,113,211,165,69,246,113,217,91,216,162,64,15,174,78,99,7,61,51,140,114,122,1,64,16,181,180,223,195,41,57,3,32,136,7,183,63,232,217,228,14,120,255,0,235,71,229,76,0,204,170,62,83,192,242, +51,147,236,109,200,239,207,95,174,65,171,45,104,1,36,153,7,31,243,206,217,187,123,196,65,7,140,117,35,220,211,77,184,237,36,131,60,96,67,100,50,56,200,230,15,94,49,201,207,211,20,1,158,240,76,75,98,81, +144,9,1,90,223,39,130,1,32,64,7,92,117,28,227,60,241,150,152,36,192,57,222,216,198,67,70,7,35,7,27,109,15,35,185,39,29,77,93,54,228,19,243,191,209,146,192,12,246,28,219,140,126,60,119,206,121,165,251, +58,145,131,51,40,244,205,142,7,95,72,8,24,231,158,158,157,104,2,134,203,172,96,100,0,15,2,88,15,30,131,125,137,60,156,245,60,243,206,51,154,178,71,62,112,67,238,233,141,246,237,201,199,97,96,79,166,15, +235,220,106,189,159,204,118,204,196,117,198,251,54,246,28,27,95,151,167,80,70,73,56,231,172,102,198,66,48,178,30,48,79,205,107,145,219,147,246,76,227,243,231,147,214,128,50,140,87,25,229,100,231,25,255, +0,83,219,39,60,218,169,60,100,100,122,128,71,97,27,68,227,172,46,122,129,196,88,56,32,28,98,30,64,239,200,231,7,142,13,105,53,147,146,219,164,39,183,91,115,211,161,194,219,47,126,163,35,63,169,133,172, +99,94,11,100,241,147,178,18,6,122,253,235,83,142,220,103,241,60,0,1,79,202,99,140,68,192,224,228,226,3,147,219,59,160,63,161,206,61,106,51,108,236,112,35,207,61,60,171,99,142,252,145,1,32,99,147,142,7, +225,87,133,156,67,39,205,81,233,251,168,241,192,29,64,128,14,216,251,191,143,90,133,173,147,39,19,127,223,49,162,227,62,254,64,199,28,227,146,56,236,104,2,161,177,234,76,27,134,72,201,134,216,14,58,14, +45,143,126,249,246,62,161,62,193,223,236,153,29,135,217,226,39,147,215,38,220,126,159,83,193,230,215,217,35,224,249,237,200,238,132,244,232,0,242,49,143,82,48,51,158,13,55,236,182,216,193,184,57,255,0, +174,12,112,15,161,17,14,122,156,122,227,166,120,0,166,214,138,58,90,227,158,73,180,67,207,160,2,22,28,125,70,127,58,136,216,68,126,244,3,185,230,197,27,223,140,70,189,59,28,159,83,146,42,228,150,150,227, +145,60,143,255,0,110,174,113,143,125,128,99,167,57,232,56,21,1,183,140,31,190,196,118,255,0,69,63,207,31,208,250,118,160,8,134,159,24,225,96,94,61,44,135,28,243,147,198,125,240,126,81,198,122,138,83,96, +163,56,183,207,83,197,152,35,143,112,220,115,147,130,120,207,230,243,20,56,25,144,142,184,30,67,117,39,143,249,102,73,35,241,235,143,122,144,91,196,220,137,70,70,58,192,64,231,217,163,80,58,100,158,72, +31,78,64,32,22,27,137,11,110,192,156,112,45,87,219,160,223,156,228,103,142,194,144,216,57,207,250,59,158,57,197,176,24,231,190,199,237,245,6,167,107,116,207,18,194,59,114,129,71,183,32,3,158,56,201,224, +96,240,49,76,251,48,228,137,98,3,142,70,9,228,243,141,192,142,185,61,199,214,128,43,125,141,131,115,3,128,9,233,12,170,122,224,114,179,47,174,51,207,81,158,244,215,183,76,224,197,34,158,163,17,206,49, +238,0,185,92,227,240,231,142,217,51,253,141,9,221,231,161,198,120,219,17,227,60,140,152,207,62,128,1,233,156,227,44,107,116,32,128,240,142,78,79,151,1,110,217,198,244,28,147,223,175,7,173,0,66,32,81,201, +243,130,129,208,172,252,30,1,63,241,247,146,49,212,241,233,156,245,60,180,110,166,110,184,0,155,132,199,166,1,185,94,156,30,160,30,51,79,251,24,254,25,84,253,35,181,39,32,251,69,199,28,255,0,250,185,105, +128,41,249,164,3,175,38,27,82,115,158,185,49,231,140,143,78,199,156,242,0,213,130,46,225,152,117,193,150,224,17,215,166,53,0,7,166,15,167,90,26,24,112,71,217,220,142,188,220,78,79,230,186,150,115,236, +63,253,107,246,120,201,200,151,56,31,243,202,219,161,199,28,195,212,1,235,193,193,236,41,166,218,46,79,44,79,109,150,152,245,207,220,81,159,199,159,175,80,6,152,97,193,62,91,47,25,207,157,116,8,57,39, +5,142,160,220,115,250,231,61,139,12,113,14,78,225,156,255,0,29,235,115,236,62,223,212,241,223,158,224,154,26,4,192,62,83,231,183,252,120,175,79,109,192,244,200,232,73,245,206,51,7,150,132,243,12,231,29, +182,217,17,142,49,141,217,227,29,135,255,0,92,128,43,45,185,207,14,0,4,114,47,187,118,230,244,142,157,70,71,60,243,197,51,22,206,121,121,61,14,5,215,245,190,237,142,224,244,29,122,84,155,19,31,241,237, +114,57,3,38,43,3,212,99,248,79,25,238,78,58,122,83,114,170,121,183,148,129,221,161,180,3,211,39,4,140,14,254,249,201,227,144,8,60,155,83,144,25,242,120,229,110,186,159,127,182,28,14,122,99,166,79,28,2, +134,218,17,200,50,17,142,0,134,126,159,87,185,56,233,158,14,49,219,173,76,100,78,241,58,231,39,30,77,161,56,231,130,49,254,125,42,22,185,81,192,129,136,39,146,214,214,167,249,1,206,121,56,56,199,52,0, +209,107,22,57,51,3,142,9,183,115,143,81,196,237,212,146,114,0,61,79,181,52,218,33,63,235,103,29,72,63,103,148,116,227,131,130,188,118,198,120,246,52,227,48,57,196,113,131,198,71,217,173,248,207,108,242, +13,70,101,97,199,148,152,235,197,156,45,142,115,147,149,252,123,244,62,148,1,27,219,176,227,207,152,174,113,150,130,64,121,56,237,9,3,28,156,2,122,17,156,14,99,104,72,200,18,202,192,250,43,14,216,234, +45,243,193,231,158,125,186,84,226,82,114,70,23,215,253,2,2,115,244,48,158,167,249,154,113,148,140,54,246,62,203,166,90,159,203,16,247,236,122,125,56,20,1,68,218,191,7,124,252,142,132,1,145,211,63,52,36, +254,35,159,99,205,70,109,31,156,249,131,175,81,22,113,212,14,109,186,254,63,253,125,31,49,177,144,39,250,157,46,220,119,199,81,0,207,167,242,224,115,19,207,41,192,50,74,190,128,233,144,28,228,12,127,203, +179,119,228,117,237,219,25,0,207,107,105,135,35,121,81,206,127,119,156,19,254,205,183,60,142,132,127,58,104,138,227,182,240,7,166,1,207,95,249,246,246,236,57,247,171,234,243,30,178,76,122,224,157,58,32, +15,183,22,103,175,190,58,250,209,155,162,78,12,196,103,31,241,227,26,231,30,132,91,12,224,113,192,250,158,212,1,158,203,117,253,210,195,63,198,238,56,28,156,109,181,200,237,147,158,56,28,100,102,7,75, +174,190,88,63,246,241,46,59,117,204,11,158,167,39,143,97,218,182,60,153,216,252,201,54,9,25,205,179,131,212,244,11,107,140,250,246,239,238,81,173,165,61,35,184,252,32,151,161,233,159,244,38,235,245,255, +0,235,128,99,42,92,15,249,98,57,201,226,230,78,14,120,225,130,227,223,252,154,102,201,142,115,106,167,156,146,103,144,253,73,193,24,192,30,132,99,63,90,218,251,51,158,12,87,152,245,88,216,231,254,250, +180,7,175,166,58,12,99,35,14,54,160,12,24,47,153,176,57,249,199,61,123,91,126,157,51,244,205,0,96,178,55,79,179,168,92,231,42,238,71,110,57,148,116,238,8,233,249,24,139,1,144,214,160,143,121,84,30,216, +227,206,39,242,233,207,92,138,218,54,121,231,236,183,61,8,249,141,192,233,236,176,142,71,76,96,112,123,241,81,27,21,231,16,158,167,37,164,185,7,245,136,250,123,254,148,1,148,178,160,255,0,150,56,246,14, +195,235,130,102,28,156,126,93,112,50,41,193,209,143,49,176,29,57,118,36,240,113,202,220,22,247,62,217,28,214,129,176,82,7,238,179,220,97,238,8,244,207,16,15,235,212,122,81,246,4,198,12,9,233,204,151,64, +228,142,163,40,172,56,227,0,158,58,145,147,64,25,228,193,208,91,150,207,24,23,12,58,251,25,240,61,177,207,173,68,86,220,240,108,206,79,67,231,140,243,232,126,208,79,35,156,241,159,76,227,58,103,78,140, +156,180,10,71,94,36,186,57,207,61,50,71,63,152,247,206,41,126,197,16,60,69,179,63,236,204,126,153,59,212,253,73,231,235,220,3,52,165,160,35,117,155,100,129,201,156,18,167,212,226,114,79,92,146,7,7,183, +52,4,181,207,201,106,220,224,103,120,97,208,99,172,135,215,3,143,204,114,111,27,88,186,225,186,125,209,230,227,176,224,25,48,15,167,35,169,197,52,218,161,206,16,2,58,110,89,121,234,58,249,173,206,62,132, +231,222,128,42,136,225,237,19,167,81,195,40,199,61,254,98,58,1,129,144,125,122,224,21,51,90,130,127,213,194,49,212,183,154,15,65,211,50,122,227,24,62,249,237,69,0,123,55,156,199,36,59,14,113,197,192,3, +24,255,0,174,109,147,219,35,241,207,4,176,203,41,206,37,42,58,243,112,121,0,243,210,37,207,234,7,76,131,205,82,11,128,114,227,29,14,92,55,212,18,110,63,173,27,1,207,204,157,253,1,237,149,4,78,121,198, +78,120,233,210,128,44,153,95,39,51,18,51,128,76,146,182,56,234,48,187,121,253,59,211,76,172,57,251,72,82,121,7,116,228,99,142,156,224,244,63,159,78,5,64,84,103,59,1,113,220,249,191,142,10,200,122,251, +26,67,128,112,240,231,61,8,123,129,208,122,111,207,243,193,20,1,100,92,205,211,237,177,243,253,239,180,115,145,211,163,115,199,169,192,24,163,237,146,114,191,111,66,57,7,229,185,99,216,30,145,16,112,126, +128,227,177,168,131,194,23,30,75,12,117,196,151,32,158,191,244,215,158,152,36,210,9,99,56,30,75,28,127,122,75,140,245,246,145,184,3,216,31,232,1,33,186,108,224,222,175,225,29,202,231,61,179,228,245,246, +24,245,4,210,253,163,0,159,181,39,35,145,229,220,18,123,99,6,46,223,79,94,181,93,138,19,145,110,216,4,129,131,118,255,0,153,222,59,112,48,61,7,57,164,50,31,225,181,99,254,241,191,207,126,155,100,218,123, +14,113,248,245,160,7,189,211,177,199,218,198,1,199,54,243,240,7,97,136,129,252,199,166,56,197,55,237,59,114,77,219,28,117,2,222,99,208,122,50,140,147,234,15,60,140,131,67,73,54,209,182,213,71,127,187, +122,221,191,235,169,57,25,192,200,35,142,65,232,99,221,55,79,177,68,220,247,23,99,156,129,146,114,127,38,235,249,208,4,130,245,14,115,115,41,207,99,105,41,234,78,64,38,80,125,128,193,35,60,12,115,64,184, +135,146,101,149,143,253,122,227,158,59,179,147,244,200,233,233,158,35,50,220,1,255,0,32,229,35,60,20,107,188,125,57,83,215,140,96,140,251,138,174,101,144,18,127,179,8,32,255,0,207,75,161,233,223,3,167, +67,142,158,217,20,1,119,206,136,142,12,236,65,239,2,15,166,54,176,60,242,61,57,224,241,72,100,139,161,89,127,240,25,73,227,166,65,153,113,158,184,4,118,226,169,25,14,121,211,152,116,201,223,59,14,254, +175,187,191,92,125,220,116,228,7,22,99,255,0,46,77,215,29,46,24,253,8,46,125,79,108,96,116,235,128,11,101,225,35,129,42,128,7,38,221,6,15,208,94,142,122,246,168,195,197,130,62,102,31,245,238,7,32,242, +63,227,248,143,204,117,29,64,230,171,22,149,71,26,115,147,158,254,112,56,227,144,9,199,226,8,231,131,140,112,130,105,179,198,157,47,92,112,197,113,208,113,155,128,7,31,236,250,243,158,40,2,201,117,234, +170,253,120,197,188,103,35,241,188,237,201,193,207,78,248,169,21,142,50,17,198,121,31,232,202,8,28,246,251,97,3,208,14,0,227,21,83,116,172,73,251,4,160,247,62,108,125,186,241,246,158,58,244,56,228,123, +242,132,203,255,0,62,146,244,193,221,228,30,254,191,106,252,127,253,120,160,13,15,50,64,9,242,135,114,119,91,169,28,244,200,91,208,121,250,30,126,148,155,165,199,49,194,6,7,91,119,207,92,255,0,207,243, +112,121,207,78,156,0,73,170,30,124,156,43,90,204,160,19,141,162,19,159,82,63,211,87,159,175,7,140,242,105,76,204,72,221,20,254,156,136,134,58,245,63,218,72,61,187,80,5,237,211,116,95,40,30,135,247,111, +128,62,130,228,241,131,215,3,156,14,180,210,215,35,63,189,135,35,28,4,153,15,211,153,200,62,188,231,25,252,42,168,152,140,128,38,80,122,228,194,71,60,17,147,170,254,39,7,156,117,57,205,63,237,13,192,83, +41,39,174,69,176,199,110,3,106,172,79,191,76,96,228,122,0,74,94,231,63,52,160,158,121,25,83,140,243,255,0,45,143,35,56,234,14,121,231,160,141,164,155,119,37,142,59,172,140,121,192,207,86,98,7,231,140, +244,230,148,220,56,234,101,193,231,33,108,152,254,27,181,18,121,39,35,4,158,49,207,90,79,63,32,146,247,92,231,162,88,145,248,15,237,79,211,161,199,28,208,0,30,126,160,77,223,147,48,25,199,57,199,151,158, +190,188,116,207,178,249,183,24,201,222,48,56,221,117,140,250,112,35,200,247,24,39,156,247,164,19,167,81,37,192,198,63,229,141,145,57,56,255,0,168,155,14,189,241,146,120,0,140,144,227,114,139,201,154,232, +245,233,111,100,57,207,61,117,66,15,67,232,73,60,243,197,0,33,150,224,142,23,119,78,151,146,142,70,72,28,197,140,114,125,58,228,227,186,121,146,158,204,9,7,165,219,156,119,244,63,94,125,233,223,111,129, +126,241,186,201,234,76,22,72,56,25,254,29,71,190,14,121,207,83,192,53,40,188,133,177,151,186,28,100,29,150,199,167,57,39,251,68,227,241,235,233,64,16,238,148,103,253,96,206,115,254,150,231,143,166,222, +0,207,67,143,241,79,54,85,24,249,200,0,15,248,248,86,28,119,24,139,57,29,250,158,113,210,167,55,168,164,133,158,224,3,156,176,75,126,73,3,174,47,72,224,99,128,58,15,165,70,111,87,144,46,38,61,191,227, +222,19,237,129,254,149,206,79,175,78,58,242,8,3,69,211,242,161,78,78,7,250,255,0,175,251,0,143,196,28,244,230,143,180,56,61,20,18,120,13,113,207,28,30,54,227,158,115,207,29,189,105,77,211,124,184,146, +96,14,6,126,201,6,113,215,28,92,140,251,114,65,60,156,83,77,209,28,253,162,96,65,4,3,100,135,62,199,23,32,142,199,32,146,51,233,140,128,60,78,255,0,244,199,220,249,248,206,122,116,80,71,60,100,158,79, +76,211,150,98,120,47,108,57,31,122,226,95,111,86,94,252,251,122,212,6,245,177,204,146,156,244,38,210,65,142,59,126,248,147,158,189,192,231,241,79,180,147,247,164,147,168,255,0,151,89,64,201,56,233,230, +149,28,156,125,241,143,94,212,1,99,204,94,127,125,108,61,48,243,49,231,216,57,233,142,56,252,243,201,230,168,193,251,76,75,235,254,183,30,248,13,39,28,123,3,223,142,208,7,201,4,9,73,56,228,67,112,164, +15,124,100,250,244,62,188,212,129,156,227,31,104,24,235,242,93,143,160,193,199,166,1,198,15,92,245,160,9,4,168,70,69,237,185,4,112,60,185,216,245,207,85,103,207,65,156,19,192,237,220,243,148,116,189,182, +80,78,65,242,231,233,223,130,140,125,125,198,14,115,222,34,207,208,137,254,172,147,17,237,201,80,120,233,219,174,78,113,200,9,111,189,28,196,119,194,185,60,123,182,61,115,142,156,103,61,40,2,95,59,147, +183,82,182,94,127,231,149,222,58,244,4,71,129,211,7,250,84,170,243,159,187,170,219,123,15,38,232,244,227,25,218,14,15,211,128,49,158,57,141,84,246,130,236,116,229,96,67,143,111,152,31,115,206,1,4,246, +7,19,0,231,167,218,134,115,144,86,40,248,227,142,84,140,103,175,7,147,208,131,192,2,22,156,140,29,82,14,163,254,93,239,14,15,184,193,207,94,8,239,208,154,93,179,54,2,234,86,228,140,115,246,75,214,207, +94,222,89,193,239,223,158,231,179,136,112,8,45,113,235,131,36,32,113,207,204,60,156,14,56,192,60,117,4,142,41,21,55,30,60,208,79,79,223,218,241,143,77,208,140,123,122,15,81,64,10,34,159,3,55,182,242,99, +166,219,59,176,217,62,167,203,207,36,244,24,247,167,237,184,92,126,254,50,15,173,165,248,244,233,152,128,252,0,233,215,173,40,71,28,6,108,245,230,123,50,115,206,50,13,191,3,167,1,142,59,131,129,151,5, +112,6,88,245,239,53,147,31,253,36,57,61,120,239,192,197,0,32,75,178,112,30,22,250,218,222,158,184,244,65,233,158,0,20,236,95,3,192,128,142,217,183,189,7,215,35,49,131,199,60,14,157,115,205,0,63,5,103, +81,142,112,205,98,79,169,233,103,199,3,175,76,244,61,106,69,142,83,201,185,133,65,227,4,90,231,3,25,206,219,54,30,227,233,235,64,2,157,71,129,251,179,147,129,251,171,188,142,217,200,76,140,125,123,14, +58,84,200,117,35,144,33,137,135,97,139,181,224,119,231,105,31,78,15,214,144,33,29,38,128,244,60,181,178,158,190,191,96,192,247,199,39,243,196,155,93,191,229,189,182,61,12,235,156,113,253,221,60,253,57, +28,126,56,160,4,49,106,39,37,172,226,99,156,228,77,114,156,131,223,247,132,146,58,114,59,244,230,133,138,251,63,241,230,128,246,255,0,74,185,24,199,76,141,253,192,28,116,199,230,37,85,151,35,108,176,17, +232,46,31,28,245,227,251,44,245,239,130,63,90,81,184,16,75,91,169,193,225,229,145,71,110,191,241,45,82,58,116,25,207,62,188,128,70,97,212,51,145,104,171,212,231,237,151,60,159,96,100,200,245,206,71,94, +180,160,94,244,104,84,123,253,186,231,57,224,114,4,167,3,175,76,122,227,138,184,172,234,6,13,177,233,210,121,88,117,236,126,196,62,185,61,241,154,122,203,55,111,179,159,81,231,202,8,250,255,0,161,142, +222,185,199,96,115,200,5,19,21,227,112,200,152,246,189,148,17,159,118,144,238,198,70,112,14,113,215,189,60,91,92,99,230,68,57,60,31,182,75,211,167,167,232,56,28,96,102,174,125,162,117,28,11,113,211,63, +233,83,99,142,252,192,1,244,237,147,235,220,23,151,3,63,241,239,211,4,11,153,65,227,167,252,177,235,207,215,249,128,10,98,218,114,62,125,164,116,226,238,92,115,158,0,0,244,24,29,15,175,52,191,98,119,207, +43,142,184,55,44,231,233,243,70,112,57,61,199,78,106,224,212,37,92,18,209,12,16,70,219,233,87,31,249,7,158,253,192,235,78,254,209,102,63,242,207,24,28,13,70,108,129,199,60,91,142,113,249,122,156,154,0, +163,253,157,187,239,41,61,126,236,224,143,200,160,62,158,164,251,98,156,52,216,151,0,174,210,56,230,113,236,122,42,140,241,216,156,115,140,156,113,119,251,64,142,75,70,7,79,249,9,73,207,0,255,0,20,28, +117,224,228,30,248,0,230,144,234,74,58,155,115,234,78,167,31,231,202,103,156,251,15,74,0,174,186,124,57,201,84,97,142,228,48,250,156,242,70,49,156,231,215,190,42,101,177,183,83,147,28,42,122,156,36,100, +158,192,129,147,207,92,244,231,7,175,52,127,105,33,232,214,221,114,7,246,162,18,123,246,25,30,253,122,224,241,154,95,237,35,146,3,160,250,234,9,142,122,224,144,122,118,39,25,250,28,208,5,133,177,135,31, +44,42,1,228,17,12,89,201,198,121,39,7,158,249,233,236,105,235,101,16,224,169,76,244,34,36,94,113,215,2,64,15,61,189,70,58,26,174,154,139,14,179,68,71,167,246,128,228,117,233,180,15,204,156,250,84,195, +80,137,185,51,71,207,111,181,198,78,61,143,151,130,56,207,28,80,4,226,214,44,114,210,46,58,31,32,113,237,254,185,127,151,234,5,60,91,194,58,205,57,61,179,18,12,127,228,92,243,80,45,221,187,14,103,82,120, +7,23,176,122,115,195,99,211,167,28,244,234,105,226,91,114,56,155,140,158,126,215,108,122,103,131,201,60,100,246,207,74,0,159,200,143,60,79,115,143,79,41,48,125,129,89,186,116,233,208,100,103,57,21,42, +199,16,235,60,192,227,248,149,78,51,207,67,46,123,125,7,28,145,85,60,232,134,54,206,113,142,130,226,212,156,231,175,32,156,30,195,31,253,117,23,8,127,229,233,135,66,127,125,106,72,28,19,211,24,235,237, +249,80,5,229,146,16,64,243,228,56,237,229,70,115,129,237,33,31,128,253,14,106,65,36,57,4,205,56,198,14,66,194,158,156,100,33,56,233,128,73,233,239,84,214,225,0,255,0,143,137,14,238,56,158,220,112,1,199, +1,243,198,56,233,142,132,117,169,68,220,127,173,149,135,251,55,17,28,247,238,216,61,143,66,61,179,208,2,99,44,57,255,0,143,169,143,98,4,145,159,94,48,20,0,113,147,215,168,199,52,25,225,4,143,62,231,60, +117,101,200,227,142,20,28,140,159,115,252,169,22,68,56,203,200,120,254,57,173,125,79,66,203,140,126,126,156,84,128,193,143,188,228,142,128,189,145,24,36,231,166,223,76,100,228,159,228,0,130,101,60,137, +110,9,237,128,185,0,129,198,12,68,18,79,62,152,199,83,200,113,185,147,183,156,220,100,110,218,48,125,255,0,209,243,158,188,224,241,222,148,249,96,147,158,49,200,243,172,215,243,24,219,147,142,113,140, +123,241,82,45,194,32,225,145,113,156,102,123,33,129,193,237,27,246,235,145,236,14,49,144,6,11,153,57,204,108,78,15,59,148,158,126,144,168,254,128,212,130,89,114,63,209,216,244,251,199,111,25,207,4,71, +211,249,96,123,83,197,228,125,60,248,71,179,77,102,73,227,176,242,71,29,189,7,161,169,5,218,177,11,231,38,6,121,13,102,121,245,63,186,36,12,113,252,248,28,0,69,231,201,218,223,167,56,50,54,113,211,180, +124,103,29,201,25,52,229,150,67,143,244,114,8,238,37,42,126,164,152,241,254,64,207,106,148,79,22,73,51,41,235,207,153,98,61,199,6,6,233,211,145,207,3,156,26,119,157,17,63,235,213,61,8,151,79,61,1,236, +109,7,25,207,126,126,153,0,2,31,180,200,63,229,132,133,179,193,222,228,159,252,119,240,35,24,231,3,138,145,103,148,255,0,203,164,205,211,248,100,110,49,223,247,100,116,206,115,249,244,169,68,214,196,97, +239,64,235,156,190,157,219,142,214,195,216,244,239,215,35,20,255,0,62,208,28,45,254,58,156,238,178,0,19,159,72,23,39,31,65,159,199,32,17,153,231,57,255,0,68,148,12,112,114,235,237,140,249,64,99,177,245, +57,227,52,141,59,228,230,222,76,129,158,101,193,24,246,48,140,117,25,32,147,198,77,88,91,139,110,218,139,31,164,214,163,7,232,33,97,193,207,235,156,210,155,139,82,71,250,123,231,211,237,22,156,103,169, +226,216,19,220,253,79,76,80,5,65,48,63,126,39,81,156,112,225,135,175,107,124,231,169,228,30,135,39,166,93,231,69,130,2,56,57,237,35,114,63,11,83,131,211,176,57,224,251,218,243,160,96,49,124,252,247,251, +69,177,236,1,224,218,247,231,29,78,115,129,154,111,200,127,229,242,73,1,61,167,131,57,25,235,182,201,134,115,215,140,126,28,128,10,223,104,80,122,77,198,78,20,147,140,117,228,216,158,199,215,7,62,167, +32,251,74,18,120,186,0,245,193,98,65,236,72,251,6,61,186,158,189,5,90,15,110,8,5,183,246,196,151,113,100,156,247,31,217,227,140,243,201,192,231,183,52,225,36,4,124,169,16,56,198,124,208,220,146,58,21, +183,3,249,17,140,208,5,19,52,77,200,123,224,125,247,12,113,232,44,70,64,232,57,199,66,57,2,155,189,15,252,182,186,94,122,237,98,220,255,0,189,108,59,12,113,140,227,235,90,91,163,207,40,189,248,14,205, +215,216,67,245,250,127,37,45,30,57,133,78,49,221,243,145,237,246,92,140,126,124,244,34,128,50,217,208,28,125,170,96,65,232,202,1,25,193,200,204,92,19,159,113,211,222,152,102,65,156,207,51,245,31,115,60, +228,131,255,0,44,143,31,78,63,30,155,43,44,24,230,222,32,8,206,90,77,185,199,111,154,207,175,226,57,235,158,234,102,132,12,173,148,111,239,230,70,115,140,156,113,98,112,59,245,228,113,232,104,3,27,205, +7,144,110,15,29,18,7,35,61,9,35,9,211,140,96,245,236,59,191,44,79,13,113,211,161,181,155,140,12,114,73,199,111,195,183,83,90,70,225,57,197,154,14,73,32,48,224,243,253,219,65,159,211,56,20,53,202,143,189, +104,63,224,40,73,7,240,132,126,189,125,61,0,50,246,76,221,30,231,61,126,91,102,24,246,249,164,3,29,127,67,215,138,62,202,236,71,205,118,113,216,219,40,252,177,112,164,247,36,253,51,90,194,226,220,243, +246,51,211,32,237,61,57,227,248,49,207,227,214,154,102,132,129,136,89,63,220,222,48,57,61,60,220,130,61,134,7,175,168,6,73,177,207,37,238,7,179,90,171,19,234,65,55,64,12,145,235,193,207,214,156,44,0,28, +9,27,160,4,218,161,60,30,120,251,110,48,122,242,61,177,199,26,158,108,67,146,46,15,226,248,252,217,241,219,7,184,167,45,205,184,56,255,0,74,233,253,210,7,175,82,121,199,61,250,122,156,154,0,201,251,17, +3,104,137,248,224,255,0,160,194,115,144,58,230,225,186,250,158,249,35,154,107,90,72,188,121,82,140,103,32,90,64,51,212,113,153,15,63,207,142,156,214,169,146,34,73,69,156,231,190,242,15,31,86,224,140,115, +129,207,29,41,204,88,129,133,185,250,137,176,14,113,199,175,78,249,224,246,160,12,51,106,57,36,78,156,255,0,21,157,169,233,212,224,200,199,131,232,6,115,199,74,62,204,48,63,121,115,199,173,141,170,143, +108,103,57,244,227,255,0,173,91,63,191,24,194,93,117,35,38,102,30,220,96,30,125,78,65,198,9,237,76,104,229,110,113,113,199,7,125,195,28,96,156,117,83,147,200,29,65,238,125,40,3,29,97,69,60,179,183,83, +205,189,152,96,115,201,228,96,119,207,35,174,79,165,56,181,186,14,146,19,237,5,160,25,245,32,175,231,219,167,74,213,48,200,71,9,47,30,147,237,31,137,11,198,56,231,211,144,167,145,81,249,87,11,213,37,60, +114,126,210,91,215,167,238,28,14,163,219,167,92,226,128,51,214,104,123,43,17,144,121,134,212,28,143,114,156,253,49,201,62,184,203,205,212,99,56,183,70,235,247,146,212,99,219,62,83,15,175,76,228,14,42, +224,89,219,143,42,83,212,243,46,57,57,244,180,7,235,215,128,56,227,150,152,166,234,109,199,94,243,96,112,78,14,77,184,35,29,142,7,60,112,104,2,163,94,122,90,194,56,234,69,185,63,95,150,6,227,29,192,199, +95,165,41,189,61,13,188,103,24,192,10,157,7,210,219,177,232,122,12,254,114,152,38,57,38,32,71,112,111,48,51,158,127,229,223,158,227,3,29,184,166,152,220,103,253,21,72,57,25,251,96,252,9,6,1,142,125,248, +245,201,160,8,254,221,27,14,109,21,187,159,222,2,1,32,242,54,219,227,212,240,7,61,186,83,254,211,17,25,251,23,167,252,181,96,61,178,69,185,4,142,6,64,244,192,226,163,101,1,136,251,52,35,140,255,0,199, +201,60,241,232,131,142,125,7,95,78,106,60,168,39,204,182,132,100,129,157,242,19,156,255,0,120,3,156,28,113,128,59,227,212,2,115,44,95,243,226,153,206,121,187,116,39,215,25,129,7,80,113,215,24,60,10,60, +248,199,38,197,23,128,51,246,230,4,131,207,222,10,164,253,49,158,59,103,53,91,247,63,243,239,25,244,59,228,39,190,122,174,126,187,136,3,29,61,21,154,49,143,244,125,131,24,251,242,47,183,116,28,126,56, +24,239,216,2,95,49,9,226,216,96,242,113,168,200,121,250,99,131,145,244,232,120,161,138,99,155,92,251,155,247,207,25,4,229,151,29,177,211,142,113,80,143,44,255,0,203,37,3,28,22,105,10,250,96,98,62,120, +207,94,72,206,125,41,60,181,201,24,132,2,114,49,43,130,6,125,4,45,147,219,159,76,243,154,0,144,201,22,48,34,43,220,103,80,126,15,57,232,7,56,201,253,121,237,25,145,87,32,135,227,178,222,190,121,244,222, +112,121,233,143,169,198,41,66,197,208,136,24,231,60,188,157,129,244,182,39,167,7,175,231,129,74,86,60,238,17,218,183,36,16,102,184,200,244,255,0,151,92,113,223,167,191,184,5,83,58,169,255,0,87,57,250, +222,129,245,57,50,30,184,3,25,28,118,231,136,218,124,244,138,113,158,226,230,38,192,246,38,92,19,129,206,0,206,58,140,85,176,50,126,72,109,193,198,15,207,118,65,224,128,64,16,126,135,252,105,204,36,193, +253,204,62,248,107,190,58,231,25,128,116,235,207,225,233,64,25,223,106,126,209,93,54,58,22,184,136,140,245,239,48,24,29,112,122,12,122,82,125,174,81,242,249,55,3,185,255,0,72,132,127,237,206,58,131,245, +228,26,180,82,83,156,44,57,244,50,78,190,191,222,182,61,122,145,198,15,28,84,102,25,243,146,32,25,25,226,105,126,157,161,83,147,223,140,126,57,160,10,134,121,15,252,177,156,103,167,250,84,0,254,95,104, +35,249,246,247,204,70,226,92,156,218,220,54,78,6,103,182,62,249,207,154,15,62,129,136,245,193,38,180,60,137,143,240,198,113,235,112,192,253,64,218,51,249,114,65,231,61,83,201,124,115,28,67,31,244,240, +192,241,232,8,201,227,190,57,60,112,79,0,25,134,105,137,207,217,38,227,254,155,219,131,212,244,62,113,61,59,122,251,98,162,121,166,61,109,100,192,254,244,240,131,223,191,157,233,237,223,242,216,219,49, +224,34,147,142,159,106,233,158,120,4,142,189,198,65,245,21,25,75,176,72,84,81,235,254,146,153,232,125,101,3,62,227,56,235,138,0,203,47,145,131,101,33,99,201,205,228,3,233,200,148,144,49,215,140,242,72, +230,128,216,32,27,55,94,79,252,196,32,231,142,227,57,29,56,3,159,115,87,219,237,160,240,9,235,200,185,183,36,14,9,39,116,135,241,0,103,211,32,19,81,21,189,108,157,196,12,145,205,197,160,233,245,110,121, +246,231,240,34,128,43,29,160,227,236,172,9,232,77,244,60,99,175,33,199,126,192,103,142,216,229,166,37,97,204,9,130,15,91,180,45,145,129,212,51,142,224,100,115,223,3,173,79,139,172,31,155,145,158,179,218, +129,236,56,13,250,224,254,61,0,46,200,57,97,193,63,242,243,110,199,235,133,140,15,65,199,3,143,67,128,10,109,12,103,254,88,69,156,114,62,208,9,60,116,61,128,231,146,59,254,52,223,37,7,2,222,16,57,227, +206,45,159,192,130,48,121,249,73,3,191,21,120,45,200,228,4,99,254,212,177,96,125,126,66,63,33,207,115,142,173,63,105,29,99,183,5,73,57,50,174,71,96,126,88,15,78,122,122,142,249,192,5,63,33,63,231,140, +67,161,192,97,158,153,193,32,169,199,118,193,3,143,194,148,219,161,3,116,40,14,51,180,56,31,206,69,200,62,135,62,254,246,9,184,35,131,111,219,164,192,242,114,57,6,2,64,235,211,36,228,96,228,98,152,82, +227,37,191,113,219,159,49,184,252,173,155,220,14,71,182,8,160,10,255,0,102,139,146,209,198,6,122,2,24,247,206,91,237,60,15,207,222,163,146,8,128,59,86,17,211,39,200,222,113,215,7,253,35,183,227,245,169, +202,57,251,198,220,142,195,116,160,103,25,57,255,0,68,227,39,61,49,207,57,166,8,14,56,54,223,136,148,241,255,0,128,224,246,207,183,231,64,21,124,168,137,198,232,48,1,200,251,44,103,60,224,116,187,7,60, +244,200,60,224,224,142,35,104,32,36,143,50,0,58,115,0,24,207,160,251,97,56,227,176,234,7,227,115,203,113,198,235,115,235,133,159,29,199,64,138,8,28,241,220,131,214,152,75,255,0,125,65,3,180,23,7,7,60, +12,5,29,121,238,57,224,113,208,2,159,217,237,198,71,153,15,25,192,88,84,122,113,135,184,63,134,72,227,167,92,134,249,16,159,227,136,240,113,251,168,114,79,35,63,241,246,163,184,201,199,28,250,28,218,1, +134,226,37,148,30,120,22,215,100,115,223,150,63,137,199,39,28,103,154,141,166,148,116,146,97,128,58,91,207,130,78,126,240,115,200,201,233,208,12,96,231,160,5,118,130,219,171,60,124,103,143,38,2,64,61, +72,255,0,76,30,157,178,61,184,53,1,75,53,232,227,39,156,121,86,223,158,13,231,231,210,172,153,165,207,55,87,3,24,60,67,55,182,70,60,204,115,208,244,192,200,228,243,72,110,102,92,98,234,233,134,15,221, +183,144,143,124,98,92,243,143,207,158,59,0,82,101,176,232,100,140,19,193,6,43,108,228,116,39,23,71,158,153,206,115,223,145,154,136,173,143,98,158,128,45,188,68,247,228,254,255,0,252,228,156,158,115,124, +222,204,71,252,124,93,182,7,56,181,115,219,159,191,55,124,30,167,158,61,120,111,219,31,248,164,190,7,182,45,28,17,199,251,19,28,147,233,215,219,24,192,5,6,142,3,130,185,56,28,98,213,49,207,191,158,1,227, +174,15,110,59,211,76,40,122,7,246,34,5,4,140,250,9,250,112,115,200,56,245,28,86,131,95,99,37,159,80,61,179,246,73,240,14,71,31,43,191,30,227,156,146,49,193,168,26,252,28,255,0,199,233,244,223,107,54,113, +208,112,241,145,147,201,228,146,49,142,113,154,0,168,214,220,114,178,227,168,197,170,123,224,243,35,147,250,247,235,77,251,59,246,91,140,251,65,24,24,200,247,7,191,113,219,60,138,179,246,213,57,249,110, +78,63,233,218,64,71,176,62,79,111,175,212,138,136,222,70,62,240,186,231,183,148,203,145,199,111,36,17,145,211,39,25,39,142,113,64,21,154,210,82,73,255,0,74,29,15,17,70,70,57,227,239,123,115,158,58,14, +7,21,9,182,155,32,168,188,63,238,197,16,250,103,159,229,207,110,113,87,77,196,44,57,55,120,231,56,140,191,78,159,242,196,156,117,199,175,94,106,51,53,183,117,185,57,238,96,126,7,182,109,79,243,231,30, +217,160,10,191,102,189,32,97,111,27,39,128,34,140,117,198,122,17,207,35,57,7,4,115,198,9,5,149,243,115,182,255,0,233,176,46,127,13,172,48,127,30,189,115,154,156,189,155,158,82,227,142,185,130,92,31,127, +248,244,35,57,198,79,79,78,180,194,182,64,229,86,96,61,162,126,71,225,101,198,120,228,99,167,78,162,128,43,53,165,248,224,197,119,199,77,204,7,29,143,41,156,122,156,122,228,12,17,85,30,214,236,28,52,83, +254,51,64,7,126,62,100,7,252,247,53,160,194,220,253,209,112,56,56,1,14,121,206,73,15,99,130,125,186,115,206,65,168,246,166,78,209,112,6,121,196,113,100,231,212,125,135,146,123,158,163,219,165,0,103,155, +123,128,8,22,242,28,14,115,61,185,207,24,60,236,35,177,206,79,251,188,228,212,102,218,110,246,68,147,193,6,234,216,118,231,141,128,156,119,31,153,173,18,131,35,47,112,185,7,144,98,7,168,7,10,44,186,117, +239,248,119,164,49,227,27,110,110,129,3,4,133,139,3,39,179,27,19,156,244,28,250,112,112,8,0,202,104,36,7,7,77,95,161,186,67,159,174,39,10,120,207,97,211,29,122,52,219,190,51,253,153,17,60,156,153,99,57, +232,122,253,164,147,233,211,160,247,231,84,195,49,24,75,139,134,28,117,49,30,57,206,64,178,0,96,126,135,56,168,204,51,14,179,207,234,121,182,7,223,150,178,7,223,57,0,100,100,227,57,0,206,242,31,24,58, +92,99,0,114,39,132,125,126,245,202,250,243,158,79,161,52,134,2,120,254,207,136,103,156,253,174,221,71,124,227,23,71,240,201,245,7,145,87,204,50,156,254,254,232,3,220,73,98,78,123,245,180,31,161,227,142, +77,70,214,247,61,82,231,80,246,62,118,158,122,244,200,251,27,251,227,39,208,247,160,10,70,205,49,150,177,132,156,118,186,129,137,206,120,226,228,115,207,92,31,211,52,11,52,234,108,162,83,232,37,136,156, +158,49,205,224,35,29,120,24,254,117,96,193,121,255,0,63,119,195,167,1,172,128,207,185,22,24,207,78,156,247,231,138,136,199,115,146,13,237,200,238,3,181,158,114,1,235,186,200,2,51,215,142,157,113,64,15, +22,106,57,22,35,182,70,244,199,235,120,220,241,75,246,82,120,91,80,62,143,25,232,59,159,180,28,99,57,29,7,177,226,160,104,46,15,252,190,201,238,3,88,1,249,125,139,31,136,24,62,184,230,154,45,103,39,254, +62,174,24,231,63,47,216,95,62,156,139,63,211,160,199,7,165,0,88,251,48,83,247,29,120,233,152,91,28,127,116,221,19,159,110,231,161,197,30,64,28,25,49,207,120,237,135,115,215,116,173,200,227,128,79,39,233, +81,11,43,130,121,150,224,129,147,207,216,185,252,225,82,62,128,115,219,28,82,53,145,25,220,247,125,243,131,106,48,113,206,113,1,24,227,140,159,79,192,2,99,10,168,229,200,235,212,64,6,6,51,194,63,166,79, +232,6,77,66,99,139,254,122,126,171,198,115,207,202,196,131,199,110,188,103,56,197,70,246,160,15,150,73,255,0,224,70,2,123,113,149,181,111,160,200,232,123,99,33,159,103,147,129,231,76,113,141,167,114,126, +31,48,178,62,254,212,0,243,28,92,134,40,79,188,108,73,28,112,58,14,153,198,49,250,242,205,144,3,144,171,158,132,155,101,193,207,0,100,198,195,211,177,63,76,84,158,84,220,98,73,7,108,178,130,121,207,127, +178,129,244,250,126,73,178,65,252,108,70,120,195,70,70,56,199,6,17,131,158,123,1,200,24,198,8,4,101,35,234,66,3,254,228,96,14,167,254,120,103,39,63,207,190,42,38,8,27,137,16,14,224,152,63,145,182,7,30, +156,156,250,213,159,41,207,66,231,184,230,33,159,160,217,140,241,206,63,26,104,134,124,238,38,231,142,70,21,8,198,70,15,78,121,29,184,160,10,166,52,32,159,49,15,66,72,72,184,207,184,132,14,125,185,231, +219,52,205,163,180,176,227,169,201,4,140,115,212,66,72,235,215,61,73,207,57,171,198,57,185,195,74,56,239,179,245,249,14,62,132,146,57,246,168,255,0,126,167,59,166,28,113,133,83,233,220,68,115,159,203, +62,134,128,41,113,218,68,201,244,119,56,239,218,0,79,167,126,57,52,140,153,28,200,50,123,102,110,152,207,67,110,126,184,227,30,221,42,255,0,155,40,201,221,56,57,227,40,164,119,227,6,53,31,215,175,61,48, +25,164,238,243,28,158,49,28,93,70,122,28,103,158,163,242,25,160,12,227,111,49,198,217,128,200,227,59,206,8,247,54,108,71,166,122,242,59,245,81,107,112,63,229,229,51,215,7,204,221,248,15,177,224,247,36, +240,70,49,140,245,209,243,14,0,45,116,199,190,18,51,212,228,242,51,192,36,156,116,246,233,134,187,231,0,155,145,129,131,185,20,99,241,235,143,243,232,0,5,79,34,235,3,19,68,125,114,101,36,113,201,4,89, +129,249,156,247,228,242,3,109,112,6,60,232,134,72,39,41,43,96,123,126,228,30,50,122,15,203,165,88,11,147,255,0,45,241,158,162,33,145,142,131,33,131,119,237,249,112,112,184,29,51,62,50,58,195,203,113,198, +127,120,64,61,15,127,74,0,170,109,167,200,62,100,77,236,34,186,234,61,79,145,234,57,28,142,40,171,64,66,48,75,207,236,26,50,8,199,211,7,245,57,227,175,20,80,7,163,226,212,253,230,148,30,216,181,35,223, +63,116,255,0,44,119,24,164,97,102,160,226,73,207,98,60,162,48,48,58,99,7,191,168,61,250,98,176,252,228,39,33,33,35,29,209,207,56,29,188,165,61,70,123,10,113,153,72,3,200,132,243,252,118,242,16,61,243, +228,56,244,200,247,247,160,13,112,109,50,62,123,140,122,48,144,100,244,255,0,158,135,62,255,0,150,41,24,218,30,159,104,35,174,73,124,15,92,102,79,113,200,200,198,122,115,89,25,56,56,22,203,219,30,67,147, +237,194,219,2,123,227,184,237,214,148,58,227,162,19,192,194,193,34,247,61,7,217,142,71,169,227,62,135,52,1,162,13,184,227,247,184,255,0,120,159,203,7,4,118,207,215,24,207,50,110,128,127,11,149,255,0,117, +27,3,235,129,199,66,125,199,124,26,200,50,39,59,178,50,126,239,150,224,253,127,227,219,240,207,111,78,9,165,223,17,232,206,64,206,126,73,112,126,191,185,80,71,92,122,117,231,184,6,207,159,104,56,196,231, +182,68,113,254,35,33,198,71,108,117,201,57,0,138,60,251,102,200,79,52,28,115,184,5,57,233,140,9,114,71,211,161,231,173,97,29,164,114,23,7,147,144,202,121,228,112,45,253,191,63,83,213,164,71,159,188,70, +51,206,37,32,0,58,124,177,129,233,250,30,244,1,188,90,19,212,63,231,158,221,178,196,244,29,7,165,68,94,49,247,86,110,125,241,235,142,128,96,143,108,131,244,233,142,94,28,252,206,224,113,156,44,224,240, +73,7,59,121,56,24,207,94,189,179,134,239,181,60,239,156,227,57,195,63,61,129,37,148,30,221,61,241,206,50,64,53,154,86,28,8,230,32,12,100,72,51,207,56,193,108,119,57,207,160,239,73,230,72,6,76,83,144,61, +101,183,228,140,30,190,89,199,78,0,39,233,220,101,111,178,56,6,75,161,219,135,28,140,227,186,241,159,99,199,168,165,243,44,7,4,221,177,28,225,92,146,7,29,114,122,117,63,169,205,0,104,27,153,51,254,166, +115,198,57,107,115,244,193,242,207,211,161,199,56,167,11,137,59,195,117,236,55,91,227,242,242,250,158,57,246,235,233,69,101,177,254,20,188,199,76,176,13,208,243,192,12,115,245,32,122,81,190,195,156,67, +33,56,228,24,223,60,231,174,23,191,249,56,234,1,109,174,101,201,253,197,214,61,188,188,255,0,227,171,143,174,57,30,221,41,158,116,236,70,34,188,32,247,44,185,238,113,202,12,117,198,51,156,14,42,184,123, +47,225,183,98,15,98,147,12,224,116,199,150,112,56,7,28,247,235,158,35,103,179,199,207,6,61,51,20,188,116,224,143,40,12,159,167,167,165,0,93,47,46,14,97,187,245,192,8,121,29,243,177,129,61,251,116,238, +105,161,230,254,27,107,223,252,151,198,114,48,126,104,242,51,199,227,239,129,85,4,246,64,0,35,63,65,4,197,189,186,196,115,206,15,95,233,135,9,108,201,207,144,8,25,255,0,150,50,251,30,233,215,28,224,16, +123,231,189,0,90,223,63,79,34,232,143,113,110,79,183,240,118,250,30,114,79,0,83,115,46,72,54,247,36,3,217,108,191,46,97,57,250,224,254,3,147,1,123,35,206,197,80,54,228,136,91,56,238,56,231,156,112,50, +51,207,66,105,134,107,32,120,216,65,245,182,151,3,243,228,100,244,198,15,57,227,169,0,184,29,134,1,182,184,29,195,121,112,57,231,160,194,64,71,30,185,28,123,83,177,43,255,0,5,210,243,140,121,8,164,231, +211,253,24,156,96,158,252,244,231,182,127,159,96,73,4,67,159,250,247,155,183,124,100,241,215,24,39,175,92,230,154,215,22,25,255,0,150,56,56,225,109,228,31,158,115,142,199,175,7,242,160,13,18,178,14,55, +78,79,79,154,32,64,236,62,236,42,122,144,15,39,4,244,20,208,179,19,143,223,0,56,255,0,82,70,115,254,209,136,231,142,63,63,124,80,251,70,157,216,39,115,145,9,206,71,61,115,145,158,222,216,62,193,254,117, +128,193,13,24,25,255,0,158,0,158,189,112,100,94,6,8,61,73,0,99,6,128,47,98,112,70,17,201,247,79,155,57,61,204,71,219,57,207,61,233,54,93,100,225,101,81,220,121,96,131,223,39,48,15,200,30,59,17,154,170, +179,217,28,40,116,36,122,91,166,125,123,207,208,247,36,12,100,15,83,82,121,182,205,252,74,195,25,218,109,227,57,3,4,245,185,31,83,199,24,207,208,2,96,183,132,127,172,151,212,40,137,79,175,79,221,113,248, +227,175,126,106,64,151,39,163,57,192,254,40,1,7,160,39,132,35,61,71,24,29,70,14,65,21,141,205,186,140,224,140,96,0,176,66,50,49,145,192,184,39,29,51,236,71,29,106,35,121,24,39,111,157,129,201,196,106, +58,158,121,89,73,199,190,79,94,217,38,128,52,130,220,3,131,50,47,94,76,109,199,36,14,145,241,146,72,24,30,164,140,83,194,220,48,193,184,136,103,144,60,167,237,199,98,57,239,156,12,14,163,158,51,22,249, +79,240,202,120,233,147,159,80,112,36,200,198,57,228,255,0,67,42,221,245,249,101,3,140,128,252,250,244,50,100,30,0,198,15,110,49,205,0,94,48,92,30,68,240,228,30,50,8,60,114,6,26,84,3,168,234,121,56,233, +78,84,189,24,195,219,129,223,59,6,1,234,9,50,158,157,114,14,61,115,214,169,125,167,142,25,193,35,24,121,6,123,115,247,176,15,28,251,19,76,55,41,145,153,16,12,116,243,200,207,175,32,183,61,59,118,231,181, +0,108,5,189,108,110,185,183,11,159,239,195,142,49,220,201,215,235,215,0,103,129,135,5,187,3,31,105,128,142,255,0,112,159,175,19,103,177,235,199,181,97,181,196,71,25,153,15,35,143,59,211,183,191,208,246, +29,64,197,33,158,220,103,50,193,159,250,238,15,227,219,249,156,245,200,28,208,6,238,46,122,253,162,223,30,234,196,246,232,68,224,123,244,61,125,169,203,231,140,230,75,114,65,25,249,37,57,233,199,18,115, +238,63,194,185,239,180,219,224,145,37,185,28,14,39,62,158,209,56,237,156,127,76,10,79,62,18,79,207,109,156,116,107,137,176,14,71,101,139,174,122,15,195,61,232,3,161,243,36,83,146,246,252,227,128,147,103, +244,152,126,0,96,112,125,169,190,113,39,254,89,147,140,100,37,201,250,231,253,36,100,126,3,158,131,181,97,172,150,228,243,45,136,246,105,219,230,39,142,248,39,220,17,201,60,140,212,194,75,114,56,109,56, +227,24,219,34,183,30,164,151,24,3,183,25,247,245,0,211,47,200,198,1,244,9,118,122,158,167,19,62,70,61,49,200,192,198,120,60,237,164,110,69,32,96,99,201,187,35,145,220,22,36,126,7,169,30,226,179,195,197, +140,44,182,71,232,98,57,235,254,216,60,224,126,31,149,52,178,14,26,91,44,117,198,232,203,115,142,49,230,122,244,201,235,222,128,52,124,216,9,25,68,28,129,131,107,122,71,126,156,130,126,163,140,241,158, +104,34,216,142,33,137,178,56,38,210,255,0,31,250,51,61,122,228,113,140,226,179,65,78,137,45,185,199,92,4,108,28,250,121,141,198,61,1,207,165,72,178,15,239,194,195,185,204,121,224,127,188,64,61,249,25, +60,28,114,40,2,238,196,56,34,8,71,108,139,123,209,219,61,229,29,191,30,57,235,202,136,212,14,33,135,7,3,62,69,224,31,92,137,207,124,231,39,35,249,64,36,61,138,31,163,196,63,151,24,201,233,208,247,28,212, +162,105,0,229,120,246,120,134,58,250,168,254,158,224,208,4,222,74,145,254,162,14,63,189,21,215,29,122,31,60,114,120,234,49,193,230,133,128,183,75,120,135,184,138,243,29,121,233,41,231,243,62,231,154,98, +204,220,15,41,254,130,72,70,64,61,198,214,235,140,227,3,183,65,205,60,78,221,131,168,238,11,219,31,94,226,22,228,250,99,166,51,198,72,0,157,45,156,103,17,66,48,59,199,124,8,228,241,223,28,123,245,206, +73,206,106,97,111,40,198,216,237,193,227,31,37,215,167,31,197,140,125,123,119,198,113,83,206,99,201,121,1,60,0,175,108,59,18,113,136,56,201,35,166,8,233,223,52,245,159,60,19,43,3,235,53,184,244,255,0, +166,61,51,223,215,142,72,160,11,66,25,70,8,22,128,250,98,224,99,158,203,187,118,72,232,122,250,251,202,166,233,120,6,217,134,71,4,92,113,193,199,222,39,211,220,99,175,98,106,44,241,158,144,187,122,255, +0,164,65,207,110,71,148,58,227,167,63,76,115,86,22,229,128,31,232,236,203,140,255,0,199,204,25,219,212,112,34,56,199,0,112,61,200,230,128,44,102,225,64,44,97,193,227,11,246,140,116,228,130,20,158,191, +228,28,83,195,57,198,228,4,231,146,173,63,35,184,230,23,235,207,1,177,244,206,42,17,120,56,197,147,250,134,23,81,19,193,60,28,168,31,160,250,115,79,254,208,35,1,172,223,208,102,226,22,238,7,1,79,248,16, +57,235,138,0,157,78,71,66,61,7,153,40,39,220,143,179,99,28,142,248,233,206,69,41,84,108,131,188,63,170,203,32,57,228,140,31,178,144,73,63,143,7,61,42,5,212,20,253,235,86,24,3,239,77,24,35,158,155,67,130, +73,200,233,143,207,57,149,111,147,60,70,163,184,6,72,137,224,247,204,192,14,131,241,224,242,57,0,148,70,64,194,203,39,76,252,242,166,211,142,64,37,173,115,223,185,36,254,181,58,70,199,32,58,246,31,235, +151,147,248,91,47,83,211,25,227,161,199,21,16,187,143,156,196,140,63,235,164,32,123,231,253,48,255,0,46,125,186,21,251,92,25,31,232,193,143,65,135,131,191,28,31,182,30,163,232,104,2,79,179,49,56,223,140, +244,59,201,193,231,28,11,99,192,30,195,142,185,201,196,203,102,113,247,143,94,160,2,57,235,193,137,79,255,0,95,165,65,246,168,70,127,209,49,143,70,140,145,142,131,228,185,228,227,29,78,113,220,112,105, +62,213,7,107,67,158,249,9,146,59,100,249,205,232,58,99,215,173,0,93,93,60,177,198,230,97,215,148,86,3,161,206,48,49,219,28,100,14,181,39,246,116,157,157,185,236,97,24,61,199,80,63,207,115,222,144,186, +136,158,109,223,183,5,161,3,159,115,40,35,142,164,251,84,203,115,110,56,17,178,158,224,27,98,64,255,0,191,156,103,168,28,19,143,94,40,2,193,177,116,39,47,31,65,214,1,159,175,166,79,191,233,198,23,236, +135,169,49,145,156,124,208,129,215,174,64,112,58,123,14,131,38,161,50,91,177,230,54,224,231,159,32,158,222,146,17,219,167,190,58,243,78,83,110,1,37,92,30,50,49,108,122,231,177,144,119,227,29,115,219,29, +64,39,88,8,206,69,168,239,204,42,127,94,221,187,131,220,103,156,74,164,47,7,236,109,208,124,209,133,199,183,12,14,61,242,51,248,84,96,219,224,124,146,17,212,16,182,195,7,39,31,41,102,237,207,99,156,245, +0,210,110,183,29,207,175,221,183,207,76,123,246,233,211,191,181,0,78,124,188,31,221,218,244,254,233,233,219,146,248,199,126,248,244,237,72,190,79,116,183,3,60,128,201,158,221,121,220,49,145,142,115,215, +28,228,136,149,84,159,148,48,39,167,22,195,57,207,161,57,228,246,193,238,61,42,64,190,157,127,218,17,126,29,70,58,143,79,196,80,4,223,184,31,122,11,108,117,63,189,140,122,231,3,14,73,199,167,63,78,13, +52,155,108,99,236,150,196,31,89,87,158,157,51,14,71,167,126,191,156,66,57,114,125,207,101,131,36,115,232,141,156,241,223,211,222,172,170,72,163,27,100,36,116,2,8,207,65,236,135,36,118,254,125,168,2,18, +150,249,27,172,109,15,28,254,253,79,167,97,16,56,193,250,126,116,170,182,191,243,231,104,131,24,230,117,4,96,231,24,200,56,227,60,12,126,162,166,16,206,114,66,78,125,133,186,227,212,224,133,28,144,56, +198,112,71,94,192,242,174,184,194,78,58,113,228,46,254,72,232,56,35,35,35,156,123,103,176,3,60,187,124,255,0,199,189,151,160,30,114,49,199,161,253,230,63,144,238,113,210,151,202,128,128,5,189,184,244, +219,42,2,123,156,19,48,239,158,71,78,57,205,76,5,226,112,177,220,156,103,143,179,167,79,169,32,228,143,199,181,46,219,230,31,114,251,223,247,41,129,159,97,39,227,140,14,184,207,28,0,67,246,120,177,243, +91,194,71,169,156,100,3,219,253,119,235,158,59,100,1,151,249,16,18,64,133,23,7,175,156,6,71,177,44,192,118,7,4,159,78,181,42,174,160,48,190,85,233,7,169,216,128,250,244,105,49,237,140,231,243,230,202, +155,193,144,96,190,3,147,247,99,39,167,253,118,0,241,156,128,71,29,168,2,168,134,12,127,171,132,100,96,19,41,108,119,254,19,237,248,227,174,50,105,226,40,70,9,251,48,244,195,49,57,233,209,177,207,169, +30,220,85,157,247,99,145,21,250,231,130,60,184,123,112,113,190,112,126,167,240,233,79,89,46,57,204,23,192,227,251,150,195,219,254,126,215,60,99,166,56,197,0,64,35,131,32,110,136,130,58,41,80,70,58,3,151, +207,57,60,159,169,205,73,178,53,199,239,2,250,129,40,80,49,143,73,123,247,192,169,252,201,136,225,47,23,140,231,203,181,36,125,115,118,125,198,122,119,198,42,53,121,176,73,91,195,147,212,199,0,24,224, +99,2,232,129,250,3,244,232,1,22,210,79,202,228,231,128,162,230,19,158,189,157,152,253,70,61,126,128,217,46,79,203,54,49,218,88,14,113,223,170,140,113,238,113,215,167,54,1,99,201,75,160,122,12,36,3,191, +24,219,112,126,163,167,167,212,42,79,240,221,116,28,145,106,15,212,254,243,57,246,232,64,252,8,4,25,153,73,10,211,12,55,252,244,179,245,247,39,3,142,191,135,122,118,249,200,199,239,75,28,243,230,89,19, +223,57,25,28,250,28,156,145,248,211,252,163,129,133,155,31,237,53,168,207,95,66,72,227,158,79,78,114,14,5,55,203,207,222,73,152,246,193,181,110,71,127,245,195,234,56,28,243,237,64,12,221,119,255,0,77, +177,142,255,0,96,199,114,126,244,139,232,56,231,211,185,203,132,151,192,0,162,92,119,33,116,236,99,254,255,0,126,95,95,108,83,154,60,142,60,224,48,6,10,64,73,61,15,37,152,123,99,142,252,103,131,1,135, +146,49,114,217,29,54,66,79,39,182,80,158,190,153,29,241,64,22,55,234,24,225,46,70,50,6,239,236,204,28,245,198,103,245,227,160,247,231,32,55,254,38,57,249,162,148,143,103,211,193,199,60,29,183,56,193,250, +17,215,24,226,163,88,1,0,5,189,199,60,136,226,192,247,255,0,143,115,193,233,146,56,35,233,145,162,83,209,47,179,234,22,20,244,61,69,152,32,118,200,35,129,206,122,208,4,140,111,79,38,216,227,140,19,246, +22,192,252,46,189,253,1,30,157,233,202,215,60,110,183,224,127,211,59,60,30,61,174,79,60,224,231,183,110,134,171,36,35,146,97,185,192,231,37,227,244,28,100,217,128,61,201,228,28,245,169,54,184,3,103,218, +1,3,129,190,60,3,248,90,128,113,145,158,128,242,40,2,200,146,111,249,226,190,156,173,159,57,228,127,203,86,252,112,14,58,114,105,225,174,152,127,168,139,29,65,34,219,4,243,253,208,63,60,251,31,67,81,124, +254,65,89,71,25,200,69,99,207,251,182,199,167,78,231,35,166,8,52,160,200,8,44,183,33,123,1,9,39,242,22,61,49,219,60,2,57,232,104,2,124,79,206,235,123,82,70,71,72,24,251,146,60,182,39,142,253,134,120,237, +74,55,140,143,179,90,158,220,172,61,121,236,45,250,119,28,247,207,6,162,12,195,24,130,228,159,120,74,129,146,58,237,177,61,123,130,70,49,218,144,187,183,62,93,200,207,80,21,148,231,140,115,246,14,59,241, +158,8,236,0,160,7,144,199,25,138,209,71,57,59,97,3,219,159,32,28,1,142,227,29,234,54,49,12,113,104,120,61,22,18,113,237,152,88,130,65,56,233,145,249,9,21,229,3,2,41,79,251,217,24,233,211,253,3,28,254, +99,154,127,153,57,231,203,96,51,252,82,72,49,239,133,179,239,232,125,177,128,5,0,85,47,8,63,47,144,164,242,49,180,28,142,252,90,227,242,199,31,153,79,49,65,63,190,128,103,61,76,124,245,199,63,100,199, +60,140,113,156,142,153,25,178,37,156,158,91,111,29,158,83,206,125,237,215,35,60,241,158,255,0,74,148,188,163,172,155,176,15,57,108,131,219,172,96,117,227,211,131,64,20,204,165,184,18,196,125,8,49,145, +235,140,11,92,228,103,156,96,123,102,134,243,143,70,67,255,0,109,17,71,126,9,251,47,166,50,6,121,35,168,230,167,50,74,127,229,163,30,122,28,129,223,191,0,227,215,143,228,40,243,31,0,230,78,184,227,118, +61,179,207,226,113,233,147,212,138,0,168,124,238,133,212,15,250,232,79,203,232,2,195,199,81,219,175,64,122,80,35,145,134,68,157,186,239,145,71,82,8,63,185,56,199,124,241,86,204,146,127,125,135,160,57, +252,63,229,170,159,195,31,81,212,83,73,148,147,251,199,25,198,63,213,158,125,70,233,137,207,108,109,29,121,160,10,222,92,192,28,204,163,3,31,235,142,73,56,31,197,8,192,235,158,167,166,8,233,81,5,144,224, +121,231,57,207,252,124,42,231,35,29,69,174,238,156,156,103,216,226,174,15,59,159,154,87,224,159,151,200,207,28,231,239,113,199,29,113,158,121,227,35,43,177,0,172,195,221,86,16,59,245,13,46,56,207,96,61, +143,168,5,111,46,92,241,35,117,206,69,206,1,39,167,72,0,35,232,125,57,244,79,46,94,114,102,96,122,129,115,25,207,212,148,207,94,152,227,215,158,147,155,117,108,150,142,225,178,7,2,59,67,143,174,89,142, +126,167,24,245,57,203,5,186,12,17,111,121,145,159,249,103,100,167,61,115,235,245,3,175,63,74,0,97,128,176,201,91,130,79,111,54,32,115,223,4,167,65,158,1,231,167,7,60,70,214,164,28,148,159,10,58,249,209, +119,255,0,183,103,31,136,235,208,19,138,159,201,60,127,161,222,28,250,27,96,71,184,11,146,7,63,129,2,151,236,217,0,155,75,246,56,206,8,136,142,248,25,40,192,159,229,233,200,160,10,141,18,245,99,112,7, +29,100,136,227,191,81,107,143,94,50,49,142,221,212,164,0,3,230,207,147,158,55,195,215,24,199,252,123,115,207,174,61,129,32,26,153,173,147,4,181,141,240,199,111,46,46,252,245,242,59,30,157,193,201,207, +57,13,251,60,29,5,158,162,71,210,51,239,209,109,152,142,131,57,0,158,51,64,21,217,227,65,157,243,1,208,31,180,193,207,169,0,90,18,6,120,206,61,105,134,104,72,229,166,32,118,243,227,35,169,29,5,174,115, +244,35,219,156,138,157,162,136,125,219,109,64,147,142,10,253,122,98,216,31,78,163,219,61,234,3,26,30,62,205,168,15,79,150,67,207,61,141,183,98,1,255,0,245,80,0,30,12,231,35,142,197,213,137,246,56,128, +99,220,146,50,122,119,164,243,237,191,191,24,246,218,51,199,185,132,130,125,113,220,246,197,55,110,56,16,222,227,36,5,48,159,126,163,236,167,57,244,199,57,207,106,107,18,7,250,139,158,157,76,82,1,193, +25,225,109,129,247,201,60,115,248,128,60,203,1,254,43,112,72,207,49,0,120,56,28,173,174,61,51,201,233,215,156,134,121,241,168,225,173,155,167,252,178,203,15,175,250,58,227,158,188,15,78,106,61,243,158, +5,188,172,65,231,114,76,70,59,31,245,64,116,244,207,92,250,98,34,215,45,207,217,72,60,127,203,25,200,32,117,227,201,227,56,239,206,61,177,64,19,125,165,24,227,116,3,191,220,192,207,76,112,138,64,57,231, +156,15,228,141,180,130,249,181,60,116,109,248,233,158,49,32,25,245,39,147,199,24,205,87,103,184,31,242,201,120,61,76,45,199,110,134,46,79,177,250,99,147,81,230,228,242,55,12,227,164,13,142,59,28,160,234, +120,39,240,231,52,1,43,49,31,195,107,193,236,178,243,211,251,175,199,126,156,116,166,238,97,218,3,145,208,71,51,118,232,48,192,243,250,116,39,213,119,94,224,227,27,127,235,217,139,103,235,228,224,1,254, +7,181,53,103,188,4,141,160,130,64,39,236,234,126,152,45,31,30,253,184,57,60,114,0,31,55,25,9,27,100,255,0,207,57,71,191,93,253,123,31,175,106,104,123,143,225,64,48,123,44,255,0,161,18,115,248,159,199, +24,21,55,218,46,115,130,184,30,159,100,135,57,239,140,167,28,103,167,65,249,211,190,211,46,0,42,248,239,136,34,83,142,49,140,70,64,199,3,140,118,199,176,5,99,37,217,233,9,63,79,55,184,199,241,184,231, +211,4,147,142,156,83,60,203,197,228,198,195,159,238,184,57,57,60,254,245,71,226,61,170,223,218,92,15,185,49,193,198,76,49,145,238,7,203,199,97,201,0,143,74,103,218,121,201,243,215,216,91,195,207,169,251, +167,144,71,185,201,231,142,64,5,67,45,201,254,22,24,234,64,35,156,116,206,243,219,140,156,115,232,73,203,60,201,65,193,207,25,235,207,92,245,27,14,79,124,231,7,175,94,42,233,187,132,18,73,159,140,242, +97,135,142,160,31,245,92,127,79,210,163,107,248,23,36,25,15,25,37,162,136,131,206,15,34,50,57,228,30,49,142,78,49,192,5,54,184,145,64,200,127,112,177,161,39,142,78,124,163,159,108,158,51,237,138,97,187, +24,255,0,87,112,78,122,121,113,241,234,115,246,98,57,250,143,231,141,17,169,195,212,161,35,61,227,137,73,228,242,113,7,243,29,61,65,53,27,234,86,205,159,221,169,24,231,2,0,61,7,62,80,35,219,255,0,212, +40,2,152,188,82,57,134,82,115,252,80,167,191,113,110,188,116,224,245,193,246,166,155,136,135,45,1,207,32,101,0,201,207,57,196,124,231,140,18,123,251,84,173,127,110,220,253,157,73,60,117,183,245,29,127, +115,238,59,156,127,56,140,240,179,96,90,14,114,7,239,97,76,245,56,255,0,84,72,231,174,62,167,29,104,2,51,52,78,50,109,73,199,81,229,69,199,127,226,140,3,156,242,114,78,106,54,251,51,0,77,147,47,78,66, +64,51,255,0,124,46,121,239,158,125,58,84,165,161,61,44,151,61,193,184,140,146,126,190,80,25,239,199,57,251,167,165,48,158,15,250,28,99,28,3,246,152,195,31,252,130,121,235,159,155,36,100,123,80,5,114,182, +128,2,176,12,247,13,34,134,252,66,131,199,56,35,31,81,232,205,176,242,124,136,207,174,110,24,109,234,49,192,95,78,227,211,146,106,198,91,25,91,84,30,153,186,81,142,50,1,196,75,237,223,234,7,56,105,87, +228,152,226,80,61,110,216,103,62,153,95,94,122,96,241,142,58,128,85,34,62,84,65,111,235,159,62,229,142,70,120,32,76,1,207,76,129,129,158,213,9,141,9,57,130,220,243,252,83,221,129,215,185,243,215,233,247, +191,149,91,111,52,240,177,245,227,41,119,144,120,207,82,8,60,125,61,70,57,2,2,178,224,226,41,135,28,145,114,63,62,131,62,253,120,231,39,34,128,35,107,117,113,254,166,192,119,193,185,187,224,117,228,9, +199,226,123,254,84,209,98,191,243,199,77,61,178,211,220,12,231,190,77,211,100,243,192,35,160,237,78,204,195,164,50,21,0,156,155,151,61,112,73,249,66,227,142,79,61,77,32,105,206,64,73,71,169,91,139,142, +56,231,37,100,0,14,79,29,178,71,92,80,4,102,202,33,255,0,44,116,252,255,0,179,43,31,253,10,67,211,62,248,231,161,235,27,105,241,158,177,217,18,15,56,201,192,231,144,119,142,59,142,51,221,71,38,167,223, +48,39,45,46,15,95,244,139,130,6,63,237,167,0,228,231,25,253,0,166,153,103,254,22,233,215,50,76,61,243,157,196,100,115,200,30,220,102,128,42,54,157,30,114,34,176,252,21,179,144,113,219,61,201,0,146,1,24, +231,6,154,116,231,4,236,182,181,96,57,249,97,14,79,182,124,178,51,212,228,17,158,71,38,166,105,37,57,37,148,250,110,154,229,142,79,97,211,191,191,36,224,118,168,243,38,1,221,31,61,183,206,58,244,231,156, +118,235,147,219,189,0,52,233,210,15,249,114,132,158,48,126,200,141,207,28,97,147,158,188,140,118,201,193,39,41,246,9,113,159,176,66,125,205,140,94,220,2,99,57,57,29,177,211,56,235,65,47,220,100,147,212, +52,216,252,204,39,233,192,63,210,162,217,43,127,12,163,4,159,249,109,131,158,56,196,67,142,188,133,253,15,0,11,246,57,1,36,233,240,254,22,177,96,244,29,60,174,59,115,215,29,186,211,77,171,15,249,134,197, +211,143,244,56,184,233,255,0,76,71,175,98,121,252,233,194,25,87,56,145,151,215,47,63,126,59,196,114,59,242,59,28,26,67,28,196,21,51,28,127,178,100,31,78,177,115,156,96,253,122,115,130,1,19,70,64,25,211, +208,118,202,90,198,58,159,104,136,29,61,135,165,70,83,25,219,98,71,94,124,152,199,92,103,36,34,247,245,247,224,211,204,114,2,65,105,49,158,15,152,195,235,131,228,227,215,28,140,142,156,102,162,253,224, +224,25,14,7,24,149,134,49,239,229,115,158,199,215,29,249,160,0,5,201,221,98,160,247,253,210,99,31,134,15,126,189,6,113,138,113,242,142,115,104,161,113,201,17,19,143,79,186,27,129,199,95,110,221,98,223, +42,247,144,100,242,124,215,39,235,204,32,119,60,112,122,231,210,148,72,122,179,72,78,57,32,179,31,205,182,159,232,112,113,211,20,0,165,173,184,6,219,35,175,16,206,65,207,127,150,48,58,117,193,39,210,163, +97,99,158,109,184,227,37,162,184,253,51,17,61,251,130,71,110,181,47,158,64,63,53,193,236,2,224,31,167,204,6,0,28,243,207,76,19,154,105,184,144,125,211,62,122,124,194,28,118,232,119,144,121,234,1,25,200, +244,160,8,10,105,252,127,163,33,233,209,110,23,158,8,224,91,246,39,223,61,141,42,67,100,114,69,175,230,151,71,128,120,63,53,191,175,24,227,191,80,106,95,180,76,58,171,251,29,136,51,145,219,231,28,122, +241,232,6,1,166,27,185,0,230,41,27,158,203,9,35,160,207,50,240,57,29,177,220,231,156,0,70,97,182,206,4,0,15,247,47,73,206,56,0,11,126,71,166,15,76,224,116,36,242,32,35,229,135,190,6,98,189,3,215,25,251, +62,125,51,158,156,226,149,174,164,237,5,193,4,122,196,23,168,237,246,144,185,254,185,235,138,104,185,153,176,12,51,47,167,220,39,143,67,246,130,49,143,212,3,140,98,128,25,37,170,231,136,99,192,28,228, +106,7,39,0,245,22,196,113,158,125,7,25,233,81,61,144,97,149,138,16,71,63,115,80,35,156,116,197,190,113,215,161,233,215,160,205,147,36,196,113,19,125,89,97,56,61,57,6,78,253,120,63,136,57,21,25,243,255, +0,133,8,206,115,132,128,103,62,167,204,252,241,198,49,129,198,40,2,155,233,242,19,247,98,81,201,24,26,130,156,129,140,100,218,2,79,99,215,29,51,234,193,97,47,101,140,231,140,129,124,115,199,24,204,63, +168,7,4,231,154,186,223,105,28,133,144,119,206,45,241,142,132,240,27,7,56,57,57,3,56,247,168,10,93,156,254,237,142,57,7,253,28,117,29,200,80,115,208,30,122,241,212,129,64,17,155,57,71,240,193,199,82,94, +247,174,112,126,234,14,113,199,79,76,117,168,158,209,138,242,177,5,245,18,95,97,185,244,49,146,15,169,228,250,131,218,82,147,159,245,145,19,142,63,214,194,167,146,73,201,97,235,207,36,28,227,158,42,63, +45,178,15,148,222,167,23,22,253,186,112,78,65,62,220,231,183,25,160,10,230,207,25,98,87,31,236,207,112,78,15,115,185,51,140,17,248,118,168,26,222,62,173,33,3,212,92,72,57,244,63,42,242,121,235,254,21, +165,176,145,242,162,241,145,243,79,110,79,229,140,241,223,167,108,115,76,40,196,124,201,31,94,119,60,39,63,158,115,244,192,207,124,226,128,51,126,207,15,57,145,191,240,34,70,7,158,156,13,190,221,113,245, +165,242,237,87,134,47,255,0,125,201,250,19,199,29,185,233,207,124,214,137,85,24,59,98,82,7,240,24,129,235,192,225,64,62,158,164,117,60,140,176,180,128,144,35,24,57,207,17,147,237,206,115,208,142,112,72, +29,15,90,0,207,49,218,46,15,151,41,228,18,67,176,7,30,224,156,241,142,123,142,113,208,83,140,150,32,12,197,55,226,217,250,113,144,126,190,253,199,21,115,124,141,214,34,125,115,128,113,237,243,43,112,79, +28,251,19,232,132,100,156,194,253,185,0,227,39,56,201,18,0,9,199,174,125,185,160,10,222,109,129,199,238,166,25,207,37,78,58,241,199,152,48,113,212,250,158,192,100,176,189,134,114,22,65,236,0,57,60,245, +38,79,94,228,119,244,233,108,46,56,251,59,251,146,78,57,231,181,208,36,3,232,51,235,235,78,8,163,56,183,63,80,58,113,211,230,187,7,183,190,115,199,74,0,167,186,208,255,0,4,167,175,5,17,187,30,219,212, +158,195,29,192,239,154,12,145,242,118,72,7,4,19,8,3,216,103,205,207,215,216,28,250,213,224,146,14,176,128,59,230,51,220,19,201,23,60,15,243,158,105,141,28,141,202,219,161,224,242,17,137,61,129,199,218, +71,215,29,187,250,0,10,129,209,185,84,98,120,207,238,29,134,61,198,227,156,103,35,4,115,235,193,167,121,121,192,48,57,233,130,45,228,231,174,113,146,0,60,158,217,239,218,164,48,206,49,251,160,14,72,255, +0,87,211,219,155,162,61,72,239,232,69,6,11,162,79,4,12,244,242,151,3,215,10,211,16,71,95,215,20,1,3,192,120,197,188,131,29,188,135,61,199,92,176,228,158,216,254,124,183,202,126,155,25,59,115,4,128,115, +255,0,1,35,31,207,181,89,251,28,205,157,205,10,142,62,244,112,3,211,175,203,56,235,215,156,115,142,244,130,194,96,51,190,220,100,112,68,80,19,142,56,193,184,193,60,18,113,238,7,106,0,133,109,174,155,37, +85,143,61,68,18,14,157,152,109,60,250,118,237,142,120,42,192,182,152,18,4,182,248,193,251,241,90,140,103,131,255,0,45,184,207,108,119,232,50,51,69,0,117,5,112,50,174,78,113,199,147,110,79,25,4,103,237, +216,237,211,183,30,249,97,103,31,196,9,201,192,104,173,120,231,223,80,61,79,83,128,71,182,69,100,125,162,16,73,6,99,147,158,45,67,12,30,156,236,96,49,235,223,7,28,147,135,125,162,54,28,61,208,57,31,118, +220,39,78,121,31,103,3,29,123,227,182,49,64,26,108,242,30,60,148,60,117,48,216,131,142,231,230,190,57,207,226,79,228,105,134,226,68,24,84,128,156,244,104,108,186,250,17,246,178,163,169,231,36,143,175, +74,224,161,25,107,139,195,223,2,24,207,61,198,62,207,215,140,224,103,158,188,227,15,13,25,24,19,221,251,110,181,141,142,79,167,250,48,198,14,123,140,156,103,29,128,23,237,55,36,241,13,153,250,199,107, +145,140,250,92,183,3,39,36,117,254,64,189,187,25,6,43,85,236,10,218,91,177,252,196,204,112,49,201,198,58,244,227,45,118,193,63,191,187,60,124,185,134,49,147,232,7,146,57,0,119,56,7,142,196,212,97,206, +112,103,186,39,167,48,194,7,56,200,32,161,61,122,242,122,122,80,4,255,0,109,152,12,17,109,131,158,5,136,35,30,219,24,240,125,65,63,90,107,94,77,156,145,106,1,233,254,134,220,250,28,13,199,219,25,39,3, +144,106,45,242,19,242,203,113,142,191,234,163,200,246,224,96,116,244,4,119,20,239,54,108,127,173,159,4,240,74,196,6,15,110,80,231,242,247,233,192,0,105,189,152,228,136,173,100,227,254,129,243,54,61,14, +2,129,199,76,158,253,240,120,103,219,238,177,183,236,208,1,207,220,211,157,122,253,84,251,255,0,79,74,121,154,98,112,37,32,18,15,11,108,199,147,234,99,206,78,63,186,72,200,207,90,105,158,227,60,75,129, +208,126,230,14,70,78,62,97,26,142,56,228,103,28,250,208,2,139,233,91,25,183,141,137,192,4,89,49,227,4,143,249,100,199,35,159,83,193,63,85,23,46,64,204,81,224,117,31,99,117,7,176,255,0,151,99,248,127,250, +234,7,154,110,190,98,184,57,200,41,31,28,243,156,70,122,127,158,213,25,156,140,229,35,98,120,36,198,170,6,59,224,32,244,199,78,253,6,104,3,64,202,28,1,229,0,50,9,219,102,70,56,30,182,195,175,57,199,81, +210,158,12,103,0,71,39,3,144,45,15,30,167,38,223,3,167,63,76,12,214,65,145,25,178,209,197,223,131,145,142,157,48,160,142,156,131,193,201,192,169,86,91,108,140,195,15,0,117,105,49,156,251,33,36,28,96,97, +142,120,234,114,104,3,68,136,24,252,209,205,145,220,35,167,63,65,111,200,29,62,108,253,125,16,42,12,237,138,228,129,130,10,136,250,231,159,189,109,207,111,95,167,21,87,207,177,29,98,131,223,13,46,65,206, +112,7,149,245,228,113,208,116,24,164,55,22,25,199,148,131,167,62,100,184,25,244,249,14,71,62,153,237,140,208,5,236,176,60,69,119,146,0,92,180,36,117,31,244,239,129,211,185,29,8,193,238,129,166,232,33, +184,250,180,182,139,199,209,162,63,78,153,239,198,78,51,126,209,98,79,220,79,198,67,219,234,156,231,31,143,210,158,47,52,240,112,85,8,57,233,51,224,119,60,36,100,99,168,224,99,240,230,128,47,230,94,55, +25,84,14,126,105,236,200,0,140,228,226,12,224,12,17,215,35,218,128,211,28,20,144,143,99,45,153,227,3,130,5,153,207,81,157,196,254,181,64,95,105,191,243,199,32,127,118,102,206,120,245,69,25,228,116,239, +199,20,163,80,211,193,31,186,42,114,63,140,177,3,158,79,3,166,73,193,200,200,28,140,102,128,47,177,184,3,59,203,96,227,38,123,0,113,248,217,130,115,147,198,56,199,106,99,11,179,140,74,8,3,167,157,167, +145,245,0,219,175,108,30,71,225,154,172,53,13,63,160,7,31,236,237,207,36,117,253,211,103,167,28,126,4,113,82,13,66,211,157,165,192,3,141,232,79,92,147,128,34,60,99,145,211,211,24,6,128,30,5,224,60,73, +128,50,57,151,78,61,121,28,27,67,206,120,28,247,29,41,133,174,185,1,215,35,254,154,105,125,179,193,6,212,96,250,245,254,70,155,253,161,106,14,68,210,103,140,131,9,234,15,56,31,103,0,244,57,24,233,211, +173,6,254,209,176,124,233,176,71,24,131,0,119,192,6,220,145,198,58,244,231,36,158,104,1,235,246,198,7,38,50,8,61,27,78,35,35,56,198,219,117,3,182,121,32,116,250,32,73,151,5,252,177,146,70,67,105,221,241, +140,3,106,195,220,228,246,56,7,173,34,207,104,88,31,54,76,30,164,194,71,29,59,89,243,199,166,123,117,237,48,150,196,142,101,201,235,143,38,112,73,239,157,182,100,103,191,110,148,0,138,1,225,182,143,79, +155,76,60,250,99,236,47,129,145,156,123,113,79,84,140,240,21,78,51,144,95,77,192,231,212,105,249,206,121,236,114,123,243,81,239,176,39,42,253,56,193,142,236,240,61,63,209,84,119,25,198,51,215,169,205, +74,175,102,64,195,197,215,156,199,113,215,191,13,107,129,239,212,241,138,0,81,26,145,147,16,29,142,101,179,246,228,5,179,81,147,158,120,25,235,238,3,28,99,254,89,12,99,60,189,177,3,175,65,246,108,12,118, +63,165,56,125,143,128,94,220,158,223,187,156,146,61,57,178,3,159,76,145,212,227,20,187,45,9,227,201,231,29,35,112,7,79,239,89,113,235,233,223,184,200,4,97,45,250,24,152,246,200,123,112,61,15,75,86,199, +161,200,57,35,156,14,105,219,45,250,139,98,192,30,55,79,9,249,70,71,81,100,163,28,118,231,190,59,211,138,90,100,3,246,98,57,57,198,220,30,220,253,140,119,198,78,71,61,122,230,140,90,15,225,182,39,61,75, +115,159,124,192,49,249,122,117,60,80,0,137,111,130,62,198,160,142,48,101,141,135,115,255,0,62,163,28,116,63,133,60,165,153,31,241,230,163,215,18,70,1,32,243,214,219,30,220,211,64,181,24,249,109,113,239, +41,198,115,216,108,92,103,63,231,130,100,6,219,24,255,0,69,61,200,243,23,25,245,1,164,92,129,142,160,19,207,6,128,34,197,143,35,236,127,248,252,56,227,60,255,0,168,81,250,242,122,99,52,109,128,103,109, +170,99,175,250,212,239,235,136,206,7,94,199,7,156,122,216,86,132,103,106,65,255,0,0,104,198,115,140,30,102,3,183,126,189,248,205,60,75,16,228,236,28,227,254,88,131,255,0,165,32,100,103,131,180,100,28, +113,220,2,166,229,224,8,144,123,121,170,0,29,250,71,147,249,131,233,216,82,239,24,200,85,61,114,114,175,199,61,205,185,237,239,198,56,171,134,72,92,12,16,217,227,131,15,63,136,188,31,136,199,78,6,14,41, +71,217,251,54,6,56,59,240,120,237,197,248,63,144,29,65,61,232,2,162,148,206,118,168,30,172,35,199,225,254,142,123,15,67,211,156,244,169,0,82,70,209,25,62,184,70,206,58,14,45,192,60,158,221,57,4,122,217, +15,2,244,112,190,254,105,227,158,156,95,12,18,48,122,251,122,154,20,196,216,253,241,7,218,73,191,28,127,196,209,87,182,114,58,231,38,128,24,170,58,226,21,32,28,18,139,147,158,59,70,160,241,144,127,198, +165,16,22,7,107,195,147,201,204,81,250,143,88,191,76,99,219,147,78,204,106,220,73,35,99,184,154,95,78,120,254,211,97,212,159,243,131,79,44,164,115,231,146,122,226,86,193,30,249,191,52,1,10,194,227,24, +120,192,244,242,208,243,207,77,177,0,70,125,113,233,245,152,43,228,1,34,14,63,231,155,129,237,206,220,113,233,239,244,203,67,17,156,165,195,3,156,19,35,28,251,255,0,199,240,244,236,50,125,105,225,206, +54,159,180,227,39,172,174,7,56,224,102,248,158,115,216,18,15,62,184,0,149,81,200,63,188,136,140,243,152,164,35,142,248,216,51,146,73,4,3,232,121,34,165,75,102,57,193,183,110,189,98,148,169,60,147,199, +150,7,234,121,239,129,154,170,29,122,17,38,79,28,204,163,219,163,92,55,31,129,252,243,151,14,50,66,56,239,187,237,11,201,39,39,239,73,142,189,49,207,78,125,64,46,11,124,224,108,182,231,185,138,80,115, +142,131,228,252,122,18,113,143,81,74,150,172,57,88,173,8,247,138,79,175,25,3,156,122,126,93,106,158,210,127,137,198,51,207,159,23,235,134,35,245,35,215,140,211,212,100,99,115,244,206,77,204,106,14,120, +206,11,1,207,97,142,189,113,64,23,82,22,25,38,222,219,130,48,68,87,7,243,237,158,199,130,49,237,213,229,118,115,228,194,9,199,252,179,184,35,140,224,0,93,87,168,233,140,100,244,53,93,17,71,57,228,243, +255,0,31,54,124,143,169,4,131,233,158,113,249,84,163,105,24,24,29,70,124,235,54,35,182,50,23,32,117,207,78,123,243,64,18,121,229,71,54,202,51,201,27,110,16,245,57,193,15,223,215,60,250,118,167,165,222, +56,17,198,7,67,184,93,30,64,32,96,137,48,57,250,114,71,24,206,32,88,215,146,102,137,71,57,6,107,112,122,246,41,200,63,135,191,176,144,66,135,3,237,22,228,117,255,0,95,31,35,158,237,158,127,15,167,25,160, +9,254,218,195,248,109,198,120,195,53,208,200,25,224,101,152,126,3,32,119,226,149,175,221,71,202,109,192,224,224,121,228,119,207,68,35,30,185,200,231,140,14,181,196,8,72,6,123,110,152,36,205,106,115,206, +50,50,132,142,157,79,231,214,156,45,35,36,254,254,223,191,41,44,4,142,192,228,99,174,122,96,112,70,51,154,0,176,186,163,0,6,235,113,220,159,42,71,4,158,120,38,48,120,61,1,200,24,62,152,169,87,80,102,255, +0,150,240,39,83,254,170,64,51,156,116,242,151,25,25,231,62,252,231,138,223,99,76,115,115,16,199,66,26,35,156,116,224,231,223,215,39,61,59,189,45,20,0,69,196,108,14,122,34,100,129,158,231,130,65,7,156, +227,60,14,40,2,250,95,28,103,237,8,70,79,69,97,140,117,200,217,158,158,221,120,231,138,119,218,220,158,38,1,184,227,103,78,48,9,45,24,30,164,28,126,85,92,90,33,254,47,92,16,150,237,215,175,80,61,184,227, +240,226,164,91,82,188,15,56,231,31,118,40,64,247,63,187,147,147,211,140,30,157,168,2,113,121,32,235,40,231,143,186,195,32,247,206,208,0,4,122,116,227,154,113,188,39,131,54,8,236,75,118,232,64,17,174,61, +176,123,18,112,51,81,139,118,198,64,185,255,0,190,23,60,142,160,111,35,159,127,255,0,91,252,135,32,13,147,231,161,202,196,125,122,96,231,233,144,72,201,193,244,0,144,93,185,60,220,199,248,121,128,231, +177,39,110,61,201,39,63,206,147,207,108,156,92,70,72,61,51,146,73,232,1,42,91,159,99,159,90,5,188,192,15,244,107,182,199,35,228,183,92,241,216,145,146,79,81,142,49,142,135,2,167,85,152,96,125,142,240, +12,113,242,198,70,122,243,134,227,140,118,224,228,17,205,0,64,178,74,127,231,153,228,255,0,207,81,223,61,64,199,57,237,143,115,199,47,222,248,192,16,12,117,203,206,61,120,24,97,207,235,215,142,245,32, +55,64,225,108,175,125,1,196,121,62,255,0,123,56,24,244,28,241,159,68,223,123,144,5,149,222,122,129,152,1,56,238,127,210,7,231,142,1,57,239,64,17,121,174,51,242,195,216,99,205,157,189,134,48,227,232,59, +251,243,193,246,137,120,95,42,28,103,169,107,142,158,132,121,192,117,231,56,233,250,218,18,223,168,57,211,46,219,158,15,155,2,231,243,184,99,211,240,235,205,33,158,249,127,230,25,63,81,199,157,6,115,208, +114,24,241,216,114,51,146,50,123,128,87,243,220,30,99,131,32,30,67,79,142,156,117,152,247,237,211,219,20,9,165,57,194,91,142,123,188,190,190,238,120,198,127,206,9,156,220,95,243,255,0,18,153,251,227,55, +9,207,167,79,204,130,79,4,228,96,100,169,187,212,23,166,146,199,7,146,243,198,191,76,98,69,247,60,140,244,234,57,32,17,169,159,178,216,224,115,135,105,125,61,75,99,63,153,245,6,157,251,243,247,163,176, +35,166,4,234,61,79,42,209,146,73,227,142,123,100,131,214,101,188,191,56,11,165,48,57,201,219,122,70,112,14,57,19,117,252,0,20,245,184,212,248,255,0,137,99,2,63,233,245,207,227,196,156,251,143,199,182, +0,5,80,205,146,5,189,137,199,36,11,136,189,187,121,35,35,223,35,233,138,176,142,8,249,173,237,248,235,139,136,191,246,101,28,244,60,31,82,71,172,226,125,72,253,235,9,71,111,150,238,78,152,247,36,142,125, +63,49,205,60,77,168,115,254,133,56,3,183,218,228,61,184,231,39,28,253,51,192,226,128,43,124,185,1,97,136,224,141,192,79,107,156,123,103,252,73,201,25,239,82,42,199,218,220,12,1,255,0,47,54,88,247,63,115, +143,167,35,29,121,235,101,110,117,12,241,99,62,58,1,246,146,195,35,183,250,153,14,127,16,121,61,112,41,226,107,198,255,0,151,59,164,36,1,197,206,1,60,227,172,3,160,235,244,239,214,128,43,133,139,7,116, +49,168,237,155,171,12,156,116,200,108,12,147,233,147,207,28,113,82,9,34,82,48,145,103,144,15,218,116,239,94,188,176,239,147,216,14,122,28,84,195,237,167,159,179,220,123,143,181,70,71,113,252,91,65,35, +220,14,131,218,165,13,127,218,9,70,59,60,246,195,243,36,28,145,131,223,24,235,233,64,21,132,200,51,242,194,122,99,253,47,78,254,94,96,233,238,72,57,25,6,155,231,167,25,84,198,51,132,185,211,184,192,238, +121,224,12,116,35,39,176,171,89,190,32,110,141,128,25,39,253,34,215,243,198,198,199,191,29,114,120,236,111,187,60,254,244,14,227,204,179,42,8,232,57,131,56,252,187,28,246,160,8,82,88,58,148,98,7,56,19, +216,48,60,122,44,139,211,156,100,96,245,24,57,169,214,88,8,33,98,147,142,160,201,100,122,118,35,237,29,191,28,116,197,51,206,148,140,182,252,231,179,88,251,140,31,220,140,240,61,71,108,100,19,65,148,146, +75,23,39,166,72,211,125,250,18,153,29,251,251,247,201,0,148,203,25,232,179,1,233,254,128,71,183,89,243,142,6,121,227,156,99,56,166,121,168,8,230,64,8,39,145,100,8,247,226,224,15,242,125,41,22,86,198,59, +117,35,254,37,132,156,158,191,234,136,108,129,212,133,231,31,64,162,85,224,252,217,255,0,114,192,99,169,224,172,93,199,30,128,253,104,1,255,0,104,143,160,146,236,143,97,106,122,116,193,91,128,71,208,28, +158,157,232,251,66,12,243,168,183,208,131,248,224,92,31,113,129,143,204,211,12,152,193,0,5,199,70,142,213,186,250,109,183,113,207,208,14,194,152,103,96,9,218,189,120,34,56,129,224,99,170,217,144,58,96, +3,200,61,50,121,160,9,196,241,158,169,168,156,250,156,112,112,123,200,88,17,206,49,215,60,117,21,32,154,62,172,151,254,216,44,71,208,98,112,126,128,99,175,25,233,85,60,242,121,221,32,60,31,149,64,252, +241,98,113,158,0,3,175,64,57,229,226,227,29,77,223,76,113,17,193,245,199,252,75,200,206,49,253,115,220,2,218,220,64,14,76,90,137,231,140,179,128,63,31,182,47,83,211,31,135,124,72,110,160,31,242,206,228, +103,39,150,4,228,118,36,234,0,103,182,112,79,28,241,131,84,126,208,73,200,142,224,129,221,146,53,24,207,124,217,103,191,67,130,115,140,83,188,214,7,34,57,129,244,10,128,96,231,254,156,7,94,231,175,60, +245,160,11,223,107,143,29,36,4,227,0,184,4,12,158,187,111,72,237,159,207,130,41,194,241,15,87,110,61,100,156,99,190,49,246,190,7,94,120,7,181,103,155,153,7,30,92,217,32,140,0,163,176,233,255,0,18,227, +156,115,158,126,152,224,210,139,151,28,180,82,31,80,65,3,215,60,105,216,227,252,156,80,6,144,191,140,112,100,221,142,0,51,92,143,97,247,103,39,242,39,216,246,169,126,220,189,149,79,166,110,47,73,247,201, +251,71,30,157,255,0,14,43,36,92,201,218,19,145,199,14,65,198,123,143,177,38,113,156,246,3,24,29,176,225,52,185,24,134,93,167,168,89,74,228,244,198,77,186,140,117,227,29,57,249,120,160,13,65,125,184,103, +108,89,28,114,247,132,244,29,190,209,199,78,152,25,29,207,52,125,173,200,224,168,60,231,13,120,73,207,80,0,156,246,61,187,103,39,53,155,230,184,228,219,74,15,168,156,103,60,16,9,242,255,0,28,99,175,36, +102,156,37,147,25,242,72,30,175,41,244,245,17,129,216,228,241,142,196,230,128,47,27,150,231,46,163,156,1,155,238,199,212,76,125,128,239,158,115,78,23,31,244,215,29,63,138,244,158,127,222,145,129,207,251, +164,123,130,120,207,206,254,76,74,15,251,51,3,159,174,236,1,249,15,202,154,99,25,206,214,81,223,247,133,185,239,128,142,56,231,241,227,212,80,5,255,0,52,242,75,185,25,234,159,107,63,135,0,128,114,122, +99,219,0,211,26,108,158,179,17,207,221,91,226,71,79,189,242,12,231,211,243,39,165,81,104,71,59,119,126,38,92,2,126,147,175,231,158,79,108,228,132,251,51,31,226,206,79,92,220,15,174,64,186,25,252,250,231, +147,205,0,95,243,144,131,187,237,25,3,184,190,207,174,70,80,140,127,46,122,98,163,13,19,146,115,114,123,241,246,239,126,78,2,140,122,128,48,125,170,155,91,16,9,220,115,140,240,183,4,15,195,237,220,247, +192,200,30,162,162,54,172,78,60,233,7,112,60,155,158,122,245,206,163,142,185,224,118,235,218,128,52,89,97,227,45,116,6,59,155,181,233,223,146,125,59,228,243,158,149,9,22,157,228,187,200,198,127,127,120, +163,219,160,227,129,211,0,99,185,170,130,219,3,153,70,8,228,53,188,188,31,194,244,140,250,156,243,252,144,91,140,156,204,49,237,111,40,207,254,79,140,123,80,5,195,246,49,130,101,156,28,231,230,185,186, +207,184,33,198,112,120,60,123,122,208,205,98,1,255,0,92,216,29,5,204,217,227,175,85,32,145,145,144,71,29,115,138,166,109,226,3,151,45,208,252,182,207,158,131,39,15,168,128,120,224,114,127,26,140,164,75, +247,124,239,252,1,124,127,192,177,169,243,159,167,31,64,40,2,118,151,79,56,13,21,192,224,245,154,76,251,117,67,235,158,135,142,50,42,34,218,120,36,170,78,184,60,5,153,193,200,239,131,24,3,167,39,175,160, +199,52,194,80,117,89,27,29,49,100,84,158,156,100,234,39,241,235,158,59,210,25,118,130,76,44,123,99,236,99,158,15,39,55,132,98,128,28,77,145,255,0,150,119,71,167,38,119,25,233,129,192,29,58,119,7,3,28, +26,103,250,38,114,169,118,15,170,206,221,113,143,226,28,119,224,31,92,154,67,118,0,31,185,35,143,249,241,137,135,167,65,49,250,119,239,207,163,13,212,103,147,110,217,207,81,97,26,246,199,65,55,124,14, +231,183,74,0,126,32,1,190,75,150,7,214,114,127,31,184,224,30,72,231,212,243,210,171,184,183,7,33,37,3,174,12,201,145,237,204,60,159,92,250,212,158,122,116,242,27,7,36,255,0,161,196,59,244,199,157,187, +143,230,114,49,154,99,78,128,28,91,112,72,192,251,50,22,29,242,202,102,0,99,183,39,159,74,0,143,247,88,194,137,7,25,235,25,29,122,252,208,130,50,51,200,39,39,147,198,105,174,33,206,15,154,121,29,86,23, +25,227,63,242,203,119,63,94,185,235,79,55,168,50,76,50,175,29,173,98,4,15,194,111,241,252,234,38,189,81,247,82,81,159,91,88,113,244,35,118,125,58,49,206,70,71,20,0,214,88,177,128,36,25,244,142,48,114, +114,7,30,86,15,79,243,138,22,221,91,27,100,112,127,186,96,201,235,159,225,133,129,231,211,242,165,251,97,108,96,31,115,228,68,51,198,115,201,62,216,231,245,20,223,181,5,36,156,129,201,56,141,6,126,160, +74,0,250,245,247,234,104,1,13,180,156,252,210,227,160,205,179,116,57,28,230,223,215,158,122,116,57,24,166,53,174,6,55,144,78,15,49,16,220,246,249,236,200,227,215,144,70,15,126,101,23,72,127,138,64,59, +157,171,158,189,112,102,30,180,166,104,216,100,220,78,56,28,20,139,3,28,12,102,115,142,131,242,3,28,208,5,51,108,70,127,124,78,56,207,147,25,39,61,7,54,42,112,7,76,255,0,60,212,70,217,142,71,153,39,36, +231,22,235,211,39,163,11,117,25,61,207,110,132,14,42,240,184,132,103,23,147,100,231,28,192,58,245,227,207,198,113,129,215,31,129,167,9,162,61,110,230,57,235,255,0,30,167,147,158,185,148,146,79,110,112, +79,214,128,51,133,148,135,164,178,119,4,136,87,60,30,216,129,176,61,7,30,199,156,82,155,9,112,1,121,190,165,8,247,28,11,96,71,175,126,72,192,57,24,208,105,161,198,62,219,56,30,184,178,198,123,146,76,129, +135,211,174,49,248,68,68,15,134,251,116,132,255,0,189,107,239,147,129,42,227,223,175,126,180,1,71,236,55,3,238,153,121,238,67,174,50,56,231,201,95,255,0,80,235,158,105,13,140,224,96,188,192,245,207,154, +113,128,73,231,116,99,233,247,187,115,198,106,231,147,9,206,111,164,32,231,130,45,176,73,32,115,182,117,60,115,208,116,224,231,178,24,33,28,11,185,189,192,54,196,159,252,153,7,63,158,79,191,80,10,95,101, +157,112,4,243,142,252,92,40,3,212,157,197,70,63,49,144,122,230,147,201,155,24,107,153,134,63,233,230,28,231,175,252,246,4,227,212,254,3,210,215,144,185,33,110,238,128,62,166,216,15,207,237,39,158,56,232, +79,67,238,211,109,216,95,92,96,115,128,214,217,3,158,132,75,223,182,9,228,119,52,1,84,164,224,144,183,55,3,212,173,212,124,123,100,92,243,158,57,246,227,29,218,18,233,179,254,147,49,244,221,114,228,241, +159,238,221,129,198,122,224,103,31,133,61,173,155,25,91,203,163,131,207,207,9,207,254,69,28,116,227,175,94,157,218,109,103,81,242,220,95,48,246,104,143,126,14,26,78,64,250,146,122,80,2,24,231,35,45,59, +112,59,221,17,147,211,175,218,142,113,131,200,7,208,156,114,43,59,72,132,143,180,62,115,192,23,108,56,247,6,236,12,241,237,244,52,246,183,185,24,205,197,255,0,212,180,96,117,199,59,88,244,60,158,79,183, +38,171,152,231,3,62,109,238,73,235,230,176,206,125,54,48,227,244,238,77,0,52,202,204,113,231,145,233,254,150,196,131,245,26,134,211,249,250,244,39,134,249,204,50,26,81,156,158,183,31,80,122,234,60,143, +174,115,206,8,167,23,185,83,254,178,241,186,3,251,199,193,60,159,86,252,120,39,60,250,0,159,104,184,28,169,186,57,255,0,104,159,110,114,184,198,1,30,164,245,38,128,24,211,156,29,178,128,115,206,110,20, +14,159,246,17,206,223,108,241,147,193,237,1,154,85,249,137,14,15,115,63,28,244,0,139,210,120,57,206,50,70,49,245,145,174,111,126,239,153,112,59,99,205,10,64,192,61,2,28,156,119,57,60,30,71,104,124,251, +181,235,44,153,237,153,93,129,206,8,233,24,227,168,56,25,7,191,106,0,99,92,255,0,120,33,35,167,250,67,144,7,60,109,55,56,233,235,237,200,165,91,156,240,68,57,199,121,156,225,122,129,143,180,15,67,198, +112,8,207,29,208,220,93,244,203,145,254,252,132,144,79,95,187,156,116,35,184,29,207,118,253,162,247,7,12,196,100,96,110,144,0,15,98,89,1,255,0,56,250,0,75,246,149,0,231,200,233,143,149,229,61,122,245, +184,35,29,198,63,44,116,140,221,33,31,126,49,206,126,85,145,143,208,17,57,7,159,78,62,157,143,62,235,7,112,7,215,36,251,115,140,131,211,57,233,140,244,224,211,76,179,99,253,92,71,32,114,219,242,58,244, +253,226,140,247,231,57,206,79,3,4,0,251,66,17,146,217,237,254,173,200,193,234,57,115,145,199,127,110,156,96,243,83,25,4,224,115,254,168,241,158,56,5,177,156,231,245,235,198,90,210,92,246,88,151,63,129, +61,184,30,102,63,15,94,120,235,64,251,99,113,179,130,58,174,208,113,156,116,46,7,67,198,61,104,0,19,68,217,230,66,70,58,91,62,78,121,228,4,35,143,94,135,242,201,186,50,122,200,122,245,181,96,7,61,50,97, +57,199,183,225,222,148,71,123,213,68,224,115,146,167,30,185,218,22,80,0,228,250,251,14,244,223,38,224,31,157,102,28,231,59,198,122,14,198,96,15,61,59,99,175,165,0,33,104,143,5,217,71,81,251,134,3,32,140, +99,247,99,60,243,140,12,117,205,1,98,60,172,175,255,0,128,236,87,241,38,46,48,71,112,115,142,7,74,86,73,136,194,201,56,60,103,15,24,250,140,179,158,157,51,200,238,189,241,27,69,112,70,60,235,129,232,124, +203,66,51,207,82,199,35,31,197,156,116,30,228,0,35,4,232,26,83,158,56,139,31,163,91,158,123,99,159,207,138,136,199,158,211,96,114,127,114,153,25,60,114,214,184,231,167,183,65,235,74,209,77,206,233,37, +96,8,235,53,144,199,175,2,116,39,25,24,227,31,141,68,209,176,233,52,131,191,55,22,201,199,57,199,250,79,63,169,253,114,0,52,77,252,43,49,25,28,21,10,57,235,210,208,113,212,158,7,160,226,147,100,216,226, +217,201,24,198,100,0,100,125,96,95,81,212,14,227,183,44,48,150,255,0,151,185,65,246,187,183,252,65,205,194,175,111,81,207,229,76,48,144,64,251,100,249,198,114,46,108,207,66,7,35,237,128,158,8,39,160,32, +99,36,226,128,37,99,114,188,125,148,116,29,100,238,64,231,30,87,79,126,51,129,211,60,71,155,146,50,45,34,61,113,153,64,247,231,116,99,215,38,148,196,231,165,212,163,176,38,75,102,56,231,4,255,0,167,16, +121,246,31,128,200,16,60,114,40,249,174,136,198,7,38,216,158,71,112,247,132,103,185,224,250,140,244,0,19,127,164,224,129,111,16,62,215,4,1,145,254,204,103,215,160,36,99,169,230,154,22,228,144,77,180,103, +63,244,214,83,147,207,31,234,206,122,122,127,141,87,0,229,128,184,201,236,84,90,28,227,168,226,227,39,140,143,208,140,243,74,22,86,32,110,149,248,201,249,109,254,184,56,185,24,24,62,184,29,198,49,128, +9,154,57,240,127,208,208,142,152,243,101,7,142,217,242,248,227,182,15,126,14,114,26,22,76,227,236,8,188,142,76,178,99,30,192,178,31,166,113,140,118,168,136,32,157,201,47,212,40,207,30,201,118,72,207,166, +121,30,188,83,190,67,210,57,219,145,207,150,228,100,14,152,55,56,238,123,119,207,61,40,2,66,196,112,218,122,159,64,179,206,51,140,227,159,56,122,244,7,241,244,102,245,39,157,41,8,244,55,82,158,58,146, +11,220,142,128,115,130,1,7,24,57,197,41,102,207,17,76,70,50,7,147,143,174,63,124,73,231,61,48,115,158,181,27,52,139,156,91,202,0,238,109,28,228,113,206,12,164,254,89,239,210,128,37,18,162,144,5,146,32, +233,143,181,54,1,199,29,103,207,224,59,99,147,208,70,215,81,156,230,204,12,117,34,226,82,79,35,57,249,184,24,62,164,100,243,237,31,156,217,27,173,229,7,163,21,179,144,156,15,92,51,0,7,167,32,28,19,140, +26,70,155,214,57,192,198,121,179,97,239,201,36,30,132,117,60,245,160,5,251,84,96,241,104,152,28,18,101,144,231,183,81,38,51,147,145,147,143,92,102,144,222,199,206,109,34,96,120,195,76,228,227,156,16,26, +81,145,159,211,36,138,95,50,22,3,43,43,115,208,219,48,28,113,146,3,100,14,192,251,242,113,130,34,115,25,39,17,72,48,57,253,196,152,3,223,231,92,12,126,61,193,235,64,10,117,8,20,12,88,68,65,227,253,102, +209,238,63,227,227,145,244,7,131,207,39,21,17,212,161,193,31,217,150,231,140,29,210,224,15,161,19,254,126,185,61,249,168,203,71,156,24,138,156,147,157,146,14,159,73,212,247,244,245,6,158,165,88,176,84, +64,58,124,195,174,122,224,52,167,243,7,140,243,233,64,13,58,149,182,0,58,109,175,167,50,203,147,233,247,110,177,234,6,1,228,142,58,131,31,246,133,169,192,58,124,0,156,231,37,216,126,102,70,24,233,128, +78,58,47,78,42,82,128,116,242,87,56,31,49,140,142,167,61,100,108,112,6,48,61,125,141,70,241,196,199,44,240,2,112,164,110,78,49,198,58,156,227,184,24,198,114,15,66,0,27,246,235,62,127,208,161,81,212,237, +80,216,30,153,50,3,158,253,79,248,6,246,192,231,117,146,244,32,109,141,128,252,72,185,30,221,134,61,125,5,138,2,126,127,36,243,192,221,22,78,51,221,164,82,15,161,28,227,144,48,5,60,219,219,55,221,72,1, +24,29,97,7,175,66,126,208,125,126,190,130,128,34,251,69,137,255,0,151,68,28,145,202,191,94,58,147,122,15,29,15,29,243,79,18,218,177,56,180,140,15,77,210,40,252,73,191,199,56,224,113,206,7,28,210,253,154, +223,60,197,3,122,252,235,206,72,7,129,112,125,114,61,250,159,72,218,11,113,157,182,182,253,176,68,153,61,120,227,206,239,239,223,166,58,80,3,252,219,79,249,242,66,122,112,210,147,234,50,126,223,142,189, +179,219,52,223,50,14,214,136,171,219,47,115,156,251,129,168,115,199,183,31,134,104,85,80,120,183,136,113,206,112,0,199,161,51,143,79,80,58,123,98,93,200,163,238,195,192,224,29,173,140,117,35,55,36,156, +142,122,30,104,2,34,209,3,196,17,2,79,57,19,103,161,228,103,82,3,39,158,131,233,147,78,45,25,32,136,242,70,56,16,57,7,216,19,168,250,119,244,61,232,47,30,114,203,24,92,30,170,84,145,206,112,18,124,99, +241,29,243,198,105,134,72,143,221,140,156,30,197,212,112,63,235,225,134,64,244,198,59,208,3,202,135,36,132,228,240,115,105,39,78,195,254,66,67,60,103,249,227,185,140,163,114,16,38,115,212,91,76,49,245, +217,170,112,59,3,140,231,168,61,222,14,226,54,196,224,231,129,230,72,61,206,63,126,61,191,90,152,171,140,144,28,28,99,45,43,169,3,182,15,218,179,220,250,128,122,224,156,0,10,133,93,115,159,45,73,57,230, +27,190,135,174,73,189,110,191,253,114,123,83,74,185,57,200,3,28,109,138,228,129,207,29,110,184,61,72,31,137,25,205,76,76,195,156,206,118,145,247,110,164,67,235,143,150,224,231,174,50,78,120,62,152,164, +45,33,35,139,129,223,34,242,115,206,114,115,251,252,254,131,216,1,131,64,16,24,223,28,74,51,255,0,94,215,7,233,203,93,49,252,199,255,0,92,169,132,174,58,139,178,61,6,161,40,192,252,101,235,233,207,78, +220,19,69,0,82,50,77,252,37,135,3,184,60,1,198,62,114,126,152,63,65,210,144,77,112,79,14,195,243,237,211,24,127,99,142,189,251,226,165,243,96,231,1,199,113,242,69,158,159,245,196,231,28,231,7,156,227, +210,144,77,23,7,13,140,228,143,46,46,160,122,181,185,35,159,207,36,17,198,8,3,60,219,128,14,103,42,221,79,206,249,61,241,198,113,248,131,249,12,80,179,220,140,31,54,70,25,3,0,158,231,146,6,222,113,249, +245,30,134,166,251,90,12,226,38,235,193,197,168,207,224,214,185,231,175,215,160,197,61,111,73,56,49,184,25,201,192,180,60,122,130,182,196,159,175,127,83,64,16,249,210,54,57,252,25,27,223,174,1,36,246, +232,9,234,125,218,124,194,51,190,48,63,218,243,115,245,225,120,253,59,244,226,173,253,175,61,35,151,159,67,2,254,162,215,175,61,127,81,76,107,182,199,31,104,82,6,50,38,132,14,253,79,144,160,240,79,28, +247,233,216,2,182,101,0,98,72,177,236,178,31,215,203,61,41,155,229,31,198,167,28,124,169,39,182,70,60,150,198,61,186,254,181,63,218,223,33,75,202,64,57,199,153,6,70,49,215,49,170,156,123,146,6,9,235,154, +70,187,42,62,244,184,207,118,131,169,228,116,207,215,36,140,158,157,137,0,139,205,156,158,172,227,61,54,201,199,254,75,114,126,153,29,122,227,149,223,56,63,196,7,61,99,149,179,157,190,150,92,231,61,186, +114,41,126,214,236,120,145,253,121,251,57,25,39,175,83,147,207,67,130,127,60,32,154,112,119,9,56,198,113,182,223,174,79,92,231,57,250,119,207,189,0,73,230,77,212,150,233,212,195,63,78,115,214,208,122, +127,62,57,165,19,178,243,150,206,64,35,202,97,192,244,45,100,122,130,51,248,119,25,166,253,162,126,121,67,145,211,203,131,147,235,194,22,253,61,72,227,128,11,137,201,39,116,99,61,252,176,119,99,160,33, +85,113,199,227,211,235,64,15,251,83,142,67,72,51,233,16,127,110,246,36,12,250,0,59,241,220,200,47,25,112,67,200,125,150,53,76,159,112,108,6,122,122,227,24,206,57,168,188,201,24,124,205,30,112,7,17,240, +113,236,221,63,30,227,61,243,76,18,96,243,229,174,48,112,209,167,126,192,121,71,61,122,103,158,180,1,105,111,101,207,11,43,47,61,2,150,207,211,236,171,199,94,113,211,220,3,74,247,243,241,182,59,158,220, +131,9,29,6,70,4,35,39,158,153,7,62,160,26,172,38,80,113,251,131,233,152,97,193,207,190,0,3,161,25,0,246,224,99,50,25,147,169,9,255,0,1,142,33,207,94,131,30,191,143,61,122,80,3,197,245,208,4,236,186,32, +255,0,179,30,7,253,242,160,142,156,19,245,164,23,151,28,238,23,56,234,51,229,130,59,227,4,96,227,31,236,158,248,206,106,47,180,32,61,50,58,231,102,48,112,7,247,79,111,81,142,188,103,38,148,220,71,212, +160,61,206,84,255,0,72,250,12,118,62,131,167,64,9,191,180,36,7,31,233,24,56,57,197,174,115,220,124,204,57,28,101,125,61,185,169,6,168,233,128,82,236,158,231,117,162,243,207,83,184,245,3,215,56,207,3,138, +168,47,32,94,171,47,67,247,119,227,232,63,117,199,28,114,79,7,168,166,125,178,221,135,220,157,125,48,204,216,63,67,31,29,65,224,242,61,49,154,0,187,253,173,38,65,17,93,183,94,124,203,67,158,71,56,86,13, +245,200,224,227,235,74,117,57,137,57,75,158,123,17,110,113,245,249,243,198,57,244,252,170,129,184,183,60,108,185,235,206,10,103,208,30,80,99,7,249,227,34,162,105,161,83,184,139,192,64,255,0,166,88,30, +199,0,147,142,57,31,143,83,64,26,7,80,114,79,203,115,158,120,13,15,177,232,38,7,35,191,81,158,221,233,233,168,58,158,90,236,0,57,25,140,251,113,137,72,233,131,145,211,211,138,162,151,145,28,96,221,30, +199,34,62,191,137,82,120,199,29,62,134,156,111,163,24,31,233,39,24,56,41,25,0,231,158,50,234,57,252,255,0,17,64,23,198,164,73,235,112,125,217,21,136,232,121,41,41,32,14,123,118,227,129,83,13,73,58,31, +56,117,231,118,204,31,98,28,245,231,252,107,35,237,227,39,2,231,212,131,28,39,24,233,141,200,70,71,225,245,236,95,246,211,212,199,33,250,199,109,158,221,140,96,159,229,215,52,1,174,47,206,48,22,118,193, +227,247,233,235,129,212,96,113,215,39,128,79,56,165,254,209,114,57,89,64,247,153,58,116,245,200,60,14,79,235,89,2,228,28,230,59,128,220,114,145,89,143,83,212,178,227,160,193,4,231,158,0,226,156,37,115, +209,46,49,239,246,28,99,160,200,50,112,120,227,32,156,251,224,128,13,63,183,231,63,235,1,25,228,220,156,17,207,56,220,171,248,99,167,78,72,192,46,227,231,124,147,140,159,249,248,79,94,160,23,207,126,55, +31,115,145,154,161,230,0,50,233,56,57,232,22,200,146,123,252,194,97,220,246,7,128,78,49,210,81,42,113,129,55,174,8,181,108,253,127,125,128,1,233,193,244,36,208,5,213,154,216,156,180,210,156,131,156,221, +193,158,253,247,143,168,0,131,211,174,42,117,158,220,113,230,78,123,255,0,199,236,120,233,208,1,62,121,32,240,65,250,156,138,204,44,164,100,137,143,65,143,244,101,24,3,191,39,160,192,0,146,220,117,233, +81,178,130,75,1,62,9,28,126,228,142,253,7,7,176,198,56,39,36,145,154,0,216,50,91,55,121,201,233,205,196,79,244,28,185,29,241,193,224,118,239,77,255,0,71,110,87,237,29,50,74,205,31,0,130,49,200,112,51, +156,231,145,199,181,99,168,66,78,69,201,244,218,96,4,224,119,82,70,1,233,156,131,211,2,164,9,17,60,173,201,233,195,60,10,59,119,25,236,51,211,28,28,17,205,0,106,178,91,255,0,211,211,12,103,253,116,13, +244,193,199,80,56,60,3,212,116,235,24,91,64,70,98,187,28,117,2,38,29,201,36,238,65,201,28,251,113,215,24,164,162,212,30,99,159,56,228,25,35,199,83,250,227,175,124,99,29,42,80,96,82,54,197,33,250,202,185, +244,231,110,49,223,28,227,211,189,0,90,17,217,56,206,203,158,188,126,238,28,245,233,255,0,31,29,58,231,223,35,142,214,82,43,108,18,177,220,159,79,244,107,119,247,234,110,79,7,28,112,121,224,123,230,238, +183,108,238,64,122,156,150,44,122,142,126,248,231,60,146,57,29,70,105,164,219,3,149,82,56,234,135,175,95,239,62,58,156,242,51,198,113,205,0,107,249,48,227,41,13,199,227,109,8,39,219,137,248,35,130,114, +113,233,154,112,133,65,31,187,185,231,210,217,8,239,158,68,192,114,78,58,253,78,121,57,137,44,43,220,174,70,64,37,113,200,199,63,188,32,158,185,24,28,240,65,57,204,203,117,110,160,18,119,103,177,69,60, +142,156,153,148,246,28,12,103,0,10,0,184,98,78,1,130,232,19,158,62,206,184,253,37,111,115,220,119,207,34,144,197,26,244,130,101,32,240,90,214,49,143,67,144,253,207,25,201,255,0,8,86,254,0,122,175,35,144, +97,60,113,192,63,190,4,159,161,56,207,94,213,56,191,128,140,124,163,221,85,113,219,63,47,218,65,247,231,240,57,226,128,1,177,79,40,216,232,73,130,46,62,187,152,31,92,96,253,14,57,167,134,128,240,73,65, +223,247,49,243,142,249,19,99,57,3,176,244,244,203,62,215,19,158,15,94,120,86,24,4,231,167,218,134,15,65,219,25,224,118,164,55,4,168,219,35,99,174,21,122,3,234,90,244,14,58,14,59,126,20,1,99,247,24,230, +226,53,29,247,199,8,231,183,89,137,24,233,192,199,56,227,20,195,246,110,15,159,111,143,100,141,121,252,24,142,220,247,56,244,28,177,110,8,232,243,140,116,43,26,28,103,183,23,164,250,254,127,148,139,59, +103,37,174,79,57,36,67,1,255,0,219,156,250,96,243,156,142,157,0,3,73,181,254,41,97,198,58,238,69,28,123,41,35,211,146,14,62,148,225,246,94,49,119,108,184,199,202,100,82,62,156,200,59,245,224,129,158,188, +115,97,46,84,16,89,238,79,175,250,60,3,211,29,102,57,227,57,201,224,158,224,115,49,158,22,25,223,63,78,1,138,223,175,61,65,152,30,58,99,142,189,104,2,36,107,96,113,246,219,96,14,50,9,24,39,176,200,115, +146,9,231,25,233,222,164,221,109,198,47,109,15,35,35,114,254,127,54,61,64,192,57,231,129,70,248,207,241,203,159,77,144,169,29,7,105,206,51,199,76,231,182,48,65,145,30,30,3,74,249,246,120,134,0,30,130, +64,65,228,96,103,147,216,80,0,191,103,63,118,230,212,247,194,152,71,191,24,148,125,112,57,246,61,42,100,138,212,143,154,226,28,158,187,94,60,125,62,91,133,224,129,211,31,76,96,146,208,109,192,226,73,179, +199,30,98,227,29,190,229,199,248,103,174,121,205,60,53,190,114,90,66,49,208,178,182,112,122,16,215,57,201,253,121,245,224,1,198,218,208,116,158,34,58,125,245,61,15,57,204,196,227,57,238,115,205,76,144, +217,142,55,198,125,49,40,92,14,59,172,188,15,212,241,197,68,36,178,0,228,185,25,28,254,232,96,247,39,19,156,243,140,127,58,148,75,104,1,11,59,175,213,227,224,140,142,211,19,223,111,61,59,228,12,80,5,133, +142,1,207,152,132,103,140,92,144,70,9,35,57,152,231,156,14,157,114,71,180,190,92,4,117,67,158,135,237,103,156,245,206,38,101,193,192,246,246,24,53,76,77,110,57,251,97,94,51,204,188,146,57,224,9,241,219, +240,207,191,12,55,49,130,118,93,72,73,234,126,208,192,19,128,123,63,124,244,221,142,113,206,51,64,26,62,80,35,1,3,12,18,2,220,224,17,193,4,28,48,31,151,127,81,154,119,217,195,28,24,91,56,232,110,51,216, +116,62,78,72,36,125,6,43,44,79,147,254,183,39,56,230,224,227,190,8,195,228,244,224,227,140,251,243,48,184,43,141,197,143,92,20,185,207,226,6,227,131,199,83,158,135,24,231,0,26,11,108,224,127,168,148,253, +39,249,64,3,0,100,170,159,126,73,250,116,169,210,223,36,124,146,175,160,51,190,7,3,28,111,3,183,81,140,159,110,43,49,110,242,62,85,151,177,63,56,62,156,231,119,184,198,121,235,220,114,27,169,114,118,146, +6,79,222,17,228,126,6,39,224,1,234,114,7,110,180,1,178,176,184,251,167,62,128,220,147,199,99,204,188,126,131,223,165,56,71,48,35,161,28,100,9,151,223,25,34,227,60,227,223,167,61,136,201,91,155,145,200, +144,99,140,29,138,163,30,199,201,32,227,211,4,113,158,78,41,233,115,118,65,43,55,30,204,62,189,62,205,242,156,250,224,116,193,228,80,6,192,55,25,194,169,63,246,241,187,158,216,196,196,241,192,61,57,236, +120,193,190,113,247,163,99,233,135,36,243,255,0,2,39,211,235,140,228,245,172,191,182,221,174,114,84,246,36,166,121,244,24,182,61,243,237,142,115,205,72,151,211,19,243,2,15,168,85,193,28,231,147,2,129, +219,234,113,215,20,1,166,12,157,210,95,92,101,137,250,124,207,128,123,126,38,165,30,165,101,30,153,67,131,206,59,49,30,228,131,159,196,214,106,220,206,65,249,48,57,193,202,100,228,250,8,59,115,198,71, +168,35,0,83,254,209,48,238,192,122,109,206,61,242,177,243,244,62,217,232,40,3,71,204,69,56,49,74,125,176,87,142,121,200,149,73,25,39,252,49,213,226,230,219,129,246,121,50,78,121,243,59,156,3,159,180,115, +159,167,74,201,55,50,103,30,100,221,79,1,36,63,250,12,120,250,140,17,143,194,129,41,110,178,74,167,254,185,204,59,123,67,143,81,207,167,210,128,54,150,120,177,242,219,201,199,125,142,64,224,242,14,231, +207,61,198,64,35,57,61,41,235,112,159,243,239,38,121,231,203,114,122,227,208,119,7,215,62,196,115,138,174,204,112,38,56,28,127,171,152,30,120,232,66,129,212,116,224,118,235,196,190,97,92,131,35,228,241, +145,27,116,227,32,2,253,79,7,145,223,168,160,13,165,185,32,130,45,159,142,115,246,121,134,51,206,50,34,126,121,247,24,233,211,20,255,0,180,207,147,136,36,193,236,214,243,1,223,128,124,140,224,113,156, +245,198,120,21,133,231,112,78,249,191,27,113,252,203,103,142,190,224,31,74,81,32,35,33,174,9,237,251,161,208,159,65,34,99,57,62,195,140,227,161,0,221,23,13,206,232,93,73,61,237,229,252,122,194,58,146, +167,5,79,31,197,222,154,211,72,78,49,193,206,55,68,192,131,215,161,182,111,98,120,57,235,145,88,185,110,126,105,1,198,48,96,12,15,92,101,133,193,252,70,0,247,167,2,216,25,121,0,236,5,191,92,125,101,35, +175,191,0,158,253,0,54,124,219,130,0,222,20,2,48,12,78,6,9,227,165,191,35,35,35,175,29,64,228,81,190,236,140,9,20,112,127,229,156,159,134,63,113,129,143,78,1,231,214,178,212,224,130,100,151,105,28,254, +225,71,61,240,60,214,7,241,63,167,89,85,148,127,203,87,235,143,245,48,158,121,228,134,115,142,188,245,254,180,1,124,73,124,115,182,84,235,142,98,115,147,206,115,254,139,146,50,48,64,199,167,7,144,165, +175,64,249,164,143,185,201,73,0,253,109,79,76,244,239,250,138,216,233,181,203,99,167,201,110,173,158,72,4,22,30,188,247,60,12,30,148,0,221,217,151,7,144,13,174,63,31,155,129,239,207,161,198,56,0,156,205, +54,49,186,46,224,157,173,131,159,99,106,65,245,57,235,233,140,230,33,51,2,73,146,33,244,33,61,255,0,231,207,144,58,253,71,177,166,110,67,255,0,45,112,65,254,38,183,60,246,228,19,211,190,50,14,57,192,228, +41,220,220,125,166,21,0,28,124,208,231,167,251,39,175,29,73,244,207,78,0,30,38,141,178,26,72,251,30,95,3,233,159,178,243,192,29,126,92,99,142,152,113,48,145,159,57,15,168,18,140,254,150,125,58,242,63, +31,104,68,79,130,126,215,26,228,247,48,146,127,0,88,140,14,231,142,120,246,149,109,153,191,229,237,73,194,224,41,77,189,187,136,142,49,145,223,167,2,128,20,121,3,130,224,143,246,93,155,62,252,89,227,250, +125,13,76,173,98,6,72,12,71,102,235,142,122,110,183,25,231,61,72,238,121,198,106,47,178,201,156,249,241,224,112,114,1,207,126,63,115,142,158,255,0,136,165,251,51,127,20,150,196,17,143,154,56,199,28,14, +115,8,7,167,24,61,56,226,128,39,18,233,221,209,64,207,57,104,128,207,94,158,79,167,167,211,142,41,229,244,146,48,202,131,215,144,14,123,12,136,199,229,143,208,19,85,13,145,35,33,172,91,144,1,54,232,220, +1,237,15,108,1,199,175,74,67,98,227,254,124,198,0,60,90,69,129,211,160,49,3,220,119,252,40,2,111,55,74,66,0,11,156,156,13,202,195,219,3,96,231,156,243,130,61,113,147,76,105,52,249,51,134,40,61,65,3,242, +198,127,1,198,121,200,233,134,139,54,3,5,173,113,159,225,179,136,227,142,122,160,228,247,192,235,142,194,148,89,100,159,154,46,57,33,116,248,200,207,76,2,35,25,231,36,228,159,160,160,7,5,180,29,36,145, +135,180,146,112,125,130,129,142,157,137,224,100,244,167,237,181,198,51,40,244,196,147,1,158,255,0,196,61,248,227,57,6,154,182,3,169,193,244,198,158,189,71,168,11,145,245,250,113,200,52,255,0,178,224,18, +22,60,145,129,155,0,199,56,224,96,69,142,164,122,227,39,175,56,0,64,150,132,2,90,67,252,35,116,210,40,56,236,7,155,247,121,250,14,160,2,6,36,95,179,245,222,249,60,127,199,212,159,150,124,195,143,200,255, +0,132,102,223,28,31,44,3,146,9,211,211,174,123,150,140,14,114,63,187,211,30,148,45,186,99,239,66,157,58,217,32,200,231,29,148,126,89,30,252,138,0,156,179,47,17,179,241,207,252,125,76,63,34,28,246,235, +235,156,14,104,243,39,25,229,142,61,111,47,79,228,16,243,223,167,67,248,85,95,38,32,127,215,66,163,159,187,103,31,234,187,250,246,60,116,231,167,1,194,40,215,164,233,245,251,18,169,29,250,231,185,227, +175,60,140,99,24,0,148,53,195,17,180,177,61,79,250,78,160,15,253,244,73,31,166,120,227,210,164,17,221,55,108,0,123,220,94,156,115,223,44,51,199,233,233,81,133,143,167,218,151,160,193,242,16,250,103,229, +46,6,126,191,128,238,23,247,56,230,241,114,122,102,24,250,140,96,224,73,212,122,224,99,174,115,200,0,119,217,238,3,29,217,35,175,250,251,178,15,208,111,81,236,121,24,254,106,17,148,0,234,163,62,175,114, +199,183,60,220,0,125,51,140,224,83,68,74,196,226,230,6,207,253,59,174,65,245,255,0,89,199,227,145,239,142,105,66,112,3,93,91,145,235,229,71,156,122,96,185,30,220,142,221,58,208,0,209,15,238,68,222,155, +154,228,131,219,167,218,122,244,245,3,214,154,33,113,200,183,181,36,243,129,29,211,243,237,251,236,103,35,182,120,39,169,2,164,40,128,228,220,91,3,147,200,142,44,251,96,137,199,108,143,195,158,181,30, +200,255,0,231,226,216,142,50,0,143,57,231,168,23,28,99,36,254,120,193,197,0,41,134,82,56,182,180,25,3,59,160,185,36,123,127,173,239,219,219,131,218,147,236,239,206,232,108,215,62,177,75,199,28,156,52, +163,144,61,121,233,219,25,10,197,211,204,182,108,246,49,198,221,186,31,244,147,140,126,103,25,230,156,171,17,231,247,24,28,17,246,101,60,158,56,43,57,255,0,63,157,0,70,109,80,143,152,218,12,12,252,176, +54,113,211,140,204,189,255,0,31,79,74,104,183,137,9,249,173,219,30,176,196,128,117,232,30,224,143,110,114,120,245,53,62,33,31,195,0,4,113,254,140,115,207,111,150,228,103,60,253,73,31,139,8,129,65,5,34, +193,39,12,108,220,247,28,115,112,58,158,216,231,175,25,20,1,3,37,190,51,231,89,140,96,144,35,182,56,35,57,206,110,61,48,14,14,115,250,185,77,190,8,51,218,142,195,247,118,248,192,231,181,206,49,219,24, +7,60,140,240,40,63,103,4,225,96,207,112,116,233,24,240,64,192,196,205,142,152,201,29,127,28,1,237,192,200,75,126,153,227,78,113,208,142,167,205,3,240,247,198,51,197,0,38,228,4,149,184,132,103,209,32,193, +244,238,217,252,120,239,158,120,132,200,6,65,146,2,15,124,217,147,192,224,227,32,245,198,113,237,212,84,192,219,30,118,70,57,237,167,177,193,255,0,191,157,126,167,60,119,164,99,110,56,196,0,240,57,211, +27,61,125,12,164,127,47,126,122,128,68,101,11,252,81,176,233,128,108,84,143,252,124,227,184,193,28,113,248,66,211,198,9,37,144,14,135,155,54,250,127,203,76,142,72,29,127,94,5,140,71,156,143,36,241,147, +183,75,136,158,157,78,233,1,206,51,254,29,105,73,140,99,30,88,246,254,205,141,113,215,24,196,220,99,143,203,25,201,224,2,153,154,18,121,72,137,245,255,0,68,36,250,245,99,142,79,57,31,78,49,76,50,198,63, +129,114,58,144,32,3,60,156,225,73,233,248,14,152,171,108,84,140,9,35,192,207,6,202,0,73,231,251,210,156,1,245,245,168,88,73,217,144,231,166,44,237,199,227,157,254,157,57,25,63,160,5,113,50,147,128,169, +200,206,48,185,252,177,159,211,241,52,135,12,50,85,142,115,247,80,1,216,115,129,211,32,115,215,167,25,169,74,76,65,30,98,175,29,126,203,108,122,240,50,124,213,35,159,76,113,158,123,82,36,55,35,238,220, +1,140,244,142,5,7,29,128,19,14,199,25,28,115,156,230,128,43,178,19,156,69,49,244,59,164,233,248,41,192,61,251,115,140,243,154,132,195,159,191,20,160,99,174,231,233,249,6,235,156,241,235,239,87,90,222, +248,142,38,32,31,69,81,206,61,86,110,15,182,6,71,92,243,80,121,23,107,255,0,47,51,125,78,240,57,234,70,39,29,112,57,3,28,118,227,32,21,252,133,0,128,146,166,122,127,174,108,250,228,169,199,110,61,248, +231,20,198,181,227,38,73,72,199,165,201,60,228,224,96,117,231,25,231,36,14,77,74,208,222,28,129,53,193,95,65,43,241,215,214,97,180,142,71,36,227,249,130,210,243,0,137,47,14,115,214,75,158,123,100,152, +229,255,0,245,128,59,244,0,174,214,237,209,102,113,207,0,253,164,28,30,189,23,129,156,99,144,7,24,232,69,70,109,229,207,252,125,56,62,237,114,114,71,76,55,4,30,185,4,115,142,8,198,106,207,216,174,88,144, +94,236,245,31,44,183,197,186,251,57,35,24,199,95,98,7,74,95,236,235,145,206,235,252,19,156,9,47,135,110,248,108,250,103,62,254,212,1,73,173,165,36,226,224,231,35,146,110,125,249,198,48,71,7,25,192,28, +117,237,19,217,74,70,77,192,227,56,193,152,115,215,211,60,116,252,59,145,90,70,198,229,70,8,212,61,126,105,117,0,49,239,251,193,235,216,129,146,113,211,150,155,75,144,49,182,241,176,122,52,151,228,254, +101,207,175,160,207,61,243,64,24,230,202,110,118,204,14,78,78,86,94,113,158,160,130,8,24,206,72,63,212,47,217,46,6,70,244,3,25,221,246,112,221,251,98,62,156,112,115,219,61,241,90,38,214,224,140,253,150, +228,231,251,205,120,195,235,146,235,142,132,122,212,95,102,149,72,221,109,112,167,221,174,49,220,12,102,108,224,228,99,32,243,236,112,0,41,125,154,108,243,36,71,7,25,22,72,122,244,206,49,158,49,158,6, +51,212,26,105,138,97,213,82,67,219,22,138,132,145,211,156,140,125,15,97,207,29,111,249,108,48,5,179,144,71,86,73,15,32,156,2,76,128,159,203,110,120,39,52,211,20,135,63,232,135,30,158,90,30,252,28,253, +165,120,62,224,158,57,61,168,3,56,195,116,49,139,100,61,79,49,32,227,156,114,115,201,25,28,100,0,51,144,121,45,49,93,240,126,202,58,224,237,141,24,245,224,242,195,175,110,1,245,173,61,142,189,108,151, +3,140,109,140,158,221,119,92,129,142,120,7,7,57,231,60,8,153,152,12,11,20,246,204,81,17,159,198,239,0,15,95,76,99,167,0,25,251,103,56,38,198,66,114,63,229,138,122,31,238,202,57,60,240,115,146,78,49,210, +148,181,194,140,141,58,224,145,146,115,10,145,215,56,193,185,0,241,234,6,122,2,49,154,176,101,148,0,126,199,108,7,163,91,219,49,231,254,222,206,126,135,39,174,79,81,81,52,174,115,254,139,108,189,120,22, +214,64,245,61,115,115,198,56,224,118,206,113,142,64,35,55,23,75,199,246,92,204,114,122,91,68,65,235,145,131,120,72,36,12,244,227,29,70,5,6,238,228,14,116,139,158,159,243,239,8,199,66,71,55,71,61,243,199, +126,249,57,95,48,228,147,21,176,62,246,186,120,192,57,224,31,63,35,175,174,79,28,154,66,238,163,143,177,168,231,254,89,88,41,199,28,29,178,231,144,54,156,251,115,214,128,25,246,235,160,8,26,85,202,231, +143,152,34,231,215,104,19,140,96,143,124,116,164,251,109,203,28,127,100,78,216,207,89,148,48,224,96,140,57,198,122,156,158,125,250,4,50,183,35,22,228,158,51,229,233,231,215,166,100,250,126,159,130,25, +28,242,34,140,245,206,212,211,192,99,245,50,100,2,59,1,239,201,52,0,159,105,184,206,70,141,48,61,51,231,198,122,242,56,45,249,96,17,211,222,151,237,19,245,109,34,108,231,156,24,7,254,132,248,252,128,245, +57,168,218,71,94,12,39,234,171,103,255,0,178,62,208,6,122,30,122,250,212,13,57,28,24,206,120,192,34,212,254,28,176,199,110,153,61,241,64,18,61,196,153,201,210,174,64,236,89,173,192,199,212,3,156,31,169, +207,190,106,63,58,66,50,182,19,41,3,143,222,69,248,114,34,36,142,188,145,220,103,169,168,218,108,253,210,84,28,255,0,207,159,108,127,121,251,243,235,219,3,213,190,115,119,36,250,1,61,162,227,7,175,223, +3,62,156,159,175,20,1,41,150,236,140,139,71,81,199,59,226,28,116,207,48,125,15,185,228,231,168,137,158,239,0,249,18,12,247,243,34,199,114,56,88,127,196,123,83,12,163,150,1,215,145,159,244,171,112,58,30, +203,35,113,215,167,63,213,190,113,56,198,71,176,187,140,17,143,251,106,15,79,255,0,86,49,64,8,198,114,57,87,36,255,0,122,104,251,118,230,49,250,227,6,152,90,235,238,237,92,227,188,177,177,61,122,143,151, +24,238,62,157,198,105,60,213,200,204,51,250,101,46,19,4,240,78,79,157,223,176,234,73,227,56,165,243,85,134,4,87,11,238,102,99,145,245,19,227,241,28,251,99,36,0,51,19,119,65,234,113,50,123,18,49,149,206, +59,100,251,230,152,90,108,113,180,96,116,51,162,254,100,177,57,245,252,201,245,121,147,0,224,72,6,122,53,196,158,189,120,184,224,159,167,177,234,105,162,83,211,121,3,144,3,79,51,3,211,131,254,149,131, +212,28,28,96,116,160,8,76,179,14,178,168,198,65,6,233,48,122,118,0,228,224,12,114,6,56,231,168,81,51,231,38,225,49,158,0,185,78,120,4,228,240,59,147,198,79,122,123,59,158,232,123,140,25,72,252,133,193, +28,247,57,246,199,7,45,196,153,201,104,185,232,124,187,130,222,188,109,147,56,228,244,7,249,10,0,107,76,192,18,36,141,190,183,17,227,63,83,42,231,7,175,79,76,84,6,108,12,177,128,242,115,254,145,16,29, +58,255,0,199,216,199,215,60,254,117,100,239,24,253,244,106,113,207,238,47,155,158,152,202,203,233,215,175,183,4,84,108,100,0,147,61,185,207,92,193,168,140,254,27,193,36,130,63,139,167,226,40,2,185,149, +113,203,89,12,116,45,114,140,122,115,200,186,35,161,60,128,78,50,49,78,89,99,28,133,180,61,7,23,72,163,131,198,63,121,200,193,227,63,79,171,247,183,252,244,136,224,96,149,135,83,3,129,234,38,3,29,126, +191,150,70,153,184,33,162,29,79,220,213,20,30,189,132,191,168,237,145,238,0,24,101,136,227,114,193,156,112,5,233,25,235,140,109,114,0,57,227,174,79,189,2,120,215,160,136,123,125,174,67,142,71,28,28,12, +126,60,247,167,137,37,60,169,128,127,219,61,69,184,29,190,105,65,56,201,227,131,158,121,29,13,243,28,6,104,72,63,236,223,6,60,228,241,231,2,57,233,250,17,201,160,7,121,224,142,144,116,56,255,0,73,184, +61,179,146,17,211,211,215,166,64,235,81,181,198,114,22,59,118,193,254,41,47,136,192,207,63,241,240,70,0,239,192,201,224,158,50,140,236,79,50,70,73,61,227,190,234,121,233,230,144,51,232,71,76,158,113,77, +216,188,124,241,116,198,10,94,128,7,253,247,128,50,7,61,56,233,220,0,73,186,76,231,200,181,61,63,229,165,224,25,231,168,50,96,15,207,244,164,221,62,127,212,90,1,159,239,93,231,183,60,18,72,63,254,160, +122,82,8,192,224,50,147,215,129,121,129,207,31,242,212,231,211,56,32,116,60,138,111,144,167,170,166,121,224,27,142,188,227,4,202,167,39,7,174,61,49,64,19,102,92,2,97,183,199,112,13,225,201,25,238,1,32, +117,63,116,227,167,35,52,236,18,78,109,162,108,128,48,162,255,0,235,212,70,61,186,100,243,249,84,107,120,135,88,152,146,71,11,36,196,243,158,161,174,87,144,121,235,223,145,75,246,104,206,7,149,34,142, +56,99,33,61,113,143,248,248,56,227,175,28,96,158,73,2,128,45,152,152,142,108,211,29,8,45,168,28,14,131,0,40,61,70,72,231,160,62,134,154,45,216,114,182,136,58,127,30,161,207,166,55,46,70,49,201,39,175, +29,234,169,180,136,240,55,47,25,228,73,239,199,18,156,255,0,245,189,49,72,214,105,143,190,195,232,146,103,57,227,57,99,147,215,156,28,231,173,0,92,48,191,63,232,176,18,73,206,225,116,72,61,129,44,195, +140,118,192,233,199,122,129,160,112,71,250,60,3,253,212,184,56,60,103,150,108,112,123,226,160,251,4,92,2,237,159,246,17,201,252,130,16,59,243,207,212,246,79,236,248,9,201,73,159,254,217,203,234,58,230, +31,242,59,224,80,5,129,110,228,255,0,199,188,60,140,113,144,123,242,1,140,145,249,231,56,57,238,35,107,124,127,203,1,158,126,232,148,175,83,217,23,3,233,233,219,165,68,116,244,7,34,222,82,71,24,218,195, +219,248,160,60,112,125,59,2,122,208,108,212,96,121,18,158,121,4,30,59,147,255,0,30,231,129,219,28,99,165,0,47,144,112,79,146,185,25,227,116,203,245,200,96,7,30,228,14,195,154,79,33,219,133,133,23,25,254, +63,212,147,208,122,99,160,252,41,166,199,11,149,134,83,199,66,184,31,67,182,0,72,3,174,70,61,177,205,56,90,204,49,139,114,7,108,8,155,60,100,3,186,208,144,14,56,231,190,58,241,64,13,54,183,32,240,168, +61,63,126,157,255,0,222,67,140,227,174,127,192,48,219,78,14,24,194,56,227,51,196,65,7,169,227,102,120,24,29,115,211,218,167,54,115,96,159,33,15,28,6,138,221,185,206,7,6,200,118,233,131,145,234,51,194, +125,138,82,57,180,139,215,136,45,243,199,175,250,38,15,127,76,14,79,29,64,33,242,174,87,163,65,198,112,55,219,55,7,223,205,250,240,79,3,176,52,190,69,233,36,171,194,7,124,73,107,145,158,115,144,88,142, +189,143,78,115,129,79,54,146,12,230,197,62,80,51,254,139,110,127,44,89,31,124,128,121,35,177,24,166,180,18,12,127,161,161,62,159,102,139,140,114,50,62,202,7,92,30,249,233,215,160,3,132,55,195,129,42,113, +217,94,216,158,227,157,204,51,200,35,60,3,212,119,194,24,47,114,15,158,138,15,109,246,195,215,156,7,0,241,245,61,58,117,8,177,200,121,22,80,41,227,239,91,91,28,241,239,107,158,58,115,233,210,157,182,69, +231,236,246,234,73,3,2,222,208,19,192,35,32,90,18,123,231,29,135,62,192,13,242,174,250,27,168,241,146,14,241,106,71,82,121,12,231,167,215,142,6,106,79,34,112,1,251,92,0,224,156,8,109,9,207,110,146,28, +115,219,62,224,212,79,191,56,41,108,159,239,91,197,144,63,27,53,24,207,112,123,122,100,211,90,86,29,69,185,25,233,228,219,237,199,76,227,236,190,254,199,169,106,0,151,200,156,141,194,230,50,7,93,182,246, +253,7,36,240,196,115,219,191,35,175,114,160,51,109,60,195,106,71,24,205,180,39,156,140,116,180,56,254,188,81,64,25,109,28,132,2,162,216,99,161,242,228,193,199,97,139,179,147,206,51,248,115,146,12,102, +57,207,59,99,239,243,108,148,14,59,99,237,39,57,201,232,61,71,168,167,152,228,39,137,35,199,102,59,112,79,95,238,55,62,228,228,100,253,41,165,103,94,147,166,58,224,202,168,63,241,216,198,58,16,121,227, +249,0,32,138,112,122,245,231,229,89,200,198,56,57,19,240,7,61,125,254,180,141,29,195,2,75,5,56,254,33,54,61,7,38,115,159,166,71,67,248,159,233,61,76,177,240,7,34,103,99,142,61,23,31,203,216,116,52,198, +243,199,89,143,175,15,56,206,61,243,200,246,28,156,143,122,0,81,28,220,126,241,15,161,82,228,228,122,3,113,215,175,79,160,233,194,249,23,36,124,210,12,19,158,99,113,198,70,50,76,227,158,64,239,147,207, +38,161,101,184,232,28,243,211,38,228,131,219,157,178,41,231,208,19,238,59,80,97,156,245,102,24,231,10,215,64,145,232,8,144,125,48,115,223,215,36,2,115,11,14,78,195,234,89,31,129,207,127,48,129,207,61, +58,116,235,79,242,83,3,37,65,198,115,176,253,51,201,29,127,65,147,239,84,133,181,195,28,230,94,128,12,181,193,255,0,208,167,29,187,19,156,254,136,214,243,14,126,96,121,60,153,0,228,114,113,246,144,115, +236,79,30,220,80,5,166,183,136,242,91,60,99,32,32,244,239,184,156,126,68,231,30,130,155,246,120,248,193,35,174,56,86,7,241,221,130,115,211,184,228,113,85,188,137,250,6,97,193,234,100,45,249,253,175,212, +241,142,156,122,228,191,236,243,129,157,238,49,207,4,177,234,113,214,119,63,174,56,231,189,0,90,17,91,16,55,56,7,166,13,184,108,103,169,192,126,122,158,185,199,184,20,158,69,169,228,18,112,63,231,215, +10,112,115,255,0,61,84,15,67,199,175,94,181,88,36,220,101,174,122,113,149,118,28,142,163,247,152,30,223,231,50,45,180,164,130,100,184,32,228,159,220,147,129,158,153,203,126,36,254,120,197,0,57,98,183, +200,33,20,250,98,215,146,0,245,73,51,193,32,158,122,231,191,34,192,138,46,130,6,227,36,255,0,163,191,62,156,179,156,99,129,232,120,239,80,44,18,0,48,215,57,35,175,146,216,207,253,242,50,56,231,175,182, +121,166,249,82,3,254,177,253,121,183,97,233,212,128,72,246,239,142,222,128,22,10,192,185,253,199,204,8,31,119,24,7,190,50,63,94,123,17,74,25,122,132,96,62,160,115,216,229,152,3,199,76,224,125,112,42,2, +37,24,216,100,235,192,242,79,92,241,255,0,44,143,215,158,61,250,101,119,76,6,91,127,167,250,190,48,48,58,253,152,254,29,186,118,226,128,44,109,132,255,0,1,126,167,153,34,36,119,254,254,121,244,224,118, +239,77,2,32,73,251,51,245,192,218,80,142,113,232,223,207,32,114,79,173,70,36,147,248,88,143,247,145,72,235,158,134,215,140,115,140,241,220,12,245,153,103,155,24,45,30,223,95,42,223,39,156,117,54,159,94, +217,252,122,128,40,141,15,38,221,190,164,160,31,95,188,71,183,39,215,189,35,70,135,238,219,129,156,243,230,12,143,79,226,0,126,96,122,28,211,183,161,251,192,158,189,34,183,235,158,153,22,195,249,158,115, +158,122,188,42,48,206,216,241,129,247,163,131,119,212,129,110,167,61,50,58,115,215,138,0,106,33,31,242,238,216,31,244,213,8,61,8,32,16,70,63,90,152,21,0,110,182,97,212,6,243,16,103,255,0,29,24,198,71, +92,231,7,156,156,8,188,184,199,240,47,60,228,71,31,231,129,24,200,24,198,15,28,122,224,210,20,78,112,23,7,251,209,128,59,244,60,112,115,140,31,198,128,37,220,157,12,76,7,92,102,220,156,127,223,166,193, +233,203,3,147,208,0,8,167,130,152,194,192,72,206,64,43,1,39,223,34,220,118,238,115,142,184,237,80,44,75,159,149,83,254,3,180,126,128,224,244,253,63,39,133,39,248,80,12,122,68,78,127,239,160,125,207,176, +227,173,0,76,26,30,9,181,7,168,60,91,244,255,0,192,62,158,222,220,211,243,17,25,22,74,71,28,152,237,143,166,6,126,194,49,143,81,158,120,206,42,32,164,96,14,125,127,117,25,57,60,247,152,28,227,142,79,3, +31,64,253,210,144,21,99,108,17,208,64,153,250,252,183,35,169,29,241,248,230,128,0,209,228,255,0,161,32,61,129,142,216,231,191,107,95,168,232,49,244,20,166,88,212,103,236,168,14,9,56,142,216,227,185,5, +69,183,92,250,126,67,173,47,151,49,4,136,101,56,224,31,38,69,235,142,187,110,176,59,244,206,122,103,146,104,11,112,1,253,196,152,63,236,206,61,185,63,107,199,64,59,123,12,14,160,12,251,68,120,249,237, +136,228,143,150,24,63,48,62,205,198,71,113,154,105,184,182,199,205,110,7,174,232,32,99,129,235,136,192,4,250,145,145,235,232,226,110,7,38,3,128,8,225,110,72,29,125,110,198,57,235,193,3,169,60,230,148, +73,34,156,249,1,134,51,141,179,156,240,78,15,250,88,244,231,142,13,0,69,246,187,80,63,212,70,15,111,244,120,79,183,104,177,208,247,232,64,226,147,237,80,99,139,120,254,162,210,220,31,174,124,144,49,207, +255,0,168,85,175,180,178,113,246,116,94,128,0,39,28,246,60,221,158,122,130,59,126,28,56,95,63,25,143,3,211,203,184,110,153,255,0,167,140,103,167,191,39,61,104,2,139,94,219,142,12,8,15,29,109,161,206,56, +245,76,126,152,246,232,105,5,237,174,7,238,227,237,255,0,46,208,103,30,163,0,30,163,36,250,28,14,115,155,255,0,107,70,39,49,228,119,253,221,208,250,130,4,252,159,108,253,41,126,213,23,35,201,5,123,101, +111,134,71,166,22,126,158,222,189,59,96,3,56,223,91,3,255,0,44,151,28,227,236,177,228,251,240,195,39,145,233,159,94,130,165,77,74,216,96,111,95,79,248,246,64,49,199,241,31,215,63,254,187,130,225,78,63, +118,170,49,192,13,168,160,227,142,243,159,175,28,118,28,241,64,187,137,121,32,14,123,207,122,71,60,100,230,127,212,115,232,104,2,17,170,91,131,254,180,47,60,129,108,152,227,212,18,79,211,35,174,61,42, +84,213,44,248,253,233,200,63,243,237,25,3,160,207,220,252,7,60,112,58,10,145,111,173,200,251,195,57,60,249,247,157,62,139,41,56,237,215,29,253,234,81,121,106,120,50,39,29,113,115,116,163,219,239,100,231, +174,115,211,165,0,55,251,74,35,202,78,125,0,251,28,108,195,160,236,164,122,119,232,9,233,79,23,132,158,37,61,58,11,56,215,185,228,231,142,78,120,237,145,248,202,46,109,73,226,81,140,118,188,156,1,211, +140,150,235,211,30,153,62,148,190,124,39,24,156,117,225,127,180,28,125,1,221,142,115,140,99,56,247,160,4,251,81,199,51,128,7,173,160,61,121,234,20,254,56,60,115,218,164,23,27,176,5,194,145,143,249,241, +98,122,250,5,83,140,247,206,57,35,20,161,160,57,204,170,120,227,126,164,115,219,174,100,199,167,108,254,92,132,197,156,25,162,219,143,250,8,182,115,232,64,148,247,60,245,199,167,83,64,19,9,155,140,74, +79,97,139,73,1,254,120,231,61,142,49,207,124,83,214,71,124,226,86,234,63,229,216,246,61,6,24,158,222,190,190,162,171,15,47,254,123,32,24,237,168,201,131,233,128,100,199,183,208,228,224,10,153,69,183,67, +116,160,241,193,190,207,62,191,235,198,126,158,231,183,52,1,56,19,55,252,180,39,142,246,173,146,71,39,24,97,147,131,142,135,147,198,120,20,229,138,227,156,151,62,155,109,36,231,219,144,73,206,121,57,35, +29,51,222,37,242,1,36,94,67,158,132,125,164,183,167,164,204,123,128,123,231,222,165,6,19,128,110,225,235,145,251,217,8,31,147,131,233,247,143,28,113,198,104,1,255,0,103,185,35,59,101,0,103,63,232,109, +156,12,243,243,109,192,232,122,28,210,121,115,47,222,18,17,219,22,170,15,127,204,158,167,39,158,125,105,155,80,156,37,204,125,49,144,236,65,244,233,32,252,65,206,115,248,82,142,14,126,209,25,35,140,23, +112,56,62,134,127,97,146,0,30,195,20,1,48,3,163,37,201,200,25,2,24,177,237,208,28,14,252,103,245,165,10,185,202,197,114,64,255,0,166,72,14,120,29,136,227,147,215,159,110,213,6,72,231,206,132,147,156,101, +229,36,246,228,173,192,250,12,103,63,205,67,48,56,243,32,224,246,23,25,201,28,116,155,29,15,76,123,243,200,32,23,87,112,193,251,53,225,30,200,152,30,195,51,123,19,201,29,49,237,82,111,151,33,82,214,244, +14,199,202,136,231,183,252,252,18,113,211,140,224,156,99,156,213,53,13,140,239,136,142,132,109,185,108,241,192,1,165,227,60,117,28,99,167,25,169,149,142,48,94,17,212,29,209,77,129,142,159,242,216,143, +169,35,234,8,160,11,107,36,192,231,236,247,131,254,217,246,246,2,108,119,63,169,169,190,210,87,1,161,189,233,201,42,6,127,12,182,121,231,29,63,82,51,198,121,230,2,63,235,148,216,60,240,120,99,248,175, +29,6,70,65,195,248,231,228,132,245,63,234,238,8,232,56,251,167,220,242,120,28,96,231,144,11,98,241,7,222,23,107,233,152,193,237,233,230,231,208,243,193,244,2,129,123,30,114,126,219,144,115,149,80,51,142, +223,235,51,238,112,125,51,237,67,10,196,131,21,185,207,164,87,3,233,208,175,79,127,214,158,135,111,30,76,99,253,175,34,232,240,123,156,56,29,184,207,39,235,64,26,66,249,27,144,46,253,177,230,19,223,159, +245,160,113,207,94,189,59,240,134,247,56,218,47,120,4,19,243,242,123,17,243,224,251,227,35,142,192,213,101,150,50,115,182,53,227,129,246,91,214,207,83,216,183,81,198,115,237,83,36,177,169,56,32,231,166, +235,27,204,31,197,243,199,235,212,2,0,205,0,74,183,103,24,50,92,227,142,168,56,28,99,25,102,233,238,57,200,230,156,46,17,143,250,235,149,231,28,136,215,4,113,211,99,28,96,231,168,200,7,218,152,179,160, +25,34,30,6,127,227,206,243,128,72,207,0,14,157,135,92,247,167,139,200,199,10,209,224,117,255,0,68,187,0,126,96,241,159,115,215,184,160,5,46,140,65,55,115,113,220,50,131,142,163,56,133,178,122,3,130,50, +9,231,24,20,240,208,3,147,119,115,145,207,240,176,207,208,64,0,28,158,189,189,58,211,69,227,16,54,71,9,3,166,45,174,137,29,125,16,254,92,99,24,237,202,139,185,200,192,134,46,252,152,46,135,76,112,50,163, +175,112,84,3,207,214,128,37,87,182,56,197,204,199,158,200,120,61,63,184,7,215,241,236,42,64,241,118,187,153,125,14,194,160,146,50,58,196,216,234,58,30,153,207,81,80,125,186,228,17,136,148,99,174,212,155, +7,158,188,199,198,71,92,131,200,61,115,83,173,252,199,172,36,131,206,15,154,1,252,60,179,215,183,0,15,165,0,75,30,222,215,178,129,158,165,55,117,235,156,195,211,167,66,123,17,156,228,78,164,19,255,0,31, +82,158,126,93,168,57,60,227,131,110,120,206,56,228,253,106,15,237,7,232,209,66,58,242,222,96,235,143,239,91,241,211,174,122,244,207,105,133,227,30,144,66,120,207,4,224,145,223,155,113,237,129,145,216, +99,29,64,36,80,249,226,234,97,238,67,117,233,156,11,76,117,228,128,121,252,197,77,182,110,162,234,99,199,64,37,220,61,62,85,181,7,160,3,147,142,153,207,122,255,0,106,144,143,248,245,131,161,201,243,71, +7,156,14,32,4,244,232,14,123,82,253,161,240,63,115,30,122,15,226,25,228,113,152,243,212,243,215,166,72,160,11,138,36,28,155,155,129,130,57,17,220,49,4,227,156,253,148,140,12,117,28,142,49,142,105,234, +231,57,251,93,230,79,247,98,185,199,3,222,5,28,31,115,223,7,166,106,9,92,255,0,203,40,185,224,142,6,65,24,193,196,67,28,159,83,218,157,230,16,57,138,52,224,112,11,228,227,191,17,254,35,31,227,144,11,70, +71,232,183,119,64,158,9,242,174,51,159,127,220,145,211,57,227,57,30,224,212,101,167,61,46,110,91,190,26,25,48,50,70,122,219,140,125,65,207,111,65,77,19,167,82,34,24,235,146,199,25,237,128,164,158,254, +189,248,60,138,152,73,15,25,104,215,167,105,199,31,240,21,61,125,64,247,224,208,4,65,101,99,204,247,3,56,206,35,108,28,117,251,208,15,195,159,160,244,176,60,224,188,205,117,128,73,201,183,32,30,191,196, +35,231,183,211,235,77,11,25,25,89,161,30,159,36,199,185,254,244,100,231,232,62,152,238,221,173,218,234,32,49,206,34,36,227,168,28,194,57,207,167,190,113,64,10,166,64,15,250,77,202,140,227,27,31,7,62,184, +0,12,115,223,240,235,82,169,76,157,247,50,128,113,201,86,3,169,234,76,128,103,166,57,234,127,26,174,209,184,251,183,104,115,212,5,42,57,245,62,86,120,250,119,168,202,204,113,254,148,6,57,251,207,223,161, +226,18,125,176,71,97,145,128,104,2,248,120,65,226,234,99,233,243,182,70,51,128,49,112,120,3,212,125,61,41,124,196,4,255,0,165,73,140,231,27,216,30,125,75,92,46,9,29,177,234,121,172,214,73,91,25,188,56, +246,37,114,121,236,214,188,251,103,7,214,144,171,240,62,215,39,29,64,10,79,215,253,80,35,168,232,61,73,244,32,26,158,100,32,127,173,82,79,39,116,178,15,212,93,183,110,56,24,231,129,75,251,167,57,243,98, +192,207,1,167,231,60,127,207,66,56,57,36,143,81,207,97,148,99,44,71,250,101,207,110,21,20,159,210,216,224,115,192,7,31,134,65,144,90,183,4,94,222,142,57,194,46,125,248,54,219,191,62,152,207,20,1,172,137, +17,60,75,2,227,35,254,62,39,92,247,227,115,131,220,158,253,79,3,138,151,17,168,226,230,54,206,114,13,236,160,103,3,167,239,139,96,125,112,120,206,43,27,200,110,7,219,47,152,103,184,67,145,159,238,155, +113,158,56,199,94,222,180,239,42,64,121,154,224,243,212,194,50,121,254,242,66,8,199,94,153,250,208,6,171,24,155,143,54,30,49,215,83,153,15,234,228,241,233,216,113,235,66,249,124,243,3,0,115,206,168,199, +175,124,23,246,227,174,49,211,165,80,88,73,228,73,114,123,31,221,76,113,156,103,59,99,29,64,244,0,242,61,105,254,88,29,229,39,56,230,59,160,121,32,103,136,136,3,219,36,142,152,160,11,141,183,60,139,108, +114,120,212,64,207,36,224,231,56,228,244,246,230,154,112,73,253,204,4,116,207,219,115,158,57,224,41,233,238,121,226,160,17,196,51,185,129,235,242,180,55,99,223,4,136,186,0,112,114,6,113,128,123,212,171, +20,124,29,138,228,14,113,21,239,35,175,101,231,241,7,3,56,233,64,18,41,29,62,205,108,121,206,77,227,168,3,182,72,86,32,254,30,163,142,238,201,206,4,54,184,231,32,106,19,255,0,47,179,144,125,7,56,233,147, +81,136,131,96,136,80,247,195,71,120,190,217,255,0,83,158,65,252,61,123,135,172,45,198,32,183,29,249,55,167,255,0,30,251,56,192,247,201,224,156,231,168,0,127,205,128,4,22,231,233,126,224,255,0,227,209, +46,79,79,76,113,212,224,210,133,36,0,109,224,98,71,79,182,103,215,156,130,9,62,252,116,228,28,210,180,114,46,63,209,172,136,206,72,51,221,231,128,7,4,194,73,252,120,56,252,10,49,36,0,108,108,184,200,200, +146,248,254,162,223,36,116,206,71,60,116,38,128,28,176,169,56,107,84,250,121,243,55,190,48,168,199,142,156,231,154,144,90,33,251,182,141,142,78,86,73,65,247,24,49,16,7,30,156,159,90,172,1,7,63,99,180, +39,174,4,215,203,156,119,195,64,63,166,79,78,212,190,102,9,205,149,167,124,230,107,147,215,176,204,4,129,193,234,56,193,247,52,1,115,236,107,222,209,198,56,7,124,153,250,243,110,115,158,253,58,10,103, +216,34,234,96,152,158,56,221,43,3,248,173,166,7,227,146,7,32,227,25,136,92,21,193,75,27,114,125,4,179,145,215,177,54,163,57,237,140,100,251,226,159,246,198,3,155,8,137,24,251,173,54,121,30,240,117,237, +140,99,140,242,57,160,9,69,146,140,226,25,212,17,192,83,33,207,176,197,135,65,220,19,159,200,225,13,136,57,204,114,55,61,154,65,211,61,127,208,255,0,175,126,253,160,107,226,184,63,100,80,221,137,73,15, +3,57,199,250,62,113,211,61,114,61,7,52,209,169,56,25,242,99,3,185,242,228,13,145,223,30,64,31,160,201,233,156,156,0,79,246,49,146,69,173,209,231,168,222,203,223,140,61,168,39,145,254,215,30,188,211,26, +209,129,193,181,188,219,158,118,128,6,57,238,45,193,61,176,15,79,65,81,255,0,105,245,249,49,198,120,182,145,176,58,142,12,35,241,252,179,147,130,198,213,208,227,35,3,142,154,123,72,70,58,255,0,203,33, +159,81,158,248,24,61,104,1,230,37,83,143,179,93,131,215,27,177,207,82,54,136,15,78,227,61,243,199,102,144,220,254,238,231,166,49,185,84,253,236,255,0,21,191,65,207,111,92,83,14,169,19,243,231,72,49,207, +58,99,38,61,242,35,0,227,168,234,64,193,206,105,70,160,153,32,92,74,1,234,87,78,144,113,158,184,92,115,142,228,119,198,14,77,0,52,203,34,240,22,229,71,109,205,27,16,125,114,96,207,65,192,199,95,94,241, +181,204,172,112,12,164,14,114,2,159,204,132,83,248,124,160,251,227,137,91,80,83,210,234,227,24,231,254,37,247,57,227,3,140,41,193,255,0,30,152,21,19,93,198,221,110,238,70,121,249,172,174,7,233,236,49, +193,24,206,122,30,40,2,63,180,75,201,11,33,60,140,225,243,250,0,63,12,138,67,60,249,229,167,94,122,126,243,29,58,2,28,1,140,143,211,56,165,44,143,210,242,231,39,24,255,0,69,186,0,250,100,3,207,126,128, +30,249,20,208,135,170,207,43,117,235,5,226,147,128,15,24,39,29,113,206,121,237,64,7,155,62,63,215,220,227,61,164,3,31,131,55,95,173,48,73,41,60,221,220,103,221,160,63,94,11,143,168,227,167,56,199,89,118, +227,239,25,114,78,6,4,227,60,19,198,224,58,126,67,61,129,205,51,202,7,162,206,113,158,158,104,60,117,234,15,231,156,99,25,233,192,3,127,120,121,23,178,174,73,198,72,192,231,218,66,14,125,192,250,28,209, +137,177,255,0,31,210,241,200,32,174,59,118,15,207,249,236,13,13,18,231,238,79,207,97,35,100,119,60,113,142,123,31,83,233,80,50,100,156,11,158,58,126,242,76,140,99,3,27,176,121,199,83,236,49,158,0,37,1, +186,189,220,236,65,234,20,28,125,14,254,221,59,158,0,166,152,193,199,250,84,199,7,141,217,83,159,175,155,223,208,116,252,176,207,45,198,112,147,176,63,222,121,125,63,35,207,28,228,122,116,166,108,32,134, +49,200,51,159,249,104,195,175,166,64,32,30,185,4,244,62,244,1,63,217,227,60,155,201,215,212,0,253,186,243,246,146,7,242,246,226,147,236,233,201,251,108,195,7,158,15,229,143,63,142,153,201,25,25,0,154, +133,128,4,97,100,207,253,116,144,231,234,119,0,122,116,24,62,185,193,166,22,61,214,81,158,121,44,122,12,96,124,231,219,32,143,194,128,37,251,52,100,159,244,150,108,16,14,229,29,127,22,56,25,227,142,104, +251,44,93,76,177,30,223,60,113,158,220,147,130,72,57,60,143,229,154,172,101,29,60,217,148,231,145,146,57,252,31,255,0,102,239,249,48,186,31,249,122,151,60,144,113,33,0,142,115,145,114,188,123,1,208,113, +233,64,22,254,199,9,57,15,9,57,25,196,0,245,193,227,3,177,236,163,32,28,100,138,67,107,10,142,94,28,99,24,242,192,245,228,100,130,71,229,199,35,2,169,110,11,156,93,185,236,114,46,70,14,15,77,183,89,244, +61,123,17,193,201,44,36,103,254,62,216,228,127,211,246,57,235,131,246,208,51,212,30,163,57,235,64,22,218,218,212,245,242,73,247,141,72,56,234,126,241,253,121,62,230,163,251,21,183,36,71,110,71,92,249, +81,227,63,86,117,193,250,243,156,244,237,91,110,78,126,211,187,25,28,253,176,99,28,158,183,184,224,143,113,156,103,217,133,148,18,173,56,30,160,180,199,211,168,107,194,7,175,175,235,64,22,190,205,110, +14,76,86,157,112,127,113,19,123,117,18,140,250,14,63,14,244,141,21,178,147,136,109,143,183,217,109,201,28,241,247,164,200,30,135,35,142,61,42,147,55,117,157,152,159,246,152,228,110,234,7,218,129,0,116, +227,169,207,28,98,162,40,249,192,118,56,61,199,30,156,49,188,57,24,199,95,199,181,0,95,43,22,14,34,132,99,35,229,181,183,30,152,228,18,15,167,167,92,103,25,166,146,138,24,236,128,99,158,45,227,4,129,234, +84,0,78,120,36,114,71,212,85,16,135,32,21,36,227,141,174,64,7,183,63,105,110,58,250,2,7,181,33,134,65,129,178,67,233,137,202,128,51,198,72,156,246,252,190,157,64,44,53,194,146,120,140,128,1,255,0,143, +127,108,117,87,3,3,242,207,127,72,218,229,0,108,163,100,156,99,200,67,199,76,141,217,24,24,3,146,123,245,227,17,145,42,140,136,166,224,113,137,200,245,235,137,122,115,238,121,168,217,167,57,63,103,184, +57,28,226,95,94,249,36,242,57,199,57,35,181,0,72,215,176,255,0,18,243,216,11,107,98,121,250,130,115,159,215,32,246,195,62,217,14,57,71,252,45,45,15,57,227,141,157,190,191,215,17,129,33,235,105,114,199, +29,228,76,114,64,206,79,83,206,57,4,131,154,80,100,95,249,115,185,227,253,180,7,211,131,181,73,235,220,224,115,199,6,128,28,47,98,3,59,29,79,80,77,157,183,167,98,23,3,24,231,229,56,245,231,52,198,190, +137,178,73,102,57,255,0,159,88,50,71,177,251,57,36,227,29,206,58,114,105,143,230,146,113,103,118,79,169,144,18,56,56,254,14,157,251,113,199,189,67,182,101,39,253,30,117,235,253,221,223,225,215,223,223, +29,5,0,72,247,138,199,30,91,17,199,75,75,112,127,2,182,192,142,221,254,190,149,17,158,6,235,1,99,158,115,111,23,95,127,244,108,156,116,228,115,239,220,105,36,28,249,51,140,129,147,190,32,71,32,116,36, +12,113,245,246,61,216,211,56,28,197,116,125,48,96,199,226,219,199,24,254,94,192,80,2,110,182,112,118,219,114,57,63,232,208,28,143,83,186,221,115,140,247,63,142,113,132,9,110,121,54,192,112,112,223,100, +182,237,207,31,184,36,103,190,123,243,215,53,25,188,145,58,195,118,126,108,131,190,220,15,174,209,49,206,125,176,1,28,227,20,223,183,51,16,12,23,120,232,57,131,63,95,245,216,61,250,226,128,36,43,15,95, +38,62,51,141,246,48,28,113,206,8,141,15,99,207,35,25,247,164,41,27,100,44,22,195,61,197,135,255,0,19,193,200,239,249,115,214,51,114,20,19,229,221,39,126,150,192,19,211,36,249,189,63,2,121,28,122,33,186, +44,14,37,185,92,240,65,242,136,24,235,144,36,61,62,159,135,52,0,166,212,18,15,151,108,79,253,131,157,143,94,0,228,231,183,108,250,119,166,155,82,14,12,118,237,184,142,6,158,217,234,122,238,220,51,200, +199,28,242,123,128,33,51,146,127,227,230,227,3,169,6,30,61,0,253,224,60,14,131,30,221,169,190,120,7,155,169,136,25,229,133,182,125,123,201,235,142,128,228,243,193,160,9,77,167,28,69,16,236,113,100,70, +65,207,25,217,142,163,32,122,2,5,66,214,36,147,196,35,212,125,152,175,126,152,9,212,119,200,252,205,56,78,131,254,94,36,62,227,236,203,215,29,131,142,135,253,163,158,71,90,105,154,44,103,207,151,158,48, +86,54,252,246,201,129,211,248,121,39,52,0,227,100,251,73,223,110,163,209,225,113,211,24,25,16,158,15,114,123,30,77,55,236,210,227,137,44,253,51,228,23,39,175,127,41,79,25,192,207,3,175,83,154,105,146, +60,115,60,188,228,114,140,7,226,60,223,76,241,223,211,213,132,199,143,248,250,145,79,95,245,46,222,253,50,122,99,174,49,252,232,2,95,38,94,72,123,85,62,158,68,128,123,125,200,73,4,227,142,120,57,231,29, +88,97,99,130,101,183,207,240,144,29,126,163,38,2,71,224,167,25,60,84,12,138,112,69,244,228,12,144,4,69,71,60,99,230,4,99,182,63,49,192,168,240,70,71,219,37,101,236,27,0,28,246,0,129,249,116,25,252,104, +2,99,0,234,211,128,188,255,0,171,96,0,29,57,205,161,207,215,183,229,72,2,142,5,217,255,0,129,73,131,142,153,226,205,143,36,113,212,100,112,49,81,20,249,127,214,51,30,188,8,199,174,58,204,49,245,224,227, +61,13,33,14,6,63,122,7,7,35,202,192,199,113,153,78,61,8,228,96,103,61,40,1,228,46,78,47,81,120,29,100,99,143,169,251,8,231,158,156,245,39,142,41,219,7,109,70,19,158,159,57,56,61,243,254,134,58,113,211, +175,28,118,170,255,0,188,0,97,165,61,65,33,16,159,168,219,63,224,48,9,246,245,93,179,96,224,92,183,127,245,46,217,207,28,3,113,158,156,100,14,59,241,147,64,19,4,96,113,246,216,78,7,247,152,96,99,143,249, +115,35,241,227,56,224,243,154,10,28,228,222,219,14,121,249,215,175,126,26,204,103,131,223,3,235,222,185,91,130,127,212,206,71,65,152,93,72,231,158,75,156,100,119,192,239,142,212,166,59,142,63,209,217, +128,232,88,2,0,35,176,96,15,83,201,0,142,79,56,34,128,38,216,236,49,246,232,7,166,215,132,96,17,142,208,241,208,30,216,61,137,197,30,94,57,251,116,92,112,127,123,7,227,156,194,61,58,116,62,149,84,193, +112,62,252,3,25,232,202,64,231,191,202,227,156,251,28,243,146,49,74,21,177,205,186,231,25,202,197,43,117,255,0,129,1,248,115,219,167,74,0,176,84,103,63,108,143,63,75,34,51,211,25,49,126,28,140,254,35, +20,205,143,198,219,184,137,206,64,48,89,16,72,239,149,132,3,219,39,29,255,0,58,196,41,31,53,177,228,118,182,147,183,3,254,91,2,65,29,176,6,115,201,168,128,27,184,133,212,114,79,238,46,122,3,156,96,72, +224,113,248,246,205,0,93,49,221,117,23,54,167,60,103,201,179,4,140,100,243,229,19,207,76,19,207,210,144,125,172,112,37,132,156,243,152,236,64,193,246,11,131,237,242,143,210,171,178,43,14,99,112,123,129, +103,118,64,239,193,202,243,206,51,216,143,110,77,136,63,229,148,135,191,54,119,60,118,254,57,118,251,114,27,0,112,59,80,4,165,239,115,210,46,114,50,34,178,231,223,24,92,156,224,125,123,113,195,188,203, +145,206,23,144,120,16,89,243,249,156,17,207,0,113,129,219,60,64,76,121,57,140,46,63,137,173,228,83,232,15,222,39,211,168,29,123,83,67,195,212,49,29,6,68,79,198,71,112,100,29,56,39,131,252,178,1,109,110, +47,6,118,168,238,127,227,214,198,79,124,99,113,227,167,60,224,227,214,154,103,188,7,38,34,222,227,79,180,0,227,212,96,131,159,99,207,92,243,85,76,145,146,78,247,83,158,191,102,4,100,119,63,59,31,108,140, +251,80,54,147,128,211,176,36,228,11,118,0,145,211,63,59,113,159,85,254,71,0,19,155,139,190,209,54,71,166,159,110,58,140,250,122,113,131,147,249,211,60,235,177,159,220,117,28,19,103,18,99,183,31,33,28, +246,224,241,144,69,35,67,112,248,49,180,184,233,243,66,224,17,206,115,159,99,193,39,233,154,96,179,185,57,38,76,116,24,242,166,235,208,18,2,182,121,235,144,65,238,65,206,64,37,243,110,177,141,152,35,156, +8,162,31,208,100,116,31,119,183,94,212,161,174,201,230,51,207,253,50,131,156,115,193,218,120,231,167,35,174,7,90,106,217,92,119,102,233,144,60,150,28,115,156,111,132,241,233,201,199,83,76,123,89,193,201, +102,239,201,133,249,25,235,145,7,61,58,26,0,149,146,225,192,1,58,246,49,193,245,56,204,120,231,159,124,117,207,80,139,21,214,126,240,94,199,11,104,63,83,19,28,122,117,0,1,140,213,115,12,128,96,136,216, +231,60,163,131,237,159,220,140,228,100,158,221,143,99,81,253,151,36,150,78,70,62,236,82,183,76,103,164,56,227,25,233,199,57,207,112,11,134,27,128,113,230,5,28,12,127,163,15,167,38,53,60,19,237,208,143, +106,62,205,112,126,244,196,15,81,229,12,30,113,146,139,140,19,220,158,252,119,34,147,218,17,207,148,73,227,254,88,204,50,122,127,207,50,51,142,231,29,6,49,138,5,172,131,144,184,239,128,151,28,245,3,162, +46,61,51,144,51,201,35,57,32,22,77,172,224,156,78,199,253,217,91,191,251,155,79,108,145,147,222,144,218,205,222,105,50,125,103,147,233,158,88,113,237,145,245,170,143,19,175,240,186,224,128,120,153,134, +58,231,12,88,96,117,31,253,124,212,91,138,143,154,71,192,255,0,96,242,61,51,199,97,223,235,199,112,11,230,222,85,206,39,35,220,206,71,61,120,38,108,231,185,192,231,60,96,244,111,149,116,8,30,99,55,127, +245,146,158,113,142,10,204,115,215,248,71,76,245,230,169,249,192,103,106,59,2,49,140,40,36,241,199,36,103,249,115,201,234,104,243,136,57,49,201,244,221,24,245,231,12,231,63,135,167,2,128,46,17,42,253, +224,221,121,5,174,71,234,46,7,212,129,142,58,117,168,88,146,70,99,115,206,15,252,125,145,220,247,184,61,113,206,8,207,224,42,183,159,207,250,166,36,17,130,100,141,56,247,204,131,167,183,227,129,154,119, +158,79,10,142,167,140,31,62,50,79,226,142,15,175,35,158,131,212,208,4,191,187,7,230,141,199,190,219,238,199,159,185,112,59,245,192,61,255,0,22,51,66,48,54,184,39,213,117,1,198,61,174,125,177,199,80,6, +71,20,190,108,189,55,191,124,131,112,224,126,24,97,244,32,123,154,62,209,57,227,126,48,14,71,218,159,191,3,166,78,70,114,14,70,51,219,169,0,143,124,120,36,163,15,168,189,81,140,100,114,210,227,28,119, +62,156,250,20,246,150,94,229,152,240,7,250,91,145,239,212,49,61,249,35,142,152,232,65,64,28,255,0,157,16,31,241,241,123,255,0,127,3,115,233,141,222,220,242,50,122,224,245,95,54,54,198,46,46,178,63,218, +78,163,254,218,28,159,92,247,207,226,243,115,38,114,45,72,207,3,22,50,142,123,245,117,57,231,7,35,240,161,174,10,131,155,96,78,49,197,188,132,228,231,160,243,6,6,49,158,156,242,115,64,16,57,4,228,61,203, +158,196,60,32,243,223,62,97,231,235,219,24,29,106,48,153,254,27,130,123,55,153,9,201,247,194,176,233,158,156,245,232,122,76,211,231,254,93,35,36,128,70,248,164,29,15,187,156,118,24,228,156,100,212,45, +52,103,147,105,15,253,249,156,231,166,122,47,60,28,158,0,52,0,226,147,227,10,36,192,207,73,97,4,115,193,255,0,84,84,17,158,184,207,169,61,227,219,116,78,24,74,20,227,57,158,215,140,140,103,152,179,199, +115,208,243,235,71,154,167,56,179,128,245,31,234,174,125,7,83,128,63,44,159,99,217,225,227,83,255,0,30,17,1,235,229,92,14,163,179,19,192,198,114,14,5,0,51,100,224,156,179,144,120,0,205,111,207,175,72, +72,244,224,100,31,94,115,82,44,114,3,145,184,146,57,30,100,7,144,15,113,16,39,29,61,79,78,148,194,240,156,127,160,198,15,127,190,113,216,127,27,115,142,222,158,196,101,12,112,54,113,103,140,227,144,6, +14,121,200,44,227,30,249,7,219,39,138,0,155,100,231,164,105,131,143,189,36,42,8,207,31,117,9,201,207,24,11,140,224,230,154,82,231,254,120,194,70,123,204,51,250,70,70,120,200,227,242,232,24,169,14,112, +214,253,56,224,192,1,233,253,242,220,245,231,167,190,120,169,66,196,223,242,239,145,200,4,155,113,200,244,62,91,126,167,147,193,232,104,1,184,184,235,246,104,120,207,31,104,62,158,130,47,203,159,254,187, +212,220,30,69,172,35,63,196,37,114,49,140,243,251,144,7,31,78,113,159,66,20,69,233,24,30,163,117,174,71,182,124,145,206,71,124,113,154,80,136,112,0,32,247,0,217,147,198,114,57,183,60,254,120,60,80,2,238, +184,239,20,107,236,36,148,115,255,0,126,199,183,211,29,201,205,1,230,31,122,20,4,144,9,243,165,35,174,125,128,201,228,250,123,140,130,239,45,115,200,184,198,63,132,89,14,167,140,254,224,113,207,29,185, +247,225,76,113,147,202,220,30,56,207,217,61,187,249,99,28,251,3,201,246,32,0,44,228,99,100,35,147,252,108,79,78,185,235,233,206,115,199,67,70,37,227,30,70,71,65,189,48,57,4,112,206,7,76,243,199,67,144, +8,24,141,162,139,187,73,142,184,43,106,73,231,60,146,128,246,199,203,233,215,57,166,121,107,156,171,19,237,228,193,207,82,122,68,192,243,201,231,250,208,5,160,46,176,6,251,81,193,228,180,75,156,246,63, +57,206,114,59,113,215,61,168,242,174,6,127,125,15,61,127,121,23,110,188,237,110,51,207,127,168,168,9,199,4,103,253,232,211,61,59,1,1,206,123,128,7,94,220,147,17,36,243,149,4,250,219,146,7,215,22,255,0, +208,246,234,57,160,11,222,76,196,227,237,8,185,207,10,208,159,195,136,242,125,135,94,123,211,133,187,96,159,61,14,120,225,99,235,248,196,64,30,223,74,206,216,9,249,158,49,244,182,144,224,30,128,126,225, +121,28,231,147,215,175,64,84,164,67,254,91,30,217,219,105,46,236,96,245,253,214,122,122,231,220,80,6,135,217,28,130,124,241,234,49,229,3,199,108,4,92,122,112,1,61,114,72,167,172,4,16,26,114,112,59,132, +35,177,224,148,252,58,244,244,199,57,123,35,24,11,44,189,71,38,210,65,131,206,51,185,7,76,12,146,56,206,78,58,80,118,131,242,220,16,121,251,208,19,156,115,208,109,24,35,177,224,254,116,1,180,32,36,113, +57,92,244,59,99,61,58,99,49,47,191,25,247,234,41,77,187,15,249,123,151,29,112,177,195,142,167,184,11,147,215,140,99,31,78,49,50,73,3,237,17,12,244,205,169,24,207,169,47,140,123,227,183,95,87,109,7,145, +117,9,35,210,217,57,35,29,119,62,112,63,51,131,192,226,128,54,214,6,198,62,209,117,223,36,68,189,254,153,201,255,0,60,0,105,26,30,62,107,139,198,231,63,115,0,243,215,238,100,145,145,130,56,63,158,50,60, +179,198,110,34,207,168,134,49,143,195,112,201,247,207,67,223,156,191,202,28,98,232,12,246,16,68,123,247,34,101,237,237,199,60,147,145,64,26,97,35,80,65,150,231,129,142,99,57,252,50,62,157,61,70,7,98,210, +177,30,183,23,0,1,143,154,47,208,29,217,24,63,236,143,106,166,34,193,207,218,88,250,98,56,16,128,58,15,248,248,227,240,56,207,56,232,4,170,8,28,77,51,117,228,108,81,156,96,224,253,172,3,215,183,225,138, +0,156,71,6,63,227,233,243,220,121,120,231,216,158,59,228,140,254,116,161,32,7,254,62,228,207,108,67,156,103,254,6,120,193,244,231,4,3,199,40,140,227,32,121,238,59,144,98,60,19,215,31,108,231,7,173,74, +55,18,48,179,12,224,243,229,115,143,251,122,246,239,211,167,94,128,12,45,0,255,0,151,172,145,235,26,3,215,253,166,207,175,7,158,58,112,112,223,50,223,171,92,41,24,251,172,145,158,135,217,250,125,57,228, +126,19,170,12,229,149,216,113,201,242,73,207,253,253,108,99,3,212,122,102,148,164,100,146,21,215,39,145,190,0,65,193,0,149,231,30,254,189,114,13,0,67,231,217,143,188,241,156,158,114,145,129,212,247,5, +143,167,25,60,227,140,144,41,26,226,196,114,13,183,7,213,7,230,161,51,159,96,59,122,212,224,40,0,109,124,113,144,86,30,123,12,96,224,250,140,30,220,10,149,76,127,197,188,103,35,59,16,129,219,161,35,167, +174,120,244,160,10,233,121,100,163,39,236,216,207,5,152,128,51,236,10,231,168,199,78,125,106,101,191,180,232,30,220,129,208,6,32,140,241,142,27,145,219,185,199,211,21,33,242,243,144,236,121,198,10,38, +14,64,231,10,78,72,56,192,218,122,103,218,157,144,188,128,135,24,63,50,39,255,0,19,219,25,235,129,211,234,1,31,246,141,184,32,143,41,187,143,153,187,123,135,30,156,103,28,30,199,138,153,117,88,149,64, +17,140,14,132,92,108,237,142,243,169,252,50,58,112,0,166,151,144,231,6,14,56,230,24,73,24,233,247,160,126,65,231,0,125,79,169,137,142,14,251,113,211,165,172,67,56,233,210,200,100,118,244,192,244,234,1, +96,106,241,244,242,191,6,186,99,142,123,124,237,158,121,234,125,141,39,246,146,19,145,24,62,191,190,98,58,147,158,167,159,79,92,112,122,1,6,217,127,191,104,222,230,214,62,128,19,128,5,168,28,99,215,240, +52,160,202,7,201,37,174,58,103,236,167,35,219,34,220,31,175,81,232,40,2,208,191,39,4,64,15,95,249,105,41,199,79,69,252,206,105,223,109,148,224,45,185,36,0,71,239,37,36,224,159,108,241,233,193,29,186,226, +161,18,222,140,126,242,38,200,237,106,228,115,207,123,83,219,31,76,241,205,74,147,94,156,124,240,129,158,158,67,175,94,114,51,106,64,250,158,191,200,2,68,186,184,234,45,92,14,152,38,82,14,121,233,198, +49,252,143,36,212,159,108,147,25,107,44,159,82,142,121,252,79,191,25,3,158,252,114,209,37,222,1,222,185,206,50,35,112,54,158,157,45,122,245,193,30,156,1,222,69,146,228,31,152,169,32,12,18,164,243,212, +31,248,242,247,61,241,239,210,128,26,46,152,159,248,243,56,238,68,50,54,58,250,112,121,247,169,22,124,176,205,154,158,199,54,247,4,250,143,225,3,184,232,78,9,224,117,160,201,57,39,43,27,17,158,156,28, +113,208,11,113,199,96,49,208,14,73,198,85,90,67,213,0,245,193,35,241,255,0,81,249,115,248,140,224,128,73,230,196,195,13,99,19,103,179,90,220,31,78,163,110,59,127,47,74,3,66,8,39,79,139,255,0,5,243,244, +246,45,140,243,142,254,158,128,83,67,70,8,36,17,212,31,245,138,127,72,177,232,120,192,60,30,244,19,6,73,11,46,238,153,83,39,67,223,6,19,147,199,127,92,102,128,44,9,98,239,167,196,123,129,246,73,199,24, +254,44,55,28,115,142,164,31,78,105,193,225,207,252,121,66,188,247,180,152,113,236,89,179,248,159,196,212,1,144,130,54,92,156,227,28,183,25,238,55,64,51,233,199,215,30,139,178,50,121,91,133,201,231,230, +0,241,201,28,34,147,219,32,12,15,66,49,64,19,25,97,231,22,209,1,129,147,228,204,184,246,28,159,94,131,29,70,61,156,178,219,12,31,179,194,122,146,4,83,18,79,35,160,98,73,227,144,123,122,212,97,109,200, +193,55,7,175,252,180,29,61,62,233,35,160,193,7,129,244,21,40,16,15,187,230,231,174,89,201,7,183,67,1,95,126,79,62,244,1,34,92,67,218,20,28,242,26,43,129,255,0,215,61,59,126,96,212,130,116,206,118,192, +50,56,5,38,200,28,116,222,167,56,192,233,219,174,106,185,8,9,56,99,216,252,195,63,134,34,94,125,7,183,29,48,100,85,140,99,112,152,113,253,224,71,126,129,163,35,244,239,215,131,144,9,190,214,132,244,135, +240,133,51,140,118,59,1,39,159,239,30,231,20,166,225,48,64,42,1,61,62,81,233,206,12,96,240,49,208,254,116,136,182,121,249,164,112,73,249,129,88,201,228,227,4,121,107,156,251,243,207,210,166,81,110,185, +218,75,0,123,249,99,35,183,222,219,145,145,144,127,10,0,104,184,97,143,222,168,238,58,15,108,141,177,210,155,167,201,45,50,231,142,72,83,140,144,122,180,125,6,7,240,242,14,48,69,72,30,17,202,224,115,192, +103,183,92,228,123,176,232,6,115,74,76,103,248,161,7,7,172,214,167,61,137,198,226,61,71,24,231,32,145,205,0,70,183,71,254,126,148,12,243,181,99,30,157,48,1,250,228,117,200,61,41,226,224,156,169,186,5, +125,68,81,177,7,28,245,147,142,7,56,3,130,58,243,82,171,198,188,147,108,216,24,193,154,17,159,168,94,78,125,51,158,70,49,217,194,104,8,0,65,102,196,142,166,120,178,122,243,200,207,191,82,122,14,224,208, +2,9,155,181,217,0,113,254,166,60,100,17,215,15,143,110,49,147,159,197,254,105,35,254,63,151,158,194,56,84,143,110,92,96,242,58,30,157,179,147,77,50,69,211,236,246,164,14,15,239,32,57,3,29,55,17,158,61, +206,127,3,64,150,223,36,253,150,28,251,201,111,142,125,20,200,163,223,128,71,185,232,64,30,185,61,111,157,200,227,3,236,220,123,15,222,244,31,81,144,61,122,74,177,111,36,253,170,95,251,234,33,211,156, +156,93,46,113,233,156,99,190,58,9,44,32,241,29,177,29,193,107,110,255,0,77,199,175,108,224,242,115,210,166,91,140,112,177,70,71,28,171,197,220,241,235,199,182,63,196,128,34,68,193,143,250,75,156,127,179, +11,147,255,0,125,92,144,79,185,231,140,99,210,194,196,123,220,200,0,28,252,144,46,122,231,147,57,232,123,242,62,188,212,34,225,250,24,34,227,156,153,162,207,92,127,112,115,130,125,126,134,134,153,128, +221,228,67,131,131,247,212,156,227,190,19,147,219,185,198,122,140,100,2,210,198,164,18,47,27,62,152,183,39,211,168,108,224,28,242,61,200,53,34,162,117,23,50,17,142,198,48,15,29,70,1,252,248,36,12,231, +154,162,183,15,145,186,8,129,231,128,143,184,241,235,179,29,7,94,184,224,116,53,39,218,31,140,68,158,185,88,228,110,189,49,152,240,123,100,231,156,116,231,20,1,163,30,7,252,180,98,125,68,177,169,224,145, +221,8,207,168,167,239,78,51,43,241,199,252,125,70,123,244,59,83,235,239,220,246,206,89,150,102,25,13,180,113,247,99,85,36,228,128,54,176,82,7,57,229,137,232,57,236,190,116,138,48,242,115,215,63,187,207, +78,131,231,254,96,1,220,114,40,3,79,124,96,229,102,152,131,233,113,145,219,211,7,191,24,252,251,84,190,114,40,206,249,79,7,254,90,242,62,132,72,15,227,159,203,21,138,101,118,37,69,193,3,3,168,83,198,58, +13,164,131,223,35,25,30,184,56,164,222,220,130,75,12,117,27,177,142,188,241,199,94,49,159,81,156,230,128,54,190,209,23,63,188,148,231,254,155,178,231,174,51,251,198,207,249,231,154,111,218,227,95,227, +156,156,28,159,180,176,24,244,234,1,62,217,231,61,241,88,155,114,114,24,244,39,44,179,100,15,108,99,61,122,0,62,189,41,235,176,224,25,87,57,237,231,43,119,56,255,0,91,144,123,116,61,0,226,128,54,5,240, +25,42,215,67,175,31,105,152,246,233,195,224,119,25,233,233,236,225,124,216,45,155,195,244,119,192,252,76,235,212,14,222,252,103,174,72,11,211,115,156,103,248,230,29,178,113,151,0,251,30,122,117,39,147, +48,72,198,50,91,61,71,239,101,94,152,231,253,104,239,159,81,193,224,226,128,52,133,236,135,181,223,253,247,41,237,200,200,184,192,193,250,142,217,39,56,121,191,117,255,0,150,119,36,146,114,65,153,143, +76,116,89,159,142,153,35,235,205,103,108,136,158,83,36,158,127,210,88,103,36,244,197,194,147,201,63,79,106,65,29,185,57,49,145,193,63,241,247,33,227,158,8,251,106,242,6,71,227,158,104,3,68,106,5,142,76, +55,44,122,127,168,185,60,142,220,201,159,196,140,115,211,181,73,246,166,110,150,210,30,57,221,107,39,29,51,157,204,73,228,231,140,131,200,200,29,115,150,59,110,64,137,57,238,110,103,61,113,215,23,77,248, +130,123,244,169,22,40,57,253,220,61,255,0,229,226,78,62,164,203,156,125,120,57,32,250,144,11,190,115,247,180,29,120,255,0,70,148,224,100,244,10,141,207,182,79,94,152,3,50,9,228,198,69,146,245,224,181, +148,184,255,0,209,106,58,251,231,143,74,170,139,7,79,38,17,142,223,104,113,206,57,60,207,208,245,207,175,28,2,5,76,2,143,249,97,6,120,228,221,156,28,227,24,6,239,4,115,219,56,232,72,160,9,196,179,18,7, +216,45,198,59,189,145,32,103,167,38,65,219,190,51,75,151,7,6,210,208,28,96,147,167,144,51,208,144,90,92,117,200,253,112,13,68,74,15,249,117,182,99,232,110,209,127,3,186,239,167,39,175,98,126,149,25,104, +114,3,89,217,130,14,14,235,152,8,207,99,205,199,83,158,152,245,224,119,0,176,93,215,56,177,179,99,223,253,16,32,62,228,137,191,92,241,232,49,77,14,205,128,214,54,121,39,254,120,2,48,113,253,233,151,31, +145,224,138,135,116,36,145,246,91,63,108,75,110,79,94,121,51,158,196,156,244,207,56,29,221,182,216,145,155,75,63,112,210,90,242,71,184,144,142,156,244,25,199,29,50,0,30,119,144,113,99,102,158,133,96,67, +235,233,112,49,131,207,95,174,9,166,252,228,243,111,100,49,193,253,200,227,39,60,226,233,187,250,250,250,12,83,130,90,115,155,59,54,25,232,12,13,200,201,63,117,128,193,253,62,135,52,237,182,100,18,182, +54,163,39,60,71,105,143,199,121,36,123,252,192,40,233,158,128,2,32,236,27,254,61,236,199,57,194,171,140,30,189,5,207,177,60,156,103,183,122,144,75,235,13,184,62,207,32,24,252,110,135,94,157,127,62,148, +21,181,7,254,60,173,15,253,179,179,3,185,200,42,224,245,224,118,35,30,162,154,223,102,35,2,202,223,25,236,109,72,224,130,49,153,79,127,167,226,122,0,13,42,159,249,103,107,156,99,2,65,159,124,15,180,150, +236,123,31,78,134,162,105,99,207,205,10,14,188,171,177,232,79,253,52,61,242,48,0,237,233,79,219,104,217,205,180,42,123,241,101,131,159,247,155,31,207,212,113,130,79,46,207,159,221,65,211,28,54,158,113, +239,133,46,112,15,109,191,143,20,0,209,44,92,226,3,131,208,249,174,15,108,127,17,60,96,224,30,57,232,5,33,184,182,25,6,24,199,39,172,147,176,32,240,50,120,61,251,16,122,28,212,227,236,120,192,17,47,83, +196,182,171,248,12,39,167,167,83,154,107,11,94,138,241,14,189,100,180,96,122,116,204,71,32,118,57,250,3,158,64,33,243,173,15,85,136,115,233,43,0,122,117,8,73,233,158,73,57,200,200,167,249,246,184,198, +99,0,129,192,251,70,7,28,244,136,158,61,0,39,166,40,17,194,121,18,91,227,56,235,107,184,28,246,194,3,145,244,227,184,2,152,208,197,212,75,22,120,3,43,102,125,48,121,143,233,211,147,64,18,249,246,68,96, +44,71,131,157,166,232,224,129,198,114,128,228,31,115,144,125,120,166,249,182,220,253,193,142,128,199,57,247,24,249,78,62,110,126,158,157,12,65,24,19,182,104,253,57,54,191,134,0,183,57,206,78,70,127,159, +15,2,66,6,217,99,60,158,209,126,36,31,179,228,228,31,127,215,52,0,121,240,3,195,219,245,35,230,138,99,219,36,96,194,123,241,215,60,118,28,209,246,168,192,200,123,96,1,255,0,159,105,177,142,50,126,72,114, +113,199,7,142,113,140,138,95,43,251,239,31,183,238,225,110,216,234,109,242,125,121,0,251,208,82,62,239,19,114,113,152,163,207,39,143,187,7,7,142,160,99,219,212,1,69,236,64,28,93,89,169,3,128,246,183,24, +252,246,117,200,250,245,231,208,55,184,255,0,151,171,3,199,7,236,179,47,61,137,30,81,61,250,30,14,58,19,147,72,86,30,126,239,177,22,231,7,147,142,150,184,247,235,200,193,207,106,143,100,103,254,89,198, +121,7,34,213,216,130,57,231,247,32,118,231,177,247,233,64,18,125,177,243,143,62,204,128,78,74,219,56,28,253,70,127,0,59,114,6,121,119,218,9,27,188,251,63,198,213,248,250,18,170,58,245,201,206,125,115, +80,109,141,49,251,152,143,127,248,244,117,60,99,141,194,62,249,231,142,217,2,156,38,128,112,208,198,163,191,238,165,199,127,250,103,237,211,7,60,246,160,5,107,169,51,196,182,108,58,144,214,204,126,184, +195,48,0,240,48,42,19,116,227,25,123,19,198,127,227,212,227,61,123,171,17,140,227,159,81,247,115,138,155,237,54,189,68,80,183,166,98,186,234,50,70,118,198,0,237,212,103,63,157,47,159,1,233,28,62,228,45, +200,57,7,25,249,227,7,4,127,128,35,36,208,5,79,182,28,116,177,60,241,182,221,1,56,250,198,14,51,215,156,117,39,182,83,237,210,2,49,21,145,235,247,109,98,7,158,49,194,127,136,63,133,89,50,219,145,146,16, +14,164,134,185,31,170,129,233,142,128,115,131,128,104,105,109,151,133,145,65,192,36,9,174,135,185,228,143,92,116,199,25,237,197,0,86,251,113,108,147,12,3,25,200,22,136,7,161,3,247,93,136,207,92,227,158, +122,211,77,208,57,31,100,137,187,113,111,26,142,61,51,16,227,158,113,212,245,207,105,30,85,57,219,58,0,49,193,184,152,243,156,142,8,56,252,71,231,198,99,50,183,240,207,111,156,243,186,119,0,31,124,1,232, +7,78,57,29,168,1,134,234,33,144,108,128,60,143,150,56,198,57,237,182,46,70,123,241,219,61,120,70,185,135,167,217,95,158,114,32,66,6,57,207,250,174,158,227,4,227,191,90,118,249,79,252,189,89,169,244,23, +82,96,17,235,146,184,244,24,254,117,9,107,131,128,46,44,216,103,143,244,169,115,215,253,239,64,125,123,241,234,0,239,181,192,71,252,123,73,248,91,228,103,3,191,146,71,36,30,159,150,71,10,46,160,97,159, +34,81,199,31,232,142,192,115,219,54,167,56,244,250,227,61,106,38,142,233,191,229,165,177,199,0,125,166,110,157,57,43,48,32,250,18,59,116,199,53,31,147,120,58,73,108,64,36,12,92,77,156,14,159,122,124,142, +71,94,59,254,32,22,197,202,17,129,20,167,31,245,15,99,140,241,143,248,245,97,237,145,140,230,159,231,32,201,17,204,59,113,166,72,121,207,7,139,50,62,159,207,156,85,33,5,201,206,227,31,29,127,210,159,185, +227,230,18,159,195,219,240,203,90,222,67,206,34,108,255,0,211,105,8,245,61,101,239,219,174,70,1,235,128,1,119,207,140,240,119,168,36,227,58,108,195,184,56,56,179,94,185,231,57,31,81,154,97,123,114,122, +51,99,254,156,103,30,191,244,234,61,249,207,113,211,165,80,48,206,164,226,40,200,193,7,14,72,235,140,243,48,237,211,3,63,142,5,56,90,185,229,173,80,250,115,32,207,185,43,56,199,182,127,62,244,1,119,108, +71,128,64,233,133,54,147,228,19,199,241,66,191,143,92,115,199,53,11,219,171,103,14,87,143,249,242,152,254,166,44,224,127,147,212,85,111,177,177,4,253,139,39,190,26,110,58,145,207,218,199,230,7,30,167, +140,163,90,245,197,130,158,163,230,55,31,159,203,120,79,227,183,30,212,1,32,135,214,68,206,120,38,202,96,64,224,118,143,229,39,32,244,200,237,147,72,96,110,79,157,27,96,228,15,179,200,7,35,29,74,130,122, +126,64,103,165,87,107,104,199,91,12,48,228,176,107,156,119,39,31,233,3,61,61,78,57,4,158,149,25,183,139,63,53,155,12,246,41,120,127,81,119,211,211,229,3,223,212,2,127,179,49,228,200,188,19,207,151,58, +115,211,60,74,49,237,242,129,208,224,241,136,205,175,25,222,249,207,240,73,50,15,204,78,152,227,169,12,15,76,147,142,91,229,192,1,31,97,144,251,159,182,129,215,60,255,0,166,175,25,199,65,130,58,30,42, +38,8,51,182,211,103,3,248,175,151,175,169,26,130,146,61,135,124,116,35,52,1,35,91,202,56,18,200,0,239,246,155,128,71,126,191,108,35,144,57,60,117,39,28,129,76,22,147,255,0,12,247,24,56,39,110,161,112, +163,212,140,125,183,142,216,244,0,84,44,155,191,229,217,136,245,18,106,1,65,246,35,80,207,39,25,231,143,206,144,174,6,86,213,219,4,103,13,122,192,228,244,7,237,223,135,78,222,185,160,11,38,206,232,103, +19,94,14,122,255,0,104,207,233,140,15,244,224,49,211,249,243,138,129,161,187,76,255,0,164,223,100,103,149,191,220,48,122,100,181,249,207,127,240,244,129,242,1,38,204,130,71,82,215,156,244,63,244,17,252, +50,122,231,3,61,226,201,92,226,208,114,121,4,222,14,122,28,31,237,3,159,168,206,59,227,20,1,35,61,226,146,62,213,122,15,161,188,82,123,15,249,250,207,226,6,7,83,238,227,61,216,255,0,151,139,252,142,226, +229,120,207,115,251,227,159,231,207,126,5,86,108,128,127,209,88,117,251,178,220,28,254,15,123,142,131,185,250,241,210,34,239,156,11,25,8,238,90,92,118,227,229,55,100,17,255,0,214,160,11,127,104,187,207, +55,58,135,61,9,187,80,61,243,137,136,35,3,24,39,211,183,86,253,178,227,4,181,213,255,0,184,23,65,179,232,56,153,184,231,156,14,61,184,170,251,143,95,177,56,207,92,220,162,243,143,95,180,250,245,192,207, +81,207,38,163,124,176,35,236,77,255,0,129,16,159,231,115,158,253,121,63,141,0,74,215,247,35,118,46,111,201,7,128,110,128,207,79,86,31,225,248,230,163,58,140,234,112,215,119,153,255,0,174,232,61,123,177, +35,29,49,147,211,240,168,68,67,156,216,201,198,70,124,248,71,94,199,247,253,78,59,12,19,212,103,25,137,161,140,245,211,223,143,73,109,72,250,225,167,83,245,228,122,208,4,146,106,47,222,234,233,186,228, +53,204,44,8,233,218,76,250,31,81,248,226,162,254,211,28,131,61,216,224,114,37,86,233,140,96,111,35,160,24,207,24,199,106,12,49,17,147,99,32,28,103,18,90,224,113,131,200,185,57,227,168,207,79,65,73,228, +91,3,145,101,40,60,115,230,218,125,121,38,224,242,120,251,217,63,78,224,17,157,74,30,166,107,162,114,78,89,212,12,99,146,112,184,246,192,62,228,96,3,76,58,132,4,96,77,57,233,198,88,140,159,238,182,207, +203,229,198,58,3,210,172,136,109,71,91,121,0,236,60,251,48,123,28,140,207,206,112,120,25,239,199,52,194,44,134,71,148,195,62,178,89,146,51,212,156,78,58,247,200,160,8,77,245,177,224,79,40,207,172,178, +3,237,194,168,233,207,94,121,199,66,112,159,107,180,45,147,51,18,58,252,242,156,250,158,67,14,252,119,227,189,88,85,211,248,202,50,240,122,201,103,193,201,232,12,227,143,94,156,14,189,41,197,44,27,145, +38,58,240,94,207,62,195,253,121,28,117,199,31,210,128,41,155,168,78,118,185,199,35,37,152,116,238,55,66,203,142,190,167,160,239,74,183,113,99,137,0,29,199,202,113,215,185,182,239,199,113,143,94,42,224, +130,200,3,251,211,158,128,249,214,99,161,31,221,4,158,189,243,159,166,105,161,45,129,230,228,129,232,39,179,193,28,130,72,198,115,215,35,175,60,28,208,4,31,105,182,60,121,193,137,7,143,145,79,3,60,145, +10,228,123,244,56,199,81,75,231,91,231,146,216,28,229,64,97,211,158,136,122,115,200,45,244,169,127,226,94,58,220,240,48,48,243,89,145,158,189,134,123,254,28,158,14,105,172,250,112,228,220,68,115,144,67, +75,107,129,211,166,34,44,63,3,158,61,40,2,54,185,128,131,181,152,122,238,133,24,224,14,219,144,3,248,255,0,74,96,158,30,205,146,61,97,139,215,211,96,199,191,60,122,147,154,151,117,134,114,110,109,0,239, +186,120,6,56,233,197,190,127,64,51,239,213,132,233,249,202,220,90,55,39,164,177,48,199,7,128,182,192,156,28,14,222,249,193,200,2,139,144,49,180,41,201,201,62,68,74,15,92,142,33,39,158,253,249,198,120, +169,13,222,209,130,6,70,79,203,2,158,126,166,0,59,142,58,122,245,6,161,41,102,252,44,246,139,219,1,240,125,241,139,108,12,123,115,223,184,168,205,189,179,116,158,19,129,252,51,63,110,78,49,109,199,60, +131,145,207,167,34,128,36,55,174,115,180,202,70,58,172,48,103,175,0,254,224,122,245,200,244,239,81,253,181,134,119,52,224,3,208,69,17,228,245,24,0,115,199,182,122,117,168,205,180,57,63,191,64,123,129, +52,195,234,50,45,186,159,175,7,142,122,212,109,12,11,201,144,49,24,233,53,201,253,76,0,113,245,63,136,52,1,100,93,146,50,77,195,12,0,115,107,223,219,104,7,158,157,79,83,156,247,132,220,190,78,35,185,96, +79,36,89,146,127,12,134,32,31,126,184,235,214,161,2,215,56,46,196,131,129,137,46,155,147,238,35,24,7,142,195,190,121,163,203,135,179,73,142,167,230,187,207,110,226,48,125,121,39,142,50,8,6,128,3,122,23, +134,91,181,57,235,246,57,58,3,158,118,160,231,216,18,58,118,226,153,246,241,147,205,232,28,224,253,157,193,24,35,185,65,201,244,24,199,190,57,127,151,17,232,242,231,168,6,91,145,244,199,238,122,246,192, +56,29,176,70,105,68,64,112,39,159,131,247,67,204,199,159,64,66,158,255,0,94,72,56,35,144,8,222,244,145,242,11,204,99,28,194,249,227,168,35,28,28,142,196,147,147,146,121,204,70,231,57,200,188,238,56,18, +174,7,3,144,165,127,51,254,57,159,202,147,140,60,231,3,130,90,96,112,62,146,169,207,168,35,3,179,115,72,82,97,142,46,122,227,253,115,243,207,161,144,156,129,158,164,19,232,113,200,5,95,50,50,120,23,103, +63,195,254,146,121,228,100,13,227,169,199,110,115,193,228,211,188,216,7,222,138,232,159,82,183,61,51,200,25,7,57,250,241,212,85,144,210,2,114,111,1,0,228,6,36,231,223,247,158,128,228,145,145,249,210,153, +27,0,237,212,27,253,214,108,113,211,164,153,32,118,249,143,110,125,0,43,25,96,57,31,102,147,30,167,207,28,14,135,47,25,255,0,14,56,226,143,62,216,15,154,209,201,199,121,118,253,1,5,65,61,125,120,228,158, +79,47,121,28,255,0,203,43,225,207,82,179,49,62,153,33,207,39,142,228,103,143,64,24,21,152,31,146,232,244,251,201,38,120,206,6,75,28,12,28,103,175,94,104,0,91,155,97,156,192,195,147,128,110,56,29,186,2, +61,58,147,158,57,244,167,125,166,212,144,62,204,189,71,89,114,125,179,151,233,192,193,231,185,24,235,76,41,180,157,209,203,206,51,144,195,241,231,243,62,180,205,170,57,17,74,65,224,16,189,187,253,210, +190,188,228,118,199,106,0,178,39,183,63,242,235,17,24,198,90,224,47,242,110,8,228,103,183,173,56,92,91,41,24,180,135,158,198,224,227,191,112,65,232,59,147,143,78,5,85,40,24,127,199,165,203,123,249,114, +18,121,233,208,140,31,207,129,223,20,44,106,50,13,149,232,228,99,9,39,3,31,238,19,142,58,96,250,19,140,130,1,119,237,150,231,254,93,45,243,220,9,131,3,239,243,72,56,207,28,253,64,165,251,77,185,255,0, +151,56,207,126,37,182,207,228,92,159,207,145,223,168,197,19,20,120,255,0,143,93,68,118,255,0,86,237,235,255,0,76,184,235,215,143,168,232,35,251,48,36,255,0,162,95,159,102,137,198,58,231,36,169,29,200, +201,7,31,142,0,6,151,157,110,79,252,122,68,15,253,125,90,1,198,65,200,50,174,51,232,73,30,148,211,37,182,127,227,222,63,108,220,219,159,195,137,71,35,31,76,116,172,225,104,50,49,107,118,185,227,13,27, +54,58,243,204,36,126,60,117,31,90,147,236,219,79,22,247,4,227,156,198,6,71,60,114,138,1,255,0,56,57,228,2,209,150,221,184,251,58,122,12,206,0,233,129,210,95,94,190,184,235,154,102,228,0,129,4,76,78,58, +92,110,7,61,6,55,28,28,31,94,73,244,28,183,200,192,255,0,143,27,130,120,199,16,143,230,135,235,154,105,128,145,129,101,114,167,144,51,28,45,143,76,1,24,245,247,29,51,201,228,1,252,228,98,222,17,156,255, +0,203,195,100,96,123,50,241,158,58,119,28,156,230,144,239,25,38,40,15,214,102,98,0,206,113,180,156,28,250,147,142,6,7,74,69,130,81,145,246,89,248,231,253,82,0,57,233,247,113,215,25,227,168,234,105,194, +9,193,4,91,74,167,39,146,139,219,161,251,171,248,242,123,251,80,4,37,155,254,121,68,51,193,249,152,126,4,143,126,153,238,14,0,56,166,128,249,206,213,252,29,253,240,50,24,122,122,12,246,230,173,148,156, +2,124,144,56,232,80,231,175,233,192,235,252,179,195,63,210,127,231,159,28,245,133,155,39,158,120,71,227,174,48,122,243,158,104,2,16,27,63,126,53,228,125,231,159,35,167,63,40,63,211,191,113,69,88,85,156, +144,54,14,228,230,9,143,79,251,99,147,244,31,143,124,20,1,204,178,55,121,162,94,189,24,100,231,175,38,108,231,191,78,185,226,152,80,183,221,186,140,54,78,121,127,161,251,174,71,98,15,61,115,207,81,81, +73,117,0,201,220,231,176,255,0,73,41,211,60,255,0,199,198,209,211,234,49,147,233,80,125,170,44,140,74,227,254,223,112,126,160,155,173,191,231,242,0,178,209,76,127,229,186,14,195,13,50,231,191,35,120,30, +253,105,190,76,227,254,90,12,123,249,236,63,244,102,223,167,7,165,64,111,45,200,25,222,126,183,177,28,247,200,205,193,31,161,239,208,26,97,187,139,144,10,231,209,238,173,113,130,123,126,244,156,142,189, +59,113,233,64,19,249,18,143,249,109,130,123,109,156,250,140,129,230,131,211,252,71,115,78,91,119,255,0,158,192,96,140,124,151,4,122,158,12,128,99,57,199,31,92,140,85,117,188,137,127,137,8,29,133,221,184, +252,114,31,156,123,228,99,39,160,193,148,223,71,128,67,40,7,147,139,216,114,58,14,20,75,142,113,201,244,224,140,243,64,19,27,121,58,249,137,248,164,160,244,244,207,60,17,198,49,144,14,51,64,130,228,31, +189,16,198,113,254,176,19,237,134,110,73,224,112,1,30,213,88,222,68,121,243,6,70,120,107,216,63,145,144,250,115,200,63,206,158,47,33,35,153,16,30,51,254,155,109,149,35,174,9,147,61,115,211,30,249,160, +9,241,63,95,49,71,80,121,144,2,114,122,1,38,58,1,212,117,207,106,143,19,2,73,152,12,255,0,183,62,114,58,17,137,186,15,95,99,201,232,90,110,99,199,203,44,96,17,247,141,252,32,254,56,206,61,115,211,232, +105,191,105,67,131,246,149,252,53,8,91,191,60,21,207,29,114,78,123,103,154,0,178,30,111,249,236,167,232,103,32,227,32,243,231,15,207,62,188,140,114,155,156,183,55,97,78,115,144,211,176,57,227,145,231, +224,140,144,71,233,77,243,20,142,39,4,128,15,252,124,70,122,158,121,29,253,15,76,145,216,84,12,206,199,2,78,57,207,250,84,126,132,242,7,204,114,57,198,78,58,0,104,2,225,201,224,234,17,131,199,6,57,114, +121,255,0,106,96,7,215,36,240,73,224,98,156,19,57,205,226,57,231,129,19,118,224,1,251,243,220,159,95,214,170,163,73,156,111,57,192,31,37,203,12,159,124,73,159,78,160,115,207,122,151,230,35,5,174,27,142, +127,127,32,3,241,243,178,121,245,4,30,73,2,128,39,242,78,9,23,49,140,250,143,78,63,133,183,119,7,168,56,239,212,83,124,140,114,110,98,44,120,249,68,249,231,156,255,0,172,193,246,200,231,191,56,204,120, +144,28,127,164,1,211,254,62,64,244,25,249,166,231,242,207,175,56,52,242,36,56,218,36,35,212,220,114,114,61,86,67,130,58,14,65,24,233,138,0,4,7,254,123,43,100,246,142,99,131,223,172,216,237,192,60,245, +237,154,120,182,200,36,200,184,227,172,103,63,67,186,92,244,192,0,242,15,95,74,66,28,3,144,196,224,117,189,115,215,211,47,144,79,233,248,17,80,239,145,49,148,81,199,4,78,197,187,227,32,147,248,244,250, +231,138,0,180,176,149,63,235,50,122,2,96,36,19,233,144,237,207,61,185,199,211,20,214,71,201,207,144,72,206,11,68,71,94,153,249,115,200,231,185,244,36,241,85,218,121,176,49,1,96,56,202,202,196,250,123, +115,245,227,223,29,98,51,92,22,255,0,80,71,126,95,28,122,28,177,231,223,174,123,245,52,1,120,111,83,145,228,17,142,65,133,0,207,167,36,28,117,233,235,207,160,119,155,48,193,88,237,51,220,237,132,116,244, +195,118,234,122,254,29,170,164,183,44,57,137,151,158,126,124,128,59,28,129,131,142,120,56,227,169,52,133,166,32,238,76,117,0,151,113,211,215,17,55,127,94,190,226,128,45,25,238,1,63,185,181,63,68,143,129, +208,103,13,248,231,243,239,76,251,100,202,112,97,183,30,225,33,254,102,64,71,81,198,61,50,51,85,113,41,28,8,151,61,78,242,15,94,56,54,185,198,120,36,156,251,245,160,37,193,192,12,156,116,199,205,145,212, +30,109,198,79,28,112,61,168,2,224,190,112,63,212,70,56,192,43,246,81,131,208,112,101,239,223,212,147,210,157,246,249,6,65,137,113,234,26,216,113,239,130,220,122,129,158,157,51,214,160,134,118,228,23,56, +198,118,192,196,117,224,228,194,0,239,144,0,235,239,204,134,9,186,121,110,113,129,145,110,199,29,207,69,83,215,240,61,142,7,32,18,29,68,114,74,39,61,78,232,243,156,114,9,84,29,241,158,125,250,154,13,251, +147,128,2,241,156,180,129,120,199,251,68,113,239,199,108,123,185,44,238,28,143,221,205,245,242,92,3,158,159,194,7,229,223,191,53,39,246,100,228,228,137,23,177,253,217,0,246,35,151,4,118,207,24,198,63, +0,8,133,227,147,147,142,114,73,89,34,124,122,227,50,140,143,108,243,158,224,228,188,77,35,146,0,147,104,200,220,4,32,159,110,37,44,50,15,126,190,131,0,85,129,165,73,193,46,185,198,72,0,143,169,56,39,145, +142,1,245,231,208,167,246,91,117,222,65,235,192,97,215,156,243,180,243,239,140,143,65,64,16,151,144,96,129,63,39,147,184,126,132,62,14,125,115,212,116,20,244,121,9,225,165,95,171,225,135,230,248,192,250, +231,212,145,154,144,105,164,247,39,29,246,145,158,189,219,184,246,247,25,205,72,52,201,20,12,121,184,233,194,142,123,112,4,139,215,184,60,142,56,235,64,9,182,224,142,36,152,243,253,252,231,233,181,251, +156,125,49,78,11,115,198,25,248,201,203,23,252,190,249,233,255,0,214,237,128,245,176,96,62,127,61,64,61,8,101,7,175,60,77,216,99,166,71,108,138,81,103,26,243,243,140,255,0,124,184,207,66,112,124,194,73, +234,121,233,146,58,116,0,114,37,219,103,228,102,35,57,200,115,207,28,253,225,245,28,159,231,82,173,189,238,70,216,72,4,119,92,19,211,39,230,149,113,212,242,121,250,103,53,15,217,148,231,4,142,59,75,47, +36,96,14,114,121,245,234,57,25,237,73,228,32,4,153,8,232,70,100,124,123,140,136,128,57,239,215,147,215,154,0,181,246,75,246,57,107,96,71,161,88,73,62,224,52,165,177,200,207,242,224,84,203,101,118,78,126, +196,189,0,251,144,228,99,211,50,140,103,156,227,60,100,86,105,137,1,57,103,35,217,231,238,115,218,3,206,48,56,244,228,113,79,80,163,159,223,0,125,36,186,32,129,192,60,91,247,61,143,67,233,64,26,63,99, +184,25,38,197,72,28,28,236,83,143,80,86,64,71,126,50,70,79,25,197,6,210,94,159,217,228,12,129,242,180,124,142,253,89,129,60,254,30,135,53,76,48,201,59,100,252,230,228,122,243,1,231,140,156,142,58,99,138, +153,118,119,71,29,51,147,41,231,191,34,53,207,115,247,79,29,123,208,5,165,176,144,255,0,203,140,192,119,3,236,196,159,193,182,250,14,126,191,90,26,198,66,114,116,251,130,61,115,106,188,115,216,18,7,63, +207,138,139,205,141,84,15,221,129,212,254,238,109,221,56,5,182,99,35,169,198,6,71,78,185,112,154,14,63,120,160,245,251,178,227,142,127,138,35,156,126,94,188,80,4,159,96,39,3,251,62,228,18,71,221,123,69, +199,82,62,191,142,125,115,222,148,105,199,189,149,216,227,32,249,182,217,29,58,30,7,124,103,168,250,158,35,243,208,127,203,76,2,58,42,0,195,147,213,182,99,145,128,120,252,41,69,194,0,127,120,87,131,212, +64,88,231,216,128,123,96,14,190,231,168,0,148,88,149,227,200,187,25,4,227,125,179,30,163,25,195,3,143,231,223,154,127,217,87,186,92,227,140,2,98,0,242,120,249,73,201,25,206,14,58,84,2,104,191,231,168, +36,240,65,88,121,244,7,50,168,56,245,192,193,231,57,193,169,4,214,227,7,124,96,15,239,37,161,4,250,241,118,132,147,215,167,90,0,112,181,76,156,11,190,127,186,3,140,246,60,35,31,66,120,250,247,52,162,208, +147,242,181,216,199,80,18,76,244,255,0,102,17,239,216,158,62,132,168,158,220,255,0,203,72,27,216,65,108,196,247,57,38,244,2,121,232,127,31,64,158,108,88,36,8,57,56,193,181,180,57,239,192,91,240,125,9, +25,31,94,48,0,29,246,89,71,2,75,176,14,48,90,9,155,4,250,147,26,159,211,241,228,26,127,217,164,4,102,105,137,200,224,219,92,158,216,193,1,113,207,166,14,115,158,79,52,207,56,40,200,123,126,160,96,89,71, +187,156,141,195,23,207,144,63,1,156,119,200,169,22,121,15,221,218,79,170,217,132,7,168,206,69,250,147,158,216,255,0,17,64,7,217,229,25,253,243,142,51,205,157,227,127,237,3,143,110,0,227,235,82,172,87, +63,195,116,113,223,253,14,244,122,99,141,131,61,242,15,175,225,70,249,201,228,68,126,182,129,184,233,255,0,63,172,73,239,212,126,61,105,185,156,242,33,140,238,238,44,216,116,238,8,188,206,15,212,3,199, +226,1,63,151,54,7,250,75,100,113,242,216,92,103,241,44,135,219,61,61,105,68,114,116,51,72,73,233,182,202,117,36,224,242,78,198,201,193,231,3,143,78,185,135,253,36,47,49,149,61,192,176,145,201,207,3,145, +115,207,169,247,198,73,233,78,18,92,128,62,86,3,190,116,247,7,191,92,204,222,221,15,175,3,176,4,130,222,113,208,200,221,242,109,36,111,195,2,49,233,223,25,56,244,169,21,110,192,60,201,248,217,72,0,233, +192,60,99,242,235,245,53,16,123,204,227,203,36,103,31,241,227,33,253,85,216,19,207,24,233,219,52,242,53,19,130,32,148,251,139,50,131,25,30,224,140,12,112,7,61,192,236,1,42,253,169,121,10,207,207,65,105, +206,127,9,71,126,185,200,250,98,156,30,232,147,152,216,103,176,183,85,32,103,57,99,189,185,200,237,142,156,103,188,75,246,252,28,193,54,1,25,205,180,128,243,142,6,99,62,221,14,15,28,30,50,240,46,199,45, +109,54,1,234,97,32,243,158,159,32,61,50,113,147,211,183,80,1,55,153,112,160,31,42,86,56,39,136,151,244,244,231,220,12,113,238,28,46,39,7,13,109,117,223,254,89,175,226,112,36,92,140,10,174,203,55,63,187, +148,96,246,140,47,29,7,222,70,206,61,199,185,160,43,117,49,202,196,224,242,16,16,127,27,126,62,153,237,215,36,228,2,234,201,144,11,90,92,144,122,22,183,13,192,60,0,55,176,60,250,19,192,198,78,57,118,240, +115,182,202,224,251,139,82,195,62,225,92,96,244,233,84,151,140,145,20,222,152,196,7,4,119,31,184,36,242,79,4,15,90,151,12,192,1,11,144,57,201,142,220,103,174,70,225,15,94,184,24,207,161,3,20,1,117,103, +61,172,229,234,7,22,146,14,123,131,137,243,215,176,31,142,57,169,5,216,39,6,205,212,142,194,222,69,36,255,0,224,64,3,211,166,7,61,56,172,243,31,173,170,30,160,252,177,103,56,234,113,17,199,126,131,60, +243,219,46,216,131,0,91,34,241,215,96,99,158,249,34,223,31,166,121,57,199,20,1,164,179,66,195,155,105,55,28,103,42,227,28,224,255,0,203,193,231,241,227,245,169,195,38,6,45,238,0,245,30,96,207,254,69,244, +231,175,62,152,53,145,140,96,24,215,140,245,140,156,115,193,230,212,244,239,129,159,115,214,165,85,12,7,22,202,163,251,200,137,158,157,9,180,83,145,223,61,125,125,64,53,212,32,3,49,204,185,207,30,99,14, +113,192,24,184,92,113,220,128,51,140,243,129,82,17,15,25,142,76,241,157,205,159,95,91,178,113,215,144,7,235,89,97,16,127,21,162,250,19,42,140,240,0,193,242,49,192,227,129,244,200,235,42,194,255,0,120, +27,82,48,57,19,167,60,244,230,17,248,208,6,144,142,220,231,228,199,65,150,101,4,144,65,193,6,228,129,142,249,233,193,244,20,241,26,40,56,12,122,227,19,69,215,158,121,156,227,7,35,29,71,95,115,64,44,152, +4,125,144,142,156,24,27,169,61,202,47,110,228,113,143,92,226,69,73,79,37,172,192,7,56,34,34,121,235,202,142,63,63,95,92,128,11,219,71,117,144,15,67,44,108,7,191,51,28,114,50,112,0,253,41,167,111,77,167, +129,143,149,225,61,58,127,203,99,206,49,198,1,199,175,90,131,202,147,25,45,100,220,142,64,35,219,24,0,242,79,108,99,219,21,34,7,24,195,66,61,2,144,6,122,100,19,3,31,108,100,241,142,157,40,1,4,17,185,60, +72,167,29,205,187,3,130,58,1,41,199,94,156,119,39,217,254,94,23,229,44,71,35,38,32,112,6,58,98,64,7,113,245,29,70,49,78,8,231,0,200,160,143,226,0,147,131,208,238,104,144,31,192,99,145,142,184,50,52,89, +207,239,84,243,212,8,179,192,199,36,161,238,51,145,193,207,80,49,64,16,8,212,227,32,145,198,73,130,62,163,215,51,131,143,160,238,121,206,69,59,203,131,190,226,121,227,236,233,250,98,110,184,199,32,125, +56,169,252,156,147,153,250,14,8,120,135,191,32,67,143,212,210,8,23,63,241,243,140,241,128,177,18,121,198,9,242,88,103,142,156,125,71,74,0,136,44,99,149,67,159,250,247,78,61,58,75,211,232,71,110,157,68, +203,156,112,189,7,120,48,51,159,79,56,159,196,231,175,74,26,217,112,24,221,145,245,142,28,116,233,159,178,183,111,78,122,227,24,197,51,236,241,112,90,229,143,115,136,227,31,202,200,158,167,235,207,32, +28,224,1,229,128,251,202,188,255,0,211,23,29,143,117,159,3,156,241,205,56,24,184,59,208,48,57,230,38,199,94,153,55,29,64,207,60,115,159,97,76,22,241,115,251,233,137,255,0,174,103,175,97,149,178,10,113, +232,48,57,201,164,48,71,255,0,61,164,0,129,203,39,110,153,226,212,14,59,112,125,40,2,218,121,77,143,156,158,223,46,236,14,51,143,248,248,56,206,49,249,14,181,58,249,99,63,188,219,236,94,64,71,99,255,0, +45,186,145,244,29,179,197,102,136,162,28,121,228,145,159,188,173,199,28,116,136,14,127,19,199,110,160,242,80,114,179,160,199,57,198,15,94,50,90,50,114,59,123,30,188,112,1,169,186,221,177,186,71,24,227, +2,82,6,61,191,122,123,119,250,12,117,34,64,214,138,191,235,36,3,213,103,57,252,64,86,24,206,71,4,158,190,213,140,184,206,26,224,100,251,177,7,174,49,242,14,163,175,78,158,166,164,204,121,230,104,91,131, +131,178,102,28,140,2,112,23,39,129,235,64,26,139,60,29,154,82,6,64,253,228,172,112,61,200,201,250,0,122,26,112,184,183,232,124,236,19,212,121,188,244,193,63,186,113,142,189,121,254,153,139,34,130,115, +36,68,114,78,213,185,247,236,19,244,207,174,41,255,0,104,136,96,147,30,1,201,200,191,36,130,125,48,63,44,227,147,158,185,160,13,19,53,169,193,45,54,6,120,11,35,100,246,235,0,35,3,140,19,143,96,122,183, +117,169,57,47,40,231,254,121,51,96,227,147,143,43,31,153,246,172,243,113,107,206,246,136,28,228,150,143,84,198,9,246,43,192,245,201,192,224,15,71,36,246,120,56,146,212,131,158,10,106,163,166,73,36,153, +49,248,103,161,228,118,0,23,207,217,136,202,188,132,227,147,246,126,120,250,64,71,126,56,3,219,213,135,236,231,159,54,108,30,164,91,251,1,158,34,4,253,70,15,21,10,203,107,145,243,90,118,56,7,83,82,79, +212,146,189,187,123,117,169,68,246,124,147,246,67,158,159,62,165,248,231,166,127,47,235,64,14,31,102,236,93,240,49,143,178,2,121,239,254,160,250,122,228,28,98,144,37,185,60,35,147,198,63,208,144,228,246, +199,238,14,127,207,78,13,42,201,96,123,89,231,60,227,251,76,251,117,24,39,35,175,35,3,25,30,142,221,166,147,196,86,185,56,203,1,169,99,166,122,144,73,237,252,67,168,244,160,4,217,25,233,27,245,232,108, +163,3,219,170,1,220,147,198,58,245,164,17,197,212,160,200,198,63,209,98,228,241,215,49,183,3,241,227,183,170,131,167,96,182,203,113,206,115,254,157,252,136,4,30,157,243,156,247,166,179,216,1,209,27,140, +97,99,190,110,188,245,44,189,125,134,58,231,29,72,2,136,99,60,108,249,120,193,251,52,68,31,94,4,31,253,124,244,160,195,26,245,129,136,231,31,232,136,58,253,97,61,243,206,48,112,113,210,160,19,218,130, +8,85,28,244,22,151,132,158,158,172,220,243,244,227,175,21,56,158,2,56,219,142,159,241,237,56,62,184,193,113,239,145,143,113,64,9,136,212,146,32,99,199,65,109,17,3,212,17,246,92,14,132,227,212,115,146, +13,53,136,206,124,137,73,24,255,0,151,120,65,236,48,1,180,24,234,63,136,114,115,156,145,137,26,100,3,27,1,24,254,24,31,24,252,73,29,191,12,241,199,53,1,158,35,247,153,198,59,139,55,39,7,140,130,88,3,142, +59,2,115,216,242,0,36,13,200,38,221,177,199,222,134,216,231,147,129,197,177,0,251,246,231,165,52,239,63,48,132,130,8,198,35,128,123,142,62,202,6,120,57,56,245,227,165,87,50,64,78,85,166,35,254,188,152, +115,206,7,86,239,234,114,127,42,103,153,30,120,150,113,234,62,198,23,212,113,144,57,238,73,35,3,244,0,182,124,206,165,15,167,49,161,207,168,249,109,198,59,14,216,227,20,214,50,156,230,38,57,7,129,26,130, +57,200,224,219,54,73,207,212,156,244,226,170,249,241,131,255,0,31,87,74,49,130,22,220,5,250,252,163,36,246,224,227,61,206,78,99,123,152,193,39,237,119,121,237,139,73,73,39,61,190,92,117,36,228,117,239, +64,23,0,152,231,247,50,5,29,115,10,144,51,219,6,216,241,158,157,113,143,201,141,191,39,17,100,255,0,215,188,100,224,158,185,251,47,127,161,28,100,154,166,46,80,242,46,47,71,4,143,244,57,48,126,163,203, +45,140,115,201,207,94,15,34,158,46,34,24,38,246,236,18,57,31,100,149,122,129,253,216,186,250,224,245,253,0,28,194,231,144,34,126,61,34,140,30,114,6,21,160,82,61,184,31,133,38,46,143,30,68,196,16,51,251, +184,248,207,184,136,28,247,246,244,237,81,52,240,99,155,187,204,114,127,227,222,235,28,158,79,202,189,61,128,61,57,168,76,176,100,127,166,93,3,142,158,77,242,140,243,146,14,220,231,143,161,29,56,160,11, +97,39,11,143,179,76,231,145,196,96,242,126,137,215,167,224,61,77,56,121,203,255,0,46,115,130,65,231,200,155,220,31,187,14,56,239,156,245,199,126,42,164,150,224,2,215,183,24,238,113,168,2,123,224,146,0, +206,79,168,234,122,115,75,231,90,140,226,230,92,255,0,120,189,254,127,16,8,201,206,59,255,0,76,0,88,18,78,8,205,165,192,235,131,229,58,231,254,250,139,215,220,3,129,207,114,223,58,65,255,0,46,151,67,253, +232,84,247,224,114,23,241,99,128,59,158,106,47,54,217,143,23,115,243,199,31,218,7,147,235,251,206,65,231,4,227,219,173,70,126,206,73,197,196,140,15,64,201,169,55,190,75,121,152,198,63,195,56,205,0,89, +243,192,56,107,105,134,122,102,206,34,78,51,212,8,143,231,233,199,174,20,206,156,126,226,83,142,57,178,181,4,116,56,32,160,56,35,161,232,59,115,140,85,22,241,146,8,117,60,17,147,29,250,156,119,235,112, +15,226,50,122,123,10,13,162,55,6,88,198,72,56,219,168,231,182,58,92,158,120,61,115,235,142,1,160,11,2,116,206,124,137,200,235,197,181,146,244,250,129,131,193,206,6,71,90,127,219,45,192,249,160,157,15, +60,249,26,113,56,4,117,203,113,198,49,199,127,173,81,251,28,4,237,45,11,28,1,130,151,227,175,185,184,62,152,228,31,228,104,54,16,31,225,183,35,208,37,235,100,231,143,249,108,71,167,94,180,1,108,222,91, +63,59,101,0,112,79,217,180,241,131,212,99,231,28,115,206,73,28,241,211,20,198,187,131,29,101,24,244,181,210,200,199,94,242,31,204,144,120,231,60,26,175,246,56,7,72,87,60,112,35,185,32,127,192,75,55,230, +114,7,31,74,70,183,136,15,245,11,248,218,204,79,231,183,31,150,79,112,77,0,61,239,35,61,37,113,158,49,246,77,48,158,188,103,51,17,201,233,193,3,31,90,174,215,72,122,60,128,142,237,103,166,156,158,123, +43,142,8,239,207,126,153,25,81,10,100,109,129,84,30,194,214,83,219,156,254,237,120,233,199,61,58,129,72,99,69,227,200,31,95,179,72,164,145,220,124,132,12,125,51,207,168,201,0,96,189,32,28,100,140,129, +159,177,88,166,48,57,193,18,156,241,232,14,15,65,232,198,188,97,211,112,200,35,253,85,160,250,240,37,31,92,241,199,161,21,47,238,129,230,216,140,30,49,11,174,112,15,39,42,135,130,122,28,242,41,11,168, +200,88,231,92,103,24,141,191,1,146,27,3,142,71,61,207,94,104,2,171,94,201,145,151,35,142,165,98,39,31,68,152,140,96,14,159,142,49,154,105,212,39,36,237,153,135,161,17,150,0,231,183,239,58,115,253,73,169, +158,64,221,35,185,98,56,32,32,92,158,188,229,65,39,184,200,237,205,71,189,143,72,110,115,212,237,104,147,0,123,0,15,94,158,156,251,80,5,118,190,184,39,254,62,91,39,177,183,57,61,186,137,7,208,158,185, +166,253,170,99,214,118,0,12,28,195,40,207,228,220,115,140,96,224,116,227,154,178,103,155,254,121,221,12,115,204,176,99,140,227,4,146,62,190,152,192,29,77,70,215,51,238,251,178,168,227,254,91,90,119,4, +143,186,20,140,119,193,36,19,248,80,5,86,187,124,255,0,175,127,202,116,206,125,128,97,143,115,147,237,158,41,62,209,147,147,113,47,176,18,78,49,159,172,120,233,198,0,247,61,6,108,27,185,129,57,121,6,63, +233,188,25,199,29,139,174,121,255,0,57,205,33,184,152,243,230,78,122,143,189,11,99,242,97,206,58,224,12,117,206,40,2,3,114,14,127,210,167,25,29,167,127,76,247,135,219,142,127,58,67,44,68,231,237,55,0, +224,30,102,13,201,199,63,234,178,71,29,253,120,227,154,144,205,62,14,37,153,71,96,2,113,212,128,62,115,207,167,29,70,125,106,6,154,236,103,247,178,183,166,229,13,237,208,177,92,244,233,239,193,205,0,41, +150,44,96,221,203,201,0,225,192,60,244,254,0,121,198,121,3,182,14,58,39,153,0,251,211,92,30,223,241,240,6,127,60,247,237,201,238,61,12,102,107,172,242,224,250,230,40,56,199,25,229,125,51,201,201,227,158, +244,195,45,192,25,18,243,235,229,192,49,219,24,242,152,227,223,142,77,0,57,222,209,135,222,186,245,249,174,255,0,251,16,115,156,14,185,3,62,244,207,220,28,225,238,123,140,253,178,78,184,198,112,21,134, +70,57,254,124,211,124,251,156,28,220,17,238,96,66,15,174,113,8,31,81,140,1,140,14,121,129,165,184,110,126,211,142,191,242,197,84,140,247,4,65,208,125,123,17,64,19,145,14,115,230,78,220,103,31,106,231, +235,254,172,103,144,15,25,201,193,227,56,14,82,153,24,107,131,142,131,206,44,125,186,160,7,243,25,198,122,115,84,203,78,57,55,110,9,244,137,249,244,233,107,131,199,126,153,239,81,19,59,18,126,218,249, +206,64,194,116,207,25,38,208,30,220,12,17,144,50,123,128,13,18,196,114,22,228,142,189,95,160,62,160,255,0,46,79,76,26,141,190,124,15,42,98,61,252,210,7,175,37,187,143,110,164,244,206,107,56,155,129,255, +0,49,4,92,118,102,141,120,39,140,129,106,48,125,123,103,60,122,51,253,39,140,95,70,70,58,137,163,29,186,225,172,88,125,14,239,74,0,208,218,195,1,96,112,113,200,253,255,0,175,95,149,191,44,116,245,245, +133,209,129,201,134,92,243,209,174,177,131,223,3,118,79,224,70,125,42,190,203,160,57,191,141,120,234,102,131,249,155,1,223,211,20,195,246,174,127,226,99,19,12,28,230,104,201,244,207,252,122,128,15,56, +192,24,35,140,80,4,172,27,60,196,253,184,43,116,223,150,232,191,66,113,145,207,113,71,239,70,48,160,140,30,12,114,245,30,128,168,207,24,233,239,193,192,53,0,251,80,255,0,151,228,63,222,34,116,224,100, +245,31,103,80,59,117,192,235,201,228,211,203,92,15,249,126,140,250,238,158,15,211,247,39,7,3,174,121,244,226,128,37,99,40,57,192,30,131,201,184,32,15,66,126,85,28,118,250,143,90,65,230,143,225,147,184, +226,218,83,207,56,251,178,3,131,142,224,251,228,212,121,156,146,90,254,33,159,250,111,16,57,252,45,241,207,94,163,30,244,210,113,131,253,161,17,60,103,38,221,201,57,255,0,174,32,159,124,251,241,198,40, +2,199,151,35,96,231,30,132,219,74,8,7,234,217,198,7,233,138,104,142,76,224,203,16,13,215,54,239,156,3,223,123,14,64,227,159,203,184,139,126,7,252,127,68,216,201,199,146,164,1,238,85,8,193,250,117,207, +122,107,73,140,31,181,198,114,127,134,46,56,231,238,236,207,60,250,100,123,80,5,197,132,130,27,205,132,125,45,98,227,167,36,151,250,244,43,237,158,148,246,77,223,242,218,28,3,213,173,35,108,241,206,9, +148,143,195,147,89,230,228,12,3,113,140,228,12,70,121,246,225,71,229,207,215,176,140,221,32,24,105,114,115,212,70,251,177,207,92,108,206,114,58,99,168,231,129,64,26,68,40,224,204,9,61,0,182,128,14,135, +36,12,228,227,219,36,117,57,192,168,202,41,97,153,87,158,128,90,91,177,199,184,222,9,35,167,38,168,9,208,240,90,79,80,118,203,130,115,208,253,226,0,206,115,237,192,192,164,251,68,71,172,174,163,158,78, +243,220,240,112,163,130,49,201,29,72,246,20,1,161,177,9,27,158,92,122,141,62,213,184,28,2,14,247,0,116,28,246,236,13,39,147,111,156,180,146,55,94,182,22,105,140,103,251,220,99,142,189,58,251,227,37,167, +64,114,28,48,245,43,47,78,125,186,113,158,0,206,121,199,104,218,230,62,0,66,196,142,72,23,3,32,241,198,221,189,125,49,250,1,64,27,37,32,28,6,62,184,54,182,43,158,50,112,64,62,222,231,168,24,226,152,68, +10,48,119,15,97,5,134,121,235,193,81,250,119,207,189,97,155,134,7,229,178,115,207,80,117,12,156,250,16,72,3,232,125,121,34,144,220,73,206,44,228,231,251,211,93,130,59,131,243,30,189,207,52,1,178,255,0, +103,60,115,207,115,6,154,8,231,60,242,63,244,28,254,60,213,119,104,65,192,7,142,235,22,158,164,244,239,229,16,71,115,219,28,250,99,40,207,114,56,22,210,128,127,233,189,198,15,185,25,29,113,199,94,157, +105,165,174,15,63,101,112,123,17,115,48,7,7,31,222,30,185,227,36,113,222,128,52,131,71,146,72,115,206,63,213,216,14,132,117,38,223,30,248,207,167,62,134,98,99,196,108,123,114,44,73,61,191,231,136,206, +120,3,142,123,117,197,101,249,151,3,63,232,228,28,247,189,156,12,158,231,50,143,108,244,60,140,226,134,150,231,24,54,193,79,168,191,186,253,63,210,15,183,57,253,51,64,27,72,16,129,201,7,156,13,150,61, +135,78,97,7,244,63,239,30,148,141,144,112,36,149,72,232,11,89,160,228,28,231,101,177,218,79,112,91,145,193,172,65,45,223,65,9,0,31,249,255,0,185,245,28,241,49,206,123,103,208,143,66,102,19,93,28,6,143, +0,99,165,253,202,246,227,25,152,247,25,228,159,99,64,26,69,229,95,227,153,199,95,146,230,216,244,206,79,252,123,145,235,142,79,78,58,212,97,165,61,90,240,117,207,239,225,199,126,133,109,135,67,158,58, +118,60,245,174,166,99,140,200,84,240,63,228,33,49,28,14,112,90,124,246,207,60,30,71,165,78,11,17,131,48,83,255,0,97,19,250,3,62,70,121,231,158,221,197,0,52,137,24,130,30,232,145,158,62,210,138,127,49, +0,233,220,117,224,112,104,223,32,232,215,32,14,255,0,108,25,7,182,127,112,223,83,250,145,79,10,249,207,157,219,175,219,137,61,242,6,46,115,142,184,201,61,15,169,169,20,18,48,110,80,19,211,55,114,55,0, +112,57,152,140,158,48,112,221,177,223,32,21,247,200,120,51,93,175,3,165,247,29,123,129,109,223,240,28,82,23,144,103,19,93,15,115,122,49,223,213,23,61,251,125,106,208,69,92,127,165,149,245,219,59,190,127, +2,113,245,238,123,156,243,82,4,70,28,93,142,156,240,164,231,232,126,99,207,108,31,202,128,51,129,156,255,0,203,221,200,250,94,70,71,67,223,7,235,142,51,142,180,52,115,183,252,183,186,113,223,253,49,58, +131,236,7,94,58,3,199,36,14,181,164,177,67,215,237,100,224,119,133,27,211,156,50,16,115,238,127,160,46,16,66,199,155,196,233,199,201,18,158,189,199,150,49,237,158,189,6,49,64,24,166,222,126,205,114,7, +125,215,164,255,0,76,30,122,103,28,131,248,40,182,110,55,25,242,115,199,156,28,130,70,120,224,19,234,120,35,208,18,43,101,160,143,7,19,70,199,215,101,191,108,227,56,66,195,140,140,228,241,245,32,161,182, +82,9,89,83,31,238,64,49,128,123,236,252,14,50,115,206,61,64,50,69,169,231,247,179,96,117,27,240,113,211,3,12,49,248,14,189,65,206,41,226,5,25,203,77,219,39,124,71,61,71,241,56,235,232,79,229,87,154,54, +7,111,155,31,208,197,3,103,57,235,152,177,212,100,231,211,158,180,207,44,175,222,150,17,199,7,203,181,24,207,61,162,0,30,157,112,14,15,64,40,2,175,144,27,238,155,175,65,182,43,99,239,212,76,57,227,140, +115,232,15,57,122,219,144,15,203,116,123,19,228,64,196,228,117,63,233,64,227,61,120,252,249,165,48,140,100,73,1,56,60,129,107,215,169,63,44,121,39,234,113,234,105,4,4,112,12,89,239,145,14,49,234,73,92, +116,7,168,20,0,8,151,60,249,231,29,1,134,30,249,231,30,115,99,241,227,34,157,228,38,51,228,206,196,115,204,7,159,78,18,92,126,92,241,211,154,141,163,112,120,22,227,177,193,131,32,19,199,11,25,29,57,244, +206,121,233,81,152,164,254,31,36,243,233,107,248,2,25,56,63,129,245,30,180,1,55,200,8,34,6,3,29,76,46,59,123,204,112,73,247,234,49,198,77,21,15,147,39,4,164,71,60,241,246,82,121,245,253,216,193,24,29, +40,160,14,60,218,202,164,147,33,245,36,92,56,227,233,187,57,0,147,211,215,29,105,12,115,39,73,24,113,201,51,201,245,29,100,24,28,145,247,78,73,199,94,182,205,165,143,241,60,67,211,48,74,0,63,248,16,63, +153,32,244,235,138,97,177,178,113,148,146,30,120,24,183,144,128,125,78,235,140,31,124,3,200,29,114,104,2,184,91,178,112,178,159,167,218,113,233,219,127,28,231,156,243,249,129,40,142,244,227,15,158,127, +231,237,6,59,30,174,72,255,0,129,112,59,158,148,211,167,194,15,18,64,224,241,205,177,231,30,184,114,120,35,158,127,30,180,239,177,91,140,144,45,9,63,222,182,151,156,227,35,5,136,30,156,112,8,246,160,7, +148,187,4,12,71,156,156,147,117,9,228,247,231,33,122,156,227,142,152,53,25,134,232,147,187,203,250,11,184,148,245,235,249,247,192,61,49,140,112,195,98,135,128,150,44,9,224,121,46,184,35,234,91,240,43, +220,211,63,179,200,0,249,112,99,213,67,174,79,110,54,145,199,76,116,29,115,198,104,2,111,179,203,222,38,57,231,34,237,73,192,3,213,202,146,121,231,29,248,207,52,229,138,76,96,195,35,12,227,6,120,137,56, +200,0,17,32,245,238,6,127,148,2,198,78,209,69,219,63,59,117,238,73,242,192,231,223,167,173,2,206,65,143,220,66,79,114,103,149,113,159,97,183,167,168,24,199,227,64,22,124,146,163,152,36,92,30,134,226,35, +159,252,141,199,233,206,57,28,212,138,2,224,24,121,199,24,150,30,56,255,0,105,207,25,61,129,29,251,213,47,179,200,62,236,17,14,220,79,113,198,56,206,68,131,167,227,223,182,105,68,51,129,242,170,14,192, +125,170,115,140,14,56,50,156,142,57,227,57,35,175,34,128,52,49,142,60,137,123,28,172,150,185,207,126,185,57,56,199,57,245,7,213,68,106,122,197,57,207,115,37,183,126,127,129,192,31,136,7,7,138,203,43,58, +140,149,207,177,184,147,244,195,100,147,142,132,159,214,148,59,117,120,92,143,250,239,58,175,211,59,240,125,177,232,115,156,154,0,212,242,144,1,155,121,254,133,161,35,140,158,237,158,14,78,115,143,106, +8,25,255,0,143,121,71,76,157,240,3,131,215,164,128,142,253,207,78,158,153,62,105,199,17,16,59,19,117,32,239,238,223,160,237,158,188,83,132,163,157,202,188,142,247,14,227,158,231,231,59,191,2,8,244,160, +13,64,87,60,71,114,59,16,36,140,227,25,245,144,253,9,201,207,191,90,112,96,220,121,119,4,116,220,205,22,120,231,251,199,35,168,24,28,126,60,103,44,171,192,34,54,7,57,102,108,117,237,203,177,32,100,117, +231,29,71,20,241,179,4,143,43,63,48,206,99,199,224,73,35,7,29,249,39,219,56,0,188,73,3,43,28,196,128,64,249,200,39,60,17,201,192,200,250,103,25,28,113,77,243,36,192,2,9,207,32,144,178,96,156,116,228,73, +131,201,57,206,7,182,13,84,27,0,24,242,72,207,113,110,113,198,114,50,143,235,142,7,94,7,4,144,224,232,15,38,63,94,5,178,142,71,60,249,24,227,3,168,235,216,99,20,1,104,53,193,28,91,94,99,183,207,187,174, +58,229,250,119,224,17,215,216,83,27,237,29,26,222,240,103,36,100,73,144,15,191,156,191,143,0,15,76,113,80,172,138,126,92,198,115,140,124,208,114,120,238,45,72,7,245,206,49,131,86,81,178,126,84,139,254, +5,36,7,167,167,250,39,25,28,250,127,42,0,143,19,247,182,186,36,119,194,244,61,62,252,188,245,206,63,1,158,238,243,36,0,3,111,116,61,50,98,35,167,253,117,28,156,14,56,63,143,21,109,68,187,127,229,130,241, +142,102,182,82,56,28,255,0,199,144,7,25,207,66,123,96,14,134,201,186,153,45,212,30,64,55,22,131,142,216,6,217,114,63,151,242,0,173,230,22,7,48,221,130,59,237,200,231,184,219,55,61,58,246,198,14,72,163, +204,56,230,27,179,234,124,166,207,230,37,193,207,227,223,142,134,173,132,147,140,180,36,12,253,217,172,240,71,212,219,159,174,50,1,199,60,96,151,2,234,0,44,132,116,255,0,143,139,60,142,127,216,180,233, +207,36,156,241,220,116,0,170,178,113,144,151,0,19,198,3,169,207,213,142,127,47,212,138,62,208,163,57,251,80,237,146,10,254,108,83,62,157,253,42,231,152,6,114,97,7,166,77,205,166,72,234,14,62,203,199,3, +147,219,158,152,165,23,8,167,5,162,7,169,38,242,213,78,114,57,199,144,8,200,239,211,57,227,3,52,1,80,92,43,116,123,149,199,35,57,199,79,250,226,115,244,233,210,164,23,8,164,6,184,117,221,156,238,64,49, +208,242,124,131,212,247,200,250,231,138,159,205,133,201,253,228,89,57,255,0,151,187,98,48,49,206,12,35,31,151,242,53,32,49,1,143,50,46,185,255,0,95,108,125,49,255,0,44,187,125,6,59,244,205,0,66,46,19, +162,221,18,123,169,44,27,223,254,93,155,140,96,244,245,169,5,203,228,98,224,119,254,39,254,150,57,250,247,237,208,83,183,66,199,239,219,116,234,103,183,7,182,63,132,117,57,0,31,90,99,27,96,114,205,110, +79,125,211,192,65,31,131,128,65,233,211,61,123,245,0,127,218,100,35,6,100,207,124,173,195,28,100,245,197,152,192,224,113,144,112,77,53,166,148,244,150,38,60,140,186,92,128,127,242,81,134,121,29,248,234, +57,234,208,32,254,229,185,231,160,100,35,215,144,36,199,175,97,142,58,83,139,192,188,8,160,200,231,63,38,7,127,225,96,59,19,215,62,131,212,1,190,116,231,7,48,19,143,75,142,222,198,199,235,215,183,38,151, +237,19,1,140,67,140,99,33,39,200,233,156,17,108,50,79,126,158,163,56,167,6,70,198,82,223,28,112,85,186,112,7,11,39,174,51,207,61,121,165,43,25,198,60,156,159,238,66,216,239,253,217,6,113,235,201,199,227, +64,13,23,23,25,192,242,51,254,236,224,159,196,162,254,61,7,183,65,79,89,110,240,50,150,237,200,57,204,234,51,245,10,121,237,144,5,52,194,158,177,168,255,0,175,105,24,30,78,63,229,176,56,207,92,96,119, +234,41,162,28,159,151,105,56,29,45,92,100,114,51,159,56,158,64,3,167,79,90,0,159,206,190,63,118,8,143,60,17,52,184,61,129,0,70,0,56,245,35,62,162,163,105,53,21,39,16,15,251,252,203,211,160,57,124,145, +211,28,143,126,56,45,242,88,227,247,104,221,135,238,36,231,158,113,135,25,3,142,9,237,198,41,124,160,57,104,64,199,253,59,200,126,135,30,102,121,228,116,246,237,64,14,89,181,0,114,97,4,115,210,102,35, +243,91,133,232,121,193,61,64,233,78,23,55,227,33,109,249,28,127,174,81,144,123,228,221,19,130,65,24,231,142,213,23,200,164,101,48,120,233,109,42,241,216,253,214,250,146,50,15,183,103,131,9,39,43,34,244, +207,238,230,207,228,99,29,134,58,245,29,250,208,4,191,105,212,206,2,219,159,108,93,47,39,254,5,46,7,176,201,231,166,58,84,139,62,166,112,76,19,12,14,247,10,64,207,24,207,155,192,234,58,242,113,131,80, +143,40,116,89,179,144,115,229,205,129,208,127,116,1,239,142,78,122,142,41,225,99,25,56,147,61,50,97,155,61,178,78,64,7,158,56,39,175,83,216,2,200,125,81,249,242,152,125,103,136,159,108,230,224,99,161, +244,232,120,169,213,181,53,225,163,81,156,2,124,248,119,113,199,36,92,30,120,3,215,243,197,81,216,167,156,57,4,247,181,111,203,4,245,199,175,92,14,196,138,112,17,140,230,51,198,70,62,199,248,28,112,127, +30,61,9,4,80,5,242,218,128,234,160,17,233,113,10,129,140,241,254,188,243,233,143,240,202,134,191,193,44,24,15,93,246,204,58,251,220,17,248,224,99,211,2,170,70,200,57,242,66,231,161,54,184,29,120,29,50, +49,142,220,31,81,192,169,86,88,71,252,179,92,158,255,0,102,4,159,166,93,70,125,120,63,212,128,76,190,123,100,178,166,49,156,148,181,108,31,124,72,216,207,29,15,29,79,60,84,224,74,126,244,113,147,215,139, +123,98,15,83,212,54,71,7,191,63,149,85,18,198,62,238,49,215,254,61,87,249,153,2,227,190,49,252,168,220,141,201,56,228,255,0,203,170,158,192,15,148,92,0,61,184,234,122,146,69,0,94,30,103,247,23,3,160,48, +219,126,60,6,206,220,14,112,65,169,4,121,238,128,117,226,222,223,25,200,24,230,85,35,7,158,54,142,195,60,103,61,34,4,229,75,224,19,131,246,2,115,249,204,65,246,57,61,51,128,114,106,111,37,250,121,133, +58,231,54,91,127,14,141,211,183,39,140,231,52,1,116,32,245,143,254,252,64,164,17,206,65,23,29,122,99,7,31,133,63,24,35,231,85,200,200,2,222,51,232,78,118,204,192,253,122,112,112,106,136,132,129,205,206, +71,167,217,66,246,231,254,88,244,4,103,147,215,6,144,68,203,210,87,108,96,124,177,136,201,227,177,49,16,113,223,166,121,207,28,144,13,22,98,120,243,83,36,127,207,178,156,142,253,37,227,183,29,232,216, +252,17,44,107,208,252,214,128,231,232,60,241,147,220,247,30,192,85,32,36,61,26,98,56,228,202,16,112,49,255,0,60,240,1,227,166,61,137,57,169,148,72,184,220,243,40,39,156,202,27,140,228,242,16,30,248,63, +48,227,57,205,0,91,204,131,24,158,219,39,251,214,75,140,244,255,0,158,196,142,56,232,15,161,244,153,30,117,198,103,181,199,251,54,161,8,36,127,215,198,59,251,228,254,153,197,9,193,243,101,30,167,120,201, +227,142,72,25,224,143,167,29,106,65,11,227,230,158,76,28,0,76,202,15,60,242,118,131,143,195,249,10,0,209,15,57,57,243,160,94,249,49,0,15,78,255,0,105,4,15,124,224,103,165,41,146,115,192,184,179,224,122, +49,252,177,115,233,129,208,122,85,52,128,1,147,59,115,131,196,237,146,125,115,242,129,200,28,251,245,199,53,96,33,219,143,55,35,61,12,234,73,56,30,141,158,156,158,120,231,222,128,37,18,92,160,207,157, +104,121,227,104,110,222,191,233,31,161,57,56,7,165,60,220,220,99,137,173,179,234,55,17,219,156,121,196,96,159,114,49,233,85,113,130,78,243,140,243,135,86,252,191,210,80,227,63,204,241,212,82,249,132,140, +40,121,15,32,13,155,184,237,199,219,212,125,57,237,200,193,34,128,45,11,187,128,127,214,217,147,223,57,67,237,156,204,127,67,253,104,23,147,142,246,167,215,18,100,126,94,107,1,253,42,178,201,38,3,24,36, +61,242,98,80,58,116,3,251,68,159,110,78,122,242,15,21,47,159,39,65,19,174,7,63,185,94,59,99,230,190,97,199,183,182,72,236,1,96,223,206,49,251,187,102,227,156,21,221,142,123,146,220,116,231,29,79,183,42, +186,132,132,147,228,69,158,57,89,202,254,3,110,8,231,235,223,181,87,243,101,127,249,103,41,228,28,121,35,128,56,227,109,206,222,15,185,246,35,165,59,204,184,249,112,146,128,56,199,148,122,118,227,206, +62,249,231,245,34,128,39,254,209,29,10,57,57,237,116,202,58,246,38,50,48,63,222,252,58,81,253,162,1,4,163,231,145,147,118,65,30,223,241,238,222,252,12,31,94,49,136,154,121,128,193,18,134,247,129,177,206, +49,255,0,45,199,81,199,83,212,245,205,55,237,51,1,149,142,114,122,252,182,196,126,4,137,241,238,65,20,1,33,189,93,223,234,102,227,191,218,178,14,59,115,102,79,56,30,163,223,209,255,0,111,76,28,69,55,60, +146,110,84,131,131,193,226,196,130,57,199,191,173,64,102,184,32,19,20,224,247,205,187,99,175,180,184,239,235,147,233,198,42,69,150,92,240,175,129,129,243,69,32,57,227,60,137,207,175,57,3,28,142,104,1, +226,243,190,217,64,233,254,189,23,208,245,254,206,60,118,231,175,214,166,91,166,96,9,19,118,200,23,132,243,220,99,251,47,4,116,227,215,241,168,213,164,35,6,34,114,49,200,156,14,249,233,40,24,56,29,143, +62,180,236,156,12,144,190,217,185,3,159,117,151,183,175,78,125,243,64,22,22,119,228,34,54,120,228,220,0,7,28,114,116,156,245,192,60,113,140,228,129,75,230,200,57,98,203,235,139,196,7,144,65,225,116,129, +147,144,7,94,120,207,106,173,128,72,253,234,15,172,183,99,183,112,178,146,15,124,244,29,248,226,148,170,146,7,155,3,122,101,239,78,8,238,115,116,6,127,12,31,169,4,128,92,18,191,81,43,0,7,79,180,140,159, +197,180,140,246,239,206,70,51,216,188,73,55,4,73,146,123,155,148,30,227,25,210,215,182,125,79,38,168,156,131,242,181,177,3,191,250,99,103,28,112,77,216,244,227,24,250,246,164,235,212,91,48,4,31,191,116, +185,24,24,224,221,16,113,211,158,156,253,8,6,160,154,228,1,137,33,206,122,153,198,225,147,232,186,98,231,175,98,48,63,33,58,77,116,56,243,34,206,1,56,147,63,152,54,60,227,29,72,3,158,131,154,201,70,198, +62,72,64,238,76,178,143,94,255,0,104,57,250,17,234,6,121,196,187,241,200,72,1,3,32,125,166,101,57,233,222,227,142,199,39,7,215,210,128,53,252,235,142,62,100,61,255,0,214,133,60,115,142,108,187,128,51, +211,175,97,131,78,18,202,115,184,70,220,28,230,226,60,253,49,246,117,247,198,56,207,94,122,98,253,161,192,192,137,49,144,73,91,185,70,115,158,9,55,7,249,99,175,94,180,159,107,144,112,16,131,147,255,0, +47,46,195,234,9,152,142,7,94,8,30,180,1,183,230,178,15,155,202,3,60,126,245,8,233,145,209,7,124,231,167,79,205,139,112,14,114,99,232,120,19,71,145,233,159,148,103,212,14,13,100,11,171,174,202,228,3,192, +23,82,99,255,0,70,30,70,125,179,249,211,190,211,114,114,74,203,199,80,46,38,99,248,144,206,0,35,29,64,250,142,180,1,178,46,71,101,37,143,35,18,65,211,175,67,32,56,207,168,235,206,104,55,79,192,242,88, +244,206,100,181,245,235,143,53,71,94,185,224,243,220,241,144,39,152,54,76,115,125,124,217,185,35,182,74,30,113,215,230,29,15,28,112,243,119,54,64,97,114,61,133,196,234,57,234,112,35,7,161,253,78,59,96, +3,83,237,82,114,124,158,125,51,103,142,157,247,79,192,247,233,145,220,241,77,55,18,31,249,98,122,246,251,17,60,129,216,207,131,142,128,255,0,74,206,251,75,156,109,251,78,71,60,92,222,123,245,249,66,158, +157,115,199,124,115,133,243,165,35,134,185,95,92,79,126,79,168,251,172,7,61,115,192,61,65,224,208,5,211,51,54,7,144,71,190,219,28,28,115,158,36,98,49,215,239,118,166,249,205,192,242,14,113,215,109,150, +112,121,228,239,207,60,116,244,170,69,174,65,36,201,116,125,140,151,236,14,125,113,184,245,228,128,64,29,133,74,36,156,15,189,40,207,168,212,79,190,63,151,60,114,71,3,138,0,155,237,14,191,242,239,38,0, +224,8,172,187,112,8,218,196,227,142,152,232,120,197,56,93,76,195,253,84,163,147,199,149,103,144,115,215,158,120,236,114,115,250,84,2,87,56,5,157,191,240,98,58,140,112,74,49,235,216,227,158,221,41,89,213, +112,91,112,233,201,146,248,115,206,122,192,71,63,143,30,249,20,1,96,207,47,120,46,50,125,33,178,227,145,216,2,120,200,237,140,19,206,113,134,125,161,142,65,142,225,120,255,0,158,54,195,63,80,35,57,35, +62,157,49,199,83,80,9,163,7,32,185,235,255,0,45,174,151,63,66,97,224,254,128,30,217,167,139,133,61,84,146,123,181,205,216,246,28,252,153,29,243,192,224,246,232,1,58,62,238,173,40,60,255,0,203,43,109,195, +233,152,136,3,167,61,127,17,204,130,72,193,201,55,32,142,63,213,219,96,244,233,136,20,231,175,65,235,218,171,18,15,92,134,244,51,220,183,115,140,3,48,227,175,160,244,7,130,23,18,96,99,36,112,113,230,75, +156,114,48,67,92,142,56,31,116,154,0,183,230,70,15,2,224,227,28,24,99,39,7,220,71,130,8,227,130,113,249,208,37,140,244,89,215,61,65,134,48,72,62,204,131,57,233,215,234,61,106,2,6,1,142,79,127,158,64,7, +94,1,251,71,62,188,103,167,225,74,101,140,16,4,68,48,0,103,124,167,215,147,251,204,116,244,232,49,146,64,224,2,209,149,1,249,132,138,65,0,22,137,23,63,77,189,70,78,56,199,211,24,194,249,240,116,46,217, +24,234,0,237,142,57,199,124,231,223,21,69,157,78,127,120,23,175,2,82,8,199,92,110,115,211,208,99,169,227,173,55,10,220,11,131,158,216,149,250,250,28,17,156,254,30,220,208,5,195,44,56,36,74,252,103,186, +128,78,123,96,17,140,131,147,158,51,223,187,68,232,79,250,206,0,28,22,79,94,189,15,126,135,131,219,158,77,84,9,180,231,237,42,9,61,25,153,179,158,220,200,167,245,30,184,206,72,83,156,115,117,14,73,231, +112,144,228,231,254,187,28,100,115,193,35,61,184,160,11,94,114,31,189,42,12,116,253,224,29,51,207,4,117,233,142,188,143,194,7,149,48,79,154,15,112,22,119,30,190,133,136,224,242,59,10,140,142,55,125,174, +12,245,1,99,144,112,7,253,116,245,62,248,39,191,4,38,249,70,113,113,17,39,129,145,34,142,231,130,29,152,241,254,25,36,112,0,130,85,234,38,60,103,32,220,76,51,234,50,27,156,224,255,0,15,167,66,69,48,178, +2,9,36,231,63,242,243,32,60,99,36,150,96,48,7,99,232,113,197,72,38,108,96,201,22,113,128,113,49,231,174,58,14,61,249,36,102,145,157,152,97,110,45,199,29,27,204,92,119,206,66,158,253,137,36,115,144,56, +160,8,139,67,215,204,148,123,45,210,158,167,31,196,249,239,147,233,207,56,21,25,120,137,63,190,148,17,200,2,253,65,60,119,249,155,31,83,199,35,131,83,111,152,228,125,170,216,125,13,193,199,99,206,87,130, +79,28,251,142,9,167,153,25,64,197,204,36,241,144,36,184,207,229,231,0,7,127,187,238,104,2,169,116,39,239,202,199,131,206,160,157,176,63,133,63,19,200,250,138,114,24,143,62,100,228,114,15,250,98,251,99, +0,128,113,239,199,78,122,28,203,246,153,70,118,201,9,206,70,75,201,199,175,250,215,35,156,115,140,228,130,79,90,79,182,92,1,141,209,55,32,18,25,115,200,28,252,178,12,103,169,36,117,39,128,79,0,15,11,108, +87,150,186,62,128,220,33,224,243,207,65,142,56,227,29,0,233,154,104,22,170,120,23,35,158,8,154,19,238,49,187,208,130,78,50,122,30,184,203,190,213,49,254,231,110,172,188,253,51,39,25,57,192,207,174,5,56, +77,114,122,52,35,142,132,197,208,14,217,144,224,115,206,127,173,0,31,185,228,98,98,6,63,231,155,12,246,1,148,112,78,125,121,232,123,230,64,208,128,64,11,140,96,135,218,15,208,128,58,142,252,246,234,72, +21,23,153,63,123,139,97,220,131,228,158,158,191,54,14,9,228,99,30,249,28,1,230,0,236,185,181,193,235,251,187,48,11,16,58,100,30,189,243,244,227,173,0,74,26,47,250,100,131,36,114,192,28,103,25,24,137,185, +199,35,62,135,159,89,3,197,147,182,120,248,227,7,131,145,254,208,132,30,190,160,131,216,103,147,64,188,253,26,123,124,112,14,207,177,12,99,167,1,48,14,125,176,49,198,49,77,223,46,6,219,149,228,103,254, +92,151,156,142,3,24,242,64,7,191,233,198,64,53,85,148,231,247,129,129,254,234,59,12,31,251,102,7,175,78,131,129,233,72,23,156,2,122,115,139,119,97,235,215,104,30,135,190,71,60,14,107,25,222,102,192,251, +66,156,156,114,108,88,119,193,39,102,0,36,127,76,231,138,104,137,216,159,244,136,193,237,134,181,83,158,188,16,21,123,99,130,1,36,98,128,55,118,146,62,103,7,140,252,214,199,25,235,211,25,28,28,114,115, +238,49,85,94,32,50,68,240,41,56,63,52,101,88,16,127,218,7,24,199,110,135,25,59,107,37,160,117,56,55,112,169,4,140,179,68,73,198,115,214,101,95,168,235,215,32,138,143,203,110,65,188,182,60,127,126,217, +122,227,214,227,60,251,14,223,74,0,210,109,231,129,121,0,228,244,96,15,29,134,34,207,78,123,231,216,98,161,216,228,143,244,235,108,14,254,110,48,113,143,226,80,51,143,113,248,113,89,237,17,4,230,234,22, +60,231,19,218,244,24,244,185,7,158,157,63,94,145,178,184,255,0,150,145,144,63,233,226,19,200,250,221,227,191,28,125,48,104,3,69,163,98,121,189,183,247,34,100,60,96,114,73,239,244,63,83,77,41,180,12,94, +199,158,128,11,136,248,7,32,227,56,29,63,44,254,121,197,164,29,92,96,143,249,238,152,245,3,229,189,83,159,175,190,125,3,196,142,6,1,25,61,205,208,110,56,61,22,248,250,250,142,220,80,5,150,103,39,2,241, +78,58,230,239,107,103,61,64,94,163,233,199,176,234,35,218,135,37,175,35,224,114,126,222,195,156,244,194,185,245,231,143,194,163,47,46,0,43,9,92,227,45,114,224,224,122,143,237,1,158,122,240,7,182,105,8, +145,178,86,59,78,49,214,114,114,64,24,251,215,135,235,144,126,190,148,0,252,91,157,192,221,161,192,237,170,56,235,212,156,56,81,211,212,224,28,116,170,206,45,84,144,111,20,158,160,255,0,107,57,227,177, +255,0,92,113,140,119,201,233,197,76,77,192,206,35,181,235,218,101,227,176,224,220,144,64,250,224,254,52,208,211,144,65,134,219,60,100,139,136,208,241,192,24,107,144,121,239,250,30,121,0,175,152,56,197, +195,177,32,99,110,170,249,30,157,37,28,254,167,32,154,81,26,30,4,179,140,227,254,98,115,159,196,5,152,114,61,127,60,138,176,77,200,221,136,173,215,254,222,151,174,15,101,148,143,94,217,231,214,154,30, +236,19,197,185,250,204,205,142,156,113,46,123,241,250,158,153,0,136,67,24,57,223,38,51,206,47,231,36,115,207,30,97,36,227,234,113,74,34,132,127,29,193,236,79,218,167,97,199,80,127,120,1,35,158,135,191, +90,144,203,114,14,68,150,234,113,145,251,216,207,76,129,247,217,136,207,233,249,83,26,107,220,18,179,91,113,192,45,34,96,251,228,30,163,219,169,30,153,52,0,24,225,199,34,67,234,94,73,143,67,147,201,126, +127,3,142,122,246,166,24,162,236,6,48,56,18,55,78,79,27,164,227,156,231,29,106,187,203,121,201,105,236,199,64,112,119,99,156,99,59,192,255,0,42,14,70,106,61,247,108,63,215,218,129,216,140,28,250,145,243, +128,51,245,200,252,57,0,152,198,153,225,28,14,248,144,99,158,248,33,242,72,30,190,191,130,121,32,131,195,100,115,157,241,16,78,71,95,144,99,63,135,176,200,168,11,221,142,183,112,128,7,64,200,188,241,254, +218,144,121,24,193,207,57,56,224,6,249,211,247,188,140,253,102,7,7,62,159,105,24,35,166,71,235,64,19,136,119,12,124,140,57,229,146,51,220,116,253,209,206,7,176,57,31,141,70,240,1,140,52,96,227,3,247,81, +156,142,70,64,104,179,143,112,0,25,224,83,12,179,227,139,152,113,211,153,185,62,184,2,225,178,120,224,19,252,206,26,207,46,48,211,196,78,56,253,234,147,156,100,16,62,208,113,211,29,177,207,34,128,19,102, +210,70,232,142,63,233,148,99,233,214,219,25,31,159,191,57,46,221,24,27,73,140,169,234,68,112,40,233,237,2,146,115,220,231,140,241,80,150,63,199,36,39,212,52,170,61,123,121,251,122,30,59,231,24,28,12,65, +152,134,114,240,144,15,64,202,222,188,113,115,144,51,223,29,121,233,64,23,11,69,208,34,176,231,12,62,205,215,142,153,82,79,110,54,240,8,192,168,92,47,76,109,206,58,27,98,121,244,30,79,242,245,227,146, +42,12,218,142,89,163,201,25,192,108,2,78,115,140,202,248,60,14,8,29,125,185,105,251,11,113,184,19,211,59,226,233,223,239,224,125,7,25,231,142,78,0,38,41,25,32,22,108,143,239,45,190,56,235,147,228,129, +208,19,235,238,113,194,8,160,39,239,175,32,156,50,64,122,117,60,68,167,245,29,249,29,106,6,22,35,5,143,208,134,181,231,160,25,33,14,61,201,207,7,241,168,139,89,30,54,41,198,113,243,219,177,250,146,34, +60,116,235,159,110,244,1,97,163,132,28,25,34,29,249,133,125,49,213,49,199,176,61,121,227,179,126,79,88,64,7,1,150,55,12,114,49,158,135,61,50,57,57,35,175,21,1,123,30,64,141,125,114,198,216,17,158,188, +181,185,60,255,0,95,113,80,180,186,104,31,63,202,59,97,237,71,61,48,9,183,25,254,189,185,38,128,45,249,197,113,181,135,4,127,207,85,207,28,140,238,32,14,217,0,123,30,105,194,82,123,12,145,212,202,223, +251,52,138,7,211,235,210,169,253,163,74,61,4,217,227,4,53,159,61,177,143,37,120,238,50,72,233,154,12,218,119,247,167,0,112,121,177,62,221,76,126,189,243,234,57,52,1,59,103,39,45,24,7,57,204,184,235,206, +56,156,231,0,103,191,211,165,70,209,177,255,0,150,209,168,198,114,39,35,35,156,127,25,228,244,233,233,206,115,77,23,22,7,33,102,156,99,28,7,177,80,61,190,232,56,3,191,30,185,193,165,243,236,79,89,37,231, +254,154,90,28,242,123,6,0,127,250,184,160,8,138,75,156,11,168,70,73,224,220,168,247,198,12,131,234,50,79,3,215,160,22,65,214,250,223,221,126,212,71,76,30,112,196,113,142,126,156,26,151,253,9,177,251,201, +120,207,73,45,193,206,120,4,137,199,244,245,200,233,82,7,180,199,250,203,147,198,7,239,213,187,231,7,19,224,12,224,227,36,103,39,140,154,0,172,171,48,111,150,241,7,78,183,50,237,200,56,28,134,198,7,78, +50,49,206,77,25,185,39,63,107,136,158,121,91,166,36,128,120,4,48,63,78,191,128,235,86,196,182,253,12,215,24,207,35,126,59,246,63,106,0,245,244,35,212,28,83,127,112,78,86,73,136,28,115,54,78,73,56,251, +183,121,206,114,79,229,158,70,64,42,17,114,78,126,209,16,198,6,4,200,65,62,164,146,115,250,142,199,160,169,4,87,77,210,226,31,160,154,32,113,233,134,83,252,253,179,86,194,197,131,254,180,3,140,3,43,100, +254,6,228,228,117,228,109,28,2,122,114,221,171,247,183,21,61,62,125,228,227,61,6,217,31,140,115,201,252,205,0,87,251,61,223,32,92,219,47,166,246,133,179,156,227,5,65,25,25,246,206,7,165,39,145,113,159, +248,250,131,56,231,107,170,247,244,56,231,140,96,113,236,79,73,203,32,3,118,24,142,251,167,24,201,250,15,207,39,175,20,210,224,156,136,216,140,30,143,32,24,224,250,231,31,83,147,223,181,0,68,214,243,142, +126,210,164,158,128,42,55,183,240,202,48,125,56,250,251,179,200,186,61,39,79,169,76,3,212,228,252,237,158,120,235,248,84,134,83,255,0,60,156,127,219,118,0,241,200,59,129,62,185,231,191,3,165,52,206,203, +192,142,65,156,156,173,195,144,14,56,232,64,39,211,129,215,25,226,128,16,193,121,211,205,140,145,236,160,99,158,237,129,207,98,1,7,212,119,105,130,248,116,145,64,193,254,24,112,0,192,224,238,80,120,250, +231,241,205,6,105,24,228,249,128,245,57,149,179,249,146,70,57,228,115,233,129,71,153,33,4,0,205,143,89,227,35,144,65,192,102,7,63,151,115,201,160,4,107,107,179,159,223,237,56,193,32,66,113,215,63,50,204, +56,246,237,248,112,139,105,112,114,126,214,72,25,227,124,120,250,12,206,79,228,123,140,12,102,130,243,0,62,82,7,56,229,24,247,232,119,127,78,156,117,53,25,153,193,229,136,234,24,109,66,121,199,109,195, +160,239,212,118,20,1,41,179,159,36,253,160,147,236,81,143,63,75,175,124,12,228,12,14,153,168,141,156,164,156,220,148,234,112,8,92,255,0,228,195,12,244,207,56,244,197,55,205,112,127,141,136,28,0,49,232, +113,247,177,248,19,248,102,151,205,156,12,168,152,122,225,78,127,3,230,103,142,131,166,51,201,201,228,1,230,198,94,49,118,217,237,186,85,61,122,3,251,209,142,248,3,243,20,213,180,149,56,23,49,158,112, +115,115,179,235,144,25,134,63,94,120,227,170,25,46,9,220,126,208,51,212,231,57,63,247,240,142,120,231,211,161,228,211,212,202,115,197,209,62,201,33,3,167,24,80,192,231,166,79,182,120,234,1,40,183,151, +189,204,3,156,231,237,91,191,12,6,94,58,118,207,94,105,124,162,14,60,248,219,25,233,60,195,156,117,5,102,29,128,253,71,90,143,115,1,157,151,128,156,28,136,136,24,199,171,66,113,211,161,236,125,205,2,86, +7,38,43,146,167,169,49,161,246,255,0,158,24,238,71,95,206,128,36,17,28,143,223,68,79,171,93,221,168,192,237,197,206,15,83,234,125,251,212,158,83,224,98,75,98,59,159,182,220,12,159,114,103,193,60,118,234, +79,56,233,80,11,158,78,97,184,56,232,10,21,250,3,182,14,190,228,15,198,148,92,129,201,181,184,114,61,114,164,117,206,51,8,252,178,59,118,52,1,62,36,3,27,173,15,76,159,181,206,221,58,158,38,227,32,243, +129,216,100,84,101,164,60,172,182,235,215,24,185,184,81,199,64,11,56,250,224,30,167,56,25,193,81,118,71,252,185,221,227,161,195,46,113,238,54,28,30,49,140,99,177,20,125,164,30,69,149,210,228,103,230,104, +207,57,234,119,32,245,228,126,25,52,0,192,95,56,51,90,147,131,144,215,82,19,145,237,231,243,156,231,130,51,207,165,56,63,32,19,102,123,3,230,220,159,208,220,224,117,56,198,114,113,210,143,52,30,182,115, +183,92,150,48,228,14,7,57,78,120,199,78,188,122,211,210,88,255,0,231,207,10,123,148,139,56,193,238,16,231,161,193,227,145,205,0,38,213,198,118,91,116,25,249,174,200,57,201,63,118,235,145,207,94,121,250, +224,130,52,32,97,97,228,244,6,243,7,233,254,151,193,207,227,215,158,77,41,116,193,34,210,60,115,196,161,27,191,81,144,6,61,56,108,116,7,61,25,193,36,173,173,170,130,49,254,174,61,191,136,94,158,248,235, +236,8,20,0,241,26,131,204,113,129,207,59,175,14,113,208,225,174,115,131,254,29,184,162,152,208,51,255,0,203,165,151,126,145,129,238,122,166,113,215,167,60,231,222,138,0,228,21,123,172,68,127,192,7,92, +131,142,46,50,63,14,156,10,156,239,0,126,238,80,65,234,177,158,189,191,229,244,19,219,168,32,159,94,41,134,114,8,36,176,207,115,19,30,113,211,38,93,217,60,143,226,61,249,28,209,231,43,3,150,85,56,4,150, +133,112,65,239,243,56,206,125,114,123,126,32,14,243,38,254,17,63,166,124,144,126,191,242,252,185,63,92,246,193,24,163,125,208,192,84,148,14,227,201,201,245,237,121,156,250,224,143,110,42,179,79,24,200, +55,3,35,56,219,109,3,12,30,59,201,192,250,145,200,237,81,27,155,113,157,210,175,124,255,0,161,217,30,65,30,178,175,39,39,29,57,207,30,160,23,204,151,88,35,202,186,110,153,197,169,245,61,1,187,231,56,233, +250,227,146,228,251,75,96,27,121,207,214,216,14,121,235,186,249,114,123,245,7,169,170,2,242,204,47,250,208,58,30,45,44,79,110,132,9,114,51,130,58,145,234,13,42,223,90,117,243,136,60,244,178,178,207,233, +32,207,110,0,233,145,146,104,3,79,108,228,100,91,72,7,188,96,126,64,234,27,65,252,251,243,205,30,84,205,247,173,152,0,48,72,72,249,231,0,159,244,182,237,238,79,232,42,154,221,91,177,36,74,72,57,251,214, +118,235,207,78,161,137,232,79,167,94,6,57,167,125,162,215,167,218,19,39,60,8,109,215,3,158,184,4,142,121,207,61,115,158,153,0,187,228,75,145,139,126,231,56,138,18,217,233,146,12,252,125,120,232,51,211, +144,164,202,120,182,44,122,115,29,176,199,124,140,74,126,189,207,235,154,191,105,181,32,22,184,66,0,232,97,66,7,215,11,140,158,61,248,228,116,166,155,139,13,217,51,65,145,142,182,255,0,76,28,133,30,163, +169,199,245,0,178,68,164,140,216,101,184,193,81,108,8,235,128,6,78,57,238,120,244,164,217,40,36,173,131,18,122,159,220,117,201,235,242,48,61,79,78,15,166,13,71,246,171,46,9,150,14,51,194,195,42,243,238, +20,242,49,159,203,165,56,95,89,99,229,120,143,94,2,74,8,250,31,56,99,3,60,30,71,64,104,1,199,237,11,199,216,92,15,247,224,29,14,51,145,16,244,234,56,199,227,73,190,82,74,155,54,30,132,202,139,252,162, +207,28,117,39,36,227,35,52,163,80,131,35,108,137,142,7,31,104,13,207,61,68,205,158,122,116,61,120,206,65,83,123,16,94,100,78,73,225,190,211,215,29,14,37,83,142,227,212,138,0,6,252,12,218,28,99,251,253, +6,61,4,76,58,142,164,158,152,235,154,104,14,9,63,102,32,100,103,159,152,112,121,249,162,3,167,94,167,29,1,230,158,111,97,193,193,132,17,199,203,246,130,58,241,192,185,39,255,0,29,233,237,154,132,222,219, +242,90,88,249,35,24,73,251,115,156,25,249,199,3,174,73,236,1,160,9,25,230,83,196,18,224,12,2,25,49,248,143,45,72,227,169,228,123,119,168,77,205,202,158,98,156,115,156,6,24,199,64,72,0,28,115,223,175,28, +145,77,55,150,221,67,51,14,121,251,51,56,239,235,116,50,70,126,131,29,49,81,53,229,171,14,101,3,156,109,254,207,44,125,79,252,190,31,167,35,57,227,166,40,2,194,221,92,127,118,80,14,63,190,88,30,122,97, +199,76,244,228,231,140,83,190,209,115,158,37,144,99,57,202,77,192,236,1,50,129,158,78,123,253,123,84,19,195,213,101,237,255,0,62,91,122,103,156,27,163,158,159,207,131,138,144,74,135,165,204,189,137,11, +103,156,30,156,102,102,31,158,58,117,245,0,152,93,220,103,153,164,29,137,27,143,167,92,220,14,121,227,7,250,211,62,212,251,176,215,78,71,108,238,3,39,0,224,11,146,114,62,184,245,39,6,163,5,206,79,159, +57,231,169,211,211,143,108,249,132,129,212,113,129,234,5,74,21,142,51,51,156,145,214,195,159,78,192,147,142,163,12,115,212,80,2,9,137,192,251,72,28,231,56,25,247,24,55,71,241,201,198,58,123,60,92,50,240, +110,201,39,29,163,29,8,236,110,65,57,224,96,30,57,56,167,139,116,42,127,120,65,227,159,176,21,62,131,31,33,198,123,146,49,223,220,41,182,83,140,75,46,70,9,2,199,32,242,65,207,250,51,103,184,0,251,15,106, +0,5,211,241,139,215,228,17,242,136,199,111,81,116,65,244,252,72,7,213,194,234,101,251,215,114,114,15,252,177,118,31,67,182,227,212,112,71,211,183,45,22,241,142,72,99,234,223,96,57,250,100,90,129,239,211, +175,168,160,67,16,254,4,36,243,159,177,176,57,245,56,181,60,244,237,252,134,0,39,23,45,128,90,234,86,239,129,109,46,78,63,237,224,14,125,66,247,29,136,20,121,249,59,132,211,122,127,199,180,217,61,186, +153,191,92,122,243,232,197,183,136,131,200,35,60,98,218,81,207,62,182,99,167,98,127,19,200,169,86,56,148,245,246,199,217,217,184,35,159,189,0,233,211,130,58,250,208,3,55,177,255,0,150,183,0,103,254,120, +202,61,184,6,66,114,127,167,184,37,193,142,78,30,224,246,32,198,228,19,192,234,24,99,211,61,105,204,150,237,130,99,86,3,63,122,205,155,28,115,143,221,145,219,169,255,0,235,83,66,89,128,127,117,25,231, +0,27,119,92,117,207,221,140,127,60,247,201,160,5,27,243,242,164,164,117,229,101,62,157,183,15,126,167,191,81,210,158,90,81,143,146,97,158,48,22,85,36,30,128,124,199,219,156,251,224,10,136,139,48,112,214, +241,145,140,143,220,204,79,60,100,15,148,240,56,224,244,235,235,76,50,90,175,11,110,163,159,249,227,116,63,16,60,193,131,211,29,61,40,2,215,155,39,67,13,193,235,130,29,135,39,234,114,122,31,110,220,112, +41,158,100,160,243,13,217,35,25,38,97,200,207,190,79,67,223,240,35,140,214,55,48,134,192,129,70,48,57,142,236,18,61,177,50,228,254,7,183,124,212,235,113,110,113,251,181,83,158,126,91,149,57,60,243,186, +228,103,62,152,228,159,110,0,30,55,183,222,183,188,207,161,153,113,143,108,131,158,167,255,0,215,156,70,80,131,255,0,30,183,67,61,79,218,35,0,243,219,43,159,67,208,85,133,184,136,246,85,255,0,128,220, +28,142,249,43,117,223,233,156,30,189,170,65,112,156,225,162,28,158,72,155,156,251,53,225,227,32,96,1,212,227,131,138,0,129,99,35,147,13,218,244,201,91,184,185,63,240,40,201,227,143,64,113,143,106,120, +81,218,59,165,231,36,181,228,110,79,78,63,212,12,116,231,7,158,156,246,144,220,240,112,214,199,158,233,47,76,251,220,245,252,113,237,220,52,78,70,72,146,14,157,10,48,95,205,174,14,113,223,29,51,193,160, +5,43,145,129,13,193,237,205,198,236,224,227,248,98,28,231,175,211,242,4,101,127,229,133,199,79,249,236,61,184,63,186,39,7,174,49,193,224,241,205,56,92,205,200,47,104,192,244,5,92,149,24,193,7,253,35,183, +99,140,243,199,65,64,153,143,252,182,180,82,51,193,70,227,216,102,87,56,237,198,9,28,250,80,4,139,19,28,98,9,249,232,60,195,156,125,5,185,29,49,140,112,57,235,147,79,48,72,112,4,87,3,60,114,24,254,100, +91,16,120,235,216,114,121,227,16,111,153,185,23,118,107,206,127,213,238,35,158,78,60,209,158,59,255,0,81,154,122,137,156,231,251,66,211,28,231,253,28,228,246,28,239,113,249,140,241,218,128,38,16,76,50, +124,183,7,56,25,142,82,72,237,202,219,96,158,221,250,242,106,81,12,139,201,137,178,57,0,195,40,62,224,19,111,147,158,157,123,117,170,251,37,39,139,251,81,233,251,140,117,245,253,217,7,62,131,7,25,7,169, +160,197,56,207,250,117,161,238,7,150,71,97,147,131,25,95,78,63,49,64,23,80,79,156,44,68,96,31,191,20,132,99,31,245,196,140,115,207,3,191,175,19,4,186,60,132,143,130,79,252,123,134,4,122,99,236,188,227, +159,76,99,147,205,102,168,152,113,246,187,124,159,91,88,152,122,28,31,44,146,113,235,208,140,113,216,2,99,210,226,220,145,147,145,109,26,119,206,9,17,30,220,123,250,30,114,1,176,162,228,116,138,12,240, +115,246,100,82,121,224,243,111,24,207,176,237,201,56,52,110,185,94,177,71,140,14,145,91,156,231,235,15,227,158,64,53,153,155,145,247,110,96,3,254,189,144,224,246,25,88,57,61,250,96,158,189,50,2,247,29, +26,237,115,159,249,246,0,253,121,131,144,71,24,25,198,15,160,160,13,96,242,2,3,162,175,7,56,183,183,99,248,98,223,39,31,64,64,253,95,145,131,193,39,182,45,96,227,208,243,26,241,237,193,245,24,233,140, +178,93,3,197,246,71,57,197,180,124,103,63,222,183,36,243,238,61,51,205,40,146,227,35,117,203,55,114,69,188,126,252,243,106,65,62,131,61,207,24,226,128,53,194,158,112,146,145,208,17,105,6,48,115,131,192, +83,215,31,153,199,90,148,19,140,108,156,96,127,13,164,99,61,49,146,91,28,123,0,57,250,214,40,119,239,43,28,245,205,188,100,250,231,254,61,6,9,57,227,61,62,163,50,172,140,57,51,156,96,124,191,102,83,128, +61,71,217,192,201,29,48,71,94,72,230,128,53,128,39,63,45,222,59,126,230,5,35,30,251,129,250,115,158,231,214,147,201,45,195,61,232,231,166,33,31,145,18,96,122,251,243,146,122,156,225,51,140,98,225,129, +35,238,139,36,39,61,7,63,101,246,228,231,167,168,197,52,205,43,14,110,92,140,231,63,102,85,235,199,31,232,216,36,122,12,125,61,0,52,252,152,194,146,205,168,31,83,185,8,199,82,112,178,140,147,236,114,120, +224,118,67,111,104,70,88,94,147,146,48,31,105,201,224,224,155,174,125,240,8,237,89,203,43,255,0,207,105,248,238,45,198,15,191,250,144,15,94,1,56,199,76,116,169,65,99,130,110,46,48,71,104,2,241,207,63, +234,156,31,76,227,241,160,11,203,111,98,127,130,239,39,57,44,192,183,79,123,149,63,158,121,206,71,173,132,181,180,7,131,114,61,188,192,160,126,87,139,248,224,231,220,129,89,64,2,114,90,229,200,3,162,0, +216,245,226,17,206,112,64,238,79,24,24,171,42,136,221,126,212,113,215,116,46,72,234,120,196,59,129,0,250,246,235,210,128,52,68,16,175,105,72,237,190,99,223,25,199,250,110,73,30,248,244,207,21,32,142,46, +50,64,29,70,233,144,158,57,32,255,0,165,146,7,76,228,118,227,142,153,233,109,25,201,219,113,131,206,76,18,28,245,199,252,177,39,174,14,7,81,212,224,130,44,172,74,6,23,206,97,235,228,76,160,115,234,33, +29,176,61,59,19,200,160,11,10,145,3,247,151,57,60,121,241,128,121,234,115,116,59,119,236,122,212,192,68,50,60,197,7,222,68,60,227,182,46,58,113,249,12,246,230,155,66,113,192,152,227,215,205,24,63,65,24, +35,31,159,62,153,53,31,217,216,255,0,203,57,78,113,198,233,250,126,56,62,227,244,56,197,0,105,43,198,7,51,39,98,1,145,115,142,189,124,194,58,31,226,60,246,29,169,237,50,1,129,34,131,147,159,153,79,30, +185,18,99,39,61,134,70,59,214,114,217,244,253,220,192,147,131,134,184,61,61,50,121,7,24,29,62,163,20,255,0,177,191,252,242,151,3,185,121,249,227,146,71,152,167,215,176,3,142,167,160,5,241,49,227,100,164, +19,211,46,112,113,236,73,28,246,3,60,119,237,79,243,231,198,62,210,192,30,14,209,33,35,140,227,10,156,247,29,251,246,197,102,253,144,166,1,70,29,24,101,230,60,122,127,173,199,124,224,159,175,178,136,56, +56,218,48,78,1,18,28,143,127,244,128,0,199,208,251,14,5,0,105,11,178,62,245,204,173,238,86,126,79,185,242,191,253,92,115,72,47,192,39,247,239,146,65,63,44,197,136,28,103,254,61,201,255,0,61,115,205,103, +136,80,99,230,139,32,100,141,191,64,122,220,116,236,78,127,26,110,226,189,12,56,57,234,80,18,114,14,121,185,237,129,192,35,211,166,114,1,168,53,52,28,52,242,142,112,15,149,48,233,216,17,102,0,201,235, +200,7,60,147,154,127,246,164,56,203,77,33,206,48,10,48,62,191,197,7,28,246,227,242,25,57,66,114,120,38,44,15,66,135,159,238,140,222,1,198,57,227,250,138,60,195,220,161,30,184,128,140,227,158,13,223,62, +221,0,245,235,64,26,127,218,48,146,127,124,228,143,81,32,32,3,236,128,131,248,241,239,79,254,209,182,239,60,185,233,198,230,231,215,230,219,215,39,32,228,142,7,81,89,235,49,3,131,25,244,202,219,140,125, +79,218,201,228,116,39,168,239,210,165,251,76,157,20,194,58,245,72,155,61,142,49,113,237,212,116,193,193,160,9,255,0,180,237,129,201,157,134,122,146,178,14,65,198,50,172,171,128,57,233,142,163,3,146,101, +93,86,220,231,108,168,216,255,0,98,102,231,232,100,4,118,206,1,200,31,157,85,188,148,100,22,139,7,144,118,71,244,255,0,159,147,142,253,63,3,158,142,55,239,247,73,141,134,70,50,20,142,253,188,255,0,166, +113,159,199,38,128,44,29,82,217,177,184,168,235,144,82,227,131,207,79,223,99,24,238,6,58,142,0,193,13,245,185,251,166,37,231,25,255,0,72,233,142,227,206,83,208,247,254,184,168,69,236,196,12,164,109,180, +12,16,29,112,63,239,249,28,251,99,61,169,255,0,218,18,16,2,196,50,51,158,100,192,252,86,65,206,57,228,245,227,189,0,59,237,113,183,6,88,193,108,12,255,0,164,14,184,192,200,155,113,3,212,31,166,78,106, +69,154,22,227,237,16,96,1,252,87,131,105,206,115,129,113,142,79,61,7,56,25,206,9,132,94,202,64,44,140,48,123,125,160,3,212,116,243,49,215,182,238,122,228,244,166,155,153,155,56,71,60,224,18,102,244,29, +1,144,253,7,36,131,223,138,0,184,37,132,1,153,224,39,174,12,151,199,39,175,65,59,103,131,158,185,231,215,172,235,52,71,7,206,181,244,4,139,226,71,76,130,124,226,127,167,63,83,89,190,116,188,3,8,246,220, +179,143,196,159,59,28,103,211,147,200,199,100,105,165,57,30,74,100,12,130,5,215,230,62,99,143,83,211,140,115,64,26,158,109,185,39,18,89,54,71,37,133,247,92,17,212,74,113,207,110,135,142,113,140,40,146, +223,159,155,79,29,49,180,223,115,142,78,1,98,57,255,0,116,122,228,138,198,50,63,25,67,211,140,36,224,19,245,222,59,103,168,61,249,237,73,185,216,127,170,126,123,101,143,94,49,201,56,244,245,207,30,180, +1,184,4,12,73,51,88,14,132,225,238,134,121,199,57,36,143,92,224,253,14,114,38,86,140,227,109,205,144,199,92,207,115,207,39,29,87,167,60,142,135,57,60,228,86,2,249,153,255,0,82,235,129,198,20,145,237,144, +88,116,244,7,175,90,152,158,132,134,227,29,64,29,15,188,131,220,99,60,123,158,128,27,193,216,112,183,22,94,248,154,98,49,244,192,35,159,175,96,71,21,42,200,120,30,101,158,78,113,251,249,136,60,14,128, +199,198,126,189,59,247,60,240,145,73,225,115,207,36,184,30,253,174,1,61,136,193,199,166,112,5,76,178,198,7,33,192,39,144,36,31,161,243,199,231,131,193,3,56,60,128,116,33,219,31,55,144,217,233,137,37,252, +249,64,7,175,94,135,169,29,84,161,99,202,195,159,99,55,35,142,119,0,113,250,140,245,172,49,37,183,12,195,146,14,127,121,150,237,215,247,199,30,220,147,199,126,181,47,159,104,58,179,140,99,4,77,54,121, +3,209,200,224,28,99,159,110,69,0,107,109,96,121,104,185,234,4,151,35,30,217,11,199,94,131,223,61,232,102,233,134,128,113,156,180,215,31,136,31,186,32,116,207,57,246,206,50,51,5,205,137,56,50,202,61,188, +217,249,246,255,0,89,147,220,130,49,200,197,73,246,141,59,168,146,108,147,147,153,101,235,233,143,48,146,125,115,156,99,189,0,104,102,67,210,75,117,235,255,0,45,38,110,252,129,149,7,25,206,50,57,235,129, +192,14,2,66,120,123,102,39,175,250,243,192,227,168,76,14,227,175,126,149,64,92,105,164,114,239,255,0,2,121,206,57,245,14,112,59,116,227,129,158,244,158,118,147,252,114,160,7,179,73,117,143,108,130,78, +9,246,7,3,211,184,5,230,44,58,139,64,114,115,196,189,48,59,158,127,63,113,235,138,178,74,195,171,90,119,192,34,111,81,232,9,60,96,96,243,146,61,48,107,23,210,72,37,100,143,175,24,146,235,131,147,200,62, +157,125,126,184,205,56,127,103,21,200,144,15,163,76,115,208,158,10,228,247,198,51,210,128,30,101,97,242,137,108,84,255,0,180,147,103,62,227,104,192,234,126,157,123,212,102,102,193,255,0,75,176,25,56,25, +134,94,223,81,142,152,232,8,231,169,52,22,211,215,56,146,50,48,64,220,146,28,231,28,253,204,147,143,80,113,235,138,97,154,208,19,178,91,113,142,131,236,242,177,206,56,39,32,3,147,223,167,191,4,208,0,183, +46,14,62,217,167,103,61,4,100,115,211,184,35,61,62,156,123,81,246,137,27,33,174,44,8,61,194,224,244,245,242,142,79,61,113,143,99,214,144,75,19,30,36,183,224,113,251,156,126,25,99,140,118,227,208,140,17, +192,93,241,228,102,75,76,28,129,152,212,117,60,240,8,61,250,250,147,138,0,136,60,189,18,123,34,51,158,17,79,232,109,199,56,207,167,92,247,205,52,188,135,32,201,108,79,0,98,55,24,227,182,216,199,94,9,199, +113,158,181,55,158,153,11,230,91,122,127,18,40,199,169,83,208,30,131,169,198,79,108,200,39,29,158,203,29,49,230,76,27,191,28,22,231,25,201,250,251,80,5,35,191,0,238,132,14,153,192,29,58,224,52,92,103, +234,48,79,25,239,30,93,184,19,168,28,0,49,149,56,255,0,118,3,140,227,174,65,227,36,113,90,70,237,64,28,219,156,255,0,114,71,62,252,157,167,56,35,131,215,63,90,13,234,46,119,109,36,246,89,91,60,227,145, +152,152,125,57,239,129,218,128,51,149,27,63,235,183,100,127,10,63,242,242,1,62,188,103,145,210,164,49,175,10,210,200,217,224,12,72,189,185,224,68,216,250,14,125,248,53,100,234,96,116,82,59,113,35,231, +36,250,34,119,25,237,159,215,13,254,211,7,28,144,58,99,205,159,250,69,156,28,158,167,185,201,205,0,64,81,71,1,38,252,30,81,156,122,1,15,175,35,61,58,123,210,2,112,70,219,192,48,65,196,147,156,224,245, +226,217,134,59,140,224,12,2,0,226,165,251,112,63,120,96,12,231,247,210,140,245,231,13,22,56,236,115,199,4,142,212,134,238,220,100,187,224,100,229,126,209,33,199,62,161,57,238,112,58,112,61,104,2,47,49, +177,247,238,151,131,156,180,164,245,28,31,244,117,200,199,224,57,39,20,130,225,241,131,45,193,3,248,65,233,206,57,38,48,121,198,64,199,185,239,151,27,251,65,143,158,66,115,208,77,112,195,175,3,32,100, +231,60,144,6,49,249,183,237,86,239,209,167,7,161,253,236,231,57,244,221,17,198,61,1,252,248,160,0,92,184,32,137,46,248,198,48,228,143,124,143,32,130,58,224,243,208,112,59,191,237,178,116,243,174,79,24, +234,6,127,17,110,163,57,232,115,207,67,223,48,53,212,96,144,94,232,0,113,242,188,189,15,67,204,105,215,220,138,137,174,147,56,89,238,134,9,234,239,212,30,115,130,20,250,122,146,57,244,160,11,127,107,145, +136,220,243,182,56,0,220,237,7,3,140,238,139,175,126,126,185,197,6,240,142,15,218,73,3,254,127,162,235,238,76,68,250,156,118,237,223,20,77,204,135,24,158,224,244,3,13,51,12,231,145,195,5,232,48,121,198, +73,207,178,121,210,49,195,73,49,29,241,231,183,95,248,17,224,246,252,198,58,208,5,175,182,227,248,102,207,111,244,251,79,94,251,224,224,14,113,158,113,145,146,50,41,166,240,150,32,180,221,248,23,246,68, +118,231,136,128,3,234,6,125,5,86,37,123,249,205,220,141,178,130,120,231,25,56,32,247,36,100,231,35,39,20,224,202,79,2,232,17,143,186,207,233,254,240,250,28,127,133,0,72,110,87,169,50,241,215,117,229,137, +4,99,61,227,233,215,242,168,90,233,9,206,29,190,151,154,119,255,0,26,56,253,115,130,120,236,226,210,3,242,219,234,44,59,17,231,99,158,249,243,6,49,219,5,113,158,152,230,130,243,30,13,157,251,31,246,140, +185,237,145,243,78,71,32,231,166,127,145,0,139,237,9,143,245,78,126,183,150,28,100,228,224,136,135,242,252,169,4,246,255,0,121,149,251,112,47,44,134,61,114,48,156,117,61,241,199,94,42,87,107,144,56,180, +188,0,231,33,148,16,61,137,51,12,96,147,245,25,29,9,168,252,199,63,122,218,225,120,25,220,171,233,193,230,232,1,145,211,229,247,198,40,2,7,154,211,188,12,253,243,246,219,67,130,48,112,64,99,237,144,71, +4,242,1,234,209,61,153,233,110,85,176,120,55,86,196,99,240,67,145,223,140,245,28,228,243,49,101,207,54,178,158,127,231,153,28,31,251,120,35,29,8,199,229,211,13,97,30,62,107,51,145,212,180,50,3,206,123, +155,141,190,156,142,152,231,189,0,86,51,219,19,129,25,224,144,72,120,8,56,237,144,1,24,238,15,7,167,52,44,182,227,170,63,224,241,224,14,253,27,63,207,128,50,71,52,236,195,206,109,48,59,16,174,6,56,207, +63,104,228,250,129,159,79,162,22,131,160,182,231,177,223,39,78,7,221,251,78,49,215,183,31,160,0,112,150,216,140,52,79,235,212,146,9,199,35,50,224,99,216,99,175,224,172,246,167,147,22,236,122,147,212,30, +65,34,97,144,49,208,19,207,110,245,11,60,63,243,197,7,212,57,253,126,210,71,169,236,120,250,84,126,101,167,241,37,168,29,126,117,199,60,142,134,70,207,168,193,25,254,64,22,63,209,9,201,135,28,129,247, +165,198,1,200,225,110,199,3,145,142,216,198,13,51,109,145,200,100,96,113,207,239,38,36,117,245,185,235,234,57,31,206,170,183,216,207,79,177,246,254,14,56,233,140,253,58,251,122,244,99,37,158,65,45,102, +122,28,109,42,121,246,231,211,167,175,28,80,5,182,75,33,159,191,223,31,52,163,243,253,241,39,62,184,35,176,238,105,2,89,228,30,114,122,19,44,184,29,135,124,112,71,126,63,76,231,178,90,228,109,107,49,140, +224,101,115,206,7,25,13,142,112,121,3,39,220,10,96,143,35,229,146,216,245,233,36,10,15,224,240,253,125,61,48,120,160,13,66,182,185,207,154,1,60,127,173,144,14,132,16,7,57,63,207,249,39,250,40,198,36,35, +39,35,116,210,133,246,4,134,239,142,152,32,231,167,64,114,196,47,130,119,91,103,57,207,218,45,83,174,63,189,24,24,232,125,253,207,89,4,44,66,131,45,178,227,149,255,0,74,179,97,239,140,195,156,119,227, +243,224,80,5,230,40,1,249,211,158,0,243,31,158,56,198,224,78,115,206,71,62,199,161,174,118,96,228,197,207,76,205,146,121,61,140,68,142,123,128,79,3,189,67,228,92,158,22,226,200,131,158,178,217,177,227, +147,255,0,44,9,228,15,175,226,41,166,222,240,147,182,107,54,61,56,158,216,182,8,232,113,2,129,192,246,207,167,106,0,115,52,127,40,9,15,185,243,220,54,51,131,200,139,60,116,252,121,164,33,79,241,32,227, +181,211,227,159,67,229,18,57,199,115,219,36,117,49,180,26,144,233,45,168,28,112,38,128,117,237,133,140,99,35,240,238,106,47,39,81,193,38,91,101,192,28,155,136,253,122,224,33,61,184,206,8,28,103,130,40, +2,80,72,39,107,140,227,145,246,137,27,130,61,173,242,15,124,19,156,142,115,145,152,216,202,121,235,233,139,139,145,147,130,59,90,144,51,206,123,113,211,181,70,235,168,2,127,210,109,143,31,195,58,1,236, +56,69,39,241,61,79,229,9,75,226,63,227,226,3,159,73,212,227,7,160,193,56,31,76,28,231,158,57,0,123,121,221,24,15,76,25,231,108,28,115,157,208,28,143,160,24,36,30,8,197,68,99,152,146,12,101,178,63,190, +231,143,92,121,10,120,227,7,143,195,138,49,122,185,38,72,201,61,113,57,56,237,141,161,143,244,228,250,154,60,219,164,28,237,29,6,76,164,126,3,175,67,200,255,0,14,40,1,141,19,174,63,112,189,122,49,252, +177,152,178,78,113,206,125,177,233,17,86,36,131,108,172,122,227,124,96,125,57,136,158,159,157,78,211,93,245,103,110,58,21,99,130,59,99,10,51,208,114,57,60,19,201,230,51,117,115,208,153,155,158,210,227, +129,236,219,72,233,223,63,224,1,31,144,72,221,246,56,134,121,198,240,88,99,35,168,80,122,115,211,128,57,60,210,139,80,64,255,0,67,108,3,201,73,227,7,24,39,128,99,110,156,12,241,245,228,211,197,212,231, +131,246,128,48,127,229,178,224,115,220,177,32,15,66,114,125,41,13,196,188,98,89,71,28,255,0,164,91,224,126,12,65,235,220,250,245,160,4,22,168,14,13,163,176,32,28,25,224,60,113,215,17,100,100,142,184,239, +233,82,45,178,100,15,177,122,28,25,98,28,30,122,136,71,4,103,147,245,30,148,207,62,231,60,73,55,29,188,235,82,123,244,5,199,229,211,156,159,100,102,184,32,115,33,7,159,154,91,80,7,36,99,6,101,39,156,245, +24,252,232,2,97,109,14,120,179,61,250,220,91,224,227,175,5,7,78,57,193,24,199,56,224,63,236,240,117,54,138,79,82,26,107,124,131,248,70,121,31,95,166,106,37,123,193,200,65,206,127,229,226,213,120,29,137, +14,64,250,231,35,175,25,24,155,117,227,12,21,132,15,70,189,182,227,235,151,206,57,3,183,94,71,82,64,26,97,143,36,11,120,212,119,31,104,136,30,156,14,16,129,142,252,115,76,242,144,103,9,23,176,55,72,120, +246,196,99,145,232,78,15,110,56,165,49,206,114,68,182,201,147,211,237,144,31,196,133,151,31,92,117,29,134,41,166,57,215,254,90,218,231,128,9,185,136,103,233,254,146,61,56,192,32,244,192,200,160,7,8,20, +245,137,14,122,126,245,78,57,238,4,123,128,60,115,199,215,6,143,42,48,114,118,140,145,129,144,192,3,143,88,207,235,235,223,154,111,217,238,88,228,155,51,144,79,51,199,235,207,75,156,254,127,78,212,134, +206,224,255,0,203,91,21,4,244,251,76,131,215,251,178,28,28,228,250,227,235,128,0,243,26,14,119,64,14,50,75,70,88,156,243,142,16,18,71,126,221,7,90,118,20,1,243,192,126,150,210,99,234,74,174,79,212,245, +244,192,226,33,167,93,145,144,246,108,0,63,242,218,102,24,35,158,132,118,235,216,114,7,65,78,26,125,222,115,186,213,113,215,247,215,3,63,136,255,0,57,39,57,236,0,210,216,36,110,70,30,162,19,140,12,244, +5,114,71,61,241,142,188,142,160,148,114,112,188,30,73,181,94,120,56,233,30,127,151,81,158,212,255,0,176,222,28,225,237,200,200,3,253,38,96,70,121,35,230,66,122,142,7,92,103,30,234,214,23,152,230,116,81, +254,204,243,19,235,211,203,29,62,163,30,227,20,1,27,76,135,180,96,224,117,128,169,60,251,40,7,191,111,94,148,171,50,142,50,184,24,201,16,43,19,249,142,184,207,112,57,192,197,31,217,243,129,147,57,97,212, +5,50,49,237,198,79,7,28,228,254,92,83,126,203,58,242,37,102,31,237,23,245,201,28,123,122,100,227,158,188,80,5,133,154,60,247,39,175,252,122,196,15,231,187,36,241,219,142,65,53,32,154,223,0,50,147,158, +205,109,207,211,229,97,158,122,114,115,223,167,52,254,207,48,206,101,0,1,208,135,60,118,224,176,228,103,61,51,199,79,68,48,74,63,229,226,37,201,28,124,235,142,189,246,130,78,57,193,245,160,11,235,61,160, +94,83,144,48,55,40,92,254,75,147,234,6,79,225,205,71,246,155,83,192,135,174,14,55,58,246,233,201,62,188,12,28,251,103,154,126,89,28,155,148,61,57,216,92,12,114,115,153,23,233,201,0,231,241,166,151,41, +214,101,30,191,232,199,167,65,200,184,201,25,250,103,191,106,0,189,246,139,48,65,48,33,207,63,52,174,51,245,200,24,247,3,142,152,35,20,134,123,3,214,8,87,168,57,146,66,49,211,177,0,250,224,30,152,236, +106,136,96,192,255,0,164,30,57,194,194,252,241,219,23,29,185,234,73,231,183,112,178,115,153,206,59,147,12,195,62,128,1,114,79,212,118,231,57,61,64,45,52,250,104,83,152,237,193,235,145,52,227,142,231,2, +81,130,112,71,56,193,61,51,81,25,180,195,200,183,137,179,207,19,72,120,232,63,140,227,166,64,207,214,162,14,184,226,76,147,206,124,185,243,207,0,0,102,57,224,246,224,100,251,18,245,117,224,103,175,127, +46,126,184,198,114,100,24,244,235,197,0,72,36,210,249,38,2,51,206,3,204,65,252,85,250,251,226,152,70,153,247,133,176,236,127,214,220,119,31,238,241,192,231,142,248,62,129,68,145,174,112,114,73,228,237, +159,35,24,244,118,39,128,113,193,239,211,138,83,44,99,187,177,227,24,50,228,123,144,220,250,103,167,234,104,2,13,182,7,56,183,11,207,79,52,2,15,78,178,38,127,51,129,129,237,147,253,8,14,85,23,31,244,244, +121,57,56,198,208,49,142,248,228,247,169,183,130,6,12,199,29,0,105,7,225,206,113,235,211,25,63,146,101,185,56,156,129,208,249,140,0,56,62,217,57,60,118,207,81,214,128,24,13,159,95,49,70,113,193,157,78, +51,238,123,159,167,231,77,45,104,114,4,160,113,218,104,189,1,31,121,91,31,82,61,69,60,180,135,170,205,199,31,235,143,110,51,131,25,235,142,221,177,70,0,255,0,150,19,30,231,253,33,20,119,63,197,19,99,182, +50,120,233,193,160,8,73,180,201,196,221,15,123,136,78,56,231,147,26,227,168,35,167,56,235,197,59,247,36,96,72,252,14,159,109,84,24,28,240,162,19,142,59,19,237,78,96,135,39,200,144,99,168,55,72,91,175, +56,197,182,122,140,245,39,30,253,83,247,100,16,99,145,78,58,25,199,190,15,54,234,59,250,131,215,158,40,0,5,7,43,57,67,129,214,251,56,35,36,159,245,35,211,3,212,147,130,58,135,52,210,128,54,220,179,103, +210,232,103,25,199,83,25,56,247,39,143,92,242,89,136,251,70,192,123,221,38,79,7,128,124,161,239,158,9,252,49,77,32,146,2,199,129,234,215,49,183,212,227,202,83,129,219,158,5,0,60,92,76,167,6,89,122,228, +237,187,92,144,71,95,186,15,190,8,25,254,69,64,200,199,36,66,11,30,135,206,135,182,9,206,91,241,231,142,163,28,145,69,0,101,27,43,113,255,0,46,246,203,215,254,95,47,72,227,57,0,125,143,29,123,138,13,157, +183,104,173,199,94,179,221,183,191,31,232,128,1,237,200,253,106,47,34,0,115,183,145,233,37,215,184,24,45,63,167,92,250,227,28,212,158,85,185,234,178,28,14,205,57,35,211,25,156,244,255,0,62,224,13,251, +44,64,255,0,169,183,111,67,190,228,131,215,25,205,159,174,126,157,133,41,183,128,15,154,11,126,58,110,19,19,207,161,54,107,248,144,58,14,69,32,180,183,111,187,12,173,215,5,183,159,209,165,25,252,255,0, +250,210,165,156,107,129,246,98,70,56,200,233,207,56,205,206,49,249,99,158,188,228,2,6,75,113,207,217,160,108,12,128,161,241,235,193,251,25,28,231,156,129,138,103,238,187,89,218,240,122,50,149,56,63,246, +238,58,112,121,252,7,74,188,45,226,7,254,61,88,119,7,203,45,200,232,64,19,115,129,206,65,252,123,210,249,73,145,254,138,199,25,28,192,223,94,14,246,198,65,198,79,183,76,80,6,121,11,255,0,62,86,173,201, +35,1,137,244,32,133,181,62,131,129,211,214,147,114,14,182,182,232,78,114,74,190,7,169,203,91,14,157,201,247,236,107,72,162,224,226,218,81,206,7,4,1,211,213,186,158,217,207,210,163,100,56,35,203,153,64, +199,30,107,241,158,7,221,227,159,99,198,120,52,1,72,34,182,6,203,92,117,25,25,61,63,135,54,196,96,113,142,253,254,143,249,56,30,93,183,215,29,253,115,246,108,140,243,249,242,113,197,90,242,128,249,137, +184,95,97,35,241,146,59,48,231,35,233,198,0,247,21,182,255,0,203,71,219,156,243,43,131,235,147,181,79,208,241,143,94,104,2,174,197,238,45,128,25,250,227,62,191,103,92,99,169,199,95,122,118,200,79,241, +219,12,247,44,163,32,251,148,0,103,190,113,208,251,85,208,241,28,230,80,58,114,101,155,57,29,15,17,28,156,231,211,129,211,168,166,9,32,4,31,180,129,130,58,73,38,120,7,56,204,121,57,193,30,185,29,168,2, +177,72,6,8,154,220,122,0,235,211,208,225,15,78,15,76,113,199,61,28,99,143,25,19,67,223,12,178,100,99,167,252,242,193,239,233,232,125,42,215,157,3,112,46,164,99,200,226,73,126,132,124,209,231,167,176,61, +14,73,205,48,200,189,62,211,40,4,156,102,105,151,131,235,194,156,16,78,72,60,114,123,80,5,125,136,0,6,230,60,243,208,224,253,49,229,129,146,112,56,245,247,34,152,201,22,48,110,241,192,224,149,206,14,112, +121,11,129,145,147,249,140,10,178,100,39,165,207,78,230,234,65,235,201,193,56,244,237,239,158,50,221,238,223,242,246,0,81,143,248,252,155,35,147,216,66,217,237,198,120,252,113,64,21,68,118,228,252,183, +114,103,184,5,122,245,28,111,201,30,132,123,26,12,8,7,18,204,120,39,32,119,207,31,198,7,63,137,254,150,183,14,247,12,73,231,30,124,158,131,214,0,49,158,254,167,165,46,240,63,143,119,112,90,233,148,125, +114,161,8,236,56,201,160,10,30,75,117,19,59,115,159,152,46,72,247,38,225,88,96,117,193,231,240,197,74,16,168,251,206,199,190,60,191,66,51,147,126,122,159,96,71,31,74,186,31,61,49,146,7,75,251,143,94,121, +14,63,195,176,192,0,211,136,148,231,4,224,142,7,219,167,24,207,185,184,25,246,192,207,211,140,128,81,0,142,118,150,31,246,203,39,28,227,155,182,206,56,234,61,120,32,112,224,161,250,35,231,60,229,162,228, +159,66,183,32,123,227,3,191,90,186,171,32,234,167,167,83,168,220,99,191,253,60,17,156,250,14,212,165,92,147,128,156,246,254,208,187,39,174,51,255,0,31,63,143,221,199,24,227,28,0,83,16,140,242,146,142, +58,139,132,10,8,234,56,188,207,231,252,133,73,246,118,224,5,144,47,95,248,248,76,99,221,77,209,233,252,187,228,145,86,60,177,209,149,137,29,133,245,199,39,62,243,146,71,167,30,252,83,246,163,103,49,200, +14,58,173,220,216,32,250,157,199,39,191,76,156,100,16,120,160,10,222,78,49,200,39,35,239,75,17,57,199,76,125,168,28,126,135,211,165,78,182,228,175,33,72,233,203,46,15,83,211,237,92,241,237,207,83,147, +210,64,176,142,124,169,120,236,110,101,126,7,167,204,51,159,175,174,58,210,237,132,156,249,78,61,218,230,96,7,60,100,11,149,24,245,200,4,253,13,0,66,45,227,95,224,183,236,9,239,248,255,0,165,131,199,76, +227,61,71,213,235,111,25,28,164,24,60,2,22,78,191,240,27,147,147,211,147,207,166,113,82,17,9,3,247,67,32,246,158,99,146,57,232,46,79,94,113,200,244,206,56,167,1,23,81,25,56,24,229,230,235,237,153,142, +125,121,25,29,115,205,0,69,246,81,252,34,49,143,95,52,122,244,204,199,244,35,183,110,142,22,206,7,202,80,147,192,192,149,137,231,161,255,0,74,24,30,249,7,240,166,180,118,199,239,33,228,28,225,164,237, +208,228,49,56,28,31,94,185,166,129,104,191,41,243,114,15,163,28,31,198,69,57,235,143,81,128,40,2,97,107,112,50,67,32,198,0,196,19,30,48,127,234,32,62,157,58,243,222,129,28,227,171,198,113,198,62,195,51, +12,247,231,251,68,47,39,211,61,187,228,213,98,108,207,85,156,254,3,177,227,57,159,60,1,215,175,74,77,214,36,224,23,4,96,144,237,183,182,122,25,253,51,201,233,233,212,80,4,231,204,207,205,229,17,159,226, +211,229,32,224,227,160,213,84,242,120,231,158,221,205,38,91,162,249,63,85,178,187,83,248,99,88,32,125,113,248,28,211,71,216,91,56,98,115,193,195,40,198,49,198,12,227,234,7,28,99,156,112,31,139,38,224, +137,123,15,148,142,126,128,222,174,0,199,255,0,174,128,0,205,216,242,57,255,0,143,107,177,235,208,29,87,4,118,231,63,90,95,54,101,224,62,1,28,109,134,110,63,1,171,147,250,127,90,140,173,153,192,31,105, +235,222,72,176,56,25,56,251,97,206,125,11,122,242,121,164,31,99,63,243,247,199,113,49,28,113,233,57,3,28,113,198,48,61,70,64,37,243,165,237,50,169,29,15,150,235,159,193,181,65,215,191,92,115,199,162,253, +162,124,1,246,165,199,92,24,178,59,231,63,241,54,31,79,166,56,168,188,171,38,229,133,232,239,205,203,244,238,0,19,231,142,192,17,248,241,132,91,125,60,99,11,121,156,119,185,124,115,235,155,147,192,60, +158,70,49,208,241,128,7,249,243,19,131,52,71,235,11,46,122,129,130,53,22,7,25,228,100,224,253,77,6,105,151,130,241,18,1,198,48,61,249,221,116,249,25,239,248,113,220,16,89,144,2,153,193,206,50,215,44,79, +254,142,63,129,252,122,84,171,109,16,229,90,67,207,25,159,56,192,62,174,113,250,14,114,6,122,128,49,102,98,62,105,71,208,60,75,212,122,153,198,64,201,207,242,35,172,129,156,227,116,239,212,99,108,200, +71,62,159,191,35,159,112,51,252,166,16,160,254,54,32,142,64,159,39,3,215,0,100,231,167,94,63,10,120,183,140,174,119,75,198,48,76,236,49,131,156,100,128,7,112,72,32,19,215,173,0,48,59,114,5,196,184,199, +0,79,22,7,30,134,92,115,232,78,59,115,78,50,184,255,0,151,137,72,60,99,207,183,25,198,114,48,102,25,245,207,76,118,238,99,251,56,255,0,158,204,7,56,204,223,208,161,207,166,114,113,211,154,114,194,120, +6,225,58,100,151,157,187,125,33,57,57,63,133,0,42,206,199,32,201,112,203,208,98,123,80,6,115,211,23,3,167,241,103,158,122,212,235,52,128,2,13,225,237,242,77,110,199,28,228,255,0,199,207,80,61,51,248,247, +103,146,252,98,116,32,247,243,242,58,96,253,232,71,61,123,254,121,205,40,141,147,147,50,117,237,50,231,244,140,158,112,70,61,65,239,138,0,155,237,89,192,100,212,78,56,230,88,7,166,14,5,193,61,241,201, +207,215,138,149,110,163,206,91,251,89,78,71,34,107,96,48,58,1,251,245,228,159,94,167,212,226,170,151,101,28,77,15,79,239,130,125,121,253,217,60,251,144,125,41,86,105,201,31,234,164,227,32,121,164,113, +212,14,35,255,0,61,240,13,0,92,23,246,192,157,211,235,73,142,127,214,218,1,207,166,235,173,195,216,18,123,113,216,181,181,27,97,210,109,93,241,208,155,155,124,142,249,199,218,143,97,254,121,204,30,116, +195,173,188,68,147,198,103,97,156,14,184,84,200,247,228,103,166,71,64,121,179,103,30,68,39,158,191,105,149,115,233,206,208,15,235,250,80,5,129,170,192,163,30,118,171,158,217,158,220,241,245,50,247,245, +206,71,111,90,6,165,27,158,100,213,8,228,140,92,91,143,167,89,120,199,29,200,245,224,226,171,25,110,84,15,221,192,48,71,91,233,120,231,29,56,42,0,207,24,7,158,131,161,81,115,117,212,8,51,232,47,38,36, +127,228,54,207,190,73,201,246,160,11,98,254,19,144,199,83,244,230,123,79,215,39,129,158,58,159,165,72,183,118,248,255,0,89,168,129,156,224,207,109,143,168,11,25,237,245,53,84,92,93,144,120,133,142,49, +197,220,196,14,122,227,201,3,191,126,15,112,122,83,5,205,192,35,114,168,207,113,60,135,24,62,240,241,219,24,252,72,24,160,11,223,107,180,31,122,109,64,123,155,139,78,61,62,253,177,60,255,0,159,90,95,180, +216,182,115,53,233,56,206,77,197,161,246,232,182,227,140,246,24,25,244,200,170,98,242,227,145,192,199,60,205,63,191,60,64,70,71,215,28,30,164,82,137,238,216,224,54,73,232,22,230,97,239,156,24,115,237, +207,76,129,198,40,2,224,158,204,224,9,166,4,14,3,220,219,174,122,242,72,135,159,126,9,28,227,56,169,3,71,206,36,56,60,115,119,1,60,96,242,68,0,129,235,147,211,57,206,42,152,107,192,50,236,235,147,203, +125,174,82,71,56,60,108,62,157,112,72,247,200,169,4,146,119,158,76,156,255,0,203,204,152,200,28,242,96,4,243,158,156,228,129,130,113,128,11,99,203,61,93,199,166,46,96,3,25,39,144,109,253,126,163,234,121, +165,101,82,0,24,98,122,17,121,103,158,121,254,40,7,3,0,227,24,207,124,138,170,29,200,230,87,36,246,51,76,125,78,6,209,201,60,2,121,25,201,238,13,61,103,42,10,146,196,227,169,107,146,222,164,143,144,30, +115,206,63,51,216,2,93,129,125,62,141,123,101,193,235,199,238,135,169,61,79,126,122,82,0,165,191,215,42,117,63,241,249,109,223,57,233,22,59,241,207,227,156,82,125,165,198,118,164,141,223,134,186,3,28, +123,140,122,18,15,29,243,130,104,243,238,15,34,19,198,79,51,95,12,17,145,207,239,128,7,190,64,254,162,128,2,84,97,124,228,35,35,173,212,71,156,158,127,213,131,207,168,239,156,18,77,59,229,236,240,19,200, +7,237,32,17,223,168,76,240,120,198,123,123,3,66,207,49,56,48,14,123,181,221,242,253,57,19,16,62,191,94,120,24,178,166,83,129,246,101,57,25,57,188,189,57,252,228,39,142,221,240,59,241,64,20,247,48,60,77, +110,15,63,122,234,95,82,121,218,113,156,118,193,61,125,106,69,105,56,204,214,237,140,112,183,82,115,159,92,171,103,142,216,234,14,50,112,69,224,238,56,54,81,14,6,73,186,187,61,253,60,209,147,245,198,112, +57,244,121,152,127,207,156,89,231,164,247,32,126,7,113,60,241,223,220,80,5,31,61,64,32,180,68,243,201,184,147,28,231,24,62,71,108,14,217,252,232,251,68,96,245,181,201,233,186,230,224,140,14,14,64,129, +121,3,7,28,146,65,62,181,115,204,108,241,103,7,60,100,220,221,19,249,103,211,156,31,196,122,5,159,130,45,16,115,140,11,187,132,227,158,198,35,206,64,35,36,159,110,112,0,33,23,49,96,102,75,97,236,179,95, +156,15,248,10,12,123,128,56,169,163,184,181,110,12,150,121,206,49,230,106,89,227,176,253,217,57,231,29,61,59,226,151,19,54,127,209,194,243,142,117,9,143,7,186,230,46,61,113,129,234,113,205,57,97,185,56, +196,11,142,49,141,68,147,142,115,214,34,65,3,175,95,111,112,7,249,214,192,240,109,159,234,117,60,156,15,95,36,113,245,60,244,237,72,179,64,73,2,11,92,242,55,3,169,129,206,121,230,223,43,158,220,254,84, +245,130,84,200,54,234,70,56,45,124,27,167,214,223,119,60,103,7,60,245,238,94,33,144,228,165,188,99,235,117,147,145,140,17,251,140,147,237,220,1,220,240,0,211,44,99,159,46,217,113,208,131,124,15,67,207, +49,19,142,71,61,253,141,61,30,39,60,11,98,123,228,95,41,244,193,255,0,70,108,159,207,35,128,58,80,99,184,31,242,239,24,28,245,158,92,224,113,212,91,245,233,208,247,206,122,84,101,110,58,24,208,123,11, +166,60,100,113,131,3,122,142,163,252,40,2,200,104,0,57,75,115,233,242,221,145,238,8,251,54,14,112,126,163,154,80,214,231,33,97,182,224,158,66,92,241,216,144,10,100,112,125,63,46,49,88,37,192,233,9,201, +228,19,113,32,0,1,207,91,62,125,121,7,218,164,11,122,58,71,30,8,255,0,158,204,79,212,159,177,2,123,99,131,223,210,128,44,171,67,192,9,24,35,32,237,138,114,57,57,254,36,206,49,142,128,113,198,8,163,204, +80,114,35,24,7,144,33,148,243,158,192,194,71,175,177,237,156,17,80,22,189,207,250,184,79,24,203,75,41,35,220,129,106,160,122,15,127,122,148,53,200,31,60,112,126,38,78,123,143,249,118,62,158,158,216,160, +9,68,234,7,10,123,147,254,140,79,63,79,36,99,158,61,7,65,211,20,191,106,92,99,13,192,32,102,211,158,156,227,247,93,186,130,122,1,220,98,162,51,78,163,27,33,198,14,0,243,72,250,100,90,30,122,114,127,0, +50,105,86,226,98,120,17,15,64,12,249,247,235,110,8,237,207,183,165,0,88,23,81,140,110,119,25,36,156,217,162,243,236,74,128,63,47,83,138,149,111,87,140,75,43,17,131,255,0,30,241,40,231,167,240,126,100, +147,207,76,119,167,230,206,6,74,196,71,31,242,210,78,167,142,63,114,8,29,59,123,244,206,87,204,102,228,164,124,129,199,153,245,224,102,47,94,189,120,207,28,98,128,52,6,163,142,1,126,122,19,4,76,195,61, +122,118,199,67,143,233,76,58,147,96,252,236,59,255,0,199,188,64,251,147,243,19,159,112,56,247,170,160,18,72,242,97,206,78,6,192,237,219,140,136,242,71,78,51,245,169,2,77,208,65,110,9,3,12,241,182,115, +208,0,8,224,99,35,160,3,216,80,3,206,161,41,198,217,89,7,124,197,24,252,179,27,123,147,142,59,145,76,58,165,198,48,179,163,115,142,96,136,231,167,25,16,130,125,250,125,58,138,118,201,65,193,142,14,78, +6,196,10,126,132,228,19,142,51,183,142,57,52,239,33,201,36,32,227,39,37,87,104,224,115,243,6,237,140,243,145,142,153,6,128,24,186,157,192,24,47,7,76,97,109,144,143,126,168,127,63,214,144,234,23,4,18,175, +10,244,228,90,243,140,241,156,35,2,61,250,145,239,82,144,227,130,71,224,145,49,201,245,63,40,3,208,250,254,136,84,144,9,144,175,78,144,39,175,32,254,240,12,246,233,207,182,115,64,16,29,66,224,243,230, +91,177,30,176,16,58,255,0,215,50,0,244,245,247,234,87,251,70,239,128,26,33,237,229,202,122,246,27,98,62,252,100,159,113,214,165,242,179,213,223,142,164,91,163,17,215,184,149,189,72,39,159,210,153,229, +38,120,184,152,19,199,22,172,127,12,12,145,131,215,3,158,153,198,5,0,70,117,11,162,6,72,235,212,65,55,80,120,206,80,103,168,199,30,130,152,111,165,60,52,132,103,175,250,60,231,159,64,118,114,15,167,29, +198,59,27,126,94,15,252,127,206,173,142,134,214,97,140,242,0,202,122,125,79,29,200,225,202,38,3,139,251,179,219,2,41,87,232,127,212,28,253,65,199,92,117,38,128,40,27,246,228,121,135,142,230,218,94,190, +192,69,144,125,57,207,114,105,227,81,113,213,155,240,133,193,237,215,114,131,158,15,97,140,145,220,213,205,210,28,134,212,46,84,253,110,65,25,237,197,175,29,121,250,231,181,32,118,198,6,163,121,193,254, +245,217,231,35,158,45,189,122,12,30,122,250,208,4,95,111,46,14,124,194,57,57,84,145,14,56,231,0,129,244,200,39,189,52,222,49,24,86,187,200,236,11,40,83,248,238,247,4,112,49,130,59,212,234,203,206,237, +70,113,254,242,222,159,212,64,141,248,131,207,173,7,203,193,255,0,137,132,165,135,32,231,81,24,252,144,254,131,158,158,244,1,10,206,236,6,62,222,122,116,126,58,31,85,30,248,201,28,228,158,105,222,110, +254,177,223,244,0,114,167,63,134,225,143,94,167,185,24,52,253,241,174,115,168,191,3,4,22,212,15,24,28,156,219,251,251,247,206,69,2,104,112,51,168,145,199,113,125,156,17,220,253,148,144,48,122,117,247, +199,4,2,34,89,143,220,188,39,167,40,167,223,175,218,20,115,239,192,206,121,205,55,105,39,253,92,231,61,3,4,24,236,121,251,83,123,115,207,110,7,24,180,175,14,65,26,140,45,198,62,100,186,36,253,119,217, +18,15,96,49,140,14,153,60,187,117,185,35,253,54,221,250,112,18,110,156,228,140,88,231,184,234,121,62,180,1,83,203,39,164,18,22,199,32,5,207,25,228,31,56,224,227,184,192,207,211,52,8,103,35,2,9,71,82,50, +233,145,233,193,159,35,63,159,191,53,104,152,15,91,200,23,158,208,207,211,60,114,109,87,161,235,200,200,226,144,27,126,130,254,223,57,200,30,76,196,241,255,0,108,113,235,140,143,94,61,0,43,152,110,8,24, +134,97,212,227,8,217,207,63,243,213,136,239,156,242,59,251,177,173,231,56,253,205,193,244,38,28,243,223,161,36,117,231,183,108,156,213,178,97,39,139,248,186,127,207,188,132,99,235,246,124,31,80,57,201, +247,232,110,137,112,69,244,96,246,219,109,33,36,140,117,255,0,71,199,174,0,246,245,25,0,164,96,151,25,107,114,64,236,241,143,241,29,189,15,56,29,57,166,148,136,12,24,34,28,245,49,129,156,123,23,35,212, +112,6,113,146,78,106,239,154,114,118,222,142,121,230,213,200,60,112,127,227,204,246,236,51,234,115,193,160,151,99,255,0,31,118,196,156,240,214,114,103,156,250,216,228,158,7,111,225,7,183,32,25,251,96, +83,254,174,16,122,96,132,29,120,238,70,59,99,159,192,19,82,127,163,243,197,184,32,246,100,0,14,1,227,13,131,219,159,110,252,213,223,46,115,130,183,22,199,158,0,182,153,51,211,211,78,236,71,175,35,35,52, +98,240,12,9,173,199,80,8,183,155,161,60,243,246,52,56,36,118,4,241,140,250,0,83,221,104,7,222,182,13,156,100,155,124,116,61,115,19,30,220,224,30,153,234,106,50,109,73,230,123,65,201,225,68,100,243,156, +242,32,63,81,129,199,65,182,174,178,94,99,153,162,224,244,48,92,17,156,17,200,251,46,121,201,60,122,231,165,33,19,231,230,150,212,145,198,13,188,188,12,250,125,148,158,7,31,135,81,64,21,7,217,59,79,6, +14,49,128,160,251,116,135,39,175,60,145,249,83,24,216,30,12,145,159,95,158,48,59,243,134,183,39,145,207,92,115,207,57,21,113,146,67,247,190,198,61,51,103,47,183,173,190,51,254,115,206,106,44,178,228,31, +236,246,35,140,27,68,94,131,213,160,234,122,118,198,114,113,216,2,155,255,0,102,140,124,246,248,235,203,198,78,227,245,133,0,62,184,207,177,163,204,211,135,73,163,28,131,242,201,108,79,30,135,3,161,206, +59,250,142,245,105,200,7,37,108,63,239,212,32,12,158,48,76,35,29,58,227,62,192,156,83,48,135,59,163,176,39,156,230,56,206,127,31,40,115,244,231,143,173,0,87,51,90,243,182,225,64,247,146,215,7,219,238, +18,113,223,158,135,181,55,207,131,35,108,177,54,57,63,53,177,252,190,82,114,71,182,120,199,174,102,41,17,63,118,219,29,196,81,64,120,29,120,40,57,7,182,56,28,244,2,152,194,216,2,12,112,159,99,12,45,223, +190,87,159,94,162,128,33,55,17,246,120,216,28,147,243,69,159,124,31,43,61,72,198,9,198,125,141,51,237,106,50,20,15,79,245,170,61,249,11,9,250,224,227,159,78,181,35,69,101,208,196,156,115,251,184,45,151, +158,158,167,183,97,237,81,21,211,192,25,128,228,117,255,0,71,183,57,35,25,231,0,250,131,201,231,183,90,0,65,112,121,218,8,238,63,210,17,87,184,207,206,160,250,129,192,25,197,66,247,146,12,255,0,169,35, +176,107,203,112,114,79,57,228,115,219,174,15,25,233,138,149,133,136,193,88,93,122,253,219,120,123,100,246,12,123,245,61,5,66,194,209,128,1,102,7,183,238,97,62,164,156,21,99,233,199,169,193,28,226,128, +25,246,199,32,3,246,117,25,192,255,0,75,128,19,249,72,167,63,207,142,152,166,181,233,7,6,88,20,1,201,23,113,159,196,255,0,165,174,56,235,142,157,71,90,83,28,93,21,110,6,71,95,32,30,188,243,229,175,67, +238,51,201,56,168,90,37,7,32,205,215,146,214,140,73,232,120,253,216,231,156,156,131,131,131,212,208,2,181,236,132,28,79,9,30,159,105,220,121,237,197,238,61,114,122,96,210,11,166,61,100,181,32,28,140,204, +249,61,9,31,241,246,167,219,211,142,162,152,214,229,177,135,152,28,114,5,137,92,118,228,149,228,123,123,113,140,115,31,217,159,28,153,207,166,108,89,64,206,72,201,0,177,28,117,255,0,0,104,2,127,180,231, +129,37,176,228,242,39,148,3,212,245,251,118,78,58,14,49,143,108,83,126,208,132,127,174,183,235,201,19,204,217,63,248,27,158,224,247,201,245,170,230,213,216,231,50,14,114,49,103,56,199,212,149,82,113,208, +14,123,28,211,126,199,46,0,18,72,7,171,193,116,7,174,1,10,72,56,239,206,120,6,128,44,25,227,57,205,196,3,0,144,51,59,158,125,133,240,63,76,244,235,233,148,50,195,200,251,76,64,115,192,138,229,179,156, +244,3,81,63,161,246,238,13,85,54,18,128,91,204,143,156,243,246,107,177,235,223,102,57,198,58,142,231,184,6,35,107,115,159,245,208,15,111,38,235,129,233,202,118,207,255,0,172,80,5,241,45,182,63,215,43, +31,65,109,125,206,58,100,139,236,28,246,201,61,125,50,106,55,146,216,242,37,94,51,128,108,239,27,57,39,160,251,119,212,244,60,224,117,200,20,141,165,207,105,173,193,231,36,195,113,158,152,234,16,245,60, +156,31,233,132,251,53,201,36,25,237,248,35,143,42,240,159,207,97,234,48,121,35,142,192,244,0,188,37,137,176,60,200,207,94,182,23,160,158,58,19,246,178,121,239,219,60,211,91,102,121,17,48,207,95,236,219, +198,207,169,230,87,235,233,192,61,120,230,169,27,57,143,89,33,35,254,185,93,100,125,73,64,125,57,247,35,36,243,65,177,155,130,13,190,59,22,142,231,159,192,168,63,137,29,248,62,160,23,74,161,92,249,145, +175,29,19,77,185,200,231,251,161,242,56,25,232,114,125,179,152,90,50,122,92,63,176,58,93,246,15,83,253,227,158,122,145,233,193,234,42,161,181,35,59,141,166,125,210,232,126,63,42,100,241,146,113,158,222, +196,179,200,85,35,45,106,72,31,194,46,176,61,142,228,232,114,51,140,255,0,136,5,166,183,44,14,103,35,216,233,23,222,156,114,178,19,206,63,196,96,115,19,91,63,65,54,120,227,254,37,119,224,103,24,228,243, +252,253,121,232,42,50,35,234,90,216,145,208,20,159,36,123,127,163,31,160,28,244,252,41,172,192,125,213,183,32,145,199,146,231,3,57,239,99,232,0,206,127,46,180,0,227,109,38,113,231,253,71,246,125,240,246, +60,249,103,242,12,79,183,106,105,141,177,204,227,35,183,216,175,65,231,215,48,15,175,83,142,152,230,153,141,221,86,50,79,165,188,141,199,124,183,216,251,19,212,28,250,18,51,66,219,2,114,22,16,121,235, +111,55,225,192,179,235,140,12,1,159,214,128,30,18,93,196,164,224,123,27,59,225,249,126,232,129,198,120,193,238,123,83,89,37,234,101,207,186,219,94,12,140,245,255,0,143,115,200,35,142,131,166,122,242,125, +157,112,50,176,113,208,11,89,183,126,44,108,137,29,51,201,60,244,30,136,34,83,145,136,120,57,255,0,83,46,113,142,167,22,67,140,244,201,60,119,200,34,128,19,99,231,6,82,15,188,23,67,61,113,214,216,17,211, +147,131,215,191,34,154,83,159,245,187,142,127,231,157,223,228,113,104,223,204,122,247,167,180,42,122,8,142,14,112,34,156,15,67,202,217,31,192,96,250,243,205,53,161,57,192,140,55,126,18,231,216,131,159, +177,103,211,31,141,0,48,35,19,243,48,247,202,92,119,233,214,208,28,247,25,24,239,147,74,81,58,137,6,123,0,39,65,142,227,38,208,15,110,50,73,234,112,13,47,217,230,56,197,184,228,240,60,169,200,193,255, +0,183,16,125,79,7,31,65,71,217,46,123,218,143,124,69,112,59,158,14,45,70,15,191,215,165,0,52,237,224,25,88,125,12,152,250,127,199,161,227,215,60,114,56,244,94,114,49,35,123,229,137,31,173,184,250,158, +190,195,209,223,97,152,156,253,148,100,227,24,138,235,140,250,230,0,0,224,125,7,67,142,106,79,176,78,7,22,163,143,85,156,30,0,29,124,188,156,231,30,189,250,154,0,174,86,66,56,201,247,194,30,58,103,6,220, +2,1,232,115,233,142,152,161,85,251,169,56,235,251,168,79,79,76,219,31,83,130,122,156,245,233,86,13,148,195,57,183,31,130,201,238,72,59,227,221,159,108,118,235,72,45,88,144,13,171,19,248,46,58,122,160, +62,131,174,9,232,49,64,16,149,239,243,3,238,136,1,247,56,178,35,167,124,122,83,130,54,1,220,167,56,224,198,27,25,36,227,34,208,117,237,199,25,60,122,72,108,231,237,108,63,239,136,14,79,212,175,35,167, +95,65,138,62,201,51,96,253,149,113,238,177,117,246,59,72,244,200,192,30,160,245,32,13,216,113,209,9,25,199,201,32,244,61,4,11,206,15,182,125,13,30,89,234,81,15,61,218,101,199,215,247,121,57,7,129,143, +81,236,100,251,44,132,241,103,9,62,165,34,224,112,115,247,14,78,115,206,7,94,78,122,47,217,231,4,129,111,22,79,65,229,66,112,8,35,28,199,215,158,7,67,215,156,112,0,209,17,24,34,24,142,72,192,47,49,28, +117,255,0,151,115,158,253,71,229,78,16,72,63,229,198,22,28,17,196,160,122,227,254,61,129,57,61,121,206,58,158,115,65,134,225,126,244,49,100,118,242,237,64,28,31,250,119,25,30,153,207,4,245,205,70,82,225, +115,132,136,117,233,29,168,3,35,222,2,48,115,156,103,3,7,142,148,1,55,148,219,129,123,24,0,238,15,153,134,245,235,108,224,145,235,199,60,251,212,190,76,103,254,97,176,175,35,149,7,158,191,222,180,29,201, +239,201,235,219,52,11,206,56,41,1,0,1,247,96,12,65,206,121,91,99,192,246,252,105,166,86,206,12,80,228,227,170,160,237,232,182,132,158,70,65,199,169,239,64,23,205,170,176,27,108,163,28,158,119,50,251,17, +143,178,3,159,112,120,238,56,21,23,216,211,141,214,150,172,65,254,57,241,200,246,104,198,63,157,83,45,33,36,249,86,199,129,193,45,147,200,227,139,80,61,250,250,140,1,76,13,32,255,0,150,80,140,114,74,150, +252,6,77,168,245,60,145,198,6,104,3,75,236,136,49,139,59,35,199,65,115,140,117,61,219,245,193,227,173,56,90,99,25,180,180,245,199,219,34,233,206,79,78,156,142,73,231,167,60,154,202,44,192,231,106,240, +57,219,38,122,28,116,54,192,99,220,99,183,126,141,243,219,156,49,30,185,32,103,7,215,236,248,232,115,145,130,78,78,69,0,108,155,120,192,27,172,172,242,127,136,94,192,127,61,235,192,30,220,103,190,56,49, +152,80,96,139,75,76,30,184,186,181,3,208,116,96,127,92,250,154,202,55,24,206,100,60,245,205,194,168,61,255,0,231,152,199,212,30,189,79,90,133,174,209,120,103,231,29,86,232,158,79,176,43,144,7,63,78,123, +208,6,201,133,14,73,180,128,19,156,1,117,0,25,62,163,231,224,118,29,120,252,105,134,214,50,120,179,183,61,192,55,54,255,0,145,35,102,79,212,143,115,158,43,27,237,144,142,178,49,62,171,51,228,100,227,31, +123,31,94,220,230,158,47,161,61,94,78,51,210,118,25,30,152,231,61,125,135,39,165,0,104,189,154,28,143,179,66,9,63,119,207,128,143,207,205,7,24,207,76,251,2,41,166,194,219,143,50,218,223,7,214,100,239, +216,159,59,3,191,124,102,169,11,232,16,103,124,192,224,16,4,253,48,125,14,9,198,48,51,239,207,90,83,170,67,202,150,186,39,31,194,234,196,228,227,3,230,32,17,244,232,122,28,240,1,124,217,89,246,181,181, +7,218,88,137,63,148,140,114,126,153,56,245,166,181,133,169,255,0,151,104,115,140,112,209,48,3,160,198,85,142,127,250,195,140,12,209,251,124,4,31,222,93,128,58,239,151,104,28,251,103,184,25,29,251,103, +186,141,66,16,56,146,232,250,145,33,96,51,234,1,61,134,51,198,56,207,169,0,157,236,237,186,11,120,88,255,0,219,50,70,6,49,141,128,103,25,234,61,61,242,134,210,16,114,177,68,167,24,229,34,63,158,80,241, +250,245,28,131,80,141,74,50,50,26,102,25,198,65,60,118,31,192,115,140,115,219,30,156,26,95,237,16,8,0,204,71,174,11,100,231,3,3,110,112,123,99,61,232,1,230,205,8,199,147,1,95,250,226,8,201,199,101,136, +231,182,121,231,129,77,251,28,11,255,0,44,225,3,218,221,7,79,64,97,7,185,246,31,141,59,237,165,177,133,144,142,112,25,28,31,83,193,78,50,121,252,241,158,180,241,113,49,31,42,17,156,224,148,36,231,183, +6,60,15,78,249,244,24,56,0,104,129,113,133,17,0,49,159,220,227,61,125,0,63,253,115,159,106,79,36,12,224,194,79,161,82,8,244,198,99,96,127,94,57,206,104,50,221,19,131,26,117,56,102,132,30,48,58,224,169, +207,57,60,28,1,207,108,52,253,168,242,22,48,57,198,32,192,206,57,233,32,238,51,248,115,222,128,3,12,160,252,159,103,206,58,30,167,255,0,37,219,169,199,80,127,58,40,84,187,200,255,0,85,158,63,229,131,14, +158,191,188,250,231,212,159,204,160,6,111,143,169,181,139,30,133,172,200,233,223,253,36,112,115,212,55,81,193,165,15,15,65,12,43,215,162,218,49,39,28,127,203,193,252,57,57,198,59,83,205,148,163,134,182, +184,31,91,56,250,122,253,227,234,71,63,65,154,5,131,117,242,165,3,215,236,138,59,115,146,131,29,134,51,239,237,64,13,2,35,140,34,12,227,157,182,103,131,237,246,128,115,248,115,158,135,165,32,84,4,130, +128,142,164,133,180,3,143,172,221,62,158,249,29,105,230,205,192,224,49,244,6,212,244,3,253,194,51,219,57,31,149,48,218,56,231,97,56,227,13,97,146,57,231,254,89,147,238,50,15,110,51,138,0,105,22,249,32, +197,23,176,41,102,199,146,59,253,160,158,127,60,118,239,71,151,108,73,59,34,94,14,73,138,219,30,253,39,108,113,244,39,220,158,80,218,182,9,242,89,72,239,253,156,196,228,127,219,18,73,28,116,7,235,218, +154,96,101,235,25,0,159,226,211,231,245,199,107,108,113,216,228,247,7,140,208,2,249,54,217,251,214,196,243,193,134,2,125,136,195,183,92,113,142,79,78,184,195,150,59,110,129,237,0,236,60,152,185,252,54, +96,103,235,207,78,248,166,8,91,178,161,228,158,108,165,7,183,63,52,64,245,61,185,254,170,203,50,12,143,36,14,184,107,87,29,251,254,228,158,113,156,228,241,211,216,2,83,5,184,228,61,152,201,60,136,87,61, +49,143,187,201,63,129,198,58,230,144,195,108,49,251,235,85,39,36,226,12,125,57,17,55,78,9,25,61,137,228,98,162,89,37,28,98,35,193,199,250,51,224,129,200,201,17,14,231,250,243,201,167,7,159,131,182,31, +95,245,110,20,159,80,8,227,174,0,57,206,14,78,58,128,33,142,12,99,206,128,143,238,249,110,56,227,156,125,152,227,183,56,237,128,105,124,184,177,130,240,16,114,57,71,56,62,153,251,39,94,156,103,191,34, +156,26,115,214,56,73,245,42,192,103,143,92,1,192,247,255,0,4,62,126,225,139,43,103,207,190,51,239,211,28,224,113,156,243,215,212,1,162,40,185,33,227,94,249,216,253,253,63,209,193,253,51,216,245,197,60, +67,19,255,0,203,84,29,250,76,9,232,49,132,182,233,249,31,194,158,22,98,63,227,194,221,78,59,73,142,191,175,61,250,140,231,142,49,79,242,103,42,63,209,34,25,28,238,184,108,12,140,117,218,78,58,227,35,25, +198,61,104,2,63,179,196,48,62,210,163,175,65,117,233,198,63,208,200,247,245,246,224,138,103,217,163,4,19,44,132,14,114,162,224,46,15,95,249,117,30,153,199,229,205,72,96,159,189,181,178,130,0,192,152,49, +36,241,209,148,103,143,192,103,57,233,77,48,74,84,6,181,132,227,156,137,207,227,156,32,57,7,35,24,227,29,243,192,2,125,149,78,127,125,56,28,227,155,194,121,206,62,236,60,123,30,227,24,206,69,55,236,100, +14,110,110,7,214,75,236,117,247,135,208,14,59,118,205,32,182,140,19,155,120,115,158,190,99,19,244,63,40,192,233,156,123,242,56,53,47,217,226,94,69,170,1,223,247,239,239,215,167,235,248,240,104,2,51,104, +8,0,220,92,231,212,53,202,227,240,49,174,72,200,234,127,76,96,22,156,156,92,92,17,158,23,108,206,15,115,144,84,158,189,49,143,99,200,167,249,113,119,181,78,224,254,246,83,249,50,166,61,248,207,211,138, +105,68,4,255,0,163,129,159,89,174,61,177,140,167,234,6,58,230,128,17,173,155,188,211,28,227,25,183,152,159,98,14,7,113,239,201,247,20,191,102,113,210,73,91,3,31,53,164,205,201,29,190,94,189,59,143,92, +246,12,24,220,1,73,20,227,144,30,228,140,127,188,97,81,239,215,183,76,115,67,8,199,57,144,28,242,55,78,125,142,113,19,30,125,187,28,158,40,1,198,210,67,207,207,159,107,41,14,59,12,131,183,61,57,239,198, +61,114,134,11,128,8,27,137,245,251,38,222,135,176,222,56,233,206,127,192,68,210,66,189,85,200,245,197,201,60,127,219,169,61,253,121,234,104,23,16,47,221,134,118,237,242,164,227,190,122,155,80,127,159, +208,208,3,196,119,42,122,145,192,198,235,80,64,29,120,204,159,227,219,181,41,75,158,62,101,30,128,88,194,221,143,171,241,200,28,19,207,191,20,130,230,51,255,0,44,39,39,254,222,71,174,71,252,122,28,143, +97,199,233,133,55,139,146,162,214,232,245,228,45,199,92,122,155,51,158,112,122,30,157,113,129,64,11,137,64,27,202,17,144,71,250,5,169,254,101,207,184,199,35,25,35,181,60,7,35,27,85,113,142,182,86,96,126, +94,89,238,64,249,187,103,0,84,63,106,36,252,182,247,89,207,241,71,57,57,29,143,250,9,192,62,131,57,199,228,225,44,167,149,134,113,131,218,43,129,237,140,155,85,245,231,32,96,117,198,51,64,19,15,48,6,192, +140,142,114,126,199,102,7,126,222,73,28,14,56,7,167,83,156,208,1,60,23,29,143,252,123,90,174,61,127,229,135,36,123,131,140,240,121,168,193,152,252,161,39,207,253,113,144,240,79,57,34,0,73,193,28,117,247, +52,245,243,20,224,139,129,130,79,54,243,14,222,166,52,244,245,29,57,38,128,23,203,231,230,151,142,188,219,91,1,142,220,172,35,56,199,92,112,115,212,99,42,18,47,249,238,56,61,124,152,9,250,112,131,159, +99,199,231,64,118,39,238,201,232,63,112,199,63,92,247,252,123,210,132,231,4,73,223,164,28,129,244,243,57,250,254,158,160,15,11,25,24,55,106,49,211,247,86,254,227,24,49,241,199,31,225,78,217,25,0,253,174, +51,211,173,181,179,30,61,246,112,125,7,3,240,165,16,59,114,22,92,28,100,136,0,207,110,130,96,56,24,32,147,199,106,145,108,164,198,86,41,15,185,137,120,60,103,147,56,247,246,24,235,234,1,9,141,23,3,237, +177,243,140,15,178,196,0,61,186,14,184,250,125,120,197,41,242,129,57,190,198,121,35,200,64,7,115,216,99,244,207,94,64,197,75,246,54,44,70,198,250,152,144,119,247,184,236,121,198,115,207,110,206,91,25, +179,196,100,159,80,145,6,199,56,193,55,4,113,193,200,35,235,192,36,2,184,104,215,31,233,163,175,241,34,142,113,255,0,93,6,122,246,3,143,126,67,214,120,198,79,218,144,242,115,152,251,116,32,97,200,4,231, +166,224,64,232,58,213,143,177,206,58,174,49,220,172,67,156,129,212,78,71,7,158,158,189,186,42,195,40,39,160,231,39,253,78,15,78,226,97,250,15,198,128,34,243,160,234,183,80,30,123,166,79,7,145,131,112, +189,79,4,123,99,28,112,225,115,2,147,254,147,22,115,128,60,176,167,175,25,63,106,56,39,24,254,163,24,22,4,83,103,8,135,131,144,0,132,114,125,3,77,207,78,249,199,127,90,5,173,209,39,247,83,112,127,133, +173,199,95,113,48,244,237,158,254,162,128,33,251,108,96,228,92,46,59,227,203,227,190,14,235,131,219,212,122,83,126,223,110,120,50,147,211,145,228,31,212,72,72,228,127,46,188,212,230,11,208,72,242,102, +60,127,126,220,227,24,231,155,146,113,208,103,24,3,4,251,52,197,124,185,111,42,64,48,70,119,193,158,228,127,203,206,9,244,232,59,1,234,1,9,212,109,20,103,123,156,114,118,152,199,95,112,231,30,196,31,175, +124,47,246,157,145,237,51,147,156,102,100,63,137,37,199,76,158,57,3,24,236,115,38,39,63,125,100,30,185,149,0,255,0,210,133,28,103,233,156,14,152,164,9,43,30,60,192,112,79,252,125,42,131,249,220,231,60, +123,158,227,208,128,32,190,177,61,109,228,98,7,121,162,199,108,99,15,156,145,158,167,28,100,231,138,112,186,178,35,254,61,166,25,29,167,132,14,156,113,146,121,62,252,82,152,229,0,2,88,147,128,63,210,223, +62,128,18,183,62,157,113,143,92,244,203,90,33,206,238,190,215,108,78,125,193,185,39,35,29,122,116,236,65,160,9,5,197,153,255,0,151,91,172,119,197,212,25,199,174,25,212,113,159,95,198,158,36,179,61,32, +188,25,228,102,107,70,192,245,255,0,90,70,58,242,63,165,84,49,70,122,198,205,245,185,126,113,215,5,102,193,35,177,192,227,143,164,109,4,68,228,66,48,115,255,0,47,50,131,140,117,198,252,231,57,207,233, +192,201,0,208,243,45,135,221,183,185,35,222,123,97,146,113,198,4,135,131,145,237,192,231,20,160,196,79,252,123,221,0,127,233,189,187,14,158,243,15,111,175,211,138,201,251,36,36,130,86,52,206,51,155,137, +251,231,174,37,32,19,140,147,140,231,169,201,230,69,179,128,103,113,132,96,112,222,125,207,183,117,141,143,108,156,103,211,218,128,52,2,3,141,176,207,223,4,73,22,120,199,63,44,228,140,30,227,244,163,201, +148,227,108,87,91,79,76,74,167,32,253,36,25,61,137,199,60,17,197,83,91,120,71,73,109,192,231,254,90,220,28,251,228,219,30,231,154,83,111,24,193,19,89,28,242,115,44,231,240,230,211,130,123,119,62,148,1, +160,182,147,17,196,19,145,239,60,99,168,245,98,195,128,122,231,191,177,169,150,206,80,191,234,38,24,224,255,0,165,32,238,50,0,12,1,233,216,19,143,198,178,188,149,57,196,150,67,29,138,204,223,78,77,152, +28,31,95,108,28,212,130,220,50,131,231,90,96,127,118,55,252,73,255,0,66,57,206,58,255,0,90,0,211,22,238,15,250,137,249,255,0,167,136,138,254,3,57,31,94,57,234,79,117,54,172,196,143,38,96,57,198,110,33, +3,142,115,195,28,122,99,169,231,167,65,67,201,11,202,203,110,56,24,59,31,167,30,150,35,175,28,103,3,166,71,121,18,57,7,42,246,188,147,247,144,142,113,131,130,109,71,82,56,245,239,233,64,22,126,196,224, +229,98,148,145,200,38,238,53,199,175,126,112,58,119,160,218,74,223,121,103,24,224,15,237,24,200,233,131,140,146,71,108,243,249,118,141,32,156,117,146,211,29,192,231,29,249,38,30,164,103,61,184,207,97, +139,43,28,195,248,237,207,81,242,196,228,240,113,218,3,128,8,238,58,244,52,1,15,216,27,57,113,41,24,224,27,208,63,34,164,228,30,15,108,114,61,13,88,142,205,122,148,147,175,31,233,204,72,247,202,128,57, +250,227,219,128,104,45,42,140,1,30,112,48,66,74,9,199,209,19,147,158,184,238,49,138,118,101,97,146,177,227,25,226,71,66,196,244,229,176,127,60,117,247,197,0,74,182,169,159,154,54,97,158,247,18,19,223, +60,134,3,39,253,211,235,83,8,34,94,4,97,126,179,200,72,247,60,143,160,199,99,143,122,170,34,39,147,16,31,73,152,244,228,103,230,199,29,193,233,156,142,156,155,57,36,18,6,79,222,145,129,39,142,127,214, +227,7,156,100,14,157,5,0,92,242,87,32,40,7,159,239,204,71,160,206,89,65,246,192,239,220,102,143,36,122,199,131,253,231,112,70,15,60,43,130,9,231,175,35,215,189,86,11,254,208,7,177,38,82,0,199,28,172,227, +183,28,103,250,83,192,255,0,106,12,114,6,75,146,79,111,249,108,91,169,25,234,127,2,13,0,74,35,84,231,124,64,12,242,100,156,142,15,92,249,184,192,24,231,57,239,144,106,77,232,6,11,194,125,15,250,81,233, +192,57,87,36,250,159,94,220,158,26,168,184,229,161,28,127,118,83,147,249,156,125,6,120,231,214,151,202,65,199,153,22,78,114,54,58,254,57,218,127,253,127,134,64,30,37,129,121,223,27,30,184,217,123,142, +189,58,103,240,206,0,39,35,210,69,184,78,49,229,113,233,246,133,199,224,192,14,253,115,156,253,42,33,9,193,42,240,30,135,230,220,62,153,224,145,239,245,57,165,217,46,62,95,179,103,60,176,18,49,199,127, +249,103,198,48,49,235,211,140,19,64,18,155,129,142,36,78,122,127,173,7,28,245,59,250,126,7,156,241,199,45,243,164,61,212,142,185,14,192,142,152,199,35,215,212,140,113,193,197,52,68,223,196,208,131,198, +118,197,39,39,169,231,201,61,249,224,142,148,161,0,193,44,164,244,3,200,147,241,228,167,30,163,7,7,24,57,199,32,13,15,41,57,249,14,122,0,237,158,7,76,23,3,166,71,56,231,4,2,42,79,52,228,111,242,134,71, +86,100,231,166,62,243,113,214,158,146,54,14,35,82,56,0,132,112,112,61,182,18,63,47,111,155,20,25,91,63,234,155,219,146,61,187,194,122,123,231,167,78,77,0,11,54,115,134,183,56,192,39,206,80,59,156,16,24, +117,25,234,7,242,169,69,203,1,133,54,231,145,193,146,51,208,127,186,217,31,254,191,164,34,87,255,0,158,50,3,198,126,78,220,245,253,199,35,62,163,183,20,211,35,103,238,74,15,25,28,228,117,244,132,17,211, +140,103,0,15,196,2,199,218,37,60,237,181,7,156,0,98,193,231,185,242,147,56,199,57,200,28,246,235,47,219,110,6,0,142,212,142,248,107,126,49,249,28,15,95,192,119,197,69,157,186,15,56,158,163,6,64,123,231, +141,190,220,28,100,147,199,179,205,195,14,51,48,7,160,203,96,99,216,198,192,243,244,28,140,244,52,1,104,93,202,7,204,182,224,227,214,51,201,61,200,200,61,59,250,254,78,23,243,227,228,251,54,51,145,140, +15,124,240,171,144,62,191,167,21,84,74,204,120,146,127,127,157,23,142,192,177,137,79,81,207,63,137,237,34,131,198,11,19,156,124,215,17,147,215,232,114,115,233,158,79,52,1,99,251,82,124,225,158,221,122, +96,128,163,191,35,238,169,29,115,233,235,214,148,107,18,19,143,58,21,206,112,3,168,231,24,32,241,158,252,142,14,113,81,141,227,56,84,4,96,101,167,65,211,30,170,123,227,28,146,49,78,2,66,15,207,108,189, +1,13,60,68,231,241,66,79,31,128,7,241,160,9,70,173,49,60,93,198,24,30,215,1,79,29,176,51,245,232,71,183,3,8,218,172,163,131,117,33,62,215,59,215,191,172,121,35,62,248,221,66,196,231,254,90,91,243,192, +27,163,32,113,215,34,50,122,243,238,7,214,129,12,185,251,208,55,176,149,87,175,112,12,29,64,28,227,60,254,116,0,229,214,46,14,63,210,39,0,28,15,222,100,103,142,0,16,228,103,62,164,28,14,71,103,255,0,106, +78,121,251,76,227,28,97,100,112,51,192,231,108,75,233,158,128,140,243,77,242,165,201,1,97,110,185,2,104,143,211,1,162,28,228,158,131,174,41,126,207,35,15,248,245,137,134,51,159,62,32,63,15,244,115,131, +248,142,191,141,0,39,219,229,115,204,243,145,207,89,38,24,199,166,34,231,168,224,228,138,145,111,27,143,222,76,73,238,100,144,100,103,166,76,64,253,50,14,79,126,105,4,50,112,77,148,120,28,146,39,200,239, +140,237,128,15,166,48,125,79,162,152,176,3,53,130,30,188,153,36,35,220,130,35,198,123,247,60,118,206,104,1,198,225,206,11,60,184,62,178,54,56,199,99,158,49,131,211,177,231,28,23,44,177,49,7,204,156,183, +79,245,128,145,245,35,105,231,3,161,56,227,156,145,136,138,170,131,139,69,92,147,130,3,146,62,185,132,3,211,156,146,113,239,200,143,112,28,11,96,125,206,114,9,0,99,6,60,113,201,3,253,172,118,201,0,182, +10,62,48,215,28,17,156,16,228,17,220,112,72,252,58,226,159,133,3,143,180,147,142,49,30,113,211,7,3,29,253,79,29,200,226,170,2,196,12,90,201,223,24,46,56,245,24,24,31,247,214,7,25,56,20,161,31,156,65,50, +246,231,204,25,250,103,36,159,215,211,161,192,5,129,146,73,2,224,244,229,161,144,122,227,238,204,164,245,244,56,28,244,167,115,233,48,233,156,199,49,192,245,201,185,79,111,214,171,249,110,7,250,166,201, +198,3,52,190,220,252,164,113,142,157,79,111,122,95,42,67,140,33,94,132,31,244,166,233,244,118,250,116,207,32,12,80,4,216,126,120,144,240,56,17,92,123,122,106,11,198,125,71,28,18,105,8,98,57,23,25,198, +6,33,187,227,184,31,241,254,71,124,113,232,70,72,230,162,242,166,227,15,34,224,113,145,115,199,92,158,99,36,251,231,61,179,197,68,98,184,28,172,220,12,245,134,124,156,103,57,45,110,221,125,248,62,180, +1,57,19,127,12,119,68,123,69,121,156,112,6,63,211,8,201,28,100,103,57,199,7,138,132,249,224,130,97,186,29,126,250,94,147,211,169,255,0,73,227,167,234,7,214,54,19,228,15,53,7,63,243,202,110,158,223,232, +221,114,56,227,62,217,234,17,120,167,30,122,96,159,226,138,126,125,1,38,200,169,199,113,250,129,64,18,15,56,101,140,51,231,185,197,240,63,173,209,200,246,201,238,78,56,203,115,34,255,0,203,188,132,117, +255,0,151,240,73,236,70,110,186,156,117,30,195,60,208,35,212,24,96,74,132,123,65,41,199,229,167,145,199,25,246,28,246,202,152,117,18,115,230,194,73,193,33,237,174,78,113,142,159,241,45,193,29,59,231,159, +106,0,12,206,167,155,89,58,99,113,55,185,201,255,0,122,228,241,129,223,174,41,60,198,32,183,217,242,59,18,46,143,166,114,12,167,156,96,147,206,63,146,52,58,142,112,179,91,241,215,54,215,42,127,93,44,240, +57,236,64,235,145,147,81,180,58,152,28,188,4,15,72,46,73,57,198,58,233,93,71,60,28,28,115,145,64,18,239,115,201,183,218,189,137,142,231,28,243,158,100,56,207,126,184,193,234,105,64,118,35,247,99,110,50, +9,89,15,228,25,91,211,175,60,117,25,226,171,24,239,177,134,120,254,162,218,228,116,244,198,151,147,219,156,125,113,131,147,253,55,180,150,224,140,117,130,111,94,164,255,0,102,174,63,199,129,64,19,97,192, +56,72,219,158,241,198,121,233,252,113,115,142,115,158,152,234,58,212,129,166,228,98,16,56,31,50,91,12,119,227,33,15,65,156,227,240,245,173,230,93,96,238,154,62,56,249,109,229,25,231,129,147,100,160,228, +244,30,167,159,101,72,238,28,147,231,142,6,112,45,29,192,24,255,0,175,70,7,35,61,6,122,243,212,80,5,156,185,234,214,185,237,152,237,155,24,231,61,8,29,250,250,116,235,74,68,160,116,182,37,184,255,0,85, +98,115,255,0,142,250,16,56,61,126,149,15,151,113,147,153,58,244,255,0,65,144,113,208,242,108,135,166,1,199,78,115,140,224,49,56,225,165,198,127,189,97,33,200,236,50,214,131,190,0,228,123,99,20,1,33,73, +191,233,223,219,16,88,142,127,239,217,28,241,208,103,222,162,104,231,238,246,171,236,97,176,254,177,103,191,95,254,189,70,97,60,21,186,0,158,0,251,3,113,249,195,250,250,228,143,81,9,137,191,231,237,249, +234,5,139,12,31,113,229,15,199,168,62,249,52,1,41,73,23,150,107,98,71,39,106,217,2,121,199,81,6,64,60,100,103,7,222,153,137,49,157,208,1,198,115,29,161,231,220,152,7,60,129,255,0,215,39,17,24,254,238, +111,29,64,206,127,208,8,233,140,134,196,68,114,57,206,51,219,29,13,60,68,15,31,109,108,142,132,89,56,235,208,127,169,30,188,117,61,125,104,1,174,178,227,37,160,61,134,5,178,247,237,136,127,207,74,140, +128,126,244,145,1,198,71,155,2,246,31,244,207,219,140,15,174,120,167,152,92,116,188,99,143,75,34,49,235,207,174,61,113,131,193,245,168,204,18,158,69,211,17,201,36,217,191,65,238,36,252,62,191,134,0,20, +172,56,31,190,143,142,78,39,129,155,56,247,133,135,29,58,103,167,24,234,198,16,244,89,128,224,224,137,45,127,249,23,3,254,250,29,63,10,105,133,198,119,93,140,99,56,54,179,3,206,123,239,35,211,31,210,162, +194,255,0,21,212,99,29,73,89,23,62,192,51,158,189,71,78,253,115,144,0,246,49,128,9,185,32,142,51,230,195,142,72,228,237,182,35,208,14,222,188,230,154,93,7,91,188,113,156,238,143,36,31,76,90,16,58,122, +143,173,70,81,58,139,168,206,122,224,55,30,188,145,211,223,61,125,243,75,176,0,49,115,25,199,81,243,14,120,63,221,199,229,208,247,244,0,120,120,0,255,0,143,229,199,28,110,81,233,206,69,166,115,219,175, +39,61,136,193,186,35,243,11,129,215,143,157,243,143,127,244,47,195,130,58,122,17,152,78,7,38,225,83,36,245,102,199,7,166,10,147,245,28,115,200,60,1,78,13,23,123,152,14,8,4,29,248,0,12,116,199,99,199,227, +156,102,128,36,12,135,134,157,72,35,24,50,56,227,223,253,17,142,127,14,189,105,24,38,78,217,35,110,135,153,100,238,79,60,233,252,14,191,142,105,172,241,113,137,173,84,224,99,116,111,143,175,45,223,251, +223,203,156,166,232,200,35,206,181,96,58,129,3,28,103,183,114,125,199,29,253,50,64,30,84,28,127,168,108,122,238,60,245,193,39,79,199,25,199,29,71,126,160,35,36,191,220,183,219,233,183,0,126,86,71,131, +143,97,248,17,77,2,30,162,107,101,62,191,99,99,244,63,123,158,58,113,199,174,120,164,194,143,187,113,104,6,127,134,205,212,231,158,114,1,29,186,244,233,237,64,3,6,200,220,150,132,118,201,152,99,167,97, +97,253,112,71,80,121,168,153,91,28,71,97,143,83,36,185,62,188,255,0,103,31,78,131,29,255,0,9,74,185,227,237,80,112,0,31,232,114,142,222,184,231,240,198,58,113,198,34,111,49,65,255,0,77,133,122,3,139,55, +92,122,125,249,87,61,65,233,187,174,120,226,128,26,99,124,99,203,176,57,60,225,156,28,245,255,0,160,119,94,157,134,7,99,217,134,57,14,71,217,172,72,245,5,255,0,64,52,236,122,117,36,255,0,42,87,146,81, +211,81,143,129,206,96,113,211,174,64,115,142,125,243,215,142,56,143,50,182,9,212,97,62,198,41,187,117,3,113,234,59,103,29,251,102,128,16,195,49,25,251,61,152,199,162,202,125,250,125,133,51,207,225,140, +247,228,68,240,201,156,27,123,77,199,166,216,164,39,56,198,115,246,66,6,121,56,235,200,167,176,115,146,47,208,123,8,229,227,142,64,195,158,189,241,193,237,147,81,178,92,146,10,222,140,30,226,57,84,14, +120,56,60,100,250,100,113,200,235,146,1,27,67,32,235,5,191,76,12,70,195,56,244,45,106,1,245,61,178,79,52,207,43,209,34,82,0,56,82,195,158,65,4,172,24,61,250,17,211,6,165,41,114,15,252,127,128,59,224,184, +61,189,206,49,200,56,227,234,5,38,203,142,79,246,128,60,127,207,121,23,156,145,208,110,199,95,78,113,207,90,0,139,103,172,42,199,28,252,242,41,28,227,60,218,17,237,145,232,70,123,83,26,48,79,17,70,24, +99,171,206,112,123,12,11,80,59,244,231,167,165,73,182,227,189,226,224,158,127,210,228,25,25,7,166,19,167,226,78,58,17,154,67,230,14,183,11,158,1,197,206,115,244,204,131,216,142,153,3,214,128,34,42,83, +31,42,231,4,225,76,227,175,63,243,235,193,199,61,79,7,234,106,50,234,114,25,14,114,7,18,220,169,201,245,34,14,188,118,199,225,210,165,98,224,100,207,156,142,113,57,198,72,236,4,252,250,241,199,169,170, +229,179,213,215,211,230,105,9,235,199,63,104,80,65,57,233,140,250,115,64,14,13,8,201,218,224,15,250,111,117,144,125,137,69,0,30,220,28,118,238,105,219,237,241,130,36,99,158,162,107,156,143,168,216,222, +156,231,243,244,140,186,119,96,49,217,82,66,6,56,255,0,159,179,238,58,145,234,121,230,54,32,243,146,192,18,121,89,199,175,113,120,78,121,245,62,153,61,40,2,95,62,220,30,147,122,113,60,131,3,130,79,250, +158,157,120,199,108,211,30,230,1,157,173,48,3,3,38,119,60,240,79,30,72,206,71,211,28,212,69,148,28,238,198,63,217,187,231,158,249,188,31,67,200,246,231,172,111,36,125,203,48,233,247,46,155,30,163,2,244, +140,243,146,120,236,120,20,1,49,158,19,212,200,123,144,68,172,58,158,114,98,218,122,28,117,230,152,211,91,30,190,104,3,174,22,79,207,2,32,8,231,158,189,241,142,106,179,24,135,247,186,103,253,77,201,207, +29,8,55,13,245,224,115,211,56,201,49,121,144,158,8,110,6,112,45,46,79,28,113,143,59,175,224,125,72,245,0,180,39,181,0,109,18,228,246,17,200,15,110,187,208,17,244,164,243,173,137,25,251,79,92,156,41,32, +115,223,32,31,83,201,227,175,97,154,102,84,227,106,75,233,255,0,30,151,32,250,1,196,163,211,235,223,167,32,220,9,39,99,244,36,131,109,118,167,235,159,53,129,57,232,7,167,67,64,22,255,0,112,217,199,218, +179,212,252,128,17,219,7,239,14,254,135,56,231,154,67,180,103,139,128,56,63,48,24,32,99,182,206,248,199,3,7,222,171,121,106,65,56,108,158,163,202,184,28,126,45,250,122,251,211,13,184,99,128,146,113,216, +139,144,62,184,13,140,31,229,140,250,80,4,230,72,179,202,73,198,63,133,73,250,159,221,28,240,122,100,126,89,195,15,150,115,132,147,234,85,113,207,208,122,30,73,198,51,207,90,140,91,12,238,104,65,24,60, +149,102,35,24,245,44,125,254,99,140,158,64,230,164,16,161,57,48,169,199,35,228,3,182,127,189,193,231,167,191,29,113,64,0,88,198,73,82,64,233,144,171,252,142,78,15,94,73,3,140,244,53,32,100,254,24,206, +112,1,249,142,63,82,113,250,227,212,102,152,45,209,142,86,8,199,251,94,83,146,120,7,174,242,1,252,249,234,113,140,72,45,192,255,0,150,105,199,39,8,195,240,63,190,4,119,198,71,185,237,64,15,243,24,16,85, +14,7,93,196,183,31,168,247,251,189,57,228,116,113,154,235,3,106,224,116,0,46,65,30,251,160,110,65,237,215,243,197,71,228,19,143,221,130,79,125,160,17,212,131,147,116,189,125,249,233,128,69,6,213,152,116, +65,131,198,89,1,193,250,221,158,49,239,239,142,162,128,38,89,110,177,254,172,54,122,143,37,72,224,116,63,184,7,167,76,12,28,96,231,128,36,91,137,200,230,5,207,28,249,10,196,126,30,73,227,35,166,115,223, +154,171,246,51,232,163,174,127,123,0,227,167,59,174,58,143,204,227,140,83,133,178,140,128,203,158,114,51,17,227,166,114,39,234,61,128,245,239,64,22,77,196,196,242,145,140,158,51,105,11,126,166,46,59,140, +1,129,158,70,105,187,174,156,240,169,208,144,69,170,47,112,7,2,53,252,57,192,30,148,137,2,40,7,122,253,62,67,208,158,49,246,129,211,56,224,117,201,60,84,161,97,201,45,41,24,28,21,69,39,183,80,183,24,234, +1,228,245,57,193,200,160,6,171,93,168,232,131,143,249,225,17,29,243,252,45,199,191,212,119,205,60,77,117,254,201,207,113,111,9,56,193,227,30,82,131,156,231,28,12,117,227,138,9,132,130,4,146,244,198,124, +161,215,223,253,35,215,241,193,250,83,55,46,73,223,38,1,244,69,36,242,50,73,155,129,219,144,127,49,64,18,9,110,51,146,19,220,27,107,93,167,56,244,136,227,57,25,237,142,199,156,49,165,144,240,219,49,237, +13,170,99,0,255,0,176,164,142,7,76,241,223,3,136,140,137,158,146,159,163,149,233,215,56,148,14,125,70,56,235,78,50,67,143,155,205,25,255,0,166,207,207,81,206,46,51,233,215,166,123,208,2,239,110,224,0, +122,101,109,241,215,168,43,34,12,30,122,96,119,80,58,7,110,97,157,172,61,56,48,168,252,64,186,35,169,235,140,123,211,4,176,41,227,207,99,142,79,159,40,60,245,225,102,201,232,59,227,167,94,13,60,92,66, +49,133,144,158,120,105,46,113,232,58,74,58,227,175,95,95,96,6,19,41,31,43,174,64,56,31,232,196,140,12,14,183,24,57,207,92,126,125,218,5,207,82,88,241,213,90,220,100,244,232,38,56,3,219,175,113,197,76, +110,23,248,96,114,72,235,231,220,168,246,227,237,32,113,215,61,243,76,55,14,120,16,63,225,61,200,239,211,38,224,145,215,142,222,167,165,0,55,117,200,232,178,241,158,119,91,18,73,201,232,210,1,143,114, +71,94,51,214,154,100,188,56,34,43,166,231,56,45,101,142,185,227,14,79,25,233,220,142,122,112,239,54,108,241,28,171,131,255,0,63,119,31,95,249,238,62,188,244,235,142,41,219,230,99,202,73,199,253,68,110, +198,79,251,65,103,36,3,142,152,236,49,140,102,128,35,255,0,75,96,115,20,252,231,39,22,100,14,15,247,103,7,215,160,207,31,90,112,251,88,229,82,228,14,225,69,177,39,39,56,255,0,143,145,140,103,39,29,9,227, +52,242,242,243,145,48,237,129,169,94,103,235,147,50,241,212,30,51,192,233,214,148,18,121,100,152,100,3,131,127,114,84,254,15,112,114,113,130,78,7,92,125,64,34,47,120,8,253,213,241,24,237,29,177,57,252, +111,185,250,145,219,233,78,18,94,16,63,115,124,127,237,157,182,121,29,8,251,99,126,67,145,131,158,41,204,231,180,110,123,113,121,57,39,25,192,255,0,88,15,60,103,25,7,60,231,28,166,114,62,104,8,227,159, +244,153,15,60,117,203,117,239,201,252,77,0,35,27,161,193,181,191,56,3,36,71,108,192,31,167,218,58,99,223,241,168,195,207,212,218,234,39,167,252,177,181,29,125,113,119,140,126,94,190,244,252,39,4,194,115, +234,183,71,60,227,0,128,253,70,49,131,142,72,160,152,49,131,17,250,155,135,200,57,201,228,59,99,242,246,232,51,64,12,243,79,86,181,212,122,227,253,84,29,115,145,255,0,47,234,127,0,49,156,82,139,128,48, +26,211,81,199,114,96,136,49,227,29,78,165,219,233,198,121,36,210,237,182,237,9,235,207,250,75,143,204,135,83,250,227,208,211,135,217,134,20,218,131,198,64,107,167,56,4,117,25,157,56,36,147,206,87,56,35, +158,128,7,159,30,114,45,181,33,159,250,119,82,63,12,106,39,25,245,24,29,185,238,227,56,35,136,53,34,49,198,97,43,156,118,255,0,144,145,25,235,216,125,70,41,133,109,134,74,217,197,145,220,203,43,30,189, +79,250,72,193,30,228,227,159,83,81,237,182,111,191,103,7,81,144,211,55,92,147,147,186,235,144,58,240,51,233,144,113,64,18,249,146,16,0,182,212,177,220,136,228,35,212,231,109,243,17,216,123,253,104,166, +8,108,207,31,99,180,12,115,140,187,115,239,255,0,31,59,178,126,131,184,231,57,162,128,39,9,126,62,237,178,128,58,226,43,128,59,156,243,145,208,254,167,165,13,22,160,122,91,231,3,4,8,174,51,211,35,238, +145,207,76,3,192,244,233,82,254,231,57,251,60,99,215,49,94,144,57,3,178,12,103,223,24,228,231,168,160,181,177,4,53,178,19,142,0,142,253,49,219,7,35,185,60,246,207,181,0,86,242,47,199,6,12,19,253,228,187, +227,240,220,15,249,250,208,34,188,29,99,65,219,253,93,233,193,199,79,150,76,122,123,243,211,210,97,37,160,99,139,68,62,135,55,223,203,204,92,31,94,1,246,25,52,166,75,38,221,254,136,128,116,206,111,135, +62,188,185,207,64,112,15,76,117,193,160,8,196,51,183,85,132,116,35,253,26,241,176,56,201,251,199,57,227,169,35,62,153,160,195,40,56,41,109,207,118,182,156,12,143,247,137,35,143,231,208,118,121,251,7,123, +116,25,255,0,106,243,208,250,202,113,250,14,61,233,54,88,177,199,147,211,56,1,238,193,233,219,247,203,158,217,199,25,235,64,13,54,243,227,10,45,199,63,243,206,97,223,145,242,128,7,112,71,108,243,200,168, +218,218,96,121,54,220,103,170,205,143,195,41,207,81,193,231,189,79,178,207,128,34,149,125,195,221,227,142,220,202,223,76,30,61,41,118,218,12,156,206,7,191,218,191,246,87,232,61,125,206,114,104,2,153,183, +110,127,121,110,113,158,66,185,35,142,163,17,28,126,189,122,212,126,74,242,26,104,49,207,6,57,59,118,193,140,245,233,156,130,59,245,53,125,133,191,240,75,40,244,249,174,135,254,204,71,183,32,142,222,130, +162,37,7,252,181,62,229,204,237,211,30,160,244,25,231,7,183,90,0,166,109,226,4,1,113,107,147,212,24,101,0,118,36,147,9,253,61,186,116,165,242,98,4,15,180,218,145,147,140,70,224,244,198,115,229,228,227, +177,244,227,29,106,82,233,200,23,17,41,57,228,249,190,135,168,10,8,207,28,31,199,154,85,56,255,0,151,152,199,82,14,88,99,183,241,119,30,184,30,190,192,2,1,2,99,62,125,177,228,112,3,169,235,223,116,7,57, +238,115,233,238,67,188,168,192,200,150,28,128,115,201,25,233,255,0,76,0,227,235,142,184,239,78,37,137,98,183,73,142,123,168,25,28,12,147,38,70,71,66,50,63,16,48,211,230,144,72,187,139,4,96,13,208,96,241, +211,239,31,161,231,62,189,121,0,2,140,145,189,7,25,4,72,195,175,3,162,140,103,182,59,99,28,156,83,89,209,115,186,101,29,1,37,229,192,239,253,229,252,200,231,167,24,57,118,103,28,125,162,0,56,239,3,116, +192,60,249,128,100,246,198,15,7,61,242,140,196,253,235,187,49,216,110,16,140,99,212,111,235,158,122,251,30,162,128,26,39,181,233,246,165,30,217,118,36,253,124,192,59,228,250,159,94,113,38,109,73,200,152, +55,190,215,201,207,96,124,195,215,142,131,191,83,77,86,92,224,220,233,205,158,197,98,62,159,244,212,247,253,57,25,236,191,33,224,205,167,3,220,17,30,0,231,143,245,185,231,158,221,120,25,235,64,15,17,219, +17,144,200,196,231,130,236,73,252,212,156,129,239,210,148,69,22,56,85,63,73,24,224,243,212,0,49,207,95,211,189,3,201,24,6,125,51,112,235,141,160,247,227,30,105,193,32,126,29,207,171,194,219,158,178,105, +236,15,66,93,15,254,132,224,99,62,195,232,104,1,162,24,70,115,22,122,244,115,140,156,231,212,254,189,56,205,52,195,7,63,186,97,211,163,255,0,67,32,231,156,112,58,247,60,211,202,91,116,13,167,227,175,33, +95,63,130,187,99,167,39,7,243,168,252,155,92,124,194,192,19,131,247,48,121,255,0,128,30,125,79,230,40,1,13,189,185,198,119,15,80,175,142,71,174,92,147,215,28,14,58,142,244,162,218,215,156,150,255,0,129, +50,18,71,94,234,223,254,188,123,83,124,155,44,116,180,247,59,27,25,207,178,99,233,211,183,173,52,219,218,103,0,218,16,122,2,29,87,158,255,0,50,125,127,14,222,128,11,246,59,70,206,226,135,145,140,189,184, +32,140,156,229,161,57,200,39,159,95,126,41,255,0,96,180,198,54,228,16,121,223,111,207,65,201,91,126,249,233,131,212,246,206,96,251,36,7,238,165,155,12,99,1,75,115,207,76,167,30,216,60,145,205,72,45,35, +224,136,45,134,49,200,11,201,236,73,32,144,112,51,144,115,232,123,128,5,251,13,162,244,143,156,127,207,68,60,147,198,51,107,143,205,189,179,232,27,88,0,227,112,236,112,98,199,208,230,17,215,255,0,214, +41,166,212,30,54,192,6,61,83,229,234,14,14,195,199,225,248,129,213,226,219,209,151,56,39,8,34,200,255,0,199,49,130,114,1,7,220,250,80,4,98,24,20,156,180,128,123,121,108,61,7,247,113,140,17,207,174,61, +169,194,56,0,199,155,41,239,141,176,129,236,63,214,47,191,32,112,122,142,197,69,163,114,119,17,237,132,253,78,1,56,231,158,122,247,24,20,245,182,152,12,121,164,14,223,62,57,24,192,24,97,142,157,179,211, +61,232,1,155,96,7,239,176,207,124,198,49,156,231,161,32,103,29,65,166,254,235,248,100,44,115,253,232,200,61,123,111,7,223,211,7,184,201,171,66,7,57,2,235,7,208,182,120,252,28,28,116,207,29,114,123,10, +127,147,50,228,11,148,247,220,195,57,255,0,190,198,63,63,235,144,12,242,19,175,238,241,200,251,231,61,57,251,179,130,56,63,253,124,82,13,132,28,108,200,31,40,197,193,200,231,251,183,94,231,61,201,24,173, +61,215,35,143,61,72,199,76,177,31,164,184,39,175,124,254,84,190,100,227,239,76,192,1,206,30,117,28,112,49,178,66,71,110,59,140,14,216,0,25,37,100,108,99,156,158,15,149,123,158,15,94,46,27,131,206,125, +71,168,167,4,184,199,222,96,59,1,13,216,61,121,198,101,200,246,36,228,122,26,213,221,57,192,243,229,3,190,30,245,189,200,4,56,245,252,63,50,94,169,51,28,137,165,99,147,130,127,180,137,252,54,200,112,63, +51,156,243,142,128,25,66,57,143,57,144,246,198,203,182,227,208,229,199,35,36,158,113,233,79,16,206,120,17,78,50,51,159,34,228,142,78,79,87,227,128,59,28,126,24,173,54,73,198,63,214,56,218,121,35,86,56, +61,255,0,229,232,115,245,231,175,21,22,214,254,37,7,61,191,226,104,167,61,243,153,207,227,159,167,57,20,1,67,236,183,56,63,232,242,158,114,15,151,119,156,227,176,0,130,58,126,185,167,165,164,249,32,195, +40,206,122,91,221,48,28,251,166,61,57,3,185,230,172,236,4,114,184,228,140,102,252,140,240,7,62,103,83,215,7,161,235,128,69,2,50,122,46,123,96,13,64,116,30,163,39,56,199,175,65,140,145,64,16,125,146,80, +49,228,79,198,7,252,122,221,158,61,136,140,15,199,4,125,51,196,139,102,231,159,42,112,7,111,178,220,123,240,115,30,70,57,233,207,175,28,211,204,109,221,73,4,119,55,253,7,24,0,156,231,211,131,201,247,167, +139,98,78,10,100,142,197,46,71,28,117,222,135,212,241,147,249,80,2,45,152,94,118,93,14,184,219,111,112,56,231,174,83,142,189,179,129,223,52,239,179,1,130,82,231,130,121,48,190,50,73,224,6,65,158,153,206, +125,243,208,211,197,168,237,180,113,206,232,238,15,166,57,48,140,103,24,238,115,234,50,104,54,174,7,252,177,199,114,209,79,208,99,161,242,56,247,250,247,160,6,249,48,131,204,114,185,235,131,31,235,219, +191,95,92,14,189,155,181,23,165,172,135,3,146,97,83,129,158,255,0,48,207,80,7,76,14,58,83,90,60,31,152,196,58,28,175,154,50,79,95,189,111,223,252,128,115,72,85,6,63,124,189,57,27,185,7,232,109,91,183, +57,60,113,211,158,64,37,93,191,243,236,0,63,222,134,49,158,185,206,58,143,76,113,142,51,200,53,34,136,0,207,144,128,244,251,145,254,28,22,29,123,158,120,7,233,85,213,23,60,72,228,159,238,152,143,95,118, +181,25,30,195,57,227,29,41,205,1,199,250,199,36,240,1,75,124,243,143,75,98,6,63,253,89,236,1,96,61,184,3,247,73,187,140,229,21,125,112,70,39,29,248,233,192,199,189,56,73,106,79,54,232,123,241,44,99,4, +147,215,51,177,239,211,160,233,147,222,167,144,216,226,73,242,49,143,146,216,117,237,159,178,140,100,227,4,112,48,7,173,39,146,127,231,164,199,147,213,45,135,35,159,249,247,245,7,140,113,237,156,80,6, +137,150,209,79,252,122,196,57,57,223,58,242,79,60,129,39,183,94,255,0,134,67,5,197,175,24,179,181,61,176,211,38,61,63,140,228,122,228,113,211,181,85,22,199,140,238,39,140,103,200,207,30,160,70,49,219, +183,60,251,211,140,44,51,202,242,8,39,108,39,30,192,20,39,143,167,115,159,90,0,186,179,90,145,147,99,107,147,212,139,168,253,251,111,24,247,193,24,207,2,164,18,90,150,255,0,143,43,48,112,64,63,107,136, +31,251,232,220,15,175,66,125,185,53,151,177,70,115,159,167,145,6,121,207,66,74,159,211,29,184,224,212,171,30,121,85,83,219,152,237,70,115,255,0,3,206,126,159,74,0,190,30,30,158,85,178,28,240,70,161,8, +199,161,32,92,12,250,242,123,243,223,50,9,97,237,228,140,130,126,93,70,223,131,223,24,190,30,189,113,245,237,84,22,39,206,126,199,11,147,216,173,160,39,140,158,3,119,193,35,219,241,169,150,51,140,53,165, +184,39,3,12,176,13,190,164,148,144,122,143,243,212,2,215,154,163,144,241,140,49,56,251,116,103,57,35,156,139,220,12,1,201,228,240,78,113,64,156,3,157,241,14,156,54,161,24,200,193,233,254,155,158,49,239, +212,227,24,21,6,17,120,251,37,159,185,249,115,142,231,253,118,49,145,159,240,165,2,60,243,109,106,15,177,65,142,7,64,103,0,227,233,220,126,32,18,153,139,16,65,182,206,71,38,237,95,191,124,94,12,243,215, +159,110,226,129,52,135,238,189,184,237,242,207,22,14,9,35,25,212,20,140,100,103,182,121,244,166,5,140,115,228,90,140,99,140,199,159,214,82,6,123,28,243,145,216,241,38,232,129,207,149,108,163,190,26,35, +237,156,111,61,0,7,190,78,115,216,208,3,214,73,184,196,202,51,233,113,24,254,90,152,56,199,82,62,157,233,251,238,72,249,101,99,199,35,237,3,35,35,174,78,164,120,231,142,64,199,57,234,106,0,208,114,10, +70,7,60,135,94,59,245,87,5,120,252,48,7,57,234,245,120,114,8,242,192,31,244,212,158,123,18,3,149,239,235,255,0,215,0,119,155,112,14,76,142,72,207,63,104,67,146,79,124,234,15,216,119,235,211,166,106,68, +150,108,242,79,253,247,25,200,39,190,219,174,159,254,179,199,86,7,135,35,46,7,209,148,156,159,81,187,61,206,48,123,147,158,64,167,239,133,112,69,203,168,233,133,136,55,39,190,73,63,78,121,63,157,0,78, +37,126,1,68,203,119,103,136,100,227,57,32,76,196,158,167,147,216,245,238,245,148,156,238,142,0,120,228,188,61,243,158,76,222,184,60,140,144,15,122,174,37,135,112,2,237,216,244,218,96,25,233,142,171,233, +253,6,8,239,42,48,39,254,62,230,0,115,204,37,71,94,112,10,156,142,8,28,251,231,173,0,76,28,99,62,85,185,39,253,184,187,251,9,121,61,241,235,235,74,185,57,62,76,75,201,199,207,10,240,8,231,59,193,252,207, +160,235,66,188,96,228,221,183,168,38,39,255,0,226,71,67,158,56,250,129,128,23,204,132,100,249,225,137,255,0,166,50,2,122,28,242,49,245,224,99,158,248,4,1,193,164,57,34,56,182,250,153,162,207,243,63,94, +249,39,190,40,243,220,127,203,4,110,252,79,3,113,211,39,112,25,207,111,111,165,70,39,131,159,159,57,231,136,95,0,255,0,223,190,189,56,250,119,205,56,79,17,228,72,224,113,213,15,127,78,227,190,48,0,227, +181,0,60,220,182,6,109,208,113,252,63,101,110,120,199,86,57,199,94,153,227,208,242,45,192,110,144,38,61,124,171,78,51,142,191,55,39,234,123,112,41,130,120,128,200,46,126,137,239,142,235,208,227,215,158, +185,61,228,19,41,36,133,110,255,0,195,216,123,109,193,29,71,56,198,115,199,2,128,30,174,135,57,137,65,60,255,0,170,181,61,186,31,155,240,254,89,205,39,152,164,140,109,81,223,11,110,61,15,31,48,30,252, +247,232,40,19,19,144,35,127,115,182,63,94,196,231,235,142,248,252,41,249,200,4,164,163,158,128,68,56,207,94,156,231,182,127,81,64,17,239,3,164,174,173,232,166,2,61,51,196,153,31,142,123,138,4,143,218, +89,14,122,147,228,254,60,110,198,122,122,26,127,154,170,72,195,146,51,140,249,30,231,24,44,14,222,185,227,142,152,237,78,91,144,49,145,40,246,81,110,7,65,207,223,231,3,176,201,245,230,128,1,60,128,131, +231,202,15,95,189,0,250,113,230,103,175,175,166,122,241,82,125,166,66,9,105,164,35,212,152,8,227,56,57,47,192,60,250,12,115,154,112,186,35,63,187,156,242,15,91,92,158,221,55,103,57,231,215,191,25,230, +69,184,98,49,229,221,17,198,64,22,227,0,123,9,208,30,188,117,199,60,208,4,34,121,91,164,237,248,172,7,7,167,36,57,235,143,175,76,156,113,71,153,112,56,251,90,175,92,130,97,81,216,250,156,227,161,4,231, +143,74,178,46,176,15,238,167,56,4,125,219,108,227,241,149,242,78,72,201,231,160,228,80,110,80,245,130,117,199,94,109,9,207,76,21,243,23,30,188,117,193,233,146,72,4,1,238,250,253,173,120,232,68,145,142, +152,244,221,249,112,64,3,25,206,11,132,250,128,251,183,125,120,200,151,175,25,254,226,231,158,78,15,28,130,120,197,63,206,135,57,43,34,158,122,173,184,231,156,255,0,203,207,235,147,215,183,20,225,45,179, +3,158,71,191,217,84,119,239,230,183,61,6,127,149,0,51,206,212,15,45,112,205,142,15,239,78,59,100,251,250,103,142,58,100,142,94,178,93,177,230,80,115,198,11,179,15,174,66,183,30,248,246,199,122,103,155, +8,3,111,148,64,32,124,205,17,235,235,182,95,211,191,191,52,25,98,39,230,142,19,192,198,30,49,142,157,132,221,249,206,120,227,158,121,160,9,243,32,229,157,78,122,145,49,86,207,202,112,217,131,156,31,94, +252,246,167,130,224,227,206,140,228,31,249,108,228,140,100,99,2,3,248,140,103,240,193,170,155,161,111,224,140,255,0,219,72,198,127,241,246,227,29,6,58,14,15,24,164,101,141,73,5,96,29,134,101,67,142,192, +101,92,241,212,114,61,56,32,242,1,115,44,114,76,208,3,158,55,22,61,185,193,54,192,142,185,35,190,70,1,0,146,108,102,60,220,64,58,240,90,84,31,92,139,112,49,248,224,99,25,60,129,88,42,50,227,125,175,168, +6,64,15,60,99,3,243,35,28,129,215,165,55,202,70,36,134,180,0,117,35,44,7,62,209,49,227,156,140,240,57,230,128,46,172,3,28,220,91,176,56,63,235,228,252,185,131,0,129,199,166,56,167,121,49,28,126,254,216, +12,1,254,184,142,157,62,244,32,251,227,146,61,123,85,47,179,169,57,18,91,183,186,199,41,31,164,71,175,126,49,205,47,145,143,225,132,227,168,41,40,250,100,27,98,79,212,159,76,243,64,22,196,86,223,197,113, +111,145,221,103,32,224,255,0,219,19,211,24,239,212,241,78,48,217,142,151,22,131,29,218,119,60,255,0,224,57,227,56,227,35,145,214,169,136,95,63,187,134,34,9,254,24,229,231,25,238,44,207,61,206,115,142, +0,207,38,148,195,49,31,61,182,122,140,40,147,39,61,15,205,96,224,116,61,15,166,61,128,44,121,81,130,74,207,102,217,244,145,184,252,74,15,208,96,143,74,105,0,28,121,214,249,207,240,135,124,3,238,160,103, +142,199,191,165,64,176,54,127,213,74,164,123,30,152,231,174,154,64,3,233,233,143,74,113,133,128,60,76,72,232,84,237,237,201,255,0,144,73,31,94,121,246,197,0,4,57,39,50,70,192,3,200,138,76,99,211,146,113, +223,0,254,124,226,155,246,125,249,203,71,248,196,249,36,112,127,143,35,146,122,96,15,94,49,76,193,220,65,142,115,244,44,73,25,57,32,141,47,158,57,30,156,159,122,141,128,28,24,166,57,61,229,42,122,117, +63,241,40,234,123,228,140,241,215,20,1,40,183,57,192,17,49,231,164,71,57,252,91,57,61,135,29,115,79,48,184,232,138,61,252,178,15,167,80,195,223,24,0,158,59,158,107,40,92,231,202,149,121,200,197,195,116, +239,207,246,122,125,49,208,255,0,36,103,101,57,88,101,32,14,175,124,235,249,127,162,2,125,49,254,52,1,100,195,115,145,182,54,57,233,251,169,79,242,98,121,239,244,233,198,76,130,11,210,6,23,30,153,138, +97,199,3,160,97,158,79,124,227,160,199,21,80,77,113,221,92,115,208,95,205,140,246,13,182,216,99,221,185,56,224,14,105,197,228,43,251,197,37,79,253,63,221,227,244,141,64,198,113,142,159,143,64,11,94,77, +240,199,201,144,58,145,4,185,237,211,247,192,254,120,232,120,29,41,194,43,166,24,242,164,207,63,242,239,114,56,31,73,31,24,24,250,15,165,84,221,24,63,50,160,0,244,55,215,199,158,123,241,200,255,0,56,25, +169,85,161,60,132,136,242,57,251,117,216,247,56,38,82,121,232,115,235,215,181,0,79,229,93,99,2,9,155,56,35,108,55,99,28,231,61,72,31,128,30,167,158,179,37,189,194,141,207,20,185,237,152,238,193,255,0, +208,120,233,211,113,198,126,184,163,186,46,162,8,143,60,110,188,186,63,171,76,50,125,197,27,227,199,49,194,167,209,110,103,201,252,76,249,239,234,70,120,234,113,64,23,246,76,9,253,204,199,140,128,22,232, +28,159,248,1,193,61,242,63,17,145,144,249,195,173,181,192,25,199,38,240,31,210,34,123,31,211,142,181,157,186,31,238,35,14,153,23,82,156,244,235,251,227,208,231,28,119,235,70,248,251,71,142,115,159,62, +232,130,51,192,234,248,207,29,7,76,244,200,200,5,198,243,73,193,138,76,115,156,253,184,158,227,4,152,88,251,244,206,125,57,167,12,100,230,25,137,247,91,220,115,220,145,107,156,245,60,228,156,123,26,162, +12,36,252,201,10,158,79,51,221,22,237,158,177,156,103,233,248,115,82,17,104,72,14,171,207,253,54,151,142,189,65,183,198,51,208,147,158,71,28,102,128,44,144,131,159,34,118,61,48,22,231,31,134,251,67,199, +177,230,144,162,158,124,137,84,100,245,107,133,57,29,56,26,121,199,233,220,243,85,202,233,203,207,221,61,246,187,99,175,76,155,102,250,228,247,60,119,37,63,208,192,251,242,103,31,222,4,12,142,6,62,200, +61,57,198,121,253,0,38,101,3,141,142,57,39,151,156,113,212,1,187,78,0,100,96,113,198,122,158,185,136,152,207,80,160,99,4,180,227,35,61,120,251,40,60,19,233,145,250,85,114,109,178,78,231,199,96,72,80,122, +244,2,204,158,63,46,156,242,105,132,217,30,114,195,36,244,98,73,234,122,253,140,117,235,208,142,195,174,72,4,229,145,127,231,151,76,3,231,2,199,142,249,136,15,255,0,89,205,71,189,59,200,6,114,126,86,82, +71,79,64,115,158,57,227,191,30,173,6,199,160,73,73,28,231,204,108,253,127,227,216,113,211,168,199,76,117,53,40,251,40,60,36,135,191,18,201,223,29,197,182,61,73,231,166,56,230,128,35,47,208,121,210,0,64, +232,19,158,221,241,215,146,70,125,73,167,151,99,201,158,92,99,166,98,227,25,224,13,254,253,63,174,105,223,232,167,36,164,255,0,132,174,122,253,81,125,6,112,49,154,99,45,177,227,101,215,56,24,18,190,72, +62,254,96,61,61,1,235,208,113,64,17,201,188,227,108,210,128,61,237,251,99,39,30,110,71,226,7,0,224,114,42,2,238,191,242,243,33,246,45,7,166,8,0,77,198,62,159,81,205,89,242,173,201,192,23,121,239,153,25, +135,254,61,47,79,203,25,224,154,141,146,49,199,250,80,56,3,239,224,14,253,4,152,60,127,142,120,160,10,141,59,47,252,183,152,241,192,87,233,236,71,159,199,124,227,160,198,42,38,184,36,17,186,108,142,51, +149,28,247,235,116,51,215,174,51,145,205,90,34,49,144,69,209,247,243,73,250,12,6,32,250,116,60,147,210,152,168,184,194,173,208,28,117,121,31,242,231,156,115,233,138,0,170,211,145,140,60,252,240,71,204, +199,156,227,5,110,177,244,7,4,241,211,156,66,110,66,228,127,164,54,79,7,47,130,73,39,169,185,56,199,76,12,119,36,117,205,237,152,251,223,106,30,188,49,199,254,62,14,125,6,56,198,14,104,97,198,2,207,199, +114,72,108,142,58,100,247,247,7,223,20,1,156,102,144,255,0,5,193,29,126,105,74,142,163,129,251,210,15,39,211,130,122,146,72,166,179,57,35,116,124,99,31,53,199,39,221,113,40,193,28,240,115,245,226,173, +178,96,228,172,217,32,144,118,171,125,114,198,69,193,57,39,158,248,207,112,107,29,153,110,110,114,14,126,104,227,192,200,29,63,210,14,125,128,244,228,122,128,87,103,57,80,97,220,15,24,243,139,1,156,145, +146,38,32,99,131,207,108,241,212,212,37,208,28,53,179,16,78,72,12,224,112,79,165,200,3,7,190,79,225,222,193,242,129,12,197,143,76,230,43,76,254,33,230,39,7,244,60,116,235,19,205,8,225,153,142,6,121,181, +179,192,24,228,18,36,231,175,92,142,131,142,70,0,34,50,67,255,0,62,4,250,98,115,198,120,232,110,120,231,166,64,233,199,74,110,235,114,63,227,199,25,207,222,144,48,253,103,201,228,246,192,57,207,126,24, +243,199,187,32,49,245,205,189,136,25,35,184,51,3,244,31,142,113,210,51,42,54,65,132,31,115,111,167,129,220,158,77,208,199,191,83,158,13,0,72,222,71,107,104,215,3,162,184,239,245,159,7,158,192,255,0,83, +76,34,14,7,217,35,29,121,47,23,65,223,6,98,115,145,140,28,146,121,245,195,12,168,188,52,40,49,211,247,90,106,156,144,64,28,223,122,118,192,7,3,174,42,63,53,9,33,98,136,96,255,0,18,105,190,221,254,212, +70,70,15,0,158,50,70,123,0,74,124,190,130,219,160,199,6,34,15,191,13,192,57,207,127,165,70,98,137,143,205,104,157,0,249,130,131,128,122,228,134,206,113,232,123,84,109,35,14,68,112,1,215,34,27,38,201,224, +13,219,110,112,58,14,63,78,105,191,104,100,207,203,111,187,24,193,181,180,236,122,110,251,65,207,190,49,239,130,114,0,36,49,196,163,139,62,15,166,220,247,199,252,179,237,248,143,233,9,11,218,216,227,158, +50,157,58,245,104,241,144,121,199,108,142,185,160,93,79,147,133,180,250,24,173,129,0,122,98,118,60,243,158,121,29,51,205,52,220,200,114,118,91,244,254,4,128,113,234,64,147,167,62,227,166,79,2,128,23,108, +100,255,0,199,166,15,169,120,191,48,10,96,142,220,14,59,14,153,107,99,63,234,89,65,228,97,225,35,219,141,135,167,110,48,121,166,137,165,60,133,139,57,227,34,16,56,250,49,253,8,39,159,122,81,45,198,115, +229,197,147,199,167,39,175,220,97,215,232,115,158,152,197,0,12,188,159,221,74,59,231,124,39,142,51,140,195,198,58,30,191,157,55,229,60,20,151,140,100,9,44,199,76,242,1,135,143,203,183,108,83,197,205,208, +227,108,99,7,3,37,198,56,199,252,243,63,204,224,156,103,131,79,51,92,158,162,18,113,142,21,251,103,128,124,150,224,123,15,196,103,128,8,66,33,35,2,108,122,111,179,207,67,215,17,123,116,32,255,0,60,47, +144,24,240,147,100,18,65,51,89,12,242,127,233,151,177,236,127,34,5,78,38,184,193,33,34,206,123,51,47,39,142,115,8,39,39,191,224,70,105,223,105,187,28,17,199,253,117,114,56,60,159,245,39,28,116,199,61, +64,52,1,91,202,231,171,169,231,131,113,101,223,156,227,201,207,215,184,207,226,2,164,147,151,227,31,243,241,100,50,115,215,136,143,56,232,120,224,122,227,19,155,187,144,72,8,84,96,255,0,203,89,7,29,79, +72,114,125,187,159,78,180,9,231,57,12,72,199,76,220,72,64,192,245,48,17,223,61,112,115,207,20,1,0,135,29,72,96,57,201,158,220,115,245,88,201,39,183,183,110,162,151,133,63,41,85,247,55,42,9,61,127,133, +15,225,233,198,112,8,196,190,109,199,99,30,122,146,210,159,94,113,136,9,227,211,174,127,50,166,123,189,184,30,81,201,25,196,211,96,119,237,110,122,115,193,192,25,206,40,2,16,217,36,153,7,56,31,241,244, +88,241,156,244,129,134,125,186,126,181,32,47,192,12,164,99,171,76,224,99,182,73,137,71,115,235,219,131,147,74,37,186,228,144,156,242,119,79,56,60,244,206,99,234,14,127,50,41,223,191,108,243,7,39,160,158, +108,243,235,133,82,58,243,193,239,147,214,128,26,86,83,211,102,71,92,92,150,237,211,2,48,7,183,32,247,201,164,217,116,57,3,183,81,57,192,56,199,116,35,25,246,56,245,34,147,204,145,120,6,48,113,218,121, +192,245,61,249,198,71,65,223,223,32,105,39,28,134,95,251,249,116,127,28,9,7,161,234,15,183,99,64,7,250,96,207,4,125,38,224,247,254,226,251,159,240,236,204,220,147,255,0,45,9,228,29,178,169,56,193,206, +114,126,188,159,210,143,50,98,70,239,40,231,251,207,114,163,60,156,242,249,0,246,36,12,242,114,49,78,17,200,199,59,160,246,204,215,0,114,56,35,247,128,127,94,152,35,140,0,32,105,207,222,55,25,232,49,52, +92,158,132,12,176,238,58,228,117,20,153,156,114,13,200,24,206,77,197,174,71,95,239,22,56,253,123,118,160,198,224,224,249,36,140,96,153,36,110,248,29,101,7,28,0,115,244,227,130,80,43,146,15,151,8,35,140, +131,55,114,113,210,96,57,250,156,224,123,208,3,241,43,117,150,231,7,3,253,125,137,39,190,78,228,198,58,115,145,254,46,242,230,7,159,59,28,242,102,211,121,61,71,222,56,236,51,147,207,225,138,136,151,207, +43,111,215,144,86,98,112,58,255,0,203,218,242,112,0,232,125,186,2,239,53,80,96,173,183,215,108,160,231,158,57,189,35,223,142,61,168,1,196,72,6,31,206,94,120,34,227,74,36,99,147,242,128,65,247,36,14,248, +239,81,25,28,31,146,75,236,14,232,116,198,31,81,130,188,14,159,135,30,239,23,17,169,228,91,17,235,181,192,30,231,23,88,192,238,72,201,245,226,164,251,76,45,192,91,67,140,96,102,65,244,201,23,99,39,211, +191,229,192,4,38,115,142,90,255,0,183,95,236,204,241,199,95,48,251,156,30,157,184,197,70,210,161,32,147,122,123,30,116,240,115,207,247,101,246,244,245,171,62,120,237,29,166,59,115,62,127,28,220,177,254, +135,156,250,82,25,198,114,99,182,0,250,25,179,223,160,243,113,143,124,118,247,36,128,65,230,47,92,95,55,61,205,150,122,243,206,227,216,119,62,221,113,75,230,160,228,65,118,122,118,179,35,168,63,194,235, +248,112,61,14,41,254,121,4,145,228,175,92,102,41,114,59,112,76,156,231,175,79,64,6,41,201,59,28,130,182,249,29,252,171,133,239,192,249,95,29,121,228,19,211,156,96,0,6,11,146,58,90,220,184,3,57,41,108, +59,119,42,231,220,251,126,20,211,113,39,107,91,160,15,35,11,111,142,221,7,152,14,57,239,248,30,198,113,38,73,57,139,35,168,2,236,14,63,224,88,25,246,247,224,84,131,15,128,20,115,129,149,55,121,234,71, +39,160,200,60,100,123,129,222,128,41,253,166,66,113,246,107,172,231,31,118,220,250,246,14,220,15,115,220,242,105,12,204,115,139,107,192,220,99,247,113,128,121,30,132,140,255,0,245,251,245,188,85,185,2, +50,64,61,154,224,145,245,202,103,167,7,158,190,244,162,57,6,7,217,216,110,227,57,186,4,158,113,143,221,227,156,113,192,63,76,130,64,41,6,151,57,107,107,140,99,190,58,14,58,47,78,58,1,147,156,96,140,210, +115,193,251,28,188,231,170,201,207,215,228,56,61,253,127,48,106,232,130,115,200,182,151,142,114,5,203,116,239,147,25,200,250,126,189,149,150,64,6,232,24,251,21,147,39,62,198,33,129,193,252,143,61,40,2, +144,221,218,214,80,57,207,250,222,63,40,113,131,142,122,115,147,142,244,164,49,57,242,100,207,67,145,40,199,231,110,127,28,112,56,171,30,153,183,62,184,49,62,65,233,198,84,122,122,103,244,164,198,58,218, +70,221,249,14,9,231,169,218,235,244,228,224,142,160,208,4,5,36,201,218,135,167,66,110,64,201,247,91,82,58,247,28,140,126,20,158,84,196,18,70,23,212,73,114,79,108,240,109,7,99,239,83,112,199,254,60,84, +103,60,143,63,57,231,183,152,65,252,142,122,14,156,56,35,140,98,196,17,207,107,130,71,62,239,129,199,96,6,70,48,78,104,2,186,194,227,39,104,57,255,0,166,147,2,125,48,62,204,63,196,119,244,33,134,67,255, +0,44,70,122,159,158,99,234,120,255,0,70,0,119,207,169,199,0,158,108,126,255,0,175,216,20,118,5,150,225,71,25,238,36,198,58,113,142,184,239,77,47,113,208,89,194,7,174,46,24,245,25,233,48,198,125,48,7,182, +120,160,8,68,78,189,17,58,140,229,223,215,140,102,220,247,56,254,164,138,147,5,113,251,177,145,142,67,183,67,159,250,96,61,58,103,232,56,163,205,184,81,254,166,213,73,207,222,138,235,145,238,13,199,63, +203,142,131,138,93,247,57,198,203,64,70,56,242,47,7,184,227,207,207,62,196,115,156,99,140,0,70,178,16,127,213,145,206,14,36,11,248,157,209,241,223,24,231,174,14,58,148,172,183,143,131,182,204,14,126,236, +119,168,73,238,51,230,16,79,227,252,179,69,0,106,24,162,254,236,108,71,3,117,180,92,242,120,37,100,206,62,131,35,130,15,60,176,162,3,204,118,231,174,119,89,71,198,64,239,189,189,185,56,239,215,168,185, +246,40,79,68,32,99,147,139,177,199,32,142,31,31,175,28,113,232,191,97,131,208,103,140,0,151,103,175,175,239,125,199,169,230,128,40,249,81,182,127,209,237,216,122,125,140,142,253,112,178,47,242,31,74,119, +217,162,31,122,202,28,28,115,246,82,163,56,233,183,205,61,15,168,231,219,60,91,251,21,177,56,102,101,61,129,91,174,113,142,57,184,35,142,220,96,116,199,76,169,177,181,36,97,95,35,184,89,241,215,222,126, +132,119,198,125,192,228,0,80,107,104,129,200,179,141,179,156,226,39,83,143,78,24,142,49,199,126,57,35,57,167,45,180,4,115,101,15,114,73,65,144,123,100,238,60,122,100,114,112,106,217,177,129,135,202,38, +250,32,156,28,159,251,108,50,120,245,199,245,95,176,160,28,155,133,199,25,34,224,140,115,207,203,35,254,25,30,157,168,2,147,91,219,49,32,216,219,156,112,62,64,72,238,112,11,113,245,3,154,139,236,246,107, +255,0,46,145,38,64,251,177,99,177,198,58,128,70,125,135,243,171,255,0,102,67,192,121,137,7,166,219,172,122,244,17,158,122,241,233,215,57,24,111,145,31,121,174,20,158,193,46,113,233,252,72,157,255,0,51, +199,25,160,12,215,75,37,60,219,140,142,135,102,71,79,97,208,99,211,28,125,13,67,254,134,221,45,215,131,142,129,115,208,99,36,113,254,115,218,182,124,184,199,73,166,32,115,146,172,112,122,127,31,32,227, +146,120,227,215,52,141,26,130,62,119,219,215,62,95,63,145,25,62,189,70,15,0,16,115,64,25,107,29,161,227,236,185,233,210,84,82,59,247,76,30,9,234,122,117,192,234,239,42,208,2,126,202,217,228,103,237,16, +122,117,32,140,129,211,191,110,121,235,160,124,165,56,221,116,125,54,194,200,1,250,128,217,198,49,253,70,13,25,67,130,60,252,158,49,178,66,115,192,228,155,126,227,211,242,234,104,3,52,180,35,164,56,236, +127,127,1,25,25,244,108,244,198,73,244,166,238,143,35,247,25,231,175,153,15,94,127,189,32,192,207,78,184,0,245,21,162,86,70,63,40,152,99,168,43,47,190,51,182,49,142,61,127,165,43,36,227,56,50,17,144,126, +245,210,142,220,5,32,12,103,0,227,61,112,13,0,102,229,123,66,184,57,4,121,176,14,57,206,49,41,25,231,166,49,199,57,232,36,1,115,255,0,30,236,72,61,86,107,113,223,175,177,231,25,198,7,211,154,188,60,194, +114,78,49,156,147,37,214,79,76,114,17,136,227,212,244,252,131,193,144,3,132,141,179,142,76,183,3,143,251,224,123,31,243,144,1,69,75,103,139,118,111,251,107,104,73,199,56,228,123,158,65,227,7,165,59,124, +249,192,182,35,221,164,178,95,82,14,65,30,253,78,59,253,45,252,192,156,165,185,39,61,103,144,99,254,250,96,78,56,31,119,62,163,176,99,110,56,204,118,195,158,171,36,156,228,100,103,228,99,159,207,174,122, +241,64,16,23,185,228,173,186,31,251,111,103,252,149,135,225,200,57,28,115,131,76,50,220,142,60,152,87,29,115,44,25,61,58,149,113,233,216,140,115,197,89,25,224,52,112,130,122,97,230,228,156,144,57,132, +242,120,192,232,56,247,192,88,14,12,112,96,246,105,156,123,19,131,8,31,141,0,81,51,220,156,124,145,143,117,144,99,131,220,172,216,57,62,158,212,166,226,228,224,109,143,140,228,249,165,79,211,34,99,199, +215,240,30,182,139,46,71,238,173,207,61,86,119,207,56,193,63,33,4,255,0,187,198,79,166,105,87,200,7,230,88,0,231,143,61,129,233,156,2,99,192,61,206,1,3,169,24,205,0,85,251,69,207,76,68,61,8,159,35,142, +135,62,110,73,206,121,32,122,3,74,37,184,57,249,147,223,18,190,0,60,96,124,216,36,112,59,250,130,51,147,103,204,179,228,109,132,131,255,0,77,22,64,0,236,7,146,15,127,167,167,113,72,103,179,76,149,138, +18,112,115,242,147,128,61,8,137,64,61,189,189,71,24,0,132,75,121,129,137,64,3,140,137,164,194,250,117,144,103,183,65,142,152,205,12,110,79,6,232,99,190,110,37,250,159,226,0,231,156,242,112,50,125,196, +158,117,179,255,0,203,40,241,234,33,220,121,207,109,224,245,235,145,212,231,222,153,190,215,36,126,239,56,60,173,177,25,31,240,23,28,254,7,167,122,0,135,19,100,102,241,59,14,110,166,39,240,7,182,14,48, +65,29,189,48,240,146,117,251,74,159,164,142,223,94,112,58,122,245,239,214,158,13,190,120,66,120,231,247,18,0,121,244,18,169,32,241,206,71,3,215,20,253,150,231,254,89,128,79,164,19,246,238,0,190,25,28, +127,136,235,64,12,36,140,110,185,111,79,149,228,63,207,31,95,124,147,207,90,118,245,35,155,135,235,142,73,3,145,156,228,198,122,131,156,228,242,127,26,105,137,121,85,92,117,227,236,243,19,199,78,26,237, +253,178,73,62,224,30,143,22,146,159,95,92,139,89,127,60,249,224,228,113,142,122,244,235,64,13,99,17,32,25,142,56,60,57,233,235,130,191,92,114,1,193,250,209,155,124,147,230,144,70,113,151,79,208,179,103, +190,125,187,118,169,13,172,227,57,12,220,255,0,207,180,163,29,58,159,60,158,123,117,239,223,154,79,178,220,114,2,56,25,224,253,158,97,223,25,3,205,254,121,226,128,35,13,23,107,128,58,158,93,27,24,7,182, +8,228,114,15,111,92,17,72,210,66,160,238,148,31,76,132,199,61,248,143,35,190,6,125,42,97,103,118,70,63,121,244,48,200,0,60,142,238,48,127,15,206,164,91,43,176,112,35,119,235,200,137,121,234,122,151,25, +198,120,29,56,32,15,64,10,94,117,177,60,178,16,0,234,20,159,168,37,57,60,250,17,248,102,157,246,152,0,198,67,15,247,98,32,127,223,40,24,125,112,73,57,251,188,226,239,217,175,70,113,4,132,131,215,98,224, +142,184,225,142,122,122,158,6,113,197,53,109,174,201,201,128,140,241,204,16,48,57,61,183,17,200,199,177,160,10,226,123,124,159,156,12,243,194,175,166,57,201,239,143,65,212,245,237,32,150,220,158,46,1, +110,59,193,129,219,248,185,61,73,227,56,231,183,53,56,182,157,121,49,160,245,204,22,99,62,152,231,142,156,143,187,159,175,39,149,33,39,34,49,212,113,5,136,57,233,207,206,190,220,246,29,61,128,24,26,51, +146,38,70,35,24,249,237,72,3,232,85,185,255,0,104,99,29,251,83,252,232,135,27,162,227,215,236,76,79,226,109,207,29,135,78,157,198,41,225,28,112,202,20,240,50,169,101,159,124,145,32,61,127,30,216,192,25, +80,229,70,8,28,103,159,42,216,182,56,192,35,112,29,250,228,250,100,243,128,4,55,81,244,45,31,211,101,159,161,234,77,174,121,233,215,30,227,138,81,113,0,25,243,109,179,253,214,138,211,175,211,200,65,223, +131,146,64,56,250,6,86,235,128,127,237,218,212,251,99,153,186,224,113,147,238,115,205,56,62,236,102,20,39,146,15,147,110,61,59,125,160,2,61,241,143,90,0,136,94,192,78,11,219,142,112,48,150,191,160,192, +24,198,127,46,149,50,220,194,113,137,34,25,198,113,29,169,31,128,28,158,152,234,56,231,131,79,10,173,201,136,15,82,32,128,131,237,129,43,100,156,246,7,214,144,71,22,14,80,14,197,190,207,18,224,130,56, +200,97,223,63,76,102,128,27,231,68,216,221,44,88,224,231,201,135,176,244,14,189,121,247,232,41,76,150,203,146,100,133,129,233,152,161,24,228,31,249,234,91,140,240,51,206,57,232,106,64,177,96,225,177,208, +113,110,153,4,250,109,39,147,207,31,206,155,133,201,33,230,199,63,118,222,65,159,201,27,3,62,221,187,80,4,70,123,92,240,32,36,30,190,76,71,183,115,230,103,240,245,231,52,211,113,109,220,66,49,158,124, +152,128,233,235,188,3,143,175,175,65,192,178,138,189,228,156,241,208,91,78,122,140,143,249,101,130,62,189,241,211,146,21,196,99,57,105,58,119,180,152,247,63,220,65,219,169,32,125,122,10,0,162,215,22,141, +199,153,2,231,210,56,193,227,175,34,113,199,28,231,250,210,6,182,36,226,85,232,120,81,22,70,61,254,208,14,58,243,211,160,60,26,157,188,174,126,97,156,227,6,198,76,140,158,249,10,120,247,3,140,224,14,50, +194,80,18,64,76,99,31,241,239,40,235,140,241,146,14,121,233,211,57,29,1,160,6,238,181,199,50,76,65,199,10,209,140,100,231,161,148,129,199,57,25,234,58,16,5,56,37,155,100,239,151,32,127,20,246,224,142, +223,196,121,247,199,60,243,222,154,210,199,208,132,224,142,144,203,159,253,9,135,232,115,235,206,106,51,117,8,60,109,207,253,123,220,129,193,201,207,204,7,24,236,125,143,160,0,159,201,179,35,2,87,235, +252,87,54,192,125,8,57,94,231,56,200,254,167,151,102,167,253,115,119,24,251,77,169,60,117,233,19,117,233,192,61,78,51,218,191,219,160,224,98,49,199,80,147,174,9,239,131,46,125,120,192,236,79,94,20,94, +91,227,149,132,244,39,229,185,233,219,164,227,182,114,120,57,7,165,0,79,178,0,50,183,24,244,255,0,73,128,250,0,112,45,115,248,118,246,2,155,229,70,73,255,0,74,25,29,188,248,119,126,31,232,217,227,29,61, +185,200,192,164,91,187,114,114,126,206,163,24,59,150,231,61,177,255,0,47,24,24,227,25,255,0,10,83,117,111,156,109,182,108,19,209,39,254,102,108,96,99,62,158,244,0,225,24,231,23,44,112,121,253,242,47,25, +245,251,49,254,160,115,218,158,35,39,31,233,50,243,144,2,220,40,245,244,181,30,157,113,243,99,185,168,214,234,208,182,10,219,142,15,105,142,121,193,207,239,151,0,156,158,181,40,146,200,140,236,128,147, +211,98,200,24,126,63,105,39,28,99,144,122,31,99,64,15,242,164,28,27,135,39,3,1,174,28,253,49,178,211,36,30,228,14,156,30,212,193,111,49,33,132,209,243,156,150,107,134,63,92,253,148,227,29,134,57,253,42, +85,107,19,201,69,4,140,114,178,57,29,255,0,191,142,122,224,30,71,226,40,2,200,240,12,107,142,132,219,30,15,28,252,219,129,233,220,154,0,96,130,227,175,218,20,123,1,116,71,78,188,90,96,2,65,237,214,131, +20,195,173,202,14,228,147,120,50,57,227,6,204,14,152,35,7,241,235,83,136,236,114,51,44,67,31,221,138,220,118,207,59,254,111,108,118,31,170,152,236,137,24,184,140,116,4,8,96,25,39,183,127,76,251,246,233, +64,16,8,228,61,46,21,128,63,194,47,51,145,215,143,179,28,244,39,142,252,130,51,203,252,178,7,50,135,7,177,91,206,191,247,224,16,79,110,57,36,140,84,165,44,136,230,116,62,155,97,132,246,252,7,167,99,254, +32,91,84,3,108,170,79,188,86,185,252,130,142,189,57,62,157,122,208,4,42,17,73,229,121,3,164,119,123,136,245,56,183,61,79,112,59,30,5,59,124,100,252,205,22,122,13,201,121,192,7,251,190,64,60,245,200,56, +29,49,208,84,158,108,42,113,185,122,245,11,106,185,231,217,151,31,129,232,71,78,106,65,42,112,68,190,224,3,0,231,175,39,206,39,29,248,30,216,60,224,2,183,151,110,216,36,198,121,237,111,120,113,158,14, +62,66,8,24,228,237,207,4,227,57,53,58,67,109,209,163,140,243,193,251,45,222,120,62,173,9,207,30,156,140,231,142,113,39,156,249,59,101,231,253,248,70,58,115,192,32,250,1,207,60,142,217,112,145,136,230, +104,243,206,71,153,17,207,60,28,146,160,116,228,116,231,20,0,158,93,144,251,209,129,145,158,45,166,92,122,100,180,4,231,56,56,63,133,10,150,135,164,127,46,64,25,183,114,79,211,247,93,7,167,31,167,50,2, +79,34,108,251,9,192,227,61,48,36,3,140,119,227,182,56,21,58,51,1,242,220,186,158,72,204,236,192,231,29,113,49,39,167,31,94,50,51,64,16,8,160,207,8,112,15,0,89,200,195,63,135,83,158,221,143,90,148,64,167, +254,88,73,140,245,254,206,144,228,254,61,184,245,29,242,49,214,96,101,255,0,158,251,179,128,79,155,40,29,186,143,51,175,115,144,63,14,242,131,55,31,49,206,63,231,164,131,146,59,102,224,99,169,246,207, +94,244,1,1,182,97,243,44,12,71,95,249,7,177,224,28,231,27,148,130,15,184,231,215,138,112,133,242,64,134,110,157,69,129,4,14,189,219,211,144,114,114,58,100,113,86,131,220,99,6,95,111,245,210,157,189,241, +197,198,7,0,118,237,129,215,149,196,253,60,195,159,65,36,152,39,219,253,36,156,31,99,233,237,64,21,190,205,57,56,17,202,62,182,14,223,251,81,127,206,71,106,157,98,157,112,66,145,146,15,205,104,235,219, +253,169,121,239,199,242,35,52,49,152,112,114,249,224,243,41,62,184,7,237,7,60,245,227,62,189,121,111,239,9,57,70,29,184,121,58,116,25,205,208,233,140,244,62,167,181,0,74,67,255,0,17,233,215,253,20,15, +212,203,159,113,245,193,7,187,48,252,133,198,115,222,220,113,201,255,0,166,135,255,0,172,49,156,98,143,50,65,194,172,131,166,62,98,63,3,254,149,219,208,158,157,7,52,190,124,217,195,41,25,193,228,184,192, +237,129,246,158,50,48,56,62,228,145,64,10,4,163,134,84,227,159,248,247,94,79,110,75,247,56,60,103,208,100,80,55,3,204,113,158,0,249,161,3,147,244,200,7,3,158,159,165,33,158,110,200,199,159,239,57,31,83, +254,148,48,125,71,80,42,61,243,49,199,146,254,199,204,152,12,119,3,253,55,182,122,1,239,245,0,156,176,31,121,98,95,65,242,140,243,199,221,7,250,116,57,227,20,223,180,38,72,30,94,15,112,3,126,57,17,150, +239,220,125,42,44,76,121,218,216,3,254,122,205,144,125,63,227,241,189,122,241,223,223,10,34,144,140,225,207,78,119,79,140,116,7,63,106,193,29,184,239,216,80,4,225,195,18,85,163,224,231,157,192,227,158, +79,238,243,140,125,79,167,106,112,36,156,237,128,224,96,17,156,227,174,65,104,187,127,250,250,84,66,49,140,24,217,137,245,146,224,99,219,139,172,31,235,216,14,41,203,16,31,117,24,122,126,242,81,208,144, +7,51,55,177,28,113,64,18,18,196,240,138,121,56,219,147,199,32,244,128,243,238,15,174,56,167,108,152,228,172,10,113,156,125,240,113,216,96,219,130,127,17,244,60,208,177,202,6,0,112,123,98,105,51,207,3, +24,44,115,248,231,212,80,98,157,179,159,63,0,244,15,59,30,160,253,220,12,103,220,15,64,112,114,64,37,85,187,255,0,158,81,14,48,62,71,99,220,140,15,36,12,253,8,57,199,94,104,217,123,253,216,136,238,10, +76,79,78,121,85,233,215,183,61,58,224,26,230,221,243,157,147,250,112,38,61,123,159,152,116,61,78,7,3,222,156,33,184,29,34,118,236,11,71,41,234,61,243,245,232,125,65,61,104,2,112,151,189,163,132,227,156, +132,152,250,99,33,128,28,99,140,143,233,128,45,242,156,236,86,236,67,66,228,30,135,183,211,182,56,233,237,24,134,227,254,120,158,59,236,147,7,57,198,62,94,123,12,245,62,167,184,98,184,25,37,27,253,172, +69,146,7,65,247,148,246,206,123,251,245,52,1,100,29,68,144,118,65,199,170,74,63,2,64,56,63,67,77,87,212,20,143,221,192,112,49,192,148,224,14,248,219,147,248,112,7,110,5,86,6,114,15,238,213,128,231,38, +40,213,187,28,110,17,19,212,103,191,211,154,76,93,19,242,68,6,120,27,86,28,99,159,88,6,49,237,211,215,208,2,225,185,189,193,62,92,35,156,228,69,112,6,51,211,33,71,31,94,224,82,9,110,219,172,112,159,66, +34,148,129,248,184,232,71,4,96,142,228,118,170,164,95,113,132,59,78,48,10,219,3,201,227,57,140,14,113,198,122,251,102,147,201,189,96,73,132,28,158,133,109,143,79,248,24,238,49,128,127,30,48,0,46,150,185, +60,148,140,0,127,231,132,223,136,5,7,25,238,112,63,197,26,89,151,239,96,2,15,68,187,3,167,251,153,207,166,58,30,113,222,169,173,181,201,39,54,200,121,199,48,217,177,32,28,247,152,247,201,35,243,227,24, +148,90,220,14,182,202,7,251,54,246,185,207,185,15,223,250,31,192,2,202,206,192,114,178,0,122,21,55,164,118,228,102,220,140,250,100,250,246,206,94,38,24,28,29,185,193,102,75,178,112,123,100,192,7,243,224, +119,233,85,133,179,144,67,91,57,247,22,182,231,158,65,193,223,211,175,76,14,248,201,52,241,107,180,2,109,39,61,122,90,192,65,234,63,188,192,28,244,200,29,51,154,0,156,206,135,161,29,122,21,187,61,187, +141,128,122,103,143,124,113,144,19,11,127,203,80,9,57,35,201,185,35,60,117,36,175,227,219,143,78,12,2,0,167,63,96,185,96,122,1,105,110,125,185,33,114,123,114,115,245,60,229,226,19,156,255,0,103,94,99, +35,254,92,227,3,35,158,216,235,208,130,61,126,180,1,34,249,56,1,159,140,240,68,19,115,207,251,83,129,199,168,167,8,96,98,79,154,235,156,96,4,64,78,71,28,27,144,217,233,142,58,244,21,8,140,156,19,167,93, +159,165,172,35,3,212,144,252,99,28,100,116,205,78,136,188,19,167,92,18,115,159,244,120,79,167,80,55,123,12,113,142,120,160,6,152,45,199,6,105,112,58,12,40,247,207,252,126,241,198,61,62,157,113,3,139,120, +250,205,33,25,231,145,147,143,81,253,161,207,175,65,140,156,246,171,135,203,94,127,179,174,148,241,207,216,80,246,28,228,175,124,227,61,199,191,71,143,32,231,253,18,232,122,255,0,162,4,57,192,199,59,15, +111,83,200,238,73,197,0,101,239,178,206,119,19,156,103,43,17,200,255,0,193,162,146,71,83,242,246,29,176,105,153,182,60,43,237,7,251,201,109,212,100,231,231,213,201,25,250,100,96,86,179,8,14,127,115,112, +190,184,136,46,58,158,73,81,215,175,39,62,228,243,81,145,25,200,217,42,14,159,63,146,157,49,142,78,14,125,129,25,193,247,160,12,252,70,57,89,177,254,210,139,68,35,167,166,170,122,28,118,35,210,155,185, +115,197,204,199,7,0,9,237,199,208,96,95,176,233,236,73,60,230,180,12,81,17,134,37,123,6,45,11,0,122,15,249,104,62,157,51,158,58,83,126,207,22,9,243,70,63,237,135,245,152,17,237,158,13,0,80,105,153,71, +18,59,131,158,13,197,175,113,253,209,122,73,201,231,166,123,17,65,186,113,215,118,112,112,13,204,0,231,182,71,218,125,185,28,123,112,115,87,76,16,115,155,128,49,235,246,108,126,4,72,195,161,193,206,115, +200,228,28,211,77,180,4,238,251,86,57,28,237,183,97,129,156,156,9,14,63,28,115,233,156,208,6,121,187,151,7,229,199,29,26,224,30,122,96,226,243,39,240,200,28,251,138,5,219,144,7,149,17,237,205,202,247, +247,251,81,193,25,29,241,211,214,174,61,172,121,56,188,0,119,38,8,200,0,118,59,102,0,244,227,167,0,159,173,115,101,146,113,168,198,0,56,255,0,84,138,123,244,204,231,166,121,32,240,122,244,160,8,26,225, +155,134,88,64,24,28,94,99,175,3,32,92,55,126,120,39,39,175,74,110,246,234,166,37,7,186,221,134,61,125,60,252,130,113,198,127,19,218,166,54,82,3,159,237,21,35,166,1,132,241,158,224,200,1,35,245,205,55, +236,242,46,64,189,143,175,86,142,0,61,249,223,233,158,153,206,115,235,64,13,243,28,46,26,88,250,0,7,218,20,144,0,29,190,208,72,227,182,6,113,233,81,52,164,127,203,72,207,64,115,35,31,253,184,228,116,201, +231,142,185,21,57,142,110,247,150,236,1,228,24,237,142,71,82,51,130,72,252,120,61,51,200,164,97,40,25,251,76,31,248,13,3,14,0,234,89,88,117,207,36,1,145,201,160,10,165,203,3,129,1,207,124,18,62,167,55, +128,115,215,175,175,74,136,228,140,147,7,95,249,230,196,119,60,226,248,224,242,63,158,42,217,19,243,254,145,9,61,127,227,222,208,156,118,192,218,8,207,94,123,147,80,178,92,158,126,209,0,231,156,219,219, +227,216,96,28,115,219,175,182,15,80,10,229,20,156,111,132,116,227,203,112,115,207,253,63,255,0,245,143,168,235,71,147,17,28,203,0,57,231,130,14,113,212,129,120,227,143,255,0,80,230,167,48,220,119,154, +223,167,7,236,241,28,103,176,62,102,71,28,241,81,152,39,63,242,210,212,240,127,229,132,121,233,142,166,108,2,61,135,81,197,0,71,229,198,163,139,148,94,121,218,0,24,245,4,202,220,19,219,235,207,172,95, +32,36,253,173,51,215,27,162,63,158,31,159,99,146,122,241,83,121,82,1,243,11,118,232,65,17,195,156,122,143,159,216,112,9,63,90,140,196,204,121,75,83,198,62,107,100,98,126,191,191,0,231,62,157,127,64,7, +137,31,7,109,220,88,228,231,10,185,227,175,15,198,56,231,31,158,42,54,105,72,207,159,17,108,113,150,206,125,50,66,30,159,128,233,200,206,106,54,183,44,48,208,90,145,215,2,216,17,233,208,92,242,115,199, +0,118,227,189,66,109,6,51,246,104,177,140,19,246,28,159,160,62,118,121,61,115,158,184,245,160,9,73,186,94,124,203,114,0,254,251,43,126,0,40,252,120,245,192,166,52,151,71,105,18,68,7,95,245,142,224,131, +140,3,136,126,135,1,190,167,189,68,214,220,28,91,12,12,225,126,198,184,35,60,103,253,35,113,63,228,159,88,196,76,164,226,208,114,51,205,150,7,78,160,139,206,221,78,1,233,222,128,30,211,92,96,131,36,39, +235,230,237,227,35,147,229,0,121,247,228,241,145,210,152,46,46,79,2,75,99,232,15,155,198,127,222,136,231,7,161,0,227,166,0,205,47,239,7,252,187,70,9,227,63,100,96,127,244,160,143,66,65,61,49,201,233,67, +9,177,145,111,17,199,173,184,39,211,161,147,56,252,8,228,17,216,208,4,102,91,220,231,124,24,244,9,41,57,57,199,2,37,207,30,131,29,197,53,231,189,3,159,179,176,245,49,220,28,131,207,183,65,156,227,223, +29,169,88,92,159,249,117,24,207,37,45,16,254,100,146,70,126,156,242,1,164,197,223,104,91,62,214,81,229,113,211,160,92,250,117,250,80,4,2,123,156,159,221,218,157,221,190,203,112,199,30,231,126,78,79,29, +189,7,83,67,73,57,4,188,112,1,211,63,100,152,126,64,145,215,241,171,24,156,114,209,202,216,200,63,232,81,14,192,96,134,148,100,250,112,127,62,137,190,85,63,234,136,56,254,59,56,184,239,255,0,61,186,122, +231,31,135,52,1,87,124,128,112,176,243,193,197,156,152,62,185,235,218,162,111,152,252,203,16,39,158,45,31,255,0,65,7,159,200,242,51,239,87,140,179,159,249,226,185,28,110,181,183,28,116,227,55,67,25,237, +198,123,227,189,49,158,124,114,96,82,7,252,240,128,147,211,159,150,236,183,110,64,7,169,192,244,0,169,229,147,200,242,70,121,193,176,96,115,245,18,169,227,142,127,250,212,226,152,3,230,183,4,113,205,179, +96,123,99,206,30,253,122,26,147,204,152,228,25,33,95,64,96,92,129,200,198,60,198,201,206,120,199,62,188,226,162,111,49,134,12,144,18,56,255,0,80,61,122,28,48,25,60,14,122,227,235,64,12,40,14,1,48,254, +22,199,242,24,151,232,7,95,92,226,154,22,216,2,28,38,114,63,229,145,228,112,122,9,115,128,57,228,123,30,115,132,43,33,207,207,30,50,120,22,217,231,241,156,122,129,156,126,60,240,134,57,1,206,232,7,251, +208,0,78,15,7,137,155,250,99,243,160,8,222,27,38,63,50,66,217,61,226,28,14,122,229,192,4,250,118,62,167,20,191,103,180,231,17,194,1,3,164,120,57,250,134,60,251,99,233,158,129,88,30,133,237,15,76,254,237, +129,252,71,156,7,191,39,3,181,68,98,102,60,27,51,254,209,139,240,57,253,249,192,35,191,230,59,16,5,107,123,126,126,72,15,168,104,100,35,156,240,126,113,245,233,131,199,30,145,253,150,217,73,204,86,228, +96,16,62,206,248,57,247,12,72,29,121,28,244,167,8,223,179,217,2,49,128,35,201,29,121,193,144,231,161,61,113,144,58,116,160,199,47,82,214,196,145,129,132,81,216,231,31,188,254,131,130,13,0,47,151,106,7, +17,219,3,207,30,76,189,49,158,70,254,71,39,142,130,148,125,157,127,134,216,145,207,250,185,129,227,185,28,142,253,1,252,251,48,171,112,63,209,199,80,51,26,18,70,127,235,160,193,61,184,227,154,127,148, +237,194,165,169,39,24,42,144,3,144,127,219,152,99,167,127,235,192,2,25,109,87,129,28,39,29,127,116,231,24,227,32,30,62,128,245,247,57,164,205,167,93,145,243,142,150,242,231,244,81,158,190,184,254,116, +191,103,151,3,49,219,140,241,199,217,65,199,62,183,106,1,235,212,100,103,39,146,77,47,217,134,9,49,196,195,3,189,153,0,99,168,11,116,217,246,231,143,194,128,16,139,94,112,145,250,243,101,59,19,193,238, +0,237,234,113,253,16,27,117,198,212,140,159,155,166,157,39,243,57,228,31,108,245,61,70,105,190,84,96,156,170,116,61,13,183,57,236,115,116,190,157,143,25,250,83,76,49,49,31,34,123,224,91,16,61,57,23,157, +61,137,252,232,2,70,150,17,201,85,35,61,22,194,94,49,156,28,249,109,143,82,115,158,131,234,223,180,91,40,56,68,227,174,44,231,200,192,28,241,17,7,182,48,61,113,145,71,217,224,95,224,82,127,237,128,199, +124,243,114,227,158,220,28,122,17,72,99,132,159,187,159,65,229,192,72,247,4,56,29,58,144,120,227,3,173,0,52,221,219,251,3,232,109,167,3,191,76,67,207,108,250,100,113,234,223,180,192,122,186,143,99,109, +63,229,204,124,253,79,212,244,52,227,28,0,140,198,164,227,248,132,99,158,152,59,95,175,235,192,238,77,1,33,200,196,41,140,117,1,62,157,201,60,250,142,57,227,169,160,4,243,97,39,219,166,82,222,96,56,3, +4,159,44,1,215,223,142,221,169,165,237,155,35,169,234,75,91,203,156,228,228,2,99,219,248,143,229,74,98,139,32,249,41,193,231,231,10,63,250,196,99,175,24,207,215,10,22,0,49,246,123,98,122,29,210,103,167, +76,225,8,206,49,147,199,108,117,160,4,13,108,56,27,129,198,112,18,69,227,29,192,139,161,250,30,158,148,187,226,237,35,117,60,21,43,129,131,235,1,39,215,169,60,116,224,138,120,141,7,252,186,217,227,174, +75,30,188,243,247,54,231,234,106,100,66,7,22,122,121,224,252,197,251,113,140,224,113,200,224,99,24,207,90,0,175,136,241,146,207,143,247,216,113,199,63,45,167,167,57,231,167,230,8,224,60,137,38,200,244, +146,110,62,191,232,106,50,62,190,253,185,186,161,193,201,179,211,216,14,184,40,64,207,110,84,112,71,99,235,215,185,83,43,41,63,232,54,32,103,129,136,143,0,118,35,31,144,39,147,249,0,85,242,35,35,118,249, +253,114,178,56,35,174,50,77,174,222,220,242,15,92,243,210,69,183,136,227,13,117,238,119,198,15,225,152,151,61,0,199,28,227,25,205,61,167,231,63,99,178,56,244,242,215,208,118,148,116,237,208,14,249,165, +251,64,110,150,214,64,14,56,100,61,71,92,239,4,254,60,112,125,242,0,239,179,228,113,246,210,65,24,249,162,206,126,134,51,156,224,158,58,122,224,115,25,128,134,195,45,248,250,27,112,7,110,141,3,14,64,29, +184,245,226,158,37,4,16,96,180,29,121,27,63,12,126,247,176,28,156,113,207,181,56,178,129,149,138,208,100,147,147,176,231,211,33,164,244,236,63,30,192,0,69,228,62,114,22,255,0,28,242,30,208,147,223,28, +218,143,199,167,214,134,134,92,131,139,226,8,56,12,246,71,7,167,36,91,224,251,118,3,142,41,251,206,14,22,200,117,255,0,150,49,19,208,0,114,204,122,17,220,117,234,105,12,142,188,17,106,50,120,253,213,182, +56,237,211,159,196,159,97,205,0,48,197,63,104,166,57,207,87,180,4,118,232,182,249,24,39,158,113,199,215,8,194,225,113,149,184,83,236,246,103,169,234,55,69,158,61,113,252,233,30,86,28,23,180,0,156,156, +65,108,113,223,145,180,142,128,126,29,113,197,68,95,56,197,213,178,131,216,91,195,215,169,235,23,25,244,198,61,168,2,76,221,112,65,186,35,147,215,78,61,70,6,78,213,36,100,122,231,183,0,114,155,238,143, +32,204,15,39,147,167,227,174,79,28,129,145,198,121,60,156,117,197,69,150,24,197,229,169,228,16,62,205,1,255,0,219,114,0,60,100,19,142,255,0,120,82,133,145,191,229,226,203,146,58,219,91,228,246,233,246, +113,201,31,142,104,1,73,187,32,146,231,63,55,4,233,224,130,114,6,126,67,250,231,61,57,39,152,207,218,114,9,104,198,71,93,214,57,237,207,250,161,146,57,28,100,103,174,58,82,180,78,121,251,70,159,199,173, +188,29,184,60,253,159,183,126,252,250,14,16,199,39,95,62,195,142,155,109,96,82,120,244,22,153,231,60,99,245,230,128,17,77,193,39,247,201,200,198,9,178,199,7,57,25,85,60,30,15,65,219,156,83,183,93,131, +242,207,24,198,114,66,89,18,125,70,112,216,200,207,35,233,145,73,186,101,227,206,179,35,254,189,224,228,28,103,36,194,15,28,127,15,92,99,217,51,63,95,58,208,3,129,159,46,1,212,143,68,29,61,135,110,131, +156,0,4,95,3,205,194,128,58,13,182,199,56,207,101,143,183,113,147,129,215,32,80,26,253,112,26,127,174,212,132,28,156,224,224,33,83,211,184,35,216,242,41,11,207,211,207,135,24,237,4,76,49,248,20,252,121, +31,143,119,171,203,158,103,135,142,163,236,192,16,58,12,133,152,0,58,228,244,245,197,0,40,55,164,99,237,13,207,35,41,7,65,208,124,177,99,158,6,49,200,39,166,51,69,60,59,131,159,58,6,29,199,148,49,143, +111,223,2,113,211,249,241,154,40,3,170,104,229,7,31,100,96,113,206,71,152,57,234,115,180,156,245,198,14,7,76,98,152,99,159,156,66,163,28,243,108,199,62,160,134,67,211,158,6,57,199,97,154,159,203,152,0, +203,111,114,70,58,50,38,123,103,131,33,35,35,0,228,100,247,61,77,33,50,2,3,65,112,189,242,81,58,158,188,171,156,103,61,207,167,90,0,168,97,152,114,214,214,224,28,99,247,36,48,232,112,64,136,159,174,6, +7,64,69,35,35,99,155,107,102,201,225,188,185,20,228,227,60,52,60,122,224,145,220,14,149,124,239,35,2,222,98,123,2,168,189,122,227,44,15,30,160,244,228,142,164,57,99,144,128,5,164,135,216,128,84,0,122, +240,196,113,142,0,30,221,104,3,47,18,169,5,109,97,192,232,68,110,114,59,28,249,93,199,183,174,61,141,242,247,177,143,220,237,148,103,254,249,132,224,254,93,56,197,106,53,180,135,37,109,50,61,10,158,125, +48,79,255,0,21,233,77,91,73,0,5,172,122,241,133,13,244,231,18,174,127,51,140,243,207,32,3,59,205,144,1,254,128,132,145,218,57,176,63,242,8,63,153,201,231,189,68,90,86,255,0,152,114,156,244,218,46,129, +200,246,88,135,83,234,120,0,96,244,198,177,180,78,119,88,184,235,140,68,185,247,255,0,150,217,193,193,61,121,224,242,69,57,45,33,94,126,193,49,7,25,205,180,100,244,24,231,237,35,182,125,64,252,56,0,202, +86,112,57,176,233,255,0,77,47,58,113,198,2,1,211,161,237,144,122,102,148,191,56,54,12,71,57,195,94,14,222,170,217,238,63,195,24,39,84,199,24,224,216,78,71,108,90,159,127,73,78,63,250,252,26,70,88,128, +25,176,159,175,3,236,172,79,127,73,151,24,250,80,6,73,101,232,218,108,163,182,86,107,236,113,207,64,160,228,227,56,7,233,144,42,64,240,46,73,178,185,83,140,127,174,191,246,245,83,192,193,231,144,115,140, +138,209,242,237,243,143,176,204,62,182,204,50,7,76,147,113,253,122,230,143,46,21,35,22,50,246,36,253,152,16,73,246,19,156,156,247,7,61,178,7,80,12,178,241,12,31,177,220,116,227,50,223,51,112,113,207,200, +48,113,238,127,48,69,34,188,4,157,214,151,63,129,190,57,39,158,119,21,245,57,244,173,109,208,131,143,178,76,49,235,105,143,192,147,54,63,95,126,163,33,191,104,128,103,117,157,195,99,140,139,72,253,6,113, +153,88,227,167,92,142,130,128,50,241,110,73,38,218,233,73,207,123,151,233,220,110,110,63,81,211,56,166,50,194,7,22,247,32,117,4,249,160,14,71,98,72,25,238,78,112,125,199,26,255,0,106,183,0,109,180,188, +199,32,109,181,64,7,64,65,195,119,233,220,242,113,214,152,46,83,157,182,119,191,140,24,254,68,127,92,125,40,3,35,22,253,60,169,243,206,6,216,155,3,29,247,145,142,113,128,115,159,92,154,121,88,191,134, +41,125,255,0,119,6,50,6,71,33,91,211,57,63,143,182,163,93,28,96,90,93,228,117,38,38,94,115,215,134,206,121,245,227,220,12,152,60,247,39,63,99,187,63,54,64,11,32,198,51,199,50,40,7,215,223,57,38,128,41, +8,163,108,98,41,65,192,254,8,63,165,183,191,115,129,218,165,48,176,192,8,252,99,134,22,216,24,231,45,242,169,29,243,158,189,199,106,156,203,41,57,251,13,192,3,166,74,143,96,127,215,18,7,230,121,60,112, +106,54,154,124,144,44,238,61,56,36,125,126,235,103,244,61,58,30,40,1,60,169,137,192,133,88,116,193,22,188,251,128,79,62,167,7,142,158,213,42,91,185,28,219,199,249,90,119,35,158,29,113,223,191,83,147,145, +197,69,246,155,145,144,108,238,134,114,1,25,56,207,161,219,129,199,78,113,199,78,180,209,113,117,158,45,174,70,58,252,203,158,64,231,30,88,231,234,123,30,121,197,0,90,251,49,199,250,136,126,173,228,112, +61,200,148,103,7,190,63,150,11,76,24,3,247,112,18,59,15,36,12,147,234,210,112,9,228,30,59,100,117,2,3,115,117,129,254,141,112,164,122,148,228,103,183,238,199,111,115,143,79,86,125,166,243,167,149,62,57, +225,130,17,147,215,130,24,156,140,122,243,145,64,22,182,40,31,52,112,131,158,54,189,191,3,215,119,154,164,243,142,131,212,117,205,57,85,6,78,204,145,198,68,159,159,41,55,24,198,7,255,0,91,53,80,79,118, +56,217,56,24,233,229,196,114,56,236,20,117,28,227,220,245,224,83,13,197,208,39,137,250,30,26,52,24,252,58,241,245,255,0,26,0,180,194,46,141,19,99,174,124,247,234,123,224,92,174,115,207,60,103,175,53,17, +16,131,196,68,224,241,153,39,99,143,67,139,224,61,73,61,240,61,169,159,106,188,32,143,46,99,232,76,80,30,70,121,193,76,128,113,140,254,185,206,79,181,222,127,207,41,123,231,253,30,47,155,56,238,33,227, +175,208,227,183,64,0,164,91,30,90,220,245,232,100,185,252,58,94,30,62,153,56,29,169,85,45,155,57,137,19,233,37,222,122,123,92,12,99,220,250,113,76,251,77,209,56,48,204,123,243,111,9,29,207,120,189,58, +228,2,8,60,212,222,117,230,6,33,148,129,255,0,76,45,135,244,24,231,31,135,29,40,2,35,29,169,39,11,158,189,30,240,175,166,57,186,3,167,248,231,52,240,136,64,194,133,60,96,249,147,3,219,60,53,227,99,190, +50,59,103,61,41,60,203,190,134,210,82,121,60,65,1,36,117,4,21,3,56,233,144,15,29,250,230,50,247,100,130,45,38,29,241,228,46,113,212,116,140,28,159,199,158,148,1,100,70,73,192,46,196,253,221,215,14,7,82, +50,54,177,39,143,246,143,90,112,132,156,238,80,196,118,51,220,99,211,60,100,253,58,143,173,83,6,224,147,155,41,88,156,241,228,16,123,116,249,7,183,115,223,160,163,19,245,254,206,145,187,156,167,78,189, +137,28,116,246,233,199,25,160,11,223,102,235,132,135,211,153,238,56,244,201,222,190,152,224,103,240,226,164,88,79,76,64,152,234,4,215,39,36,241,158,24,131,206,51,242,142,120,61,107,44,121,227,131,96,224, +231,27,124,168,243,248,229,73,30,157,198,49,215,25,46,42,236,126,107,34,59,99,202,65,215,62,136,188,251,99,175,60,243,64,26,139,26,228,103,200,227,156,150,184,126,114,57,203,40,3,62,190,184,235,197,73, +177,189,97,80,64,206,26,66,121,207,170,143,110,153,28,142,9,21,144,34,220,57,183,65,143,84,81,235,223,236,205,211,185,200,250,16,120,80,16,100,24,227,82,115,194,164,124,1,158,50,45,179,198,122,158,231, +60,116,0,26,187,24,103,46,9,193,224,2,57,232,6,79,249,28,243,210,163,42,221,76,104,121,198,76,97,177,216,146,124,179,219,29,1,28,227,60,214,83,109,36,31,40,31,170,150,201,233,142,33,56,3,175,96,125,232, +218,141,128,35,65,211,164,115,150,234,7,56,131,25,28,40,28,12,129,215,138,0,188,232,59,169,244,63,232,168,64,3,254,217,96,99,29,71,175,74,132,249,91,176,45,213,189,205,168,206,112,114,112,35,31,143,39, +233,222,160,242,227,60,1,146,114,112,32,152,158,121,207,205,111,198,79,80,6,7,233,82,199,18,231,229,45,144,59,64,70,122,30,246,167,158,58,30,64,199,106,0,93,145,146,54,218,198,79,114,109,27,35,219,183, +80,51,215,128,123,227,132,49,145,141,176,198,49,216,218,55,60,158,172,92,231,29,184,234,15,166,105,254,83,2,127,121,198,122,152,159,56,3,161,255,0,65,35,63,134,6,125,133,47,149,33,57,19,243,236,146,40, +239,212,125,135,4,140,122,116,35,61,40,2,45,146,182,54,198,64,231,129,109,34,12,2,114,8,7,158,59,158,249,35,129,154,114,199,57,0,42,133,207,39,48,1,199,66,65,103,57,232,57,254,188,211,252,171,133,206, +30,76,114,64,84,152,227,39,129,197,160,3,234,7,28,123,138,26,43,188,103,253,44,228,246,134,110,253,122,219,168,60,227,3,30,156,158,180,0,211,27,14,26,96,132,247,242,139,113,255,0,127,7,28,244,92,244,252, +2,128,112,64,185,136,30,167,48,2,121,199,64,102,7,216,15,94,221,5,32,134,251,24,11,120,72,199,6,9,136,61,249,204,68,96,128,51,144,71,167,25,166,155,91,129,203,37,199,78,130,34,164,250,117,85,199,215,61, +205,0,46,37,232,183,68,114,121,22,178,96,19,198,48,39,7,158,7,229,131,82,42,204,122,222,231,29,190,207,114,0,207,78,60,242,63,65,200,238,115,136,190,204,249,206,203,174,49,146,19,183,182,28,14,189,70, +70,14,58,82,152,36,60,148,185,4,244,251,128,247,193,63,189,4,118,29,255,0,78,0,44,44,83,182,72,187,126,156,17,111,114,0,231,61,60,225,244,198,65,206,79,61,41,26,57,151,173,236,163,31,244,239,54,62,159, +53,215,63,151,166,121,168,76,18,54,70,203,147,223,37,206,61,207,23,24,231,31,227,140,26,96,128,103,15,12,217,245,203,99,175,60,155,156,30,221,49,131,130,15,6,128,39,27,240,115,119,112,227,184,16,55,31, +157,209,235,219,28,130,63,48,163,176,25,154,114,59,6,130,60,125,72,105,27,211,191,126,245,24,182,139,169,138,76,250,7,126,222,160,93,224,142,184,3,147,207,78,105,126,205,0,63,52,45,215,144,100,32,147, +201,227,125,238,51,254,113,154,0,95,43,32,243,46,57,24,22,176,113,244,39,25,235,211,168,228,147,138,103,144,185,233,114,71,95,248,244,66,122,115,206,214,43,245,7,143,175,52,255,0,177,219,40,4,199,129, +187,174,240,9,30,196,222,55,175,98,65,31,149,74,45,108,241,202,251,159,222,160,56,227,7,63,107,24,28,240,0,207,94,57,20,1,15,150,163,31,186,185,32,228,100,89,199,211,140,242,32,56,231,176,24,235,235,138, +122,164,127,243,237,48,238,11,68,163,36,244,235,108,48,59,241,233,86,86,202,204,240,170,115,158,79,156,196,118,254,237,195,12,122,241,248,119,51,45,149,176,254,12,143,121,219,60,118,7,121,25,3,241,61, +59,240,1,72,172,96,127,168,151,35,209,98,3,0,117,199,217,193,98,7,184,227,190,41,7,146,188,152,36,199,114,216,198,121,206,7,150,23,28,156,28,99,142,128,158,52,141,157,166,1,17,63,108,226,118,96,71,174, +55,15,94,128,30,131,235,78,75,91,83,255,0,44,192,255,0,122,70,245,62,173,140,116,237,211,138,0,205,89,109,250,8,128,39,168,59,9,227,129,200,137,207,28,100,100,117,234,106,116,104,148,19,180,161,60,252, +219,118,174,125,254,206,6,56,239,207,175,190,152,182,181,0,97,17,120,39,137,79,63,76,159,81,143,215,218,153,246,104,143,72,208,253,112,222,220,18,248,228,14,125,135,61,113,64,20,133,204,64,227,206,0,246, +225,143,0,116,249,97,24,199,80,71,243,235,48,186,139,175,218,7,208,121,227,61,128,24,95,76,116,31,67,233,116,65,30,6,99,76,227,60,1,249,240,253,251,159,92,158,105,124,152,186,121,49,182,79,76,31,174,49, +187,130,122,227,31,159,96,10,171,123,30,112,36,76,142,161,146,229,243,199,29,64,62,254,253,58,230,164,23,125,214,85,3,183,201,114,163,159,66,71,62,156,116,207,36,117,169,190,202,135,145,107,109,131,143, +225,124,244,231,56,110,253,56,3,61,186,138,62,200,157,69,157,153,35,158,75,140,14,61,100,28,113,206,113,244,199,64,8,69,211,147,205,220,40,61,27,206,193,199,39,170,159,169,56,3,174,59,211,197,193,206, +77,196,25,30,243,129,219,143,245,39,63,135,61,56,244,151,236,240,114,62,199,104,8,207,70,110,122,103,163,142,49,211,145,215,156,231,135,164,17,169,207,217,237,71,212,97,70,122,242,243,115,219,215,183, +92,138,0,69,188,192,249,46,173,15,99,254,185,200,62,152,54,143,147,219,35,220,117,165,251,68,205,214,226,18,51,253,203,144,49,232,15,216,128,3,62,132,12,99,181,79,229,198,115,251,139,60,119,196,144,169, +57,4,112,76,228,99,60,250,251,246,166,136,226,7,253,92,3,147,199,157,110,122,240,48,12,220,123,99,183,24,231,128,6,125,170,101,31,235,160,31,240,11,220,253,65,91,85,25,235,130,79,57,239,144,10,11,134, +126,178,192,199,142,74,222,14,157,137,54,231,143,199,219,215,54,118,71,143,187,15,35,3,231,183,4,115,201,207,157,143,196,99,167,214,148,42,130,8,88,186,99,30,101,160,252,255,0,127,156,253,63,28,208,4, +34,70,7,42,214,231,169,225,46,121,199,187,68,49,245,0,159,160,205,41,146,227,143,158,32,49,208,35,140,117,245,143,61,125,121,28,140,113,86,145,99,32,110,9,159,93,246,100,119,245,156,140,243,201,199,175, +177,169,135,217,84,100,128,59,16,178,88,245,245,32,220,16,61,48,56,233,142,180,1,72,75,112,78,60,228,29,58,202,224,103,142,6,2,227,175,79,233,71,153,48,228,152,89,129,236,242,19,147,208,141,172,78,122, +228,231,169,233,154,209,221,0,3,4,251,29,214,46,71,24,227,55,0,125,51,235,223,173,47,156,191,117,36,101,30,235,167,31,192,127,165,0,7,182,7,62,185,160,12,209,36,189,73,133,51,206,51,117,208,12,0,0,148, +30,216,232,6,121,232,72,164,45,41,57,221,30,56,224,45,214,127,89,135,63,82,51,223,160,173,22,101,108,102,102,1,186,22,93,49,70,122,241,137,203,103,241,62,227,158,24,97,66,114,102,39,35,39,139,30,221,58, +75,239,199,35,218,128,41,9,36,25,195,40,56,228,25,46,185,61,178,191,111,7,183,35,212,116,20,224,215,13,252,67,167,252,244,184,28,122,231,237,195,174,121,206,112,14,113,156,213,197,141,121,62,114,29,220, +16,209,88,112,56,238,110,56,239,219,215,39,212,218,1,7,204,132,145,234,44,147,4,250,226,70,28,156,118,252,168,2,1,21,203,114,10,241,255,0,79,23,0,243,143,250,122,110,254,135,235,74,208,92,131,243,5,200, +228,15,180,220,3,159,80,77,198,120,206,114,15,25,201,199,123,34,56,136,203,201,24,61,14,13,169,56,25,199,221,95,79,78,157,187,83,25,32,24,219,36,125,193,203,219,38,6,56,224,168,61,121,235,147,159,165, +0,65,246,118,32,228,32,62,247,151,32,130,59,113,56,61,251,250,99,174,1,104,180,35,169,67,235,254,147,114,192,117,198,72,156,227,3,62,153,52,242,145,227,229,157,57,234,60,203,114,125,115,193,247,207,0, +158,59,113,78,17,33,199,250,68,124,243,143,58,48,79,230,49,233,207,79,231,64,17,173,170,19,144,234,27,213,110,46,215,174,123,135,35,32,30,50,115,129,200,57,230,101,182,69,231,207,27,143,95,244,137,219, +142,231,231,99,158,113,255,0,214,227,13,48,68,122,220,117,61,174,163,234,125,188,179,143,98,49,131,208,245,202,108,141,120,19,41,25,198,90,237,51,158,56,35,203,231,212,117,231,208,116,0,152,91,99,145, +38,70,113,247,221,142,61,15,43,249,145,219,56,228,80,109,164,193,249,178,8,231,247,110,231,25,255,0,106,57,50,122,114,63,14,185,45,87,97,159,222,70,0,28,230,228,99,235,242,166,48,122,227,28,143,199,50, +9,36,219,143,50,50,49,218,233,84,228,114,15,48,28,250,99,191,211,34,128,35,251,48,31,242,209,71,166,251,126,14,113,221,96,30,160,243,199,167,94,92,177,162,242,100,131,36,28,127,163,103,249,192,49,211, +168,111,203,138,3,74,223,242,212,19,158,118,221,14,152,235,129,0,4,117,201,92,142,156,122,40,103,29,102,92,117,33,166,66,65,192,29,76,106,112,58,250,117,32,140,80,3,51,8,36,9,160,200,28,255,0,162,39,31, +79,151,63,136,32,243,223,129,74,2,30,151,22,199,142,84,216,147,245,36,8,249,199,175,95,126,212,224,88,158,100,135,24,232,215,54,196,156,243,156,24,95,160,231,191,78,128,224,151,109,108,140,24,72,207,95, +62,219,142,59,226,212,117,227,142,123,80,2,5,67,199,157,108,125,113,167,99,131,193,235,110,216,239,142,255,0,206,147,105,0,237,123,83,237,246,2,127,241,209,106,59,251,210,238,32,143,150,22,35,167,239, +44,155,211,61,96,200,253,14,7,110,149,32,148,119,16,227,251,187,236,241,245,56,183,0,159,241,56,244,160,10,230,39,36,144,214,199,254,225,168,48,125,255,0,113,235,131,156,142,188,142,212,211,4,152,225, +237,7,4,157,218,122,130,15,28,100,69,237,220,0,48,6,61,47,9,131,112,194,60,1,143,151,236,172,7,76,31,248,247,239,193,60,253,59,83,202,198,192,96,199,158,192,155,49,145,247,177,131,16,224,228,228,100,117, +232,40,3,52,219,177,7,247,182,120,62,144,194,51,245,30,81,61,127,67,75,228,16,0,47,106,71,102,217,14,122,127,215,62,51,232,123,250,213,255,0,45,89,72,49,198,0,232,115,104,73,4,116,24,86,24,7,142,159,143, +160,33,82,163,108,42,113,193,249,97,57,30,255,0,32,236,57,193,246,246,160,10,62,67,17,195,198,59,13,176,64,71,65,146,8,131,140,100,99,175,94,216,166,11,73,72,35,122,159,80,33,139,60,244,198,45,198,122, +99,25,192,24,237,90,127,103,206,64,183,65,142,194,52,227,159,96,58,245,192,245,62,148,211,109,34,253,216,121,25,60,66,79,166,14,1,237,220,103,156,142,157,192,51,77,156,136,49,146,125,72,72,128,30,156, +24,71,226,112,113,207,60,84,70,7,193,253,227,113,159,224,140,227,128,14,113,18,245,39,145,158,115,142,56,206,167,147,119,208,91,177,247,22,242,48,3,223,107,28,99,211,25,253,48,241,111,124,223,122,34,48, +121,205,172,227,30,220,112,125,121,200,3,4,156,156,0,12,99,14,71,204,210,159,113,8,56,25,62,170,122,114,50,9,25,244,226,154,177,40,227,116,152,206,112,97,94,79,94,162,34,14,79,174,127,10,217,54,215,92, +228,110,35,4,230,210,110,61,178,72,7,175,24,228,246,61,77,39,216,238,200,36,36,64,16,112,90,214,64,70,121,228,249,203,142,0,244,199,111,80,1,142,99,143,147,151,228,253,223,36,231,7,39,175,217,223,175, +77,220,28,254,136,177,219,247,19,15,172,82,30,123,114,182,99,61,61,123,113,239,170,109,111,134,48,177,17,156,252,182,142,123,99,141,215,24,244,60,99,39,62,228,161,130,236,228,25,2,28,30,62,196,195,28, +158,63,215,30,61,49,248,26,0,207,242,109,219,238,172,128,1,215,236,211,159,174,91,236,195,25,231,234,122,245,225,175,4,35,4,25,201,29,150,222,229,115,255,0,124,219,160,247,200,227,25,206,106,255,0,145, +116,62,245,203,46,15,65,167,177,193,224,117,51,103,62,227,131,215,222,154,241,220,175,63,106,98,125,62,194,220,19,145,222,224,116,237,128,127,14,104,2,150,200,64,201,251,73,10,72,56,134,237,143,212,101, +0,29,58,28,96,99,167,56,110,248,70,64,142,235,60,99,253,26,244,143,112,118,240,9,61,51,156,115,146,59,220,223,112,62,83,112,224,158,121,176,92,227,215,253,113,56,237,193,235,218,152,210,76,1,38,240,175, +4,100,218,32,7,176,228,206,48,7,3,168,207,113,142,160,21,202,196,71,17,221,146,7,123,107,165,199,3,174,100,207,61,179,159,199,20,221,241,175,88,103,198,49,147,12,221,71,168,37,127,67,156,96,244,34,165, +105,223,24,55,237,145,129,197,186,158,152,236,46,143,80,63,175,52,195,115,54,14,219,201,24,118,111,41,84,246,39,0,204,192,251,254,88,205,0,5,148,140,139,121,78,127,233,156,224,146,58,3,251,195,146,125, +50,7,210,153,185,134,65,181,186,35,28,109,91,129,158,65,207,222,60,12,253,0,244,165,107,137,71,222,185,184,63,47,24,72,193,227,143,239,182,63,51,146,127,0,207,181,40,251,247,87,36,140,227,253,29,8,63, +142,207,204,143,203,181,0,5,206,62,91,107,159,83,196,164,140,113,206,95,215,0,252,188,15,214,54,50,252,216,130,232,117,236,224,231,176,32,176,236,7,63,81,239,79,107,161,192,23,55,13,147,156,249,49,140, +145,145,213,161,35,245,207,74,103,219,74,240,39,159,175,67,21,176,252,121,131,61,135,95,173,0,66,12,171,210,27,131,146,79,38,64,58,250,23,193,24,231,32,31,167,52,164,205,140,152,223,191,28,126,155,179, +130,125,141,72,110,137,63,52,247,121,227,59,82,212,228,31,93,214,236,115,199,227,199,94,105,198,86,61,37,184,44,122,2,182,106,79,124,252,176,160,200,227,208,245,235,158,0,43,239,184,218,118,135,29,114, +24,71,255,0,179,35,12,142,132,231,28,116,233,81,153,238,71,68,99,142,112,82,19,156,30,131,17,145,207,185,3,24,206,121,171,70,86,200,253,237,210,144,14,113,29,169,36,253,118,18,15,110,123,19,223,154,67, +36,204,120,146,244,247,226,59,62,6,121,235,22,71,183,63,95,112,10,162,226,228,129,242,73,144,48,74,198,157,79,176,136,126,103,233,81,61,213,210,131,242,77,211,140,195,31,175,76,52,43,215,234,51,206,15, +90,184,205,51,112,100,187,39,161,30,78,156,199,62,193,163,28,159,168,244,230,161,38,225,126,235,93,28,240,1,182,210,177,207,65,146,8,31,80,50,9,52,1,81,174,238,58,236,155,211,253,90,100,103,182,10,115, +199,92,28,128,125,234,19,127,116,189,60,208,49,255,0,60,162,233,211,147,189,123,99,156,14,216,198,106,232,75,199,251,173,49,30,134,223,69,235,143,116,4,99,211,215,61,113,192,208,222,140,110,50,103,61, +26,13,8,113,145,156,98,49,156,116,247,246,60,208,6,113,212,103,39,164,174,122,156,69,27,112,120,227,253,32,14,189,200,25,231,218,154,218,173,194,240,17,192,199,39,202,81,212,245,255,0,143,131,142,0,199, +32,242,50,122,213,246,130,99,156,182,15,161,135,69,44,7,81,209,71,25,235,129,128,120,200,234,90,208,55,221,50,71,156,99,59,52,111,114,122,128,79,25,61,7,225,216,3,57,181,89,134,112,183,28,140,252,177, +3,248,225,103,201,207,169,255,0,10,136,234,50,16,51,246,129,208,156,194,216,206,61,90,97,208,242,58,30,48,65,237,113,237,223,167,159,10,241,217,52,126,252,246,98,61,50,8,207,229,80,189,183,57,55,112,228, +156,100,67,164,14,227,174,19,36,99,25,193,238,56,7,168,4,66,254,78,207,117,146,58,24,71,211,35,19,145,192,244,227,143,81,73,246,201,24,127,172,185,13,147,144,99,0,246,198,63,126,49,156,117,227,142,199, +165,47,217,35,39,38,234,217,186,253,232,116,163,156,12,231,152,78,51,215,57,253,49,144,90,194,14,76,214,103,183,250,157,36,18,49,212,255,0,163,245,207,191,110,221,40,0,243,230,108,109,150,113,220,242, +128,145,158,159,241,242,50,51,215,25,62,190,148,190,125,202,140,139,155,133,60,156,147,27,14,56,60,53,199,3,156,129,223,31,40,38,155,229,66,50,166,75,60,118,5,116,193,143,92,237,183,239,199,31,94,104, +242,109,6,127,121,108,113,215,17,216,131,159,168,143,142,15,3,0,159,195,36,1,198,226,229,185,251,68,236,15,35,98,39,126,229,133,200,252,136,235,78,223,121,143,150,107,133,24,25,37,34,206,58,243,186,99, +207,98,73,192,200,198,123,193,182,216,19,182,91,99,199,32,165,145,62,248,193,94,135,60,142,49,142,115,140,161,17,47,123,119,193,35,253,85,185,61,243,206,227,131,142,58,250,113,156,96,2,99,37,209,60,221, +220,116,31,242,206,220,158,120,231,50,131,144,79,242,39,4,26,133,166,184,0,143,181,206,126,182,240,147,248,98,97,245,206,57,60,158,148,102,16,8,219,0,28,227,16,219,30,220,2,57,254,100,159,95,69,86,128, +16,54,71,235,242,219,219,228,116,206,112,184,7,182,61,48,120,57,20,0,197,158,227,180,179,244,199,48,65,156,96,14,162,112,71,227,158,56,235,213,26,107,147,157,207,32,237,202,70,9,246,234,71,110,231,35, +219,53,33,150,12,241,10,158,58,180,118,131,158,71,60,167,65,207,94,188,96,130,41,119,39,24,180,182,57,192,228,90,146,71,99,242,176,32,3,206,59,19,197,0,84,38,66,120,118,227,209,34,232,121,236,235,142, +195,24,192,198,121,166,22,115,193,154,110,9,233,12,45,140,123,153,87,215,167,60,115,208,85,226,201,255,0,62,208,130,121,27,26,0,63,28,74,14,57,250,15,122,128,136,206,71,151,24,246,19,64,191,94,60,227, +235,145,216,254,28,128,87,196,135,63,189,151,7,63,242,235,15,60,246,63,104,29,65,231,24,20,130,22,63,242,210,225,115,215,22,233,142,199,140,92,242,51,206,15,95,90,156,199,15,117,80,56,233,52,32,243,239, +230,228,126,25,28,103,177,195,74,65,253,210,71,57,34,127,124,227,137,88,112,61,186,159,90,0,137,173,216,255,0,203,196,253,6,127,209,70,58,100,143,150,98,122,117,237,159,106,143,236,210,118,153,251,242, +208,21,228,122,100,228,158,9,207,243,205,74,203,7,42,4,138,125,68,221,176,120,251,221,179,145,140,96,142,7,106,140,69,17,4,9,37,36,242,20,79,158,190,194,65,192,207,249,29,64,20,90,202,121,251,65,193,233, +152,84,250,146,112,88,159,175,7,25,63,74,113,179,155,160,189,117,239,133,141,23,145,236,24,117,231,63,254,186,140,41,80,0,103,61,71,252,124,227,25,255,0,182,191,207,167,61,141,46,63,188,9,231,175,159, +130,71,29,195,158,227,7,28,28,113,156,224,0,49,172,46,91,165,236,217,207,79,36,114,61,51,231,174,57,61,129,250,30,105,63,179,53,1,210,242,108,117,63,232,192,131,142,49,205,198,56,200,245,231,223,52,226, +169,142,146,3,215,228,185,96,120,227,25,220,49,211,142,59,210,148,135,3,38,83,254,245,193,110,48,125,28,18,7,4,140,123,30,56,32,12,109,55,80,0,17,117,41,57,56,38,213,123,231,184,156,244,231,183,166,14, +71,49,13,58,244,18,90,123,134,207,57,22,236,6,57,29,156,147,248,119,235,154,148,71,14,121,87,99,255,0,93,36,110,189,136,18,103,142,61,8,28,156,246,159,228,83,133,141,142,123,151,144,15,114,70,243,215, +211,182,56,237,144,10,203,101,123,255,0,61,167,192,245,130,94,156,15,94,78,9,245,239,214,147,236,119,96,255,0,199,195,244,193,6,57,1,7,220,25,7,66,120,237,142,248,206,46,238,140,1,186,4,3,131,203,184, +24,29,137,36,245,201,207,167,175,52,155,163,36,126,230,12,28,125,233,27,175,60,143,222,14,72,199,28,123,96,230,128,43,37,141,201,227,237,13,238,4,39,39,175,66,183,138,120,199,160,233,207,122,151,236,19, +228,229,238,27,61,1,137,241,156,96,156,139,211,212,254,125,113,142,179,7,140,240,34,128,250,252,239,219,191,19,116,192,29,127,167,10,30,223,28,164,39,158,126,108,129,158,113,204,228,231,242,28,231,182, +0,5,127,236,249,142,65,73,142,58,150,89,49,207,28,134,189,3,244,250,12,12,149,26,107,231,152,208,244,24,40,164,158,189,65,188,36,18,1,234,115,199,174,106,66,246,164,144,12,32,116,225,84,228,245,199,250, +224,79,67,211,219,56,164,50,194,7,222,233,232,161,70,58,14,12,157,71,185,61,79,4,115,64,9,246,40,249,12,177,251,131,0,227,223,112,188,83,142,221,50,115,77,251,12,0,240,177,28,122,196,254,157,127,227,228, +224,250,14,113,238,105,30,120,134,54,183,62,202,187,142,70,112,51,33,246,57,57,57,233,199,52,130,224,12,225,165,7,175,222,140,159,203,121,0,125,78,59,99,154,0,148,218,68,57,11,16,31,238,28,100,115,158, +110,56,199,29,207,56,227,4,212,109,108,48,66,136,125,191,117,17,24,235,252,119,32,243,219,28,250,12,100,84,79,33,110,68,146,227,215,116,103,156,159,69,36,17,199,60,115,245,197,64,205,33,206,39,184,76, +158,202,189,251,240,172,51,143,175,245,160,11,30,71,57,41,9,57,234,45,237,9,244,235,246,156,247,57,28,31,94,226,154,209,133,24,242,71,28,255,0,199,173,184,199,126,63,120,216,252,57,253,106,190,38,206, +62,215,112,79,83,152,211,159,78,176,55,255,0,175,184,230,164,242,159,171,79,41,246,104,179,143,81,147,106,125,179,130,58,122,117,0,82,23,180,106,8,232,77,173,185,39,62,153,62,153,61,72,246,234,105,234, +24,14,145,251,1,103,19,122,96,112,189,125,128,198,15,57,28,212,94,83,103,2,121,179,219,17,73,130,15,251,150,153,228,117,57,56,234,78,112,105,124,134,201,253,236,184,36,99,247,114,142,216,199,252,121,28, +100,247,207,224,120,160,9,66,156,156,170,245,233,246,5,0,3,219,1,61,249,193,28,14,7,35,49,236,148,116,81,129,211,22,145,140,31,111,144,100,254,124,251,231,33,181,207,252,181,35,4,231,114,22,28,241,200, +54,64,243,147,223,211,29,78,92,182,132,17,186,84,97,207,205,229,170,147,140,1,130,109,23,223,35,167,243,160,0,53,194,140,8,247,99,156,253,134,0,79,62,166,60,245,39,175,30,189,51,75,186,124,243,28,96,113, +203,89,193,158,189,142,210,70,115,219,62,184,235,82,27,5,57,255,0,72,137,119,112,70,197,245,61,115,104,71,7,175,110,157,178,41,14,156,160,100,220,64,7,127,220,198,120,199,253,122,1,219,56,224,251,122, +128,51,107,185,249,146,1,232,77,156,56,233,199,240,131,233,207,29,122,158,73,95,36,14,64,183,207,66,62,202,0,227,7,63,46,209,237,200,7,6,165,22,81,41,230,226,217,179,200,196,40,59,255,0,181,0,30,254,248, +227,169,192,45,34,29,36,183,57,199,72,80,128,15,108,133,83,145,129,216,247,20,1,26,197,39,240,155,33,254,244,42,57,250,111,252,179,143,196,243,82,109,184,92,97,172,7,28,230,13,196,129,235,251,204,242, +1,207,31,92,99,148,251,60,106,127,214,219,117,200,253,201,32,118,193,1,24,254,135,208,245,228,218,195,32,75,108,70,78,73,137,0,235,254,220,99,252,115,147,128,70,8,3,29,46,186,179,216,100,243,145,6,211, +250,206,131,191,76,142,156,98,163,11,114,1,27,236,88,131,158,35,76,241,207,252,252,156,227,175,94,156,119,169,10,183,103,183,237,194,199,23,99,129,130,177,114,61,115,211,62,189,23,108,161,73,6,223,208, +141,138,73,231,174,66,103,28,99,28,3,142,253,192,24,36,156,100,57,180,99,158,63,118,173,199,81,143,244,143,148,140,118,193,28,253,73,79,11,33,234,150,188,116,109,135,63,76,109,245,63,136,231,56,162,128, +59,95,179,16,65,242,157,72,238,55,129,158,184,56,186,57,252,115,145,142,0,167,44,78,8,200,147,142,192,115,206,70,127,227,228,126,30,255,0,153,12,179,129,243,105,215,172,125,124,157,55,143,169,7,4,125, +15,208,115,146,195,35,142,78,155,124,9,255,0,166,90,106,228,156,240,50,79,168,239,200,247,232,0,242,146,19,128,142,199,220,168,63,173,200,237,143,114,6,15,173,48,198,237,214,38,238,63,131,159,206,245, +114,61,242,123,140,10,97,150,82,79,252,75,47,48,121,201,254,204,198,61,241,131,140,224,99,61,177,219,33,165,230,110,62,193,114,9,227,150,211,199,208,28,56,31,67,206,51,244,160,5,48,200,71,202,146,30,120, +33,34,199,39,191,252,76,199,126,63,64,8,167,24,103,224,236,144,253,54,14,120,24,218,117,50,56,199,161,245,24,52,192,101,3,31,99,184,0,243,195,88,146,15,60,113,33,199,191,232,78,104,50,202,184,63,101,185, +28,116,223,105,207,184,203,55,126,184,28,10,0,105,183,185,193,196,115,131,144,114,25,1,252,0,212,20,12,30,71,160,227,158,199,217,175,8,200,91,174,184,192,145,65,245,255,0,160,145,207,110,221,186,82,249, +184,225,173,46,241,201,200,146,223,159,161,66,14,8,252,15,169,28,82,23,140,245,182,186,30,153,113,158,189,176,234,217,233,216,116,247,160,6,253,158,247,39,43,119,140,114,55,231,35,232,47,249,247,3,219, +39,160,160,195,114,188,20,187,62,160,185,32,246,231,117,225,7,56,227,156,118,228,113,74,18,50,217,242,238,71,78,12,210,128,126,167,121,56,25,61,58,245,227,20,24,199,104,230,7,168,196,243,3,159,169,148, +15,192,145,248,243,128,6,24,39,233,246,123,163,235,134,83,215,215,23,36,113,211,35,235,220,83,12,19,14,62,203,122,71,4,133,149,71,79,95,223,55,31,145,29,234,95,34,83,146,138,252,244,31,104,151,145,211, +188,184,56,239,207,243,56,62,207,48,206,99,145,73,231,62,116,217,201,35,146,69,192,235,131,233,156,30,128,242,1,24,73,148,28,219,106,39,3,248,37,140,243,215,60,185,201,3,143,112,14,57,164,221,46,57,181, +212,215,31,223,100,234,59,96,49,7,61,255,0,12,142,184,148,195,32,228,69,43,227,169,18,205,144,122,100,230,115,198,51,206,115,207,113,79,85,36,115,20,167,158,127,123,55,94,189,124,222,71,76,113,211,140, +99,154,0,131,46,115,254,139,168,12,12,49,253,207,57,227,157,248,36,243,131,211,61,9,235,74,25,199,6,222,239,60,156,148,129,200,24,28,156,73,199,183,30,158,132,212,173,25,110,144,56,3,214,75,131,248,18, +37,198,114,58,15,124,241,200,80,174,167,136,215,232,210,92,130,7,124,147,51,116,244,253,120,160,6,11,132,80,1,178,186,110,59,69,9,39,241,4,245,200,232,123,119,238,195,115,15,3,251,62,232,245,235,111,25, +237,208,101,128,244,201,199,24,206,125,45,226,108,96,68,24,241,194,203,38,61,73,57,156,123,246,30,180,253,242,255,0,207,48,61,140,164,227,235,251,225,147,250,14,127,16,12,239,57,24,156,105,247,35,142, +115,109,25,237,199,221,144,19,128,122,125,49,131,72,88,241,182,198,224,113,222,209,199,160,237,48,227,167,31,227,87,139,73,206,118,131,144,62,86,57,206,48,58,206,125,242,114,79,181,57,93,135,44,112,70, +73,25,198,121,206,51,191,143,113,147,211,156,100,80,6,126,246,224,11,39,60,14,77,171,182,61,122,92,144,51,207,108,244,244,160,22,25,38,196,231,212,89,184,30,189,60,242,57,57,56,31,143,76,86,159,156,59, +51,118,233,32,236,114,56,220,122,14,9,233,140,19,199,20,162,101,198,114,199,56,254,44,158,49,145,156,127,158,220,138,0,201,204,171,202,217,160,36,114,126,199,54,65,244,249,89,184,252,135,94,58,84,134, +91,140,228,217,142,6,78,45,110,7,211,56,250,158,8,247,205,104,52,234,65,33,65,199,109,196,14,188,103,230,199,183,79,83,216,10,129,167,192,225,80,47,25,249,151,175,126,89,212,12,100,246,231,7,144,51,64, +21,140,215,24,219,246,44,14,188,91,206,15,99,207,191,36,14,57,28,247,197,70,101,185,56,11,104,202,115,255,0,60,39,0,227,185,39,4,122,128,15,31,137,21,120,79,38,114,177,100,1,217,226,227,175,76,205,142, +125,142,122,212,77,113,112,189,17,7,7,59,132,28,122,115,251,193,215,131,145,199,92,227,168,5,67,37,216,199,238,138,243,158,32,147,35,235,156,224,245,30,189,57,193,38,154,210,222,115,133,101,227,63,234, +37,227,24,247,0,228,242,6,122,140,247,230,200,187,186,227,11,6,58,99,117,182,62,153,49,129,207,3,156,31,126,197,223,110,185,81,254,166,220,100,117,243,109,112,51,232,26,34,51,199,7,56,206,15,126,64,43, +36,151,132,228,190,9,236,209,72,9,28,246,44,72,199,225,223,7,174,28,90,243,24,243,194,228,99,253,73,60,253,74,140,103,25,228,224,122,118,51,157,70,227,28,71,108,121,227,253,34,207,130,8,231,229,140,99, +190,71,124,211,127,180,46,113,205,189,161,62,166,88,31,174,79,24,137,134,120,231,168,236,61,40,2,47,54,237,112,13,216,95,251,96,27,144,61,0,31,167,7,147,131,217,55,92,158,126,218,184,201,235,22,204,17, +244,3,145,206,120,250,103,169,155,237,215,71,164,86,128,114,7,205,7,225,156,198,14,51,206,50,114,123,142,180,171,117,118,221,30,217,123,128,166,38,252,129,7,57,231,176,246,28,26,0,174,68,199,239,95,71, +220,143,145,120,29,14,27,204,247,238,58,142,221,155,251,211,195,95,198,121,60,121,105,201,227,174,24,254,124,243,211,185,171,159,106,187,224,125,162,46,123,44,112,14,113,147,202,198,79,78,122,116,232, +0,169,150,238,124,252,211,39,190,0,99,238,78,96,199,229,143,175,168,6,126,201,8,31,233,144,156,144,112,65,199,83,215,230,25,7,60,140,115,250,211,132,108,79,55,54,238,121,227,99,122,228,244,147,119,111, +95,95,90,209,91,137,8,249,166,61,56,194,12,250,255,0,207,33,142,51,219,215,189,41,186,31,197,44,135,142,63,117,184,14,163,176,62,185,29,40,2,143,147,46,113,230,91,227,60,16,242,175,111,79,52,224,126,32, +126,162,131,3,156,101,173,152,99,24,50,92,18,113,192,61,78,126,131,3,220,115,86,204,234,217,253,235,145,237,11,140,127,227,156,156,103,185,246,56,205,32,242,219,4,151,57,238,97,145,112,79,92,28,14,248, +238,122,247,198,40,2,162,193,131,146,45,122,103,5,174,49,223,166,7,174,123,156,231,159,83,63,145,156,2,182,192,14,120,251,113,201,228,142,128,12,116,198,51,142,199,176,156,136,7,2,87,83,142,126,82,115, +234,50,221,51,211,160,197,40,107,92,124,215,13,207,174,125,120,192,18,168,36,123,123,241,218,128,32,192,92,225,109,8,200,228,181,233,207,29,195,40,56,60,246,234,115,156,230,152,84,147,196,118,121,57,32, +176,188,92,30,6,115,181,176,70,120,200,30,199,3,53,96,189,154,231,50,49,28,99,7,25,250,124,236,113,208,240,7,191,25,167,9,108,113,201,108,142,15,239,135,232,23,24,235,198,79,233,138,0,135,99,48,230,59, +92,140,30,77,233,199,92,117,129,135,160,200,57,3,142,135,20,140,174,160,124,182,153,235,203,94,231,25,61,188,156,30,70,49,143,206,166,50,216,182,64,119,0,103,119,239,20,1,128,127,136,228,28,241,158,231, +56,237,77,221,96,120,103,56,24,3,247,195,119,28,118,43,158,227,159,199,166,104,2,16,204,51,186,59,67,245,146,249,64,247,3,201,3,183,61,248,206,120,197,27,128,235,29,177,231,57,15,120,64,7,24,28,194,1, +207,126,125,56,245,155,202,211,92,114,126,165,159,119,36,14,230,76,3,129,212,250,156,83,132,90,112,227,204,140,116,199,42,64,199,79,249,121,201,247,227,159,230,1,92,152,216,229,225,180,57,207,95,180,147, +199,57,229,14,125,135,92,253,13,4,64,78,12,118,227,167,32,92,142,113,234,161,71,191,92,241,216,116,180,177,216,12,226,117,7,142,145,22,231,156,127,203,81,215,158,71,92,253,65,119,149,106,216,2,225,142, +115,128,45,219,147,235,159,52,129,212,244,231,169,205,0,81,242,225,36,254,230,32,61,158,235,167,175,36,228,122,31,214,133,134,34,112,32,132,143,247,165,63,158,236,113,142,196,113,142,58,3,87,90,214,220, +130,60,231,238,8,16,73,158,15,94,25,176,120,245,192,207,94,149,25,178,131,167,156,196,118,205,187,147,237,144,170,184,235,201,237,237,220,1,139,20,24,255,0,81,16,237,193,108,126,0,159,199,28,96,159,173, +5,35,92,108,134,32,71,0,224,142,121,234,60,197,60,96,14,72,231,165,33,176,78,171,112,128,227,189,156,238,61,177,251,209,142,56,224,19,239,218,129,96,132,103,206,182,199,109,214,50,117,238,112,101,25,63, +95,112,49,205,0,46,205,216,4,70,51,255,0,76,229,60,30,131,254,62,59,1,142,113,193,206,59,212,130,21,201,195,170,130,59,69,35,99,25,207,31,106,0,31,112,57,224,241,140,212,63,98,140,115,246,139,76,3,192, +109,58,76,115,215,254,91,16,125,122,15,199,165,52,219,70,163,254,62,44,0,24,201,251,3,161,28,112,73,223,140,231,215,169,160,11,63,103,60,237,156,115,212,152,152,12,103,29,62,214,1,244,224,82,139,105,55, +110,251,97,92,158,241,48,28,158,223,233,12,58,115,215,183,76,224,213,79,45,88,255,0,199,229,166,7,79,244,60,253,71,51,12,122,246,237,214,156,35,0,99,237,118,167,156,224,90,170,158,79,61,47,1,31,151,233, +208,2,209,133,243,255,0,33,22,7,39,160,35,29,120,3,237,64,1,159,99,212,245,166,152,103,232,47,165,111,64,6,239,199,38,110,120,247,228,247,29,169,148,80,126,107,155,101,62,246,160,231,208,231,237,153,25, +201,236,72,29,1,39,53,32,217,212,95,89,100,245,221,106,113,131,215,254,98,11,140,118,31,129,160,9,196,23,24,226,242,227,31,236,128,59,103,36,137,88,12,114,49,211,129,233,130,138,151,74,120,212,46,248, +227,239,145,159,167,239,191,199,176,7,0,230,61,199,170,223,233,163,35,60,218,200,185,25,255,0,102,253,179,158,252,18,113,131,233,82,14,113,157,67,77,30,255,0,101,144,15,253,28,73,237,234,120,30,167,32, +18,5,156,253,235,251,178,115,255,0,61,6,61,88,252,210,17,207,114,115,140,117,226,148,192,249,207,219,111,73,63,197,189,127,250,227,4,247,25,253,105,20,57,31,38,161,99,140,156,236,183,35,183,124,183,110, +188,231,29,250,243,48,18,96,131,168,217,244,192,196,78,51,215,160,227,158,131,131,142,184,62,128,13,242,159,141,215,151,172,15,56,47,30,62,131,228,111,207,57,7,244,22,22,31,242,222,245,129,236,211,6,7, +216,230,35,159,195,3,53,48,134,83,159,248,152,68,217,232,23,204,82,61,115,150,0,31,208,126,85,50,219,183,252,254,198,65,207,221,107,129,200,233,130,185,236,64,200,30,152,160,10,166,49,215,124,231,182, +12,168,8,250,126,235,166,125,61,58,115,130,229,183,61,66,207,207,39,247,234,62,167,34,223,250,122,158,181,111,236,242,19,242,221,39,126,178,221,251,142,165,15,30,157,63,3,74,182,147,117,251,82,54,58,143, +54,227,156,250,254,228,241,158,121,62,157,241,64,21,190,207,253,232,230,207,108,78,185,227,28,238,48,116,252,72,252,58,59,236,169,221,156,99,143,154,225,6,51,211,172,60,127,46,120,61,197,131,103,40,25, +51,56,231,156,77,57,250,255,0,203,14,217,231,57,227,32,245,167,11,89,20,15,158,232,100,227,2,114,185,200,198,50,240,243,145,199,61,71,56,234,104,2,175,216,173,200,7,150,32,147,131,52,108,63,2,45,216,142, +123,255,0,46,225,177,135,57,218,61,65,46,167,30,131,38,216,116,60,112,188,145,156,115,205,207,177,22,231,253,51,32,145,143,180,162,231,208,227,203,80,127,44,113,223,156,134,207,25,37,111,176,63,233,238, +33,248,227,110,73,39,182,62,153,238,1,81,109,161,81,214,33,145,252,78,51,145,235,155,65,248,224,227,158,61,148,219,194,15,9,17,29,254,120,207,114,50,55,89,2,7,127,160,24,205,92,88,35,199,220,185,56,206, +55,94,1,147,215,25,218,9,235,128,58,126,88,169,62,203,199,252,122,205,219,147,118,167,3,28,18,10,228,14,58,99,191,65,220,2,167,217,33,108,124,145,3,212,97,162,233,142,122,233,236,121,250,250,241,232,225, +98,8,200,104,136,29,203,197,142,217,199,252,75,199,126,191,134,51,142,110,139,82,127,129,212,30,222,106,30,57,31,197,31,231,192,244,198,1,52,245,178,7,170,177,206,115,243,198,123,103,180,93,71,67,249, +228,140,154,0,171,246,38,64,78,99,56,28,228,66,217,3,28,229,172,6,59,224,145,150,236,6,5,56,65,215,27,61,112,45,109,223,28,96,142,44,64,234,79,83,233,158,121,171,31,102,141,79,221,112,7,35,45,23,124,30, +15,151,199,57,236,51,156,247,225,226,221,56,56,136,103,63,126,72,14,115,220,3,17,39,191,32,240,113,248,128,87,242,221,49,251,184,100,231,56,251,20,56,31,79,244,112,115,238,7,60,247,226,156,4,128,15,244, +88,113,255,0,94,145,127,47,179,0,15,229,159,94,42,216,182,7,0,172,61,115,128,232,51,131,145,247,96,4,159,83,198,121,201,237,83,165,162,99,145,23,124,124,242,145,207,92,1,16,30,156,142,249,4,80,5,45,132, +145,155,78,125,173,33,61,126,182,221,121,62,135,61,123,138,79,32,28,238,179,118,231,144,45,16,99,142,251,109,198,49,215,160,28,245,224,103,81,109,199,64,214,224,116,193,121,151,24,7,208,2,123,103,215, +166,69,43,89,198,122,77,22,122,141,178,76,72,227,156,110,147,159,167,25,160,12,209,111,0,192,107,9,176,121,35,236,228,14,156,114,177,131,183,63,143,124,147,208,251,52,25,249,108,102,81,215,63,103,152, +12,115,211,4,100,30,153,250,115,218,175,27,24,143,45,112,224,243,142,8,62,252,147,244,25,227,184,245,203,26,210,49,210,229,198,7,31,57,28,246,228,113,219,235,249,112,1,81,161,183,3,31,99,159,32,245,251, +53,192,25,252,100,7,140,159,199,3,181,30,93,183,123,105,135,29,13,188,185,63,248,255,0,229,208,0,49,86,196,4,112,39,45,146,49,251,215,252,122,140,14,112,56,254,89,20,225,7,98,216,231,140,202,160,243,146, +122,161,36,12,250,113,129,130,113,64,20,204,22,173,143,244,105,189,57,130,113,207,227,46,7,83,200,3,240,230,163,54,182,195,129,109,40,57,29,97,148,142,163,146,119,49,231,190,6,50,9,226,180,133,187,131, +145,43,99,143,186,208,55,79,125,160,156,118,233,200,252,158,209,74,1,253,235,113,212,19,111,201,252,189,248,235,233,244,0,207,91,43,127,249,227,40,247,22,242,28,3,208,242,65,0,245,206,1,237,222,131,105, +8,228,36,153,200,194,180,32,47,7,7,57,149,115,211,156,28,12,156,103,57,171,158,68,173,130,103,0,127,180,44,255,0,28,110,97,233,207,79,195,7,8,97,155,56,19,100,115,208,217,183,7,167,25,201,207,24,234,113, +245,205,0,85,91,117,207,250,183,236,114,19,0,30,153,255,0,143,165,31,158,63,66,41,254,73,7,134,144,231,156,20,78,48,49,193,23,184,252,254,157,14,42,65,21,202,253,215,252,12,86,234,51,234,10,146,63,28, +251,246,6,148,155,172,143,150,2,71,56,101,141,79,225,243,168,198,122,114,63,15,225,0,21,95,187,54,7,64,99,136,118,244,55,163,156,14,131,63,165,72,11,1,202,205,208,245,16,140,156,103,32,11,195,212,247, +192,234,121,233,80,255,0,165,145,204,80,247,4,42,199,211,39,32,102,96,167,63,143,78,253,195,28,160,18,109,211,39,39,62,84,39,241,0,92,142,184,234,7,92,114,120,160,11,25,238,81,243,199,82,138,73,32,17, +131,231,48,28,122,145,234,9,21,27,4,28,157,192,243,145,246,140,1,147,208,144,216,245,238,120,192,224,99,53,8,115,144,209,156,119,11,22,1,61,71,221,186,199,167,99,219,158,40,80,163,239,66,122,30,162,81, +144,121,0,108,148,244,238,57,25,56,235,64,22,129,80,0,203,254,23,140,163,30,216,110,153,207,126,231,189,5,163,28,129,54,56,199,250,124,160,100,14,196,18,48,125,71,167,229,68,198,164,146,34,143,241,23, +64,123,28,172,160,3,215,215,39,7,57,165,17,96,100,68,132,241,252,87,32,228,244,198,233,79,215,60,123,138,0,181,184,49,233,48,207,0,157,74,115,207,208,48,207,28,224,103,161,206,50,9,126,213,42,55,25,48, +48,72,109,70,233,65,0,14,127,33,233,129,216,245,172,220,72,24,159,37,135,32,16,26,98,56,232,1,243,186,240,126,153,56,169,2,185,4,8,164,7,159,151,123,224,156,246,13,112,167,183,32,125,125,232,2,230,200, +250,108,13,145,156,190,167,119,143,203,99,103,174,113,216,156,3,142,68,101,98,82,7,151,25,108,156,133,212,47,115,200,7,129,228,28,227,233,239,234,106,5,142,92,240,179,140,245,193,80,50,122,245,186,201, +231,175,39,241,169,151,204,76,229,229,28,117,145,193,80,62,158,113,231,167,67,201,224,1,201,160,6,21,136,245,85,7,184,125,70,240,158,157,195,90,244,199,66,122,231,233,70,32,81,156,70,15,160,212,46,65, +227,216,66,164,251,30,196,243,131,197,75,230,202,64,2,118,30,194,66,51,142,224,13,195,146,7,7,160,244,57,169,215,205,239,52,157,186,202,131,29,243,247,9,3,215,241,238,115,64,21,21,225,231,3,184,57,107, +219,178,49,219,147,180,18,123,125,48,125,159,186,46,235,25,233,255,0,47,87,3,175,7,146,65,36,113,211,35,57,235,205,89,62,121,198,217,207,30,146,35,113,235,243,48,238,56,227,183,212,22,129,112,163,38,229, +176,121,35,228,200,231,215,205,192,245,193,30,195,29,192,33,220,135,156,198,6,122,125,178,110,132,244,193,193,252,7,124,224,224,210,127,163,231,44,170,199,208,77,59,146,123,30,24,156,246,224,30,61,234, +99,44,171,255,0,45,100,198,115,146,96,60,30,160,18,231,0,118,206,78,7,4,113,74,39,99,210,225,121,236,198,17,206,123,228,144,7,61,136,246,233,64,21,201,183,233,246,76,144,122,110,184,57,247,35,107,99,161, +227,12,58,208,100,139,60,89,72,51,200,219,28,207,211,168,0,194,71,92,0,115,200,206,122,129,86,183,179,117,187,140,114,58,180,3,3,219,60,246,207,35,144,71,124,0,223,49,84,227,237,112,156,244,220,208,30, +222,128,14,222,252,138,0,168,206,167,4,89,221,158,128,129,20,192,96,116,3,8,58,115,130,7,174,122,242,220,160,231,236,151,57,28,109,104,165,39,56,231,248,51,198,49,200,234,73,238,77,90,32,62,113,53,177, +234,0,197,171,119,7,131,141,221,179,206,64,247,238,207,35,28,147,106,71,114,235,108,71,62,160,178,244,247,28,245,0,80,5,54,117,39,3,78,186,110,79,62,77,193,4,159,76,33,28,228,142,49,129,216,244,168,76, +106,199,254,65,119,89,244,242,101,4,122,28,121,92,19,142,127,62,78,113,162,96,141,143,38,192,143,247,45,71,35,216,63,182,15,60,228,231,52,162,16,78,66,90,178,140,159,149,109,61,61,124,220,228,117,198, +63,44,240,1,142,209,133,231,251,43,82,201,235,178,9,27,215,7,111,217,143,234,57,244,244,97,141,15,39,76,213,176,112,71,250,12,217,199,253,250,78,227,35,129,142,220,26,221,40,163,35,200,136,241,130,67, +90,175,227,147,39,78,199,145,211,57,34,163,48,134,60,218,140,17,128,119,218,156,123,124,172,79,182,64,61,58,80,6,9,72,199,31,96,212,151,28,141,214,78,50,15,76,110,7,215,7,3,190,121,166,50,160,228,91,223, +38,123,125,157,71,3,208,180,124,144,123,14,184,239,131,93,11,91,116,34,200,145,143,225,104,200,238,58,124,163,60,247,24,7,161,234,105,134,21,92,1,96,220,245,59,98,13,250,231,39,215,140,3,211,34,128,57, +221,240,142,171,114,158,187,160,136,231,62,219,87,61,184,199,61,40,243,172,128,57,51,2,120,193,183,132,247,193,200,222,57,239,242,142,58,12,142,78,227,66,91,143,236,233,78,71,247,109,129,227,167,34,62, +125,123,30,71,39,138,97,182,192,35,251,62,80,122,156,60,35,56,206,63,229,145,250,115,216,231,212,80,6,41,107,67,208,72,71,95,248,247,140,96,123,16,228,227,63,207,173,42,253,148,131,243,58,31,120,147,29, +120,28,48,3,3,160,201,61,56,173,111,36,47,31,100,156,103,168,13,25,110,15,61,33,25,0,250,31,195,166,88,240,158,190,69,218,140,250,163,41,3,128,48,35,7,3,129,199,167,95,64,12,209,246,112,112,178,231,25, +200,242,192,62,253,36,29,78,14,65,230,158,26,32,120,116,193,235,152,241,245,207,207,223,30,255,0,174,5,191,37,249,202,220,1,212,101,14,61,120,34,54,200,238,15,30,244,207,39,156,110,111,125,200,221,253, +140,71,255,0,173,193,232,13,0,64,124,174,190,101,175,61,3,103,61,51,234,221,142,112,61,121,232,41,140,202,79,6,213,189,48,9,232,59,5,137,136,192,207,92,19,219,57,171,6,28,14,10,183,78,176,147,233,215, +42,189,63,83,208,247,168,152,115,130,80,30,191,234,97,25,250,110,228,116,239,198,56,38,128,34,103,81,130,124,128,79,4,237,144,15,108,147,18,228,231,144,51,215,166,0,52,194,98,63,116,91,147,158,129,174, +7,39,140,113,25,231,183,95,94,105,238,152,201,86,65,156,156,237,182,81,147,235,207,76,116,239,199,81,222,6,19,14,146,142,220,161,79,95,102,199,183,28,3,199,94,40,1,175,145,247,98,183,35,184,50,93,46,125, +11,1,7,28,244,192,254,130,161,102,117,63,234,109,192,234,15,155,118,121,237,255,0,44,9,252,137,227,167,165,76,207,115,158,103,147,158,9,5,15,30,227,114,227,158,57,246,61,41,73,186,97,254,186,67,237,189, +59,116,235,113,192,57,60,122,159,94,160,20,222,89,20,130,82,223,175,57,146,232,241,201,198,26,223,166,50,114,1,207,110,149,25,185,24,255,0,87,1,81,147,128,243,140,224,251,91,17,143,243,147,140,213,224, +151,68,103,12,217,236,210,168,63,152,152,140,251,100,254,92,211,91,237,127,243,200,131,142,158,116,36,127,232,194,113,211,191,65,64,25,173,52,45,213,96,7,254,186,79,145,208,119,128,55,229,146,113,248, +84,37,160,231,229,140,147,233,44,227,28,159,88,198,113,215,174,7,4,14,121,212,34,244,227,8,195,128,63,215,67,129,235,214,70,231,24,228,227,167,110,161,184,187,7,230,103,0,28,143,223,192,188,28,115,196, +77,237,211,56,239,218,128,50,213,163,201,97,181,125,188,249,84,246,255,0,99,29,59,228,1,211,173,48,200,71,220,69,108,159,249,254,43,244,200,24,231,182,61,49,142,245,170,69,223,35,237,18,99,145,147,120, +131,0,115,198,219,114,127,94,221,105,155,110,65,63,190,152,131,219,237,199,244,197,177,246,233,199,183,39,32,25,69,166,10,48,160,145,233,124,70,57,36,99,56,253,73,224,113,72,90,92,29,219,199,3,165,224, +110,113,217,119,3,145,211,166,225,248,98,181,188,182,234,254,121,61,50,215,210,96,113,199,31,102,235,143,211,3,166,105,134,56,115,156,160,56,31,122,246,80,79,78,255,0,102,232,56,228,241,198,69,0,101,237, +152,243,230,72,160,255,0,211,202,245,233,221,129,56,3,31,95,94,181,27,7,7,253,116,217,236,69,193,199,124,112,36,7,215,140,159,108,99,53,168,225,19,145,36,96,231,162,222,202,217,7,4,244,182,39,63,78,185, +231,140,212,70,84,3,254,62,29,64,35,165,212,248,235,207,91,80,14,1,245,250,251,128,80,43,112,122,77,114,50,115,255,0,31,15,143,210,111,65,130,115,130,49,138,63,210,128,24,184,155,31,245,218,83,129,159, +105,253,143,124,251,28,213,163,116,163,31,233,146,224,103,254,94,167,35,175,127,220,142,123,19,244,244,164,251,122,142,183,50,227,212,221,200,123,228,231,11,158,189,189,104,2,15,50,232,12,125,162,82,114, +9,6,73,249,56,255,0,174,164,253,123,156,211,203,92,158,76,210,246,227,253,45,184,199,222,198,226,56,238,59,123,243,149,123,228,111,249,110,231,175,252,188,206,71,225,148,193,39,175,31,135,106,104,189, +143,144,110,24,227,57,45,44,196,142,223,195,183,4,14,164,231,167,76,208,3,182,78,221,101,112,51,131,152,175,14,123,30,3,40,60,31,124,245,164,242,72,224,204,73,193,201,242,111,255,0,35,134,199,28,28,242, +57,25,25,232,130,245,67,12,93,40,24,232,205,115,156,158,152,224,143,99,131,216,100,154,26,240,245,91,248,193,237,159,52,159,196,238,231,142,157,7,235,64,10,98,67,214,224,158,224,24,47,177,249,134,110, +121,28,123,231,175,1,166,53,95,249,108,135,36,117,75,190,71,253,244,15,60,103,158,59,244,20,13,74,225,78,22,250,60,125,15,205,248,2,122,116,231,63,137,230,164,251,116,205,201,189,95,94,17,128,231,168, +31,35,47,30,199,31,149,0,68,19,39,30,98,14,128,97,110,176,65,198,115,212,158,51,198,125,253,41,60,176,9,30,100,71,183,204,183,60,247,232,78,57,199,166,49,82,155,155,130,63,227,230,50,79,171,39,177,29, +83,35,183,124,251,82,249,183,76,57,149,61,119,117,252,6,219,115,193,255,0,123,142,120,245,0,172,99,7,140,169,60,158,4,135,215,183,151,208,123,115,143,90,107,91,51,12,170,228,122,237,151,0,158,160,230, +33,206,59,123,227,222,173,159,180,156,98,69,60,112,7,156,63,15,150,209,134,8,206,9,224,113,158,41,133,111,83,230,220,71,80,51,37,202,224,123,98,213,9,237,238,56,61,168,2,137,183,101,63,50,227,35,163,6, +7,143,251,97,193,227,212,114,113,234,41,134,48,14,11,0,1,254,243,1,142,227,254,61,206,127,33,248,86,152,109,67,0,161,221,143,238,205,120,72,29,115,129,17,0,103,232,121,207,74,122,73,169,14,144,202,220, +245,19,95,103,169,231,136,64,56,252,79,166,57,200,6,80,11,253,248,128,236,25,100,111,229,103,199,32,242,127,0,115,154,118,16,245,54,217,237,152,220,253,50,77,143,28,30,125,243,142,43,91,205,213,16,3,228, +59,14,191,235,175,207,228,69,185,24,30,220,244,57,52,255,0,55,83,97,243,90,187,1,239,126,115,192,238,32,231,39,235,147,198,115,138,0,200,8,131,146,45,88,123,44,157,63,13,63,158,189,51,238,51,212,72,35, +135,57,16,218,242,51,202,76,65,246,39,236,29,250,145,223,189,95,105,181,0,126,91,9,59,242,199,81,219,147,159,250,100,112,78,51,219,241,192,52,159,107,212,84,127,200,52,231,25,200,254,209,39,191,28,198, +8,60,142,231,211,214,128,42,109,131,160,130,200,28,115,129,114,70,61,112,44,178,167,177,199,83,233,140,83,196,54,199,172,118,127,149,230,49,233,197,178,254,96,31,66,125,44,11,187,224,14,237,59,147,220, +181,250,227,7,160,202,14,122,116,25,198,115,215,148,55,151,188,15,176,38,15,172,215,128,227,28,28,236,206,14,48,123,28,146,61,8,4,75,21,144,206,96,181,39,215,117,234,240,122,113,246,114,114,122,14,120, +228,125,36,88,237,78,113,111,104,160,255,0,211,75,241,215,235,106,48,57,232,73,207,83,145,77,23,183,74,79,250,10,15,92,205,59,15,110,28,47,25,238,125,57,20,53,213,235,113,246,21,57,57,225,156,129,219, +163,163,0,71,161,227,174,125,40,1,254,85,170,129,136,237,129,28,99,125,251,118,231,149,136,2,79,81,219,31,141,12,176,146,62,88,56,0,97,90,252,54,112,120,25,139,184,237,130,61,249,205,87,50,223,28,226, +209,23,175,87,139,3,158,251,209,115,208,129,206,79,189,48,189,231,67,111,22,88,240,119,219,103,167,79,190,2,245,235,145,159,94,104,2,207,149,30,73,192,235,145,137,111,123,140,228,253,211,158,253,0,239, +218,163,125,188,140,183,92,241,37,225,253,124,225,147,223,145,215,183,122,175,139,161,201,133,23,30,147,90,142,223,237,59,122,253,113,216,2,73,51,118,126,240,218,49,255,0,61,44,14,51,140,128,72,4,96,244, +231,28,224,99,184,3,216,170,253,233,164,0,156,159,248,251,231,39,169,204,164,96,250,143,235,72,54,118,146,82,0,232,22,82,9,255,0,129,57,3,191,56,252,61,27,182,224,244,50,227,131,195,233,216,207,124,101, +203,31,79,124,14,167,128,166,41,176,112,210,116,232,95,77,207,61,241,187,147,199,4,158,190,163,52,0,133,163,7,27,231,0,103,36,192,172,51,235,243,251,113,223,142,79,36,83,12,139,252,51,76,58,116,183,131, +60,123,52,136,49,215,175,94,184,167,139,123,134,28,44,205,158,1,3,78,39,232,49,46,126,188,119,198,125,39,91,59,145,192,138,113,144,121,242,244,195,245,228,220,100,96,243,158,15,126,64,160,10,94,100,64, +12,220,92,14,59,219,217,30,253,127,215,130,57,227,174,59,123,211,11,196,71,50,220,28,159,249,225,104,160,103,185,205,201,31,151,173,105,11,59,159,249,227,114,125,252,189,49,184,201,232,68,227,28,118,207, +167,61,105,69,163,1,150,134,227,159,88,172,49,244,192,187,231,169,237,219,158,70,72,6,110,200,79,222,23,71,215,17,88,254,57,63,104,24,235,216,158,51,207,57,165,17,195,208,172,248,62,144,216,231,3,56,206, +219,134,199,108,231,175,7,175,53,166,109,88,116,183,184,60,131,145,111,100,112,79,126,46,179,235,158,158,149,25,183,144,18,62,207,120,0,233,254,137,7,63,93,183,64,250,103,39,182,49,214,128,40,121,22,231, +168,188,224,129,196,86,131,63,77,178,250,115,156,15,124,115,133,48,194,188,102,244,22,201,3,203,179,94,62,134,225,65,239,207,56,235,146,113,90,11,107,43,28,253,158,231,158,128,219,196,163,35,166,1,191, +0,123,244,199,167,74,112,179,185,94,182,174,84,112,11,65,9,238,7,25,212,63,30,195,24,232,58,128,101,52,112,175,241,95,31,98,150,188,253,8,184,31,142,15,191,4,138,43,76,218,206,51,182,213,65,3,189,164, +12,122,30,138,53,3,159,199,215,7,173,20,1,214,139,117,198,124,132,3,142,68,145,183,60,228,112,253,64,206,15,30,221,169,173,110,164,231,203,140,117,192,202,114,113,142,190,113,60,122,116,237,130,64,21, +125,175,161,56,62,125,169,250,91,177,97,249,2,6,49,215,119,0,243,220,152,205,221,185,235,60,25,63,221,131,161,233,212,174,120,232,113,192,60,230,128,42,125,155,25,33,23,142,184,36,228,250,159,222,145, +159,108,99,222,151,201,36,96,164,95,240,44,122,147,130,76,135,243,231,212,84,194,238,212,99,247,209,147,200,4,91,179,3,212,28,99,32,28,250,245,57,227,173,49,175,109,135,30,105,29,201,251,43,122,116,206, +204,247,232,167,61,50,1,24,160,6,24,217,73,202,198,62,129,59,117,233,187,143,160,201,253,105,164,237,227,17,146,113,247,150,34,61,123,166,126,160,12,251,246,165,251,85,191,79,54,76,243,214,214,83,158, +222,128,142,195,169,227,234,65,105,158,215,39,231,153,136,233,182,202,80,125,242,115,143,110,255,0,135,66,0,229,105,112,10,173,190,120,251,209,192,192,125,1,76,99,143,238,145,207,90,51,63,32,139,77,199, +36,145,5,183,79,97,229,245,234,112,61,59,119,66,246,228,30,46,207,126,44,155,146,115,212,249,131,190,113,200,239,239,150,111,182,234,198,228,114,126,245,164,131,142,185,226,113,147,211,211,169,198,113, +200,4,129,174,64,224,219,224,19,210,218,216,0,71,126,87,242,234,79,174,105,172,215,89,206,232,177,235,246,120,186,251,96,1,140,122,1,207,60,131,129,17,150,208,31,191,42,243,222,218,224,18,0,228,28,74, +195,63,143,124,80,103,180,28,135,159,211,229,134,231,208,14,113,40,30,222,227,20,0,253,211,142,72,140,243,193,242,19,158,188,229,80,245,244,199,28,28,228,102,157,230,73,145,187,203,232,115,254,143,211, +174,127,128,96,246,237,216,227,140,212,31,106,177,92,134,146,224,30,71,49,92,1,255,0,125,121,249,200,231,129,145,211,167,25,5,213,150,8,86,156,228,240,66,76,62,167,12,199,36,119,193,252,59,208,3,142,73, +44,12,99,147,159,244,80,127,167,161,56,199,35,60,243,64,5,178,60,213,56,233,139,85,200,233,212,25,71,31,135,126,188,114,209,61,155,100,111,185,207,57,7,120,61,57,232,192,14,78,113,215,235,78,243,45,113, +144,242,142,71,82,115,156,31,66,120,238,64,7,24,227,56,205,0,42,196,164,16,95,39,211,236,39,243,202,92,47,30,184,30,132,99,165,31,103,133,71,207,43,14,122,253,146,64,127,0,46,50,113,199,60,126,3,130,139, +61,175,59,76,167,215,45,220,103,140,109,224,241,206,127,1,197,59,207,128,119,126,220,23,113,156,19,215,17,176,252,70,49,248,98,128,35,48,192,114,60,201,200,61,197,172,163,130,49,144,69,206,122,118,28, +231,234,13,52,195,15,66,36,32,117,38,9,135,126,255,0,233,32,159,240,252,106,199,218,173,248,249,29,186,112,190,96,206,126,182,231,60,245,193,233,233,142,92,30,220,227,16,207,147,156,16,228,240,122,2,60, +145,128,113,142,188,159,94,148,1,75,200,183,4,19,27,149,198,14,96,155,168,206,15,252,125,28,240,125,1,235,215,52,158,68,57,249,98,97,201,31,52,18,175,78,184,34,231,147,215,168,232,70,56,235,164,60,162, +120,134,228,114,51,201,36,254,34,221,142,115,206,48,125,48,121,38,69,86,36,236,138,96,123,143,222,99,29,143,22,153,224,250,99,182,49,64,24,237,107,25,227,202,7,131,193,138,99,233,211,23,64,30,220,247, +227,61,5,49,109,35,82,127,112,27,174,63,117,39,174,79,222,186,57,239,215,24,239,222,183,68,119,29,76,23,7,211,62,127,25,36,131,133,181,25,56,7,28,103,174,56,226,148,172,248,31,184,99,199,241,11,146,123, +227,63,232,249,207,110,71,39,56,244,160,12,47,179,70,79,54,76,195,185,16,200,6,58,100,5,184,60,112,15,227,156,19,197,6,222,28,16,44,219,174,55,24,238,20,14,61,231,57,62,152,4,143,94,72,27,126,116,234, +54,253,157,78,6,114,18,243,35,223,253,90,140,241,211,169,28,250,83,196,183,7,39,200,13,199,59,133,214,58,253,1,36,251,227,156,16,8,24,160,14,116,195,17,31,45,185,82,61,22,228,243,198,56,51,115,233,129, +253,49,73,246,72,207,38,14,64,228,178,92,140,245,232,50,217,31,153,61,14,78,107,165,18,204,115,136,19,62,230,228,113,238,25,190,191,231,168,36,186,4,17,16,92,100,112,204,0,25,234,65,117,250,231,168,238, +78,40,3,156,251,52,99,172,120,244,62,68,252,113,244,108,244,234,115,207,126,78,92,45,145,128,93,196,41,244,138,98,125,184,40,88,96,227,184,25,237,142,43,164,18,94,175,31,40,7,145,135,108,231,4,127,124, +158,135,212,128,71,90,67,115,118,9,220,129,184,199,205,35,142,159,136,199,30,184,206,122,227,160,7,62,182,145,144,115,51,227,183,238,95,183,7,63,186,57,7,176,198,56,224,154,95,177,195,156,135,149,185, +56,197,184,29,79,95,158,220,242,127,94,248,230,183,76,243,238,199,217,163,56,224,255,0,164,199,219,216,220,18,7,65,131,128,122,246,197,32,184,152,244,183,64,70,112,12,176,28,14,132,127,173,63,135,30,220, +156,80,6,42,219,168,225,126,217,215,140,65,26,129,199,168,179,224,159,124,129,235,234,173,2,143,249,107,168,124,185,254,4,237,131,199,252,75,248,233,235,192,224,26,215,243,167,108,145,7,62,171,52,24,25, +206,122,74,49,207,57,200,224,254,52,25,110,9,193,137,203,14,114,46,237,215,129,198,1,243,136,0,3,193,231,145,199,34,128,48,246,16,223,235,175,87,175,37,16,28,142,153,206,159,219,167,227,248,84,163,118, +72,251,69,217,250,37,185,207,110,134,195,63,136,193,192,56,227,145,172,101,148,112,97,7,177,205,213,185,235,145,234,73,198,15,56,32,116,244,195,119,183,83,2,159,173,205,177,63,145,12,64,244,24,56,246, +52,1,152,101,11,214,75,188,242,50,33,135,36,231,176,54,67,60,254,25,252,69,52,220,167,119,191,32,14,241,219,143,211,236,138,57,35,28,28,242,50,107,79,122,114,77,186,228,119,55,118,195,212,28,225,7,65, +248,122,231,154,97,120,187,219,39,57,227,237,81,16,221,0,232,158,152,250,247,39,28,128,103,155,200,0,228,95,28,241,159,46,19,211,208,139,79,82,15,56,192,28,142,212,211,114,15,32,94,0,63,216,83,143,251, +230,200,254,160,130,58,242,5,105,101,9,200,130,37,235,129,231,194,79,211,44,138,125,179,192,233,192,4,10,112,86,28,132,64,63,223,133,135,166,51,131,250,147,207,56,207,52,1,152,47,34,4,131,246,188,140, +30,65,198,120,244,176,3,220,227,175,167,76,55,237,144,156,157,243,12,247,103,148,96,241,212,11,49,193,245,231,147,222,180,217,115,255,0,44,227,99,216,249,145,174,49,211,128,7,32,119,7,39,219,28,166,205, +216,194,32,199,113,36,109,248,242,196,253,120,236,114,122,80,6,96,190,136,103,150,99,193,201,107,142,61,78,86,216,116,207,64,49,158,248,21,50,221,163,17,149,112,122,112,247,121,252,9,183,253,65,199,167, +165,92,42,189,124,160,72,200,206,97,62,248,193,60,231,0,103,60,119,227,20,210,161,128,81,23,83,201,196,94,252,12,18,113,232,121,7,24,56,160,10,141,52,76,122,74,122,142,100,190,28,116,254,24,64,254,159, +212,220,27,238,153,1,7,129,246,171,161,199,115,243,91,134,231,147,142,131,156,14,77,89,218,58,4,96,71,162,47,62,249,7,63,144,228,125,120,122,134,0,242,223,128,28,231,212,25,128,234,79,248,114,40,2,152, +141,243,157,197,123,243,117,116,221,58,116,133,135,25,62,159,143,90,70,130,102,57,18,224,156,242,46,46,112,50,113,192,48,96,99,56,239,219,57,171,225,78,51,182,64,114,120,199,226,72,195,145,212,231,131, +223,52,194,188,228,239,32,246,45,140,156,251,57,252,9,4,254,84,1,158,97,145,113,153,72,96,48,127,125,33,62,220,24,198,125,122,15,210,131,20,167,132,148,112,7,62,96,228,244,39,37,14,48,61,189,177,233,117, +188,165,228,240,113,192,51,30,190,157,49,235,205,42,249,68,224,5,236,114,110,152,112,123,125,209,212,122,244,207,214,128,40,172,19,146,51,63,36,96,143,52,112,59,99,247,121,250,244,231,183,112,255,0,179, +185,31,52,174,79,76,137,33,60,240,7,12,139,212,31,255,0,87,107,216,94,10,249,121,7,32,155,198,92,30,159,221,4,99,220,30,59,230,140,30,171,228,131,140,228,223,202,8,245,232,65,244,207,56,61,61,104,2,135, +149,140,102,103,56,239,190,215,144,112,122,144,120,61,63,159,99,78,9,131,159,53,250,99,150,179,200,252,225,35,183,95,169,171,226,41,176,63,227,223,24,206,127,181,46,242,115,219,131,201,231,166,115,253, +100,17,93,16,54,172,7,176,198,165,121,206,120,231,12,50,61,9,224,28,228,250,0,80,216,164,169,243,36,198,59,155,47,99,159,150,19,238,49,232,125,243,79,83,15,241,59,227,28,12,218,130,78,51,215,202,198,72, +193,60,254,24,3,23,30,43,179,193,142,62,196,237,212,175,72,39,220,134,108,147,233,207,230,73,168,188,187,129,140,197,25,193,233,253,161,168,144,112,115,140,237,198,120,252,15,210,128,26,162,212,30,26, +113,239,230,219,16,121,255,0,102,33,208,116,60,254,166,167,79,178,228,19,36,220,99,32,77,6,78,79,28,20,237,252,192,227,209,139,246,149,206,33,132,116,24,251,125,246,225,207,56,24,7,233,147,199,108,96, +84,202,46,136,7,203,86,62,134,234,249,128,199,99,243,131,223,130,49,215,167,60,128,74,126,198,123,93,144,1,206,219,187,112,15,124,0,20,114,120,234,79,99,216,210,132,182,198,71,219,23,191,203,117,110,122, +247,35,114,145,143,148,103,161,57,29,121,166,8,238,79,63,103,81,198,14,39,190,39,158,121,253,225,60,247,24,247,245,192,97,148,145,152,37,94,153,218,247,132,100,142,188,185,207,78,249,227,183,106,0,144, +162,131,144,110,148,14,237,113,25,227,182,54,200,72,199,114,125,179,192,201,95,40,54,9,121,71,185,154,54,60,144,123,184,56,0,103,7,191,83,205,42,197,34,253,232,166,201,207,87,185,7,62,163,29,113,159,124, +30,57,20,167,229,31,52,119,67,185,37,238,10,156,30,249,140,251,0,55,114,6,123,26,0,13,188,124,124,238,115,238,158,252,228,92,40,31,143,127,66,40,54,201,193,13,147,198,73,124,158,195,181,215,211,39,36, +123,98,148,24,200,249,163,159,35,161,13,34,129,215,215,24,207,29,143,110,71,101,221,0,57,204,192,28,31,190,220,245,238,99,63,204,254,93,64,25,246,97,146,85,193,238,6,225,147,140,103,150,186,97,159,160, +207,166,58,135,125,153,128,206,56,61,195,167,243,105,136,246,35,220,115,83,22,129,134,55,76,8,198,8,56,62,157,74,174,123,115,129,244,20,133,98,56,200,184,61,121,222,153,207,110,227,219,129,215,167,76, +80,4,102,44,129,193,57,199,67,1,206,61,247,183,57,62,221,184,244,67,108,252,56,10,1,198,55,136,15,92,16,48,80,175,76,250,145,232,123,204,97,140,0,85,39,25,238,210,170,145,158,191,64,114,61,7,28,83,124, +140,228,143,55,0,103,105,159,45,235,158,0,61,61,7,62,131,165,0,67,228,56,28,139,92,114,112,82,14,79,213,87,175,183,62,195,140,82,136,149,72,98,45,185,235,129,0,252,62,98,61,120,227,131,207,6,165,49,72, +8,3,206,83,143,186,38,39,35,223,159,204,30,121,29,186,46,198,39,230,75,150,201,24,33,183,31,110,8,25,231,167,60,247,231,146,0,209,28,71,37,132,36,243,128,30,213,78,125,6,20,228,118,244,224,122,83,192, +69,236,160,1,255,0,61,237,148,30,248,203,66,120,57,232,125,15,106,95,43,166,35,185,224,14,177,70,115,215,25,37,198,7,79,113,143,78,42,69,183,114,120,75,161,198,87,16,41,237,215,228,223,198,126,189,199, +7,144,0,6,139,251,167,39,251,183,54,71,39,254,5,7,30,157,56,227,35,142,38,6,35,214,57,136,237,137,236,6,125,15,203,1,28,100,118,239,214,144,90,200,8,196,87,78,58,99,236,173,215,254,4,128,99,29,250,156, +240,48,64,167,125,146,118,251,182,183,67,235,100,153,199,208,255,0,245,255,0,196,1,115,15,32,197,58,228,28,254,242,212,228,231,212,66,160,19,200,29,59,227,217,127,117,199,203,113,207,161,135,156,115,213, +99,227,215,60,14,249,164,22,51,146,51,5,210,12,243,155,1,159,161,194,31,92,113,207,233,82,155,9,71,38,11,172,116,230,193,65,236,56,6,28,227,208,103,35,159,106,0,62,209,26,96,24,231,35,142,25,151,25,200, +192,24,116,28,250,14,135,183,90,5,220,35,63,43,142,120,232,73,24,207,81,38,59,126,30,253,143,177,200,57,22,215,76,58,252,186,126,79,110,120,143,31,151,62,128,226,129,110,220,150,182,186,7,253,173,53,8, +36,156,99,34,60,250,243,140,231,214,128,30,183,209,255,0,10,72,220,116,242,208,147,245,201,63,158,56,247,20,166,245,71,63,103,148,241,142,159,175,29,249,236,15,110,148,45,191,60,91,74,8,227,39,77,35,159, +127,144,3,215,158,125,106,39,180,118,36,152,216,243,206,116,242,184,28,241,254,167,211,166,72,7,245,160,9,62,216,63,231,216,182,15,70,125,164,30,112,62,230,125,254,184,25,39,20,27,198,31,50,218,128,0, +232,206,221,59,241,140,142,216,199,167,215,21,141,161,31,242,207,159,79,177,166,115,236,25,64,28,30,252,112,121,168,254,205,201,62,81,227,131,155,107,60,119,3,168,207,28,113,207,78,131,32,0,11,70,253, +179,150,183,133,48,57,6,73,199,242,66,57,199,99,156,115,129,205,55,251,77,143,30,85,176,3,144,26,73,112,7,108,157,188,14,184,56,233,156,158,153,174,182,241,15,188,8,233,147,246,123,47,126,160,46,70,50, +71,230,51,214,164,9,106,49,200,57,28,230,27,79,234,131,142,58,30,135,191,83,64,18,255,0,106,49,28,197,98,49,198,75,204,59,103,175,149,143,199,61,58,99,20,54,162,79,84,211,182,255,0,123,206,144,30,249, +199,201,199,79,124,251,99,32,9,109,140,7,84,29,136,183,179,234,7,24,60,115,199,63,161,237,78,16,192,217,253,248,35,4,140,91,216,145,233,206,242,56,29,121,227,29,121,20,0,169,126,78,126,75,62,221,46,10, +227,233,144,7,60,99,142,220,123,47,218,119,127,5,175,83,247,110,220,31,201,78,58,227,174,59,140,211,69,181,175,81,118,138,113,211,201,211,212,228,131,216,54,61,113,232,50,122,114,87,236,214,195,24,188, +207,3,162,88,15,167,241,254,188,15,166,40,1,68,224,240,5,152,237,143,180,18,122,115,212,231,35,175,92,113,234,121,153,78,79,222,182,29,126,236,160,156,117,234,37,92,143,174,56,29,57,226,169,75,117,63, +241,242,217,25,224,13,60,158,115,156,100,244,57,250,12,247,167,109,182,96,51,116,120,254,242,105,160,254,67,119,160,231,39,0,98,128,47,5,7,239,73,22,7,64,26,51,215,30,179,103,29,7,92,254,36,225,124,132, +97,247,128,57,255,0,166,121,218,125,75,75,147,142,50,15,210,170,164,118,96,113,115,22,72,234,199,78,24,206,57,31,39,4,251,30,252,12,212,184,181,224,125,174,48,78,121,205,161,227,219,108,88,231,24,193, +201,25,60,227,154,0,148,90,33,193,44,153,57,63,118,46,15,92,228,76,51,211,160,167,27,40,207,34,76,30,58,42,15,253,186,3,168,29,184,231,145,85,202,219,115,254,151,24,237,214,200,246,25,60,199,220,227,35, +220,116,168,155,236,195,173,236,124,31,249,237,96,163,182,120,242,24,142,157,6,122,116,238,64,47,11,8,207,87,110,120,39,9,252,140,141,215,144,58,224,156,146,40,109,54,50,49,134,199,80,118,196,70,65,28, +140,191,61,177,239,216,145,89,187,160,29,110,215,131,146,5,213,128,239,237,0,36,250,210,121,176,127,207,206,238,156,125,166,200,240,56,7,253,65,4,113,219,161,198,125,40,2,240,210,211,187,56,25,234,34, +67,211,142,114,8,63,227,159,83,82,127,102,198,163,27,223,28,99,16,197,129,206,112,64,192,192,198,112,15,65,235,89,196,218,191,222,145,113,158,191,104,177,56,237,206,109,148,130,64,236,59,250,83,194,216, +228,102,225,9,0,0,77,197,152,199,24,193,219,2,143,203,35,222,128,46,253,138,17,247,165,234,64,255,0,82,132,227,61,71,239,7,3,30,190,192,211,13,165,191,102,199,35,7,236,171,211,223,108,191,253,126,152, +28,154,135,200,211,152,115,60,68,228,127,203,212,25,234,14,51,246,83,215,142,199,183,39,173,59,200,178,232,179,167,126,151,104,59,228,112,182,235,143,114,6,113,193,207,56,0,151,236,176,128,113,46,49,198, +13,186,129,130,51,143,245,220,117,238,59,246,197,47,147,26,140,25,1,255,0,100,66,128,117,231,254,91,17,193,250,123,213,83,109,100,79,250,245,207,253,127,21,62,188,102,53,234,51,211,60,19,138,140,218,89, +228,226,231,3,25,219,253,164,196,19,198,115,182,34,123,140,254,190,148,1,120,67,0,231,114,114,70,65,138,63,200,228,18,112,121,228,156,246,28,226,164,242,109,248,59,163,7,3,254,89,33,199,224,16,103,182, +70,120,197,103,11,91,51,213,195,28,96,99,80,153,128,235,198,68,41,130,113,158,185,239,215,34,158,45,44,198,70,197,110,153,221,119,118,78,6,122,141,167,60,118,193,206,59,208,5,179,13,176,28,178,17,158, +127,209,193,199,35,161,245,207,161,3,131,205,60,45,166,0,37,24,12,99,253,27,35,215,184,0,12,244,231,233,138,165,246,93,56,227,247,81,115,193,255,0,75,189,28,145,211,38,16,9,207,161,207,63,74,107,91,216, +14,68,81,30,59,222,234,28,103,25,206,35,192,233,215,145,239,207,0,26,27,33,61,26,53,235,255,0,44,64,238,56,60,103,160,236,126,190,233,229,198,50,73,82,123,5,136,128,113,193,228,199,207,113,156,224,224, +28,250,231,109,178,7,104,142,215,208,102,238,249,185,62,128,194,58,246,192,36,113,131,142,105,195,236,64,112,144,3,223,23,119,35,60,243,252,43,233,232,120,239,206,104,2,217,141,61,129,4,224,249,96,18, +120,238,176,49,231,145,207,227,215,20,210,128,228,0,160,224,253,232,164,108,116,231,63,101,235,219,156,147,211,158,181,95,117,183,240,195,6,56,201,55,215,88,233,208,156,224,227,169,231,30,217,230,155, +254,142,121,242,160,29,121,91,187,130,164,119,36,52,131,241,60,241,232,104,2,98,160,156,28,100,114,64,142,81,249,127,163,140,118,244,244,56,197,68,197,113,128,101,57,206,113,28,192,254,97,23,35,61,199, +177,28,138,77,214,99,32,194,140,14,114,62,213,62,115,223,254,90,175,30,189,190,131,38,155,190,196,158,109,83,129,199,250,92,188,28,251,220,147,208,122,28,227,215,154,0,129,248,207,201,47,226,179,131,207, +76,150,41,156,19,207,66,122,118,168,193,102,28,101,114,122,149,32,30,9,193,6,64,121,254,124,103,156,213,213,107,14,115,5,186,242,64,221,115,56,35,28,19,196,189,71,92,115,207,183,4,39,79,25,42,176,47,169, +251,84,216,237,208,238,63,76,125,115,235,64,20,26,34,199,130,131,25,36,149,108,255,0,232,242,58,30,158,152,227,213,164,5,228,149,124,103,254,88,134,30,253,100,45,199,79,78,56,239,90,38,107,38,4,109,128, +130,79,38,105,8,60,30,153,149,72,252,61,250,118,141,154,196,228,5,132,96,240,68,206,57,57,7,165,216,199,115,158,7,78,123,80,6,121,49,156,230,56,207,253,176,3,183,253,116,32,231,140,252,173,207,94,13,71, +136,142,119,70,138,51,212,66,20,0,79,25,33,91,60,103,130,65,207,65,129,138,208,255,0,66,61,26,16,65,224,9,230,32,122,253,219,182,252,64,30,189,42,51,45,160,36,51,149,25,224,171,94,183,35,233,116,71,97, +193,224,227,56,160,10,68,68,79,221,136,99,176,142,223,4,116,60,200,84,243,220,30,190,216,166,110,181,254,224,224,117,242,45,31,60,158,155,88,99,190,120,254,184,185,231,233,195,254,122,30,163,1,110,24, +103,183,13,46,48,57,245,62,157,233,76,246,127,194,88,99,128,88,74,216,3,211,50,112,58,113,140,158,71,181,0,103,111,131,39,100,97,65,198,79,217,173,67,99,61,118,237,63,150,127,65,154,105,150,30,7,127,65, +13,144,39,25,238,99,206,62,188,122,214,136,154,213,143,250,232,179,219,49,74,63,19,134,4,247,245,207,124,118,137,165,182,3,38,120,143,61,22,39,245,255,0,106,96,58,122,1,249,100,80,5,67,60,43,209,36,32, +244,218,150,60,113,156,99,202,200,252,71,229,76,55,49,142,139,112,57,57,56,176,239,140,29,166,44,129,158,56,235,143,160,169,140,150,189,50,27,161,255,0,82,57,252,174,128,232,15,65,158,58,247,166,148,180, +108,156,133,247,10,160,251,241,246,162,123,12,100,147,250,80,5,115,121,6,127,229,235,254,250,180,24,231,158,137,215,167,83,143,161,234,195,119,6,48,62,215,131,198,68,214,170,112,115,140,124,132,19,207, +112,79,29,122,154,180,69,152,32,249,178,123,1,176,114,15,36,31,60,126,25,36,242,71,76,211,128,180,254,17,35,116,234,35,3,167,29,36,96,125,122,158,184,250,128,103,181,236,3,56,123,177,198,121,158,215,131, +156,255,0,112,125,73,227,57,30,245,31,219,81,143,222,184,35,32,15,222,219,48,228,241,140,97,187,112,79,83,130,61,14,139,11,66,64,242,128,97,221,188,131,201,29,57,39,7,167,112,51,212,114,41,129,32,32,252, +138,57,231,50,90,160,35,158,129,156,100,224,116,227,245,20,1,68,221,119,67,58,115,208,203,18,227,142,249,36,103,7,183,31,83,77,243,220,245,121,121,206,1,154,3,145,159,168,207,29,61,7,30,245,115,253,16, +18,173,229,103,177,251,69,166,125,64,4,204,14,126,131,174,127,22,21,179,234,18,62,156,159,180,91,183,7,183,250,220,99,234,79,248,0,86,243,1,25,195,254,47,0,111,199,18,117,228,228,103,174,104,45,156,238, +4,14,184,202,17,237,156,55,94,217,32,244,244,21,99,22,67,63,42,19,255,0,93,45,70,14,15,79,223,115,140,103,143,254,181,38,219,97,217,6,73,3,18,219,122,243,221,189,253,78,113,140,208,5,95,148,3,133,143, +57,233,132,39,175,76,130,50,78,125,115,142,70,40,216,205,255,0,44,99,62,229,151,29,253,75,113,219,4,99,174,50,42,216,242,1,224,6,245,204,150,228,254,32,58,247,24,235,208,126,78,253,209,198,17,8,3,254, +152,114,70,113,192,124,126,60,231,158,49,64,20,62,202,204,50,45,163,57,237,136,137,200,237,157,128,28,243,253,239,115,215,45,54,50,17,197,156,124,246,34,28,243,200,232,185,25,56,237,158,227,165,92,120, +161,96,51,20,120,60,146,68,127,168,220,6,120,254,103,142,236,88,45,129,249,70,211,223,30,80,235,255,0,109,64,0,227,182,49,207,61,114,1,79,236,83,227,139,36,245,56,49,99,191,7,160,252,79,31,209,191,99, +186,228,11,53,199,78,30,223,232,79,65,192,29,8,237,156,213,230,183,180,39,157,185,193,31,55,150,113,212,116,23,28,156,158,49,200,235,77,242,44,249,3,105,3,36,1,22,241,158,231,139,128,115,219,144,125,249, +226,128,51,254,199,118,191,242,227,147,146,121,104,71,175,81,189,114,61,121,228,128,104,251,46,160,113,182,200,0,127,186,32,60,231,158,179,145,208,117,199,183,60,85,195,13,154,156,109,78,248,43,110,195, +145,232,124,209,212,227,242,166,24,109,15,77,221,57,225,138,241,207,27,165,207,94,192,103,57,231,158,64,42,181,182,164,51,254,142,84,158,198,59,66,184,193,192,36,201,200,199,182,6,57,34,163,251,62,168, +70,124,148,199,161,134,196,145,140,227,57,124,30,231,29,51,158,15,90,180,96,183,236,100,198,120,1,28,246,56,198,101,4,99,36,99,169,60,12,224,211,124,136,206,126,121,87,29,15,148,88,245,61,183,56,199,7, +140,117,227,20,1,92,195,168,168,35,202,65,156,100,121,58,121,231,160,235,252,178,58,246,205,51,58,170,228,132,92,159,250,118,176,207,224,55,244,252,15,181,61,173,145,178,124,217,142,1,63,234,128,30,152, +63,186,227,167,3,146,122,247,20,207,47,203,198,199,152,127,179,181,63,47,158,219,161,233,158,0,35,60,80,2,249,250,162,224,28,2,61,45,236,73,62,163,42,122,14,159,142,61,194,139,173,72,156,18,127,11,109, +60,159,81,215,56,235,216,224,122,28,82,239,152,116,150,76,15,226,38,16,73,7,166,77,161,61,186,0,70,56,224,1,150,7,184,207,203,230,48,57,255,0,150,176,160,61,248,6,204,177,25,231,60,103,183,173,0,72,39, +190,126,50,125,112,109,180,254,217,245,3,62,227,7,60,96,243,77,19,94,176,35,121,30,191,232,182,68,241,211,110,35,99,207,28,244,24,207,57,53,17,123,163,159,221,77,248,75,22,62,135,254,37,204,114,59,228, +156,116,237,79,2,235,24,17,207,207,81,231,67,140,250,22,109,52,12,12,12,246,253,69,0,74,13,208,228,191,36,255,0,207,59,101,29,251,125,149,129,56,237,187,233,147,212,38,228,241,230,231,174,70,203,113,211, +4,140,125,140,2,71,160,255,0,12,68,223,107,192,219,28,253,15,30,109,184,199,124,255,0,199,128,57,252,63,144,203,71,218,187,199,115,158,70,76,177,0,71,185,251,6,49,248,140,208,4,192,78,58,59,113,193,218, +109,215,166,57,57,182,24,199,183,191,174,41,15,218,8,39,124,216,39,179,175,66,79,31,45,171,14,216,235,156,115,193,206,34,6,108,159,221,206,49,206,62,209,26,177,3,63,244,232,1,7,25,61,122,123,131,81,51, +200,65,62,93,192,199,25,251,92,29,72,233,204,107,142,59,156,227,147,64,22,124,185,72,193,149,249,193,230,96,59,31,250,118,28,123,103,211,158,149,9,183,102,192,222,199,24,24,243,187,242,57,34,5,246,237, +238,49,218,15,54,82,48,126,213,244,107,152,136,28,242,65,85,82,123,122,250,246,197,1,93,128,59,110,24,142,184,184,83,248,125,220,243,140,255,0,83,64,10,108,229,39,229,147,110,115,143,222,72,126,160,145, +14,9,228,123,241,159,163,13,156,234,120,145,27,0,255,0,203,105,1,250,131,229,103,39,128,56,28,158,189,105,89,61,86,101,200,206,26,84,207,39,31,222,94,114,15,233,207,171,4,99,28,153,198,58,114,172,120, +235,143,222,33,235,211,158,71,25,232,104,1,12,19,242,60,196,59,79,57,150,64,120,60,241,229,47,35,129,193,231,183,94,23,203,156,131,135,143,161,235,51,182,127,224,65,79,56,237,156,147,156,115,73,130,56, +87,186,224,103,10,19,128,48,120,255,0,75,200,227,57,28,228,122,10,92,72,71,18,94,113,254,202,0,7,208,94,14,120,61,135,110,212,0,207,34,224,12,150,140,142,251,110,38,24,228,30,131,29,125,49,249,82,121, +23,25,227,104,198,1,6,91,158,56,3,36,2,15,95,94,189,7,180,161,88,103,247,215,73,207,39,203,139,31,136,23,167,160,7,211,249,229,193,119,3,155,155,220,96,227,106,64,51,235,130,110,88,144,123,12,231,57,244, +160,6,139,91,178,14,12,35,211,116,179,228,142,121,203,191,94,221,135,76,241,205,43,89,222,99,59,97,231,210,108,103,255,0,38,135,57,235,200,193,231,140,82,132,80,121,186,191,7,168,230,48,78,49,208,125, +167,3,208,224,127,82,95,229,199,255,0,63,55,172,122,96,146,9,252,174,64,60,116,3,143,199,128,0,197,183,189,31,242,202,19,142,237,115,130,125,199,250,88,254,89,247,61,151,201,188,60,108,128,129,216,93, +96,14,79,81,246,240,8,36,119,28,28,119,169,76,113,149,202,203,126,71,168,100,200,199,83,205,208,56,29,248,252,123,213,102,142,61,216,89,175,201,233,252,12,125,177,254,148,72,235,252,134,40,2,65,5,201, +97,242,196,49,142,69,193,60,30,152,255,0,137,134,127,250,221,186,84,130,222,94,70,248,215,131,255,0,45,20,158,51,212,54,167,211,24,228,117,24,199,3,136,120,83,204,186,138,145,253,226,131,39,130,63,229, +231,35,212,112,63,44,84,158,97,32,102,109,64,227,190,232,191,79,222,18,59,119,233,237,140,0,73,246,73,127,231,180,64,30,6,90,0,48,125,255,0,180,115,216,30,164,255,0,42,62,207,56,0,11,152,123,255,0,21, +185,28,231,167,252,76,142,7,127,66,71,160,170,237,38,225,193,190,110,199,50,198,15,83,199,94,8,247,3,219,29,4,37,185,56,75,230,99,221,158,44,103,190,64,43,249,159,173,0,92,16,222,12,98,234,2,122,224,27, +126,70,48,120,254,208,236,59,158,56,244,166,149,188,255,0,159,168,50,58,109,48,147,211,167,252,132,63,46,189,192,233,131,84,201,32,92,155,123,227,158,230,84,0,224,240,14,214,7,3,28,12,230,147,205,144, +156,11,91,143,64,26,84,231,60,227,59,137,36,228,244,25,244,0,14,64,39,63,105,7,38,234,63,127,245,71,159,64,62,220,192,251,147,248,138,113,91,162,8,23,192,127,219,56,216,140,113,255,0,63,100,1,131,212, +117,233,211,53,88,201,55,252,249,204,64,199,252,188,4,35,223,13,187,36,241,207,3,56,207,94,24,100,147,56,48,206,189,112,62,212,185,228,116,225,115,200,235,199,65,199,28,16,11,130,43,131,140,222,131,201, +235,4,125,15,29,238,136,198,50,15,174,106,64,183,75,210,236,48,57,3,247,54,235,145,199,127,181,103,31,79,240,38,138,220,76,128,109,91,132,192,28,139,150,35,62,216,76,142,72,198,6,58,245,233,79,251,76, +227,143,50,235,182,64,184,149,137,207,178,128,122,247,199,182,72,234,1,99,109,203,116,185,12,51,142,145,251,118,55,60,254,121,192,233,200,163,109,202,143,154,78,156,143,157,87,61,70,70,203,161,192,198, +123,12,230,170,153,39,115,146,39,199,171,73,116,51,142,199,9,147,199,127,111,106,112,105,137,224,144,49,130,76,151,76,70,51,216,167,31,76,14,188,228,98,128,37,59,243,135,46,125,213,137,35,190,7,250,73, +57,199,60,17,211,166,112,73,81,238,159,254,123,5,60,28,239,185,200,244,0,237,96,125,114,7,175,78,40,160,15,68,54,26,119,57,88,178,6,73,218,59,128,57,197,243,2,79,208,158,160,147,205,55,236,58,120,31,41, +136,115,140,152,228,92,117,228,147,120,153,198,57,29,79,225,80,172,1,136,205,212,192,31,91,144,7,111,68,35,7,240,245,250,205,246,99,131,139,217,88,99,56,251,107,156,158,113,156,169,0,254,158,253,232,2, +51,99,102,6,68,176,176,198,121,207,175,35,254,63,199,95,175,175,177,169,22,214,200,15,191,9,36,246,14,0,35,60,101,111,88,140,118,232,15,92,247,164,16,200,120,251,84,224,242,63,227,241,219,36,99,174,15, +255,0,171,24,227,156,74,176,62,56,185,148,19,255,0,79,18,22,200,36,96,145,159,97,248,241,154,0,96,182,178,198,90,120,148,250,24,221,136,207,61,231,57,239,201,4,126,52,27,107,12,28,220,219,103,140,102, +3,159,115,205,208,39,63,67,211,143,103,148,159,144,178,92,54,56,207,154,228,103,223,61,251,228,122,231,38,156,35,186,0,48,121,241,156,99,207,148,125,6,55,168,200,227,166,125,57,193,160,10,254,85,160,200, +91,187,96,7,76,64,221,251,31,223,55,78,15,233,220,97,10,68,7,203,117,106,71,180,76,167,241,249,243,198,125,126,157,170,206,219,188,31,248,251,56,207,34,73,186,242,78,8,151,184,238,6,113,207,90,4,183,8, +8,104,111,31,182,119,220,253,58,153,191,152,199,57,25,233,64,25,204,19,36,125,166,5,0,129,196,44,65,245,60,49,36,116,35,140,28,115,216,9,2,169,31,241,247,30,123,254,225,192,246,227,30,255,0,153,199,108, +155,222,116,167,254,89,93,244,227,47,55,229,204,192,118,7,145,193,192,231,20,134,105,186,8,231,7,28,131,51,33,235,129,193,186,64,15,62,167,185,7,20,1,67,106,2,65,184,140,140,113,155,102,192,232,58,99, +36,126,24,250,211,113,18,158,30,34,121,32,139,92,147,235,140,34,250,115,200,252,106,247,155,49,255,0,150,115,128,112,9,55,49,118,247,107,214,239,223,234,122,30,12,74,114,64,147,61,48,110,227,224,122,130, +183,120,206,123,96,12,99,174,48,0,40,176,66,62,250,253,126,201,207,92,244,217,142,190,254,253,105,60,180,198,50,27,62,150,88,63,160,231,130,122,30,157,135,74,190,22,94,129,101,92,118,23,25,31,248,237, +199,3,158,163,140,115,158,105,165,121,33,188,204,245,39,237,24,30,196,159,180,117,25,61,143,7,57,2,128,51,246,170,255,0,20,128,227,3,109,169,95,195,132,7,39,167,39,35,7,142,69,46,198,97,195,221,227,253, +152,100,29,61,57,80,57,192,207,124,159,168,182,99,140,224,224,142,15,38,112,192,145,236,103,39,57,252,51,223,138,136,193,25,36,238,24,207,121,20,117,250,206,167,241,245,193,62,224,17,136,212,3,151,189, +57,193,255,0,85,38,127,244,112,237,248,251,28,10,122,162,143,249,105,120,195,251,166,41,142,79,96,49,112,8,231,131,130,57,231,234,141,104,174,8,18,162,12,103,253,108,64,99,160,235,114,78,62,157,41,166, +215,104,7,207,94,6,50,37,132,244,227,160,148,243,208,142,15,94,212,1,35,59,41,10,191,110,7,166,124,155,195,142,123,1,116,125,57,227,29,57,3,52,130,89,216,240,110,206,122,22,138,227,35,35,28,230,231,57, +199,229,81,125,157,136,200,152,30,185,200,67,158,189,126,102,29,122,224,116,200,250,40,131,210,85,250,16,23,25,228,116,139,7,28,231,250,115,64,22,20,220,227,153,110,177,201,226,57,49,129,158,185,185,29, +49,208,244,28,243,205,52,165,217,63,44,183,127,81,19,228,129,145,201,51,224,12,146,65,224,159,83,210,160,242,216,18,4,139,235,140,182,113,208,255,0,0,7,216,140,28,243,208,80,99,56,230,76,241,156,6,11, +211,161,249,152,140,113,147,242,142,132,80,4,248,188,25,203,221,183,110,82,66,126,167,18,250,117,254,166,145,150,232,168,192,144,251,20,144,117,234,56,155,191,208,116,224,103,53,93,80,116,86,25,61,114, +208,176,254,99,159,66,125,57,207,121,7,154,191,118,114,184,60,16,34,95,126,190,96,235,142,59,250,80,0,35,212,8,63,186,98,59,143,47,156,30,65,31,35,100,247,29,79,224,0,32,142,244,103,22,249,29,72,251,60, +140,123,246,16,115,211,174,113,223,234,169,36,193,178,39,108,118,230,34,127,244,97,239,244,206,50,58,16,36,89,228,232,110,129,224,240,194,60,99,184,56,99,215,60,159,203,145,64,17,15,181,129,131,108,122, +116,251,52,131,167,92,127,163,224,103,191,57,60,211,26,59,166,56,48,245,228,131,8,83,208,231,4,218,49,227,28,250,243,212,10,176,103,39,172,233,199,25,33,70,61,57,243,148,99,160,28,99,154,12,189,63,210, +19,129,130,1,143,234,115,155,133,231,169,200,199,110,7,52,1,84,197,32,235,10,142,49,254,172,113,235,207,217,184,244,231,7,244,166,24,206,9,251,56,97,158,8,140,246,24,57,34,17,233,200,199,94,224,10,208, +202,30,69,196,125,61,96,56,252,62,218,123,103,0,12,103,61,58,8,91,105,206,46,34,56,245,88,1,207,62,183,39,36,245,234,15,97,238,1,72,70,227,147,110,171,238,99,108,143,97,254,140,120,29,241,199,24,200,226, +154,85,249,219,12,99,220,35,243,216,127,203,1,129,233,140,143,167,123,91,212,17,139,139,80,114,15,204,109,207,191,240,202,72,233,223,31,173,41,146,67,210,107,86,28,99,230,85,24,252,37,24,252,186,246,239, +64,21,16,92,3,242,166,127,221,206,222,132,117,54,224,113,199,183,94,184,169,183,92,99,45,20,131,129,209,15,66,71,113,16,61,58,224,131,156,122,102,165,18,63,82,246,167,235,49,29,251,140,183,3,235,143,94, +122,33,32,142,126,202,56,237,38,71,30,164,3,233,146,123,116,207,106,0,131,124,252,15,40,250,100,170,231,183,85,40,221,135,229,212,30,133,133,167,199,221,35,211,253,80,3,219,229,183,60,250,3,211,158,57, +6,172,112,1,193,139,182,118,72,227,233,201,65,140,113,237,199,167,71,13,216,27,73,61,190,89,7,167,80,118,183,184,25,252,65,160,10,138,243,100,130,173,215,184,250,241,129,111,199,225,207,174,58,81,230, +205,156,4,98,15,0,132,32,231,219,247,7,158,115,198,49,129,143,67,112,249,196,240,185,62,242,14,252,244,17,177,63,145,199,227,78,62,126,121,224,123,73,47,167,180,24,60,113,156,244,252,168,2,152,145,135, +222,142,78,72,231,231,7,158,228,125,152,243,254,122,116,113,147,3,165,192,29,6,221,254,152,237,110,61,59,31,166,42,234,173,209,229,90,69,238,112,243,130,120,60,224,41,28,96,241,128,57,227,140,212,162, +27,199,31,235,229,237,255,0,61,250,3,207,34,22,28,116,228,117,160,12,173,228,130,74,223,16,120,227,56,233,142,51,22,70,58,17,159,78,216,166,52,132,116,139,82,0,97,184,10,70,57,192,57,79,78,195,31,166, +43,101,173,175,121,221,115,48,237,200,157,129,199,78,144,254,184,57,239,219,53,205,189,224,233,116,71,251,201,58,244,57,198,60,145,156,140,99,57,231,29,40,3,39,207,207,85,188,24,207,14,20,30,190,184,228, +243,159,81,233,214,145,103,82,114,99,187,4,244,33,83,175,67,213,151,29,126,188,230,181,188,171,213,63,241,247,142,123,71,115,142,217,63,44,99,30,152,235,237,138,126,47,71,31,107,95,248,16,188,3,241,33, +71,61,123,1,214,128,51,4,221,136,190,238,49,185,64,199,225,48,231,249,231,30,244,241,60,123,64,104,175,240,15,7,112,39,223,7,237,4,31,235,207,28,241,161,254,154,0,6,226,18,56,234,53,3,199,185,88,182,227, +244,246,29,41,64,187,0,147,119,0,61,64,95,237,15,203,253,73,201,252,250,99,154,0,160,30,3,218,249,73,207,59,128,199,3,168,51,144,58,116,29,113,239,76,36,227,229,123,204,250,128,140,71,94,56,184,80,56, +233,216,247,39,182,129,142,124,228,221,194,115,253,229,191,63,135,49,174,48,63,28,122,119,77,179,255,0,207,197,177,29,121,91,206,65,39,160,43,249,242,58,115,220,144,10,1,159,31,235,46,129,35,146,209,3, +233,198,69,232,233,211,223,185,224,230,112,242,231,30,100,184,29,202,126,57,31,233,71,7,215,3,131,214,165,38,97,144,37,182,39,156,16,110,192,244,228,3,211,216,116,250,113,76,243,101,57,203,90,177,30,178, +93,227,167,212,130,71,110,123,116,193,0,128,59,116,140,121,155,142,128,50,56,252,73,91,142,188,114,65,231,56,199,20,187,119,100,150,45,159,238,153,219,174,51,140,206,192,122,114,125,48,58,154,3,191,25, +107,117,228,244,154,227,131,207,80,24,31,229,205,40,201,57,223,23,98,70,233,136,36,241,158,100,199,62,164,114,78,0,244,0,114,46,6,65,144,3,145,156,205,146,56,224,226,82,15,212,14,252,208,71,35,137,73, +237,148,153,134,8,238,119,228,254,0,143,234,187,122,102,72,7,168,47,156,142,252,52,163,242,192,244,29,205,32,137,88,28,205,8,3,156,145,16,25,224,114,94,64,8,31,227,207,20,0,243,3,176,224,73,235,254,170, +94,221,113,184,250,30,255,0,141,47,145,63,33,86,94,191,243,192,158,51,198,126,110,163,212,126,3,154,103,217,211,25,243,161,61,70,64,131,169,237,196,188,118,236,51,219,214,158,32,140,96,249,176,15,95,154, +60,142,61,230,81,156,247,232,120,227,60,208,2,121,19,117,242,230,62,226,38,3,183,82,92,140,156,227,39,211,167,25,165,48,202,7,49,202,127,224,1,113,199,95,245,158,199,219,190,61,36,219,26,156,153,161,198, +113,184,8,137,61,120,192,156,247,237,158,61,58,224,197,175,252,244,86,255,0,191,127,166,102,200,252,198,120,205,0,70,33,29,90,222,102,29,115,128,71,94,121,14,125,251,241,211,222,148,71,23,37,173,216,183, +65,242,147,223,131,201,227,215,140,99,240,169,182,218,14,51,131,201,4,44,36,113,232,90,227,159,166,78,127,90,112,54,184,56,124,242,79,41,9,60,117,227,205,35,183,96,71,233,64,16,170,69,255,0,62,191,139, +70,132,140,123,227,233,206,71,94,249,169,12,81,146,7,217,212,3,219,106,242,15,177,43,215,216,31,204,84,199,236,167,171,130,79,7,43,110,167,175,31,47,152,120,199,183,78,56,200,168,155,202,4,224,199,193, +224,49,139,112,0,115,192,147,60,123,40,28,246,201,160,7,173,188,99,7,236,234,15,110,8,7,166,122,14,0,29,242,120,231,208,82,249,80,174,114,152,56,198,20,41,193,56,206,73,92,156,116,198,58,143,122,96,96, +51,242,65,142,9,201,198,58,16,64,13,142,127,144,252,42,79,61,84,100,136,7,126,37,112,127,16,36,32,99,31,83,239,214,128,25,229,193,144,70,7,115,184,168,36,142,199,42,7,168,199,166,121,169,84,4,193,9,9, +24,198,119,68,78,79,174,98,233,245,39,4,115,233,81,27,136,207,79,179,130,14,56,144,129,237,213,192,206,58,156,250,211,12,136,252,254,232,12,224,17,62,51,248,6,98,48,115,131,128,15,94,104,2,216,96,65,59, +87,28,244,42,58,122,21,128,142,158,135,235,215,144,72,191,116,124,163,177,44,71,191,4,91,2,8,228,246,232,120,233,84,129,92,227,124,42,15,60,206,73,206,51,158,57,245,61,9,4,224,224,228,84,128,177,24,105, +160,24,35,147,35,140,228,142,51,183,62,255,0,160,25,193,160,11,129,187,249,175,184,224,175,239,20,142,56,60,201,23,3,158,123,156,244,200,167,146,14,1,154,85,61,241,40,198,121,227,42,170,7,76,128,112,50, +6,7,106,169,181,251,205,7,32,31,189,62,114,9,25,5,136,7,175,191,4,145,77,42,203,143,223,199,144,79,9,36,219,143,61,120,39,142,122,129,207,78,188,80,5,146,87,60,221,92,3,199,38,77,192,228,118,27,24,241, +223,174,15,92,118,77,234,56,251,92,171,142,121,221,199,160,226,53,246,207,39,28,227,214,154,138,132,252,247,1,91,0,97,126,210,231,60,125,113,253,114,106,79,46,44,228,222,48,110,7,221,184,4,227,39,156, +144,71,57,199,95,94,156,208,2,7,83,193,187,221,140,228,150,113,207,169,253,222,115,237,207,32,227,21,34,72,115,133,186,83,201,232,179,185,60,100,118,82,59,241,211,191,115,66,219,66,220,253,178,118,39, +60,43,200,48,121,35,171,30,14,59,145,210,164,22,160,140,173,213,230,115,206,30,82,56,207,25,12,65,39,249,100,117,197,0,30,102,223,189,62,220,115,159,34,225,74,231,167,86,227,56,235,193,227,32,250,47,153, +16,235,112,140,8,234,203,112,15,161,193,99,183,240,244,245,32,138,62,204,23,239,93,221,131,158,165,102,39,142,6,112,167,28,119,206,73,231,56,230,156,182,197,185,251,93,227,47,180,23,7,255,0,101,112,123, +129,197,0,51,122,55,73,96,63,64,224,245,207,69,110,7,160,244,235,222,148,18,72,196,208,30,73,229,95,60,122,96,18,113,233,216,114,58,84,171,106,27,143,181,94,19,156,224,219,201,158,120,35,152,193,28,158, +121,252,57,97,82,253,151,56,253,253,208,247,251,56,232,113,235,31,227,215,29,63,16,10,165,216,55,23,86,201,234,27,205,3,140,231,168,35,243,24,235,197,47,159,131,205,221,163,55,166,73,24,227,161,14,157, +127,221,60,251,213,213,178,220,127,215,95,22,31,244,235,156,147,237,229,128,122,244,231,140,231,221,223,97,124,225,102,188,39,166,5,176,200,231,221,71,36,115,158,15,110,56,160,10,171,58,145,255,0,31,54, +128,142,219,151,158,220,102,76,123,140,246,167,137,240,127,214,192,112,56,42,209,146,120,207,247,212,116,247,230,167,22,51,31,249,105,120,14,112,63,116,156,253,114,70,1,228,244,7,174,41,127,179,174,112, +0,55,120,201,228,194,57,30,216,36,99,190,6,122,245,160,8,60,246,36,227,202,108,14,239,26,145,199,95,245,141,143,124,140,119,2,144,92,250,152,129,31,244,222,62,189,56,27,1,224,113,156,250,122,213,143,176, +93,142,242,30,223,53,185,201,36,156,103,212,156,129,198,58,116,52,162,198,239,149,13,130,56,3,236,167,118,71,210,85,60,1,212,14,228,138,0,132,76,122,238,92,158,226,100,231,61,137,24,4,242,123,147,248, +83,131,51,116,110,73,207,250,197,237,208,156,130,50,59,224,147,249,100,75,246,75,165,25,108,142,122,155,118,0,129,215,254,90,19,248,147,199,231,135,125,154,229,129,204,160,99,156,249,45,199,160,25,156, +17,223,32,126,93,1,0,136,51,231,149,12,61,124,209,207,175,0,14,15,29,255,0,46,148,43,72,78,69,185,61,242,26,60,113,142,2,229,177,156,156,240,61,199,74,86,182,156,115,246,130,79,61,34,110,15,167,250,225, +128,125,253,41,13,188,253,174,0,39,187,68,195,142,127,233,176,39,28,119,110,156,145,210,128,38,2,224,146,86,205,155,156,1,136,254,153,232,64,198,114,126,157,41,90,43,195,207,216,142,49,156,13,163,175, +184,94,221,184,61,234,175,145,114,72,197,218,129,199,72,159,191,161,19,244,31,143,177,238,3,4,199,173,243,14,185,253,219,118,236,51,39,78,189,186,254,52,1,55,151,116,216,31,99,206,50,78,65,4,123,28,128, +6,64,61,193,24,30,180,24,46,152,147,246,120,176,123,124,132,130,14,9,195,6,207,243,206,120,198,1,140,192,253,239,177,140,116,139,35,131,199,45,49,235,235,143,241,164,242,219,167,219,228,0,228,157,177, +125,238,195,129,48,207,35,185,25,192,233,64,15,251,45,207,104,20,159,247,98,4,126,96,30,220,123,158,188,83,190,199,114,121,251,60,96,245,203,121,69,136,207,251,32,140,125,51,142,166,163,88,200,7,55,210, +18,73,231,145,233,129,197,193,192,227,166,49,215,175,103,237,144,140,255,0,104,204,163,128,48,192,142,153,235,230,19,207,190,113,207,224,0,159,101,188,7,34,40,113,211,30,92,67,60,143,85,28,16,122,28,114, +57,20,162,27,190,133,97,92,2,56,134,19,236,48,10,28,119,193,233,249,83,76,82,247,191,118,255,0,122,64,58,143,93,227,25,201,227,35,62,253,147,200,152,224,173,199,112,114,101,29,207,251,224,253,51,223,7, +156,98,128,31,228,93,14,9,136,96,227,38,24,135,35,35,140,69,156,254,88,3,140,230,154,32,152,31,158,72,70,120,226,62,61,250,71,142,8,29,125,123,117,160,218,205,130,68,164,247,226,86,94,188,127,12,189,207, +111,92,245,60,83,150,222,113,198,246,24,244,153,142,122,245,204,153,193,232,14,115,142,160,102,128,26,45,223,161,154,34,122,140,196,48,49,233,251,161,159,254,190,7,52,239,179,185,60,77,7,94,127,113,24, +198,62,170,57,244,207,78,231,7,52,226,38,78,236,125,247,156,142,184,232,236,125,250,99,223,174,88,100,153,120,196,132,30,156,200,1,235,234,135,61,177,140,99,142,156,100,1,254,75,15,249,107,19,125,34,95, +199,133,136,159,126,189,63,48,121,76,58,186,251,252,132,103,60,116,48,147,211,191,61,248,61,152,26,81,200,70,57,199,105,15,215,156,12,231,242,207,80,71,20,239,58,69,235,110,71,95,225,36,127,192,64,108, +114,15,167,24,234,59,0,53,162,110,187,193,200,28,42,158,112,71,92,195,250,245,199,166,105,158,68,109,130,234,24,250,21,66,120,36,100,133,140,30,167,156,231,191,39,6,158,102,198,51,6,115,199,49,240,113, +143,70,30,153,193,247,232,58,2,228,12,3,106,217,198,112,176,156,113,143,246,193,228,158,50,59,28,250,208,2,45,188,29,144,117,224,0,195,208,246,0,99,140,231,142,14,125,233,166,209,9,56,1,64,198,114,238, +9,245,249,64,198,71,215,158,254,148,243,121,26,240,109,238,27,233,19,143,212,48,39,142,115,156,30,195,210,51,169,40,60,90,221,0,0,199,3,176,254,29,206,125,207,183,165,0,33,180,92,224,68,173,220,16,195, +28,127,189,140,231,167,124,126,20,159,102,43,143,244,99,193,56,35,156,243,156,124,167,36,125,72,238,114,40,58,156,103,173,172,249,3,190,7,174,7,203,158,189,176,78,121,199,60,134,253,186,38,224,216,56, +39,147,203,243,198,56,245,227,215,240,199,52,0,166,6,231,54,131,39,27,178,95,145,158,184,25,56,7,7,7,249,211,26,48,196,15,177,19,131,146,67,76,121,61,112,0,233,198,121,57,61,49,197,75,246,136,200,32,89, +30,112,121,100,7,211,248,159,39,28,19,211,176,250,158,116,125,173,0,200,231,230,83,201,227,25,32,228,140,243,200,224,117,197,0,67,229,32,24,251,27,142,199,49,187,145,145,255,0,2,98,61,123,244,252,20,65, +23,4,217,49,206,72,31,103,114,56,250,242,51,211,146,14,115,140,240,41,75,66,72,221,106,59,116,1,189,187,68,195,208,122,147,223,173,1,33,36,129,103,49,207,77,138,49,131,211,159,179,149,199,78,6,127,30, +128,1,190,92,74,114,44,220,99,175,250,51,122,117,206,211,253,120,233,72,65,237,105,158,50,75,66,160,125,1,242,24,183,208,125,61,170,67,26,244,91,59,161,140,12,111,137,123,156,156,121,64,0,50,51,145,159, +214,163,251,49,63,118,194,127,76,188,200,79,25,255,0,100,126,68,129,220,117,52,1,23,78,126,202,190,164,27,124,140,227,142,60,128,57,231,57,31,79,102,242,199,155,82,160,129,200,183,80,51,198,78,124,190, +153,235,143,108,224,212,235,108,231,59,172,164,83,215,128,125,201,35,106,255,0,250,250,250,96,251,57,231,253,22,69,32,156,102,39,56,192,255,0,109,121,227,250,227,190,0,42,50,199,147,186,217,215,28,130, +98,81,131,255,0,124,140,14,57,231,63,78,13,66,86,15,249,229,50,156,244,81,25,207,175,222,57,207,215,129,212,241,154,208,251,59,110,226,25,70,121,0,65,110,49,232,127,121,207,211,160,246,233,67,90,190,62, +104,228,207,39,230,138,211,36,140,147,158,152,254,124,142,122,208,6,99,45,177,231,109,210,240,9,199,151,143,94,129,134,14,59,100,15,122,107,11,99,212,206,15,0,146,200,48,63,2,64,193,235,206,125,15,57, +26,70,6,3,42,146,131,140,97,99,180,224,1,142,114,71,7,185,233,199,167,38,35,27,240,22,54,4,103,147,29,166,126,167,50,119,56,200,0,176,61,78,115,64,25,197,226,24,9,52,202,79,164,241,0,79,7,60,72,72,192, +247,20,130,88,206,51,117,113,158,248,187,141,125,51,140,205,147,142,220,115,211,140,213,242,39,57,13,180,41,232,93,173,84,127,232,204,243,199,3,158,181,11,68,204,126,115,110,58,145,243,194,7,56,193,63, +57,36,247,252,79,173,0,86,47,111,212,220,221,12,30,162,239,130,61,127,214,117,7,169,231,29,61,200,37,179,3,155,155,182,29,57,158,55,28,253,115,200,207,167,61,51,233,49,137,1,198,235,96,127,235,172,61, +122,228,110,110,70,72,235,129,219,218,157,229,38,57,146,216,125,103,133,112,7,175,222,24,245,232,56,238,51,64,21,204,218,112,7,116,247,71,219,204,136,12,227,185,220,15,94,216,235,201,168,254,211,166,169, +32,77,34,159,246,158,2,58,103,60,190,79,191,126,42,207,149,24,4,249,214,135,60,130,110,97,235,199,57,217,130,56,62,156,158,61,163,9,8,39,231,179,60,114,13,228,99,211,60,34,142,125,248,246,56,230,128,32, +107,205,51,180,227,177,227,236,204,15,174,73,207,80,122,115,159,74,79,180,105,205,130,36,13,216,17,29,147,116,28,242,98,247,39,240,201,60,28,61,154,217,127,130,212,147,253,219,242,185,252,1,99,192,235, +142,148,211,52,68,141,177,197,216,0,111,230,108,118,232,1,7,140,19,140,243,248,80,3,60,235,44,227,4,228,100,19,29,139,12,253,10,32,24,250,156,250,243,65,146,192,131,185,11,116,194,249,90,110,61,184,42, +220,103,57,228,31,78,149,47,157,1,235,20,35,182,209,123,49,60,250,146,159,95,211,222,154,210,66,70,99,134,19,252,57,251,91,30,78,15,94,48,125,65,199,215,166,0,32,102,211,114,127,209,211,57,63,122,211, +78,28,142,217,88,27,35,159,92,241,219,188,123,172,57,34,218,38,245,31,100,178,57,201,238,76,74,79,127,65,215,175,74,155,205,80,63,227,222,60,246,31,105,29,59,0,11,231,233,207,82,121,164,243,220,31,150, +0,61,63,121,11,12,241,211,13,187,212,115,244,238,114,1,9,143,79,97,159,178,68,115,253,219,59,65,207,111,187,183,240,200,62,195,184,140,195,102,112,86,213,23,235,111,108,51,248,252,199,185,244,207,3,210, +166,105,156,231,114,128,125,154,62,59,113,243,158,62,156,119,237,81,52,164,158,1,25,24,224,68,15,78,153,243,121,244,62,192,253,72,2,8,173,128,63,232,224,244,206,32,183,29,142,0,62,221,50,58,123,246,83, +28,77,247,109,164,81,156,113,28,88,207,24,233,129,193,192,236,115,212,158,180,194,101,3,132,147,7,169,86,83,207,168,218,248,28,125,120,3,241,143,51,245,30,120,207,3,44,91,244,0,168,62,217,207,175,78,64, +38,41,31,83,20,128,140,1,242,2,15,226,36,0,158,167,235,211,20,17,14,0,42,65,255,0,174,106,15,29,137,14,127,35,211,235,147,80,144,253,203,177,238,90,60,159,175,204,14,72,250,19,142,221,106,177,89,9,39, +36,117,28,70,170,78,123,243,25,233,211,168,199,30,180,1,112,164,44,48,81,179,211,59,100,95,229,212,119,224,142,254,156,48,71,8,238,20,241,156,201,118,6,71,76,229,253,71,174,51,85,14,227,247,154,64,1,56, +218,165,135,190,66,194,70,57,238,112,65,30,156,12,0,255,0,150,146,17,142,65,132,147,211,174,77,163,103,129,131,215,167,175,64,11,98,0,71,222,200,61,252,217,134,113,238,100,7,156,119,207,29,61,41,166,4, +81,198,73,62,151,51,174,58,246,13,249,243,212,247,239,72,168,25,193,4,31,250,100,249,32,244,206,219,35,145,211,175,3,233,214,61,177,231,141,160,240,14,235,89,91,166,78,114,52,214,61,250,2,61,248,160,11, +166,52,29,89,128,237,182,230,92,125,112,100,39,142,8,227,62,185,52,130,8,137,35,230,199,114,110,167,207,226,11,55,36,129,234,48,61,58,83,8,14,8,88,206,59,155,59,156,28,103,174,52,241,252,248,61,57,234, +29,163,172,118,216,236,77,141,223,28,96,245,180,227,211,142,252,245,160,11,134,218,223,32,179,48,250,92,203,143,233,200,252,253,199,66,125,142,212,244,99,199,76,220,63,32,228,113,147,140,143,126,6,112, +125,170,15,37,70,89,44,125,50,214,55,29,248,228,155,96,62,153,57,165,202,17,132,22,29,201,219,107,49,60,227,191,147,143,211,241,160,11,38,194,2,120,227,56,255,0,151,128,15,183,70,28,116,239,239,154,97, +177,129,70,114,67,3,159,248,250,0,103,128,72,6,80,123,103,35,212,30,41,170,131,28,181,175,124,127,163,62,61,58,50,3,244,200,252,58,82,249,96,158,30,215,142,131,236,175,193,39,185,17,145,158,123,116,245, +227,52,0,241,105,11,112,14,226,58,129,121,17,29,177,247,230,200,199,92,103,31,143,52,211,99,24,255,0,150,50,100,231,31,233,144,112,15,94,69,214,72,199,94,49,249,154,66,172,120,31,102,29,121,251,52,139, +215,142,162,60,159,95,235,214,154,34,39,175,146,56,60,253,158,92,12,31,116,29,125,71,175,221,25,160,7,27,96,50,2,186,251,155,184,71,167,76,202,192,253,64,238,49,235,72,109,84,142,118,156,158,247,48,16, +73,235,193,62,128,103,158,113,207,28,20,40,224,229,77,185,192,233,229,72,184,245,231,28,118,39,235,147,212,82,102,108,253,200,240,59,130,160,31,207,39,177,227,145,215,154,0,127,216,161,31,243,200,115, +159,245,182,205,143,166,65,35,160,237,129,192,198,105,191,103,136,112,26,19,142,202,214,100,254,88,4,250,158,51,140,158,198,160,101,155,28,32,3,61,21,173,128,235,206,1,80,65,63,144,239,156,26,110,46,123, +44,131,61,10,189,129,32,31,247,186,129,158,156,116,226,128,39,22,233,200,43,31,60,252,223,98,206,126,170,135,175,29,249,252,232,242,97,201,7,202,29,176,100,181,252,56,242,182,142,158,188,30,42,182,203, +177,209,167,232,73,227,78,81,201,60,231,107,255,0,34,79,24,201,52,194,183,25,31,60,199,190,26,125,56,30,70,122,249,96,130,51,156,240,0,239,64,22,252,152,51,247,109,253,201,54,7,233,145,229,130,120,30, +152,205,6,202,22,0,149,183,193,193,31,186,179,110,220,96,136,185,29,191,206,107,60,173,200,39,46,248,198,112,110,44,199,174,48,70,61,123,30,189,186,212,91,100,235,230,34,129,215,55,150,202,125,121,3,57, +246,207,4,14,185,205,0,95,54,150,160,237,113,111,192,224,27,91,60,122,140,126,228,158,192,114,121,164,251,30,157,140,255,0,163,131,128,65,91,43,93,248,207,78,97,7,191,67,207,160,170,155,231,3,2,229,71, +160,55,150,195,142,122,0,71,62,135,131,219,61,77,11,231,48,249,238,144,147,142,183,144,30,56,245,127,254,190,79,28,154,0,179,246,27,70,7,30,95,28,131,253,159,104,121,250,141,164,254,28,28,228,83,13,141, +184,56,198,65,198,49,99,22,56,207,76,56,250,96,122,3,80,152,78,121,188,140,127,219,196,44,79,78,202,248,245,228,158,112,113,222,158,171,32,56,251,90,158,184,30,106,186,130,1,244,98,70,56,234,7,32,80,2, +27,43,115,156,163,227,208,216,69,219,142,64,155,119,230,49,218,155,246,11,66,56,129,79,111,248,244,32,243,235,182,229,72,35,57,61,8,28,26,155,14,78,13,212,89,199,65,43,175,35,158,63,118,122,131,200,237, +199,78,161,187,100,28,155,132,35,36,255,0,199,204,160,28,100,224,126,229,134,7,182,127,165,0,85,109,62,208,100,121,68,30,14,12,4,28,251,15,181,115,159,79,94,189,105,5,149,178,140,148,117,61,56,130,76, +244,239,182,225,135,63,135,28,158,120,171,68,201,208,79,25,235,128,215,18,228,14,159,243,239,150,244,237,198,79,173,52,121,228,156,78,15,80,66,201,40,235,232,76,57,245,3,215,61,40,2,177,130,221,123,55, +56,255,0,150,83,2,71,29,64,102,62,188,122,242,122,98,154,34,181,206,114,122,30,49,112,14,113,145,140,16,6,122,115,198,122,243,200,187,229,222,17,197,204,221,122,41,119,4,103,169,204,43,192,206,56,237, +77,48,93,227,155,137,155,184,1,78,125,240,60,172,30,48,115,159,248,14,5,0,85,41,15,80,211,30,195,30,105,198,57,199,39,3,175,124,116,227,210,155,178,46,164,220,142,249,218,234,50,62,131,158,49,252,185, +226,173,149,187,3,137,47,120,254,234,184,39,215,254,89,31,166,72,250,243,77,243,46,215,169,212,216,99,183,153,247,190,158,72,233,211,167,62,190,128,21,246,219,31,226,187,238,0,7,57,244,228,199,145,233, +200,250,113,208,9,106,192,252,215,128,250,110,3,57,227,180,121,62,135,138,153,166,159,60,255,0,106,129,233,230,50,250,247,242,199,57,235,145,198,121,168,140,151,25,35,254,38,202,125,13,214,71,60,99,5, +9,199,78,73,61,113,140,138,0,103,145,108,65,62,109,223,36,103,33,91,140,244,36,161,193,62,188,250,115,214,148,71,107,130,55,92,144,51,255,0,44,162,98,114,51,194,152,114,59,103,158,71,166,105,217,187,35, +159,237,60,158,126,105,9,61,59,101,127,192,227,175,187,10,220,130,56,212,112,64,63,242,212,145,238,112,112,71,3,168,247,61,40,2,69,134,212,128,49,118,91,166,62,202,160,126,66,18,58,112,14,123,244,56,25, +42,18,151,4,28,157,75,223,33,241,235,208,62,127,28,241,235,234,80,7,175,24,38,63,242,245,112,71,251,50,41,199,212,121,185,32,253,79,190,41,173,111,32,3,247,215,7,142,239,23,61,120,201,186,30,189,184,231, +167,165,239,180,220,227,229,89,15,166,225,108,222,160,144,12,202,8,30,249,233,234,77,68,103,188,36,146,24,251,121,86,160,126,147,3,219,158,188,227,154,0,166,109,174,7,34,75,160,122,228,75,24,207,112,8, +91,197,253,122,240,122,117,111,147,119,208,203,118,64,199,73,207,24,28,228,11,194,122,30,8,252,71,21,108,220,93,243,136,250,246,116,139,160,198,120,14,120,245,193,30,245,11,221,93,2,67,8,1,39,174,200, +241,199,7,150,99,244,244,60,255,0,118,128,33,48,220,13,220,221,231,4,96,93,58,231,235,137,27,169,237,249,113,138,104,138,235,28,181,231,115,197,236,131,232,50,204,113,219,35,30,189,179,79,51,220,113,242, +219,146,59,254,235,39,190,56,207,78,248,245,228,113,77,50,220,109,206,32,29,137,243,27,61,122,224,1,207,96,113,142,157,71,80,8,200,185,82,115,246,211,201,255,0,151,210,71,215,62,96,253,56,166,54,245,193, +111,181,130,127,187,126,1,233,146,48,24,231,35,28,228,122,211,139,176,206,76,28,127,182,216,207,167,17,49,206,61,115,235,214,153,230,49,235,28,103,158,8,150,113,193,60,1,182,33,145,223,190,127,33,64,14, +220,253,146,255,0,219,23,82,56,30,131,42,78,7,94,153,62,217,205,52,151,7,238,223,1,211,38,121,122,125,25,125,122,17,145,211,142,14,19,202,86,25,43,16,199,247,228,185,36,244,198,63,209,143,94,220,159,175, +20,225,109,25,231,109,184,56,231,155,163,147,215,156,219,31,232,48,40,1,3,72,122,27,162,56,254,54,56,201,238,219,79,92,113,193,252,121,5,226,102,67,140,92,241,216,128,195,177,239,16,235,248,96,246,60, +211,132,48,169,63,186,182,110,188,153,175,20,243,236,182,56,4,115,249,250,138,122,199,30,113,229,218,123,15,58,241,143,39,174,126,198,160,30,253,51,248,114,0,24,110,9,7,229,157,177,216,198,164,99,61,127, +212,175,94,58,156,103,25,207,67,31,218,200,63,122,116,199,164,112,237,24,56,232,192,99,159,246,129,235,233,197,193,28,103,172,17,122,15,222,93,48,255,0,209,32,231,166,48,56,244,207,52,239,47,31,118,20, +30,251,174,152,126,31,33,199,212,123,122,80,5,17,122,156,110,146,115,207,95,38,223,3,223,153,1,30,191,128,57,197,2,250,14,160,72,123,140,65,14,125,178,124,210,56,57,236,51,140,96,156,85,237,193,49,186, +40,200,224,12,249,231,220,15,154,34,121,255,0,62,199,156,184,226,8,49,238,38,110,153,235,251,160,7,175,79,110,7,36,2,168,212,99,76,130,147,147,216,172,9,128,125,120,32,126,167,160,245,166,157,82,12,227, +108,202,122,144,208,1,142,189,14,225,215,61,121,231,166,69,92,251,76,121,32,195,106,58,127,13,192,245,61,163,192,237,254,79,9,246,176,163,11,29,128,238,20,137,250,231,208,40,231,166,123,241,159,106,0, +170,53,72,50,121,96,63,186,99,140,116,62,166,66,114,121,231,174,78,79,161,27,80,183,60,128,237,207,251,9,143,161,82,15,95,214,172,253,189,191,134,59,17,158,57,55,32,227,61,206,211,234,113,201,231,219, +170,253,178,67,142,44,192,227,35,204,153,178,122,247,95,110,56,246,230,128,40,27,232,220,96,62,6,114,65,148,175,167,171,144,127,12,116,168,141,196,68,242,200,125,51,44,61,7,28,110,86,36,1,248,245,235, +214,180,62,209,43,147,251,187,12,131,221,217,78,125,206,198,28,251,228,253,58,83,254,209,58,156,109,211,135,183,156,224,31,199,99,127,79,115,192,20,1,152,36,132,156,121,235,219,134,120,15,94,153,196,89, +245,29,125,243,78,15,24,39,247,145,231,185,81,110,64,199,67,204,36,254,167,208,231,190,129,186,156,117,75,16,0,198,68,204,220,96,100,130,32,238,125,253,49,154,114,220,200,112,124,189,52,146,58,187,183, +24,207,127,47,158,122,244,237,237,64,25,251,178,8,18,161,4,118,16,231,167,66,76,7,131,198,15,30,217,34,131,18,183,2,120,193,35,161,104,6,1,235,145,228,128,113,207,65,207,167,97,168,101,184,97,243,71,165, +250,31,223,96,146,0,60,150,143,142,248,227,161,233,212,83,79,156,220,136,180,172,96,253,235,132,97,223,214,12,113,248,116,25,52,1,154,109,156,143,150,226,223,190,114,246,195,243,13,16,235,223,0,255,0, +139,126,204,199,254,90,195,199,92,61,174,50,115,193,196,121,254,94,216,53,160,99,187,224,99,73,227,36,132,150,19,232,120,204,36,112,49,239,197,60,11,142,135,251,63,184,199,153,104,121,233,222,32,113,142, +120,246,227,154,0,204,22,206,56,50,69,207,63,235,33,28,14,56,193,81,219,29,15,185,20,214,183,61,76,129,142,121,195,64,221,78,112,49,147,142,153,193,245,7,156,86,158,36,82,70,205,59,175,56,54,167,212,128, +72,194,245,236,15,232,41,51,112,9,32,105,248,224,114,109,78,0,244,1,215,175,95,110,113,64,20,4,45,255,0,61,80,28,142,11,198,189,248,224,40,32,231,29,73,199,175,56,167,8,228,28,111,131,215,44,235,159,167, +10,122,246,247,206,42,217,121,14,65,254,207,239,143,248,247,63,128,196,141,156,255,0,144,13,55,99,48,57,58,114,142,131,116,118,152,3,156,231,47,147,223,35,183,74,0,167,182,77,216,38,220,159,119,96,48, +120,234,168,0,247,207,29,114,105,198,41,58,127,161,142,157,102,97,158,71,79,220,183,76,129,215,147,223,3,21,59,66,78,126,125,48,122,237,75,97,249,224,145,223,142,167,191,76,26,133,173,151,4,249,214,59, +185,7,16,64,115,129,142,162,76,96,227,4,96,122,243,200,32,12,100,96,112,126,200,1,29,124,201,137,198,72,63,242,195,105,233,239,232,15,171,65,64,15,207,100,56,231,62,99,158,63,237,152,199,61,113,78,242, +95,60,77,0,228,3,182,221,7,78,152,34,96,49,244,24,247,25,205,60,219,49,224,204,62,187,20,140,244,192,255,0,72,61,248,231,24,160,10,229,137,24,221,103,235,213,128,61,57,229,50,9,207,160,235,239,72,6,238, +73,179,28,140,28,130,61,250,192,79,64,57,233,199,61,133,76,108,178,120,150,34,49,215,106,228,117,7,129,112,71,63,135,211,28,82,125,142,48,63,227,224,131,236,16,143,83,201,159,31,143,94,189,58,208,3,6, +213,57,34,196,228,19,157,240,169,35,219,48,169,237,199,204,15,78,59,208,68,29,113,104,73,254,236,246,248,231,253,157,185,206,120,61,115,198,112,7,34,219,91,140,230,225,151,57,203,24,201,61,251,44,196, +31,192,116,57,52,223,179,192,115,139,198,235,200,49,177,29,125,124,206,132,243,212,99,241,224,1,119,90,130,114,150,231,140,159,222,195,143,207,24,227,208,113,143,206,133,107,66,112,45,226,201,207,38,226, +219,175,175,204,6,59,158,131,182,5,39,217,225,81,159,180,224,115,255,0,44,88,113,234,127,123,223,167,56,235,237,154,85,142,223,254,126,24,129,143,186,164,103,212,227,207,29,78,123,158,70,78,59,128,52, +181,174,127,213,70,56,7,254,62,108,128,39,61,201,192,236,79,57,163,125,166,112,68,106,79,64,110,244,206,157,184,99,142,15,78,58,247,60,84,194,27,114,49,231,76,221,254,64,20,145,255,0,2,184,61,248,237, +192,198,6,13,63,236,246,228,17,230,205,192,199,206,32,102,35,232,210,28,246,206,211,216,142,0,160,8,12,182,192,112,145,156,113,197,222,154,190,227,59,78,57,207,31,92,227,4,26,65,36,71,39,108,67,56,28, +221,105,236,125,190,184,198,59,158,122,244,169,76,54,192,159,157,248,198,8,130,209,143,161,228,17,252,241,143,194,151,101,168,63,125,192,3,189,180,28,251,253,198,61,248,25,32,251,226,128,34,47,22,50,93, +1,233,196,186,121,231,156,3,135,57,252,184,199,90,132,204,50,118,204,195,182,51,100,113,207,251,35,32,14,122,144,79,25,39,6,173,147,23,68,37,129,0,225,161,132,19,248,136,6,50,73,232,73,28,143,122,81,18, +224,31,46,65,147,243,48,72,121,245,3,116,25,227,62,252,113,64,21,150,105,19,32,76,223,131,89,103,3,24,24,39,60,15,199,131,215,138,113,158,92,231,207,148,115,156,7,177,253,48,199,7,190,79,124,113,156,131, +41,142,33,201,142,232,143,85,142,12,28,103,28,253,156,228,142,222,185,237,79,88,237,78,114,183,163,211,41,111,142,125,65,180,29,115,215,245,56,160,10,222,116,184,36,92,202,15,161,251,30,120,233,140,56, +35,252,115,211,173,32,150,110,134,234,99,233,242,192,71,64,113,149,99,142,189,248,63,92,213,131,21,175,39,253,57,122,227,9,1,252,72,251,33,3,223,243,201,39,134,149,133,79,31,105,231,166,232,224,63,251, +100,114,113,239,248,80,4,37,231,110,60,249,115,145,143,220,70,121,61,73,253,226,143,65,211,63,144,164,97,57,63,241,241,47,227,108,184,31,67,231,17,236,15,29,1,235,83,102,221,184,34,67,156,255,0,203,40, +135,56,224,157,182,95,153,3,52,245,54,185,229,36,7,160,192,11,207,184,22,223,81,211,174,122,147,64,17,44,114,227,230,158,114,120,251,182,224,103,7,168,111,57,115,158,132,14,49,197,74,34,151,128,36,185, +227,146,12,44,15,92,245,89,152,142,189,187,243,212,212,152,133,248,193,28,96,100,227,61,143,75,76,241,208,3,248,99,161,62,207,9,198,92,14,57,220,132,129,142,57,255,0,69,95,92,142,254,160,230,128,26,35, +155,156,179,30,112,67,121,189,192,206,65,148,96,253,64,25,247,198,77,140,195,128,160,250,3,41,60,231,251,178,28,3,245,57,207,79,89,4,54,227,172,208,174,15,116,235,216,113,246,97,156,227,169,7,223,28,128, +225,13,185,233,53,168,3,161,146,52,198,79,98,77,184,39,241,228,103,3,181,0,87,88,137,36,179,70,15,166,203,166,61,249,39,36,116,31,225,210,164,16,3,140,152,143,76,174,201,250,125,60,197,231,35,61,113,140, +224,245,2,127,37,23,145,54,159,158,160,224,14,227,210,16,125,125,14,65,167,236,114,8,15,166,227,254,4,78,115,207,222,140,231,242,60,231,175,90,0,136,64,152,224,69,159,247,27,131,208,146,26,112,195,160, +61,72,39,191,39,10,108,242,185,11,25,62,163,106,228,99,213,174,136,250,224,113,198,56,167,50,56,32,23,211,65,238,65,199,254,201,212,125,61,70,41,84,76,1,2,227,79,92,246,15,212,122,127,171,11,158,189,72, +235,193,61,192,26,182,210,40,226,40,207,76,18,241,250,245,230,227,39,174,56,60,131,199,173,57,161,155,28,68,128,14,135,253,31,39,31,239,75,158,189,51,147,250,98,69,105,207,252,190,88,128,9,199,239,212, +115,233,130,62,153,232,113,216,246,83,231,103,155,171,38,25,25,219,60,107,147,232,58,114,113,156,131,207,165,0,68,34,115,193,17,147,211,105,142,219,168,39,210,112,123,116,245,7,208,138,149,98,39,36,170, +47,39,238,219,192,125,191,231,224,156,14,217,3,7,166,115,74,179,186,12,9,109,24,146,58,94,12,119,224,43,74,164,126,3,182,59,102,148,220,206,65,192,182,110,188,155,144,113,198,114,49,63,111,127,200,230, +128,30,182,199,0,254,240,3,212,45,164,61,187,146,110,84,119,227,255,0,212,11,132,10,50,74,204,72,60,15,178,217,160,250,2,110,58,247,60,227,130,7,80,106,15,180,220,12,21,22,132,117,199,218,28,126,162,114, +59,119,3,175,110,13,63,237,23,152,24,91,97,233,251,210,114,123,228,27,160,14,63,62,120,199,34,128,36,216,227,238,44,216,231,0,67,104,112,70,78,56,186,97,212,231,0,122,241,215,43,139,142,72,243,240,120, +255,0,81,110,58,244,206,38,28,244,235,199,2,161,18,222,19,247,109,179,158,210,96,227,61,246,220,49,56,60,244,236,122,83,195,221,19,130,35,4,28,252,179,74,125,184,59,201,60,142,153,201,61,184,205,0,72, +29,212,13,207,113,248,67,7,114,56,24,145,143,62,220,240,79,21,48,116,199,45,49,233,255,0,44,9,207,7,167,204,51,233,156,158,123,243,147,95,253,36,244,8,79,161,146,228,3,156,231,56,151,191,176,249,122,122, +83,74,92,146,62,72,65,29,183,221,55,227,145,35,14,188,28,103,167,78,244,1,116,52,28,146,103,0,115,146,187,49,144,58,13,195,176,231,175,127,76,211,188,216,15,70,149,187,100,184,24,255,0,208,185,246,36, +113,140,12,98,179,51,58,147,242,198,73,239,254,159,159,208,149,237,212,0,127,3,74,211,92,244,216,152,224,12,199,126,78,15,25,201,25,207,184,30,249,207,80,13,35,44,89,192,105,1,199,65,50,159,200,99,235, +159,112,114,69,70,110,213,122,23,227,63,242,210,48,125,57,5,139,126,75,158,188,115,197,0,210,227,36,133,61,184,191,4,122,224,50,156,231,235,237,145,82,175,156,74,147,41,199,112,13,192,244,32,144,192,55, +235,248,156,208,4,191,107,4,156,51,130,58,102,102,3,235,149,218,14,125,143,78,190,148,27,140,140,135,151,219,15,63,4,245,0,128,58,231,215,211,147,72,0,193,204,174,50,115,128,211,2,57,238,57,39,29,249, +224,227,131,214,142,70,115,60,248,233,199,158,48,48,125,20,147,140,255,0,23,182,56,24,32,15,243,123,180,179,12,240,54,201,63,4,241,131,243,112,58,224,156,122,250,210,253,171,28,121,147,16,7,4,253,160, +251,99,169,25,168,183,114,49,113,113,207,102,243,112,9,0,158,114,167,142,112,51,143,160,165,18,73,218,89,49,199,65,33,206,123,144,81,200,61,78,1,246,61,40,1,255,0,110,117,28,9,243,199,85,155,7,56,227, +37,134,126,163,29,113,73,253,160,196,16,36,149,79,163,44,199,160,235,129,33,235,215,168,52,155,142,1,19,77,159,79,41,207,7,182,90,223,29,189,65,250,118,110,101,207,200,102,96,59,249,104,167,233,151,128, +142,6,49,131,239,143,64,7,11,201,79,62,100,128,116,39,236,215,31,158,68,171,131,236,58,244,231,128,30,46,156,12,155,153,192,193,255,0,151,91,143,230,215,4,156,15,242,8,32,69,134,35,14,164,251,48,180,201, +206,14,114,209,243,250,82,109,96,56,132,144,71,4,173,137,244,192,57,35,161,247,57,252,168,2,192,187,207,62,124,228,156,142,96,152,12,126,50,100,113,223,61,125,115,82,172,235,140,172,199,175,32,134,206, +120,234,25,199,175,67,239,197,83,203,47,34,3,158,58,71,105,143,252,116,158,217,193,231,25,247,160,202,217,56,137,120,227,12,168,59,96,156,140,228,244,231,158,71,64,115,64,26,2,96,121,243,115,211,1,146, +35,143,193,165,7,235,215,223,2,134,154,38,0,153,163,99,206,70,33,27,79,110,146,129,248,115,147,219,53,155,246,135,28,24,97,239,247,140,99,240,198,7,175,126,62,152,205,31,104,101,39,17,90,227,174,115,14, +122,247,57,224,96,116,62,217,247,0,212,89,33,61,37,131,166,120,48,14,156,255,0,207,92,255,0,245,232,243,98,3,254,62,34,7,184,15,15,126,123,204,221,71,83,156,243,131,215,140,225,114,252,141,182,160,255, +0,119,54,164,103,35,177,145,51,244,39,249,114,225,117,48,228,199,110,71,92,135,180,67,199,66,15,218,254,189,179,239,205,0,93,204,124,226,124,129,216,53,191,110,70,63,121,158,224,158,65,201,250,100,14, +0,27,101,63,79,50,0,122,244,63,49,224,126,60,119,28,213,127,181,158,233,15,61,66,203,108,72,255,0,201,156,224,227,35,154,119,218,209,136,204,113,117,206,124,219,112,79,191,55,135,39,191,31,143,92,208, +4,198,102,28,2,91,208,249,176,245,232,122,99,35,56,254,67,57,205,48,200,192,242,203,211,56,18,71,235,254,201,231,183,81,158,122,154,104,186,81,252,17,116,224,23,182,61,185,201,23,68,128,125,242,125,169, +203,116,173,199,147,1,32,115,251,200,185,198,51,144,46,253,253,63,19,64,8,110,66,227,137,8,198,56,242,216,100,19,156,18,234,72,207,212,103,245,67,118,0,206,31,158,153,141,91,29,50,56,39,129,245,60,251, +84,162,224,169,202,218,199,140,114,55,64,125,8,200,107,130,79,248,241,244,4,224,253,235,66,189,248,75,111,167,31,188,3,175,99,199,177,197,0,67,246,195,156,252,222,249,129,142,51,146,14,0,192,250,156,255, +0,80,227,118,91,157,206,15,96,45,138,244,199,65,229,145,147,208,31,166,121,224,88,89,162,98,67,91,202,1,234,118,66,62,131,229,115,212,15,79,94,184,230,80,45,49,147,3,147,223,247,104,113,158,228,0,71,177, +224,247,61,168,2,137,127,73,101,28,130,119,91,131,128,51,235,14,121,193,231,208,245,29,158,29,177,131,35,227,156,98,1,198,121,236,160,100,227,167,99,223,2,172,48,211,251,193,55,161,62,90,96,241,219,117, +187,15,167,63,137,197,68,82,196,244,137,192,193,235,10,122,142,226,220,114,1,29,112,61,184,228,1,55,129,140,204,231,61,132,42,63,162,145,159,112,71,208,231,46,45,1,224,202,231,61,115,28,96,125,6,72,62, +252,116,62,231,52,213,134,200,28,242,167,160,218,136,56,244,226,216,158,199,32,158,222,130,148,219,219,18,65,154,95,160,3,57,32,115,197,161,35,56,247,239,128,49,192,2,143,32,19,243,51,100,100,15,42,35, +255,0,179,12,116,232,70,123,224,117,167,17,15,4,56,200,236,97,182,35,56,244,14,167,219,61,253,249,168,254,203,104,63,229,234,225,123,225,118,31,78,48,109,51,215,175,203,245,199,74,112,130,193,70,26,254, +224,123,54,193,235,201,197,129,199,160,4,147,156,246,160,4,253,223,57,57,237,196,17,14,157,143,239,0,207,63,231,52,153,128,227,137,72,227,59,99,132,116,235,140,203,211,158,125,71,175,25,111,217,108,115, +145,168,201,206,58,136,216,119,201,63,232,99,169,29,127,1,206,64,81,109,102,50,69,233,39,185,17,199,156,15,93,214,60,251,255,0,142,40,1,73,133,122,45,211,118,224,91,227,30,219,167,94,51,143,126,41,235, +52,67,238,193,118,79,241,102,43,95,230,110,127,160,250,113,85,204,118,195,145,123,32,3,253,136,0,250,156,89,117,206,0,224,118,28,156,82,148,132,142,53,19,198,9,220,177,1,211,212,91,41,199,168,220,57,24, +29,113,64,18,151,78,73,182,184,7,29,60,187,44,28,125,103,56,61,112,9,7,215,176,13,37,15,2,210,83,236,209,88,159,167,6,66,51,156,118,233,207,67,81,20,143,28,95,175,92,231,17,17,233,156,178,12,240,112,7, +67,216,250,40,242,240,49,168,145,234,68,113,224,156,15,238,171,122,251,126,84,0,141,16,31,118,218,83,206,50,32,211,242,58,246,207,108,15,94,51,223,154,132,198,115,134,130,225,115,215,22,122,97,227,168, +228,130,120,231,216,158,50,51,86,1,132,100,29,64,147,140,156,219,43,30,113,215,247,96,227,220,17,244,61,105,4,176,228,169,190,233,235,101,156,113,201,226,50,121,199,57,206,122,253,0,42,152,61,18,235,39, +210,207,77,0,126,42,84,156,122,227,167,212,210,125,144,30,118,92,159,95,244,123,1,248,224,183,79,229,211,210,172,147,25,206,47,65,200,206,126,192,228,125,126,85,82,7,212,231,158,220,83,0,132,159,248,251, +228,250,88,78,58,142,185,227,25,235,238,59,208,5,127,177,134,39,13,116,167,7,147,5,137,24,207,60,7,233,248,250,115,140,154,13,142,238,173,56,235,156,199,102,123,1,247,124,220,244,237,208,30,196,228,213, +150,130,32,71,250,75,227,182,45,156,3,235,198,51,206,122,156,243,223,166,99,91,104,78,115,114,78,121,35,236,146,100,252,184,206,10,122,117,28,147,140,122,228,2,185,211,84,231,116,216,231,248,226,183,224, +28,255,0,118,64,123,254,189,234,63,236,232,1,199,158,51,198,64,142,50,58,231,181,192,232,61,115,237,201,226,193,180,131,113,62,124,216,246,181,151,174,121,192,1,127,46,125,6,7,20,166,210,211,254,126,46, +249,3,143,176,202,122,231,31,194,78,61,122,245,30,216,0,175,253,157,8,233,56,30,222,82,130,15,78,79,218,199,243,199,167,122,127,246,125,184,224,204,73,239,186,38,227,35,159,249,127,192,61,58,115,223,129, +79,107,91,80,6,37,189,111,251,113,144,15,94,234,58,126,93,243,81,155,75,108,97,90,239,174,121,177,143,175,94,11,174,122,0,8,233,216,158,72,160,5,254,206,183,207,14,27,215,42,227,25,255,0,118,240,128,120, +252,61,59,7,155,8,186,249,103,3,161,2,94,14,56,233,120,122,131,142,120,7,28,122,215,107,84,199,202,111,136,3,63,45,156,30,255,0,236,103,61,120,60,103,25,7,165,68,97,65,140,199,126,195,215,236,86,192,158, +220,230,18,14,79,169,3,250,0,92,26,116,14,112,20,140,14,193,248,231,254,187,3,140,251,147,198,41,63,178,163,234,34,99,232,113,54,125,122,27,174,199,241,253,106,144,129,127,130,45,67,146,115,254,143,106, +51,212,100,17,25,60,115,216,28,30,157,48,211,18,238,230,27,236,146,122,195,108,7,62,187,98,3,140,113,223,25,250,208,5,198,211,163,95,249,101,38,120,7,228,149,178,61,54,137,73,239,211,158,50,115,214,161, +107,24,206,78,201,185,29,21,37,31,142,12,185,201,254,188,227,156,85,120,92,100,44,23,67,208,152,224,24,227,190,20,113,158,123,255,0,42,136,71,32,60,36,199,156,97,150,32,123,227,229,42,113,223,183,29,121, +160,11,70,201,7,38,43,131,219,149,147,223,185,155,145,236,71,230,42,54,180,143,35,48,202,56,56,251,220,113,199,25,98,71,65,215,183,106,174,96,112,70,80,140,245,82,33,83,208,244,27,1,231,174,126,167,167, +52,130,25,9,5,98,112,121,206,12,101,70,113,207,220,56,199,112,115,248,99,20,1,41,182,81,192,181,115,245,222,59,119,59,71,167,110,1,207,25,197,51,200,65,199,217,228,94,231,230,147,167,208,243,216,243,237, +142,41,10,184,200,242,164,63,80,15,35,184,217,24,57,30,227,20,133,55,100,50,21,25,193,220,146,140,17,235,242,117,29,51,200,245,246,0,71,137,6,56,144,116,192,50,72,63,152,228,227,212,246,32,212,96,58,140, +162,63,182,29,182,244,57,25,18,3,223,176,200,61,58,212,191,102,82,1,6,48,48,57,196,160,100,123,121,125,192,245,234,115,158,8,166,155,94,164,180,45,158,194,57,91,143,76,152,136,36,227,161,35,167,56,227, +0,16,249,147,142,207,145,234,204,79,61,113,146,199,252,250,115,64,150,83,214,54,60,127,117,143,183,79,151,243,24,245,169,5,169,24,195,68,56,232,34,62,253,132,25,201,235,147,199,66,72,164,16,140,149,119, +60,116,11,3,247,201,24,30,80,201,61,61,189,6,104,1,134,73,1,200,141,135,4,112,8,253,60,220,228,125,1,245,29,169,3,202,49,148,152,116,232,71,31,129,60,254,32,123,211,218,36,60,97,156,116,63,232,236,79, +78,152,242,198,70,49,211,166,57,53,92,166,8,34,222,70,227,140,90,130,113,219,229,100,252,143,166,59,245,0,148,201,38,120,75,131,207,247,65,31,152,147,31,159,210,144,153,24,100,199,116,58,243,149,199,225, +151,29,186,244,62,185,235,81,48,110,63,117,42,245,7,54,208,142,227,3,59,9,228,14,123,231,57,207,82,195,9,127,249,96,252,142,191,103,128,118,60,19,130,72,31,64,62,131,154,0,148,228,117,89,240,64,206,230, +92,100,115,192,18,103,215,129,198,125,169,8,4,140,199,46,112,14,75,38,15,35,182,242,6,58,228,117,231,0,212,38,23,29,109,221,179,211,2,221,72,250,130,70,126,184,250,246,37,164,72,159,242,237,47,95,239, +196,50,15,221,251,178,15,95,111,64,40,2,195,70,15,5,100,31,138,116,238,112,31,182,9,207,63,133,48,219,196,121,35,28,231,146,57,63,247,216,231,142,51,248,84,96,200,14,69,165,192,36,14,142,157,186,228,249, +192,146,120,199,56,28,240,123,33,145,199,91,89,125,193,96,64,255,0,190,110,23,24,201,236,63,1,154,0,119,217,160,60,249,142,188,245,4,99,183,79,152,142,79,79,148,144,126,166,152,98,143,35,19,200,64,7,35, +112,57,199,183,150,112,6,7,7,146,49,193,2,151,205,36,54,45,15,29,3,22,24,193,29,254,209,193,228,240,7,182,77,1,223,129,246,76,3,158,67,62,123,117,197,206,61,112,122,250,123,128,33,91,124,96,200,56,238, +64,227,31,72,206,113,143,240,246,137,150,12,225,166,141,87,253,209,207,126,134,213,135,97,144,15,94,122,230,172,44,141,255,0,60,118,227,179,51,240,122,115,251,242,79,29,79,92,251,117,144,111,45,147,18, +177,207,25,123,161,193,244,196,167,166,57,246,237,234,1,156,86,220,114,183,113,46,14,57,141,143,94,195,109,175,126,228,12,28,245,206,41,4,177,12,226,244,14,79,72,36,97,248,31,177,242,115,206,65,235,208, +103,166,137,121,1,57,136,40,32,244,107,163,142,184,227,115,19,248,142,224,138,110,231,35,2,17,158,223,45,201,3,30,197,192,246,231,30,148,1,75,206,65,255,0,47,172,72,207,38,222,108,246,56,31,232,131,235, +199,28,116,205,32,184,66,65,55,78,113,129,159,38,224,140,246,31,241,236,217,56,227,178,231,53,105,188,242,112,34,7,159,249,247,184,35,219,230,243,56,32,3,216,14,167,190,67,74,92,99,253,88,199,76,125,150, +118,239,211,151,245,39,190,59,119,20,1,91,237,145,3,143,180,205,142,126,237,188,184,62,199,54,125,177,129,128,51,212,241,77,55,131,4,172,243,21,236,90,25,80,122,96,31,177,28,250,100,119,62,216,171,12, +151,92,16,23,25,60,125,138,78,156,113,254,183,142,199,29,189,49,154,137,163,187,57,194,228,19,208,89,16,122,244,249,167,4,147,211,0,19,253,64,32,55,65,177,243,72,72,28,157,147,19,201,255,0,175,80,78,78, +8,192,25,28,14,188,167,154,196,101,90,80,65,28,8,238,6,115,156,127,203,167,30,227,61,113,158,212,230,142,239,25,17,56,24,207,22,105,206,50,115,131,112,50,72,231,166,122,156,115,80,180,119,135,129,12,184, +227,143,176,196,120,61,127,229,190,15,92,113,249,243,64,19,25,100,227,50,92,1,198,112,151,167,128,0,199,203,110,184,252,8,207,92,131,77,19,186,224,25,102,62,160,255,0,105,47,94,156,8,79,242,231,29,251, +84,49,92,134,195,91,206,79,79,248,240,139,60,30,48,13,193,234,79,92,140,231,218,155,228,79,206,96,157,112,50,9,176,80,61,249,251,73,244,29,73,198,79,25,160,13,3,56,108,141,243,103,7,170,234,0,2,58,115, +229,46,70,15,65,142,184,3,209,158,121,245,148,140,17,211,80,61,51,234,132,140,246,192,25,237,218,168,121,114,224,124,147,46,79,240,216,255,0,141,201,237,237,71,150,235,252,19,28,159,249,240,0,14,123,254, +255,0,167,167,175,174,13,0,90,105,65,234,204,49,193,221,246,236,250,227,136,198,59,240,15,227,212,211,4,160,159,245,136,58,158,78,164,1,206,49,194,131,140,253,125,0,205,86,98,0,0,198,195,157,185,107,4, +206,71,76,17,112,14,125,242,14,115,215,169,140,183,162,147,216,127,162,237,231,223,253,43,142,222,184,239,218,128,52,67,3,193,100,192,233,131,170,253,120,202,140,126,159,203,44,34,15,69,207,78,100,212, +215,39,57,7,134,57,233,158,131,175,0,128,42,154,201,16,206,229,108,28,112,33,35,169,39,168,184,231,143,94,163,142,104,47,111,253,226,188,231,6,41,79,62,255,0,189,110,64,252,253,121,224,2,233,146,48,8, +109,132,149,206,12,250,134,58,250,97,179,219,177,200,207,67,81,25,83,57,196,71,57,25,19,93,240,125,139,128,123,228,145,248,117,170,230,75,110,62,114,7,80,26,9,187,113,221,250,99,167,191,95,90,114,75,105, +208,92,109,199,35,48,77,232,114,65,18,113,143,168,245,34,128,38,19,3,192,88,207,174,102,148,182,61,131,18,9,227,169,239,223,20,121,220,109,10,7,76,147,58,169,201,235,198,15,108,116,199,61,200,198,35,121, +173,186,125,175,211,129,11,3,142,71,121,20,244,192,206,122,246,244,111,157,8,4,45,201,231,24,59,88,125,57,251,70,126,135,35,28,241,234,1,41,148,149,0,196,56,61,126,214,131,39,140,16,165,9,63,80,64,31, +129,161,118,96,230,29,220,127,13,202,19,206,70,70,209,234,58,227,244,168,190,210,163,143,63,142,1,43,60,224,145,235,129,114,123,122,247,231,174,13,39,158,15,73,143,31,244,245,117,142,125,205,207,31,80, +70,57,160,9,207,146,120,49,75,244,89,151,182,51,255,0,44,79,249,193,35,213,140,109,192,200,134,126,58,230,226,34,79,191,54,196,224,96,96,30,157,123,28,27,134,62,105,255,0,242,122,113,158,9,25,205,201, +199,76,100,3,158,79,39,130,214,57,24,251,78,210,49,255,0,47,175,143,160,223,41,39,185,224,241,192,224,17,64,8,30,28,144,21,192,238,62,209,9,207,94,8,251,41,207,184,246,207,110,36,221,15,66,174,56,227, +152,27,129,207,31,232,156,159,80,121,233,232,115,14,217,135,221,189,66,8,224,125,165,78,58,247,51,17,140,246,7,191,230,50,92,28,19,119,9,246,107,184,131,15,192,78,167,182,58,115,140,17,206,104,2,202,155, +83,141,210,92,169,25,237,15,175,253,112,207,126,221,115,234,69,33,138,205,242,119,202,14,113,130,177,146,125,248,182,57,7,243,61,51,233,87,203,184,227,109,196,39,61,113,119,31,168,228,98,227,190,56,199, +62,185,233,81,186,93,231,137,97,36,158,247,40,14,125,114,46,1,231,175,168,32,227,57,20,1,104,218,219,51,127,173,112,185,199,41,207,61,249,131,3,39,128,6,123,242,56,162,171,98,247,161,104,24,0,7,55,17, +144,49,147,193,105,72,253,70,79,166,57,40,3,217,188,155,160,15,250,156,17,222,36,252,73,196,220,129,199,94,152,56,193,166,178,220,2,119,52,62,184,17,224,14,123,252,231,24,247,200,239,193,224,70,111,35, +60,181,180,227,156,28,52,223,162,249,61,56,199,80,7,7,216,161,189,136,131,182,27,176,121,206,75,12,103,217,162,24,199,110,132,244,6,128,31,186,65,203,75,16,35,167,10,64,198,15,247,192,7,29,184,246,38, +154,100,99,159,244,136,65,25,224,172,126,167,174,11,147,156,99,35,166,125,112,42,31,183,19,140,199,116,50,6,49,43,46,48,120,33,188,149,61,113,147,159,108,131,154,70,190,86,200,43,113,215,32,155,142,120, +207,251,28,31,175,124,16,15,112,7,171,190,236,155,152,72,60,227,107,117,244,192,10,7,243,237,142,166,172,9,71,121,237,128,28,114,37,231,167,25,32,158,185,192,239,197,83,23,145,158,24,79,130,79,62,102, +121,207,64,48,63,32,120,244,61,106,65,50,49,27,77,199,190,85,72,24,247,193,39,182,65,231,240,52,1,103,207,140,143,154,91,99,142,14,221,248,239,207,43,199,211,4,14,156,245,163,204,132,227,115,219,145,215, +57,144,96,243,159,186,1,29,178,79,108,250,224,69,230,48,60,6,32,241,209,1,4,116,57,117,31,143,39,223,138,77,167,156,163,243,234,45,134,62,132,237,4,158,249,201,201,63,90,0,145,166,181,28,249,150,195,4, +114,5,201,246,207,12,160,156,119,207,161,237,77,251,85,184,31,235,35,57,207,34,41,216,125,8,51,118,250,243,249,212,34,23,237,230,0,72,194,249,182,160,14,121,35,156,122,243,234,7,165,60,192,227,188,199, +24,28,92,91,18,59,247,108,243,215,140,115,159,196,1,198,226,219,251,201,206,15,252,122,92,31,108,229,110,71,36,127,156,82,137,109,155,161,141,136,245,178,186,36,113,212,98,236,140,15,83,223,60,102,144, +36,188,141,178,122,229,167,128,159,201,100,24,235,219,140,14,130,164,48,190,6,22,78,163,254,94,163,0,250,96,249,249,61,122,99,167,227,64,16,25,32,206,54,177,0,159,187,107,120,163,144,114,121,186,92,241, +219,36,14,152,201,167,9,173,49,134,8,120,198,26,218,225,186,113,255,0,63,103,219,27,186,113,222,149,162,152,147,182,28,142,153,55,3,241,251,178,245,62,185,201,20,229,75,149,231,202,60,0,121,185,3,156, +246,45,55,226,56,198,78,15,184,4,108,246,75,201,85,4,112,7,216,110,15,65,216,155,156,245,35,166,113,199,64,106,51,45,145,255,0,150,100,17,233,97,113,142,152,239,43,126,124,231,159,90,148,155,210,8,242, +83,25,237,122,128,158,120,28,74,49,145,245,231,29,51,76,18,221,12,2,142,163,253,155,222,51,216,241,35,122,113,193,25,63,66,0,16,92,89,42,237,216,236,56,192,251,44,234,72,28,2,55,57,7,30,253,120,207,52, +241,115,106,71,250,185,200,198,62,91,71,233,208,224,153,79,208,156,117,245,164,15,117,140,126,243,255,0,3,72,61,176,121,39,57,239,199,127,94,41,119,92,12,179,179,143,81,246,137,91,57,236,7,144,221,7,76, +19,208,208,3,140,214,56,255,0,81,57,61,121,180,148,119,227,33,119,100,241,206,9,199,90,111,155,101,255,0,60,37,0,250,195,56,199,83,208,161,201,199,3,143,215,163,119,48,37,67,57,56,207,55,19,125,63,231, +221,56,4,140,243,235,199,20,187,102,111,249,105,130,114,48,46,38,247,237,142,121,193,237,199,115,193,160,7,153,172,128,233,50,169,24,25,142,112,49,236,4,68,19,235,146,49,207,124,97,22,234,203,63,127,233, +186,27,166,199,183,17,0,123,112,167,4,142,253,68,27,24,18,172,146,191,175,250,75,237,231,143,249,230,79,160,228,227,29,207,20,133,35,82,73,18,47,210,118,32,231,60,113,1,255,0,199,137,239,156,2,50,1,99, +237,118,252,237,98,65,254,237,165,246,115,220,12,67,199,212,246,231,138,26,246,16,56,14,185,254,245,181,230,51,199,108,0,113,254,113,131,152,214,56,142,62,71,36,142,247,18,161,57,62,130,223,29,251,14, +135,174,79,46,22,233,130,66,178,103,183,218,103,247,39,129,10,231,60,99,160,232,40,0,251,92,108,126,251,99,140,226,222,240,112,120,28,171,47,61,113,207,60,122,83,90,234,223,31,49,148,112,121,16,95,30, +113,220,100,231,145,220,250,159,81,83,8,16,128,78,227,158,198,121,187,122,131,24,246,227,20,134,8,219,164,64,244,198,110,110,7,3,166,54,158,49,219,7,185,207,25,52,1,80,221,91,142,68,140,73,198,55,218, +234,3,184,250,174,7,208,227,208,142,3,69,196,71,254,90,17,255,0,110,218,131,126,88,198,127,74,188,34,85,24,16,6,236,20,93,93,96,254,38,69,192,247,228,142,8,230,164,67,40,206,219,116,35,182,103,187,111, +195,153,8,29,56,252,121,20,1,155,231,196,1,30,108,171,245,182,191,198,125,72,203,16,48,7,127,202,154,94,221,185,51,228,231,133,104,47,249,39,28,242,167,142,7,67,232,70,121,206,161,145,136,59,173,98,7, +183,239,46,125,241,146,65,227,168,201,61,123,228,224,129,178,8,49,66,184,60,103,237,13,215,232,65,39,176,199,83,142,227,128,12,162,32,233,134,32,247,251,61,224,31,170,131,142,153,246,61,233,18,11,67,193, +4,146,122,152,238,199,184,236,57,247,199,124,86,142,226,9,10,150,248,28,142,46,198,7,94,161,128,56,24,39,28,231,52,111,113,215,202,4,246,84,185,110,125,254,97,215,216,143,81,215,52,1,158,246,150,163,4, +21,30,223,233,3,245,40,64,207,81,146,115,233,210,153,246,75,78,172,168,195,63,197,36,199,241,193,135,160,244,200,25,245,25,171,165,189,74,243,159,249,99,125,250,5,152,99,235,140,116,233,81,225,9,59,150, +18,199,56,221,13,246,72,29,255,0,215,113,220,100,3,193,206,78,104,2,169,130,219,128,162,220,19,217,188,220,12,244,203,24,71,175,176,252,41,69,188,68,113,228,113,206,85,230,7,61,184,217,128,48,57,227,219, +161,171,94,82,245,34,220,142,63,229,133,249,56,238,126,121,148,122,227,175,214,145,163,183,32,6,17,131,201,207,217,111,8,231,24,251,183,3,166,57,30,164,230,128,43,155,75,112,167,45,8,200,192,221,113,40, +252,136,65,158,123,113,140,103,39,173,69,246,104,176,64,150,223,183,91,137,48,71,0,245,11,211,131,199,67,211,210,173,152,45,113,203,0,59,109,180,187,85,29,207,45,62,121,231,243,60,30,42,35,5,161,228,62, +9,227,253,69,200,227,215,137,73,61,58,116,250,19,64,16,121,8,164,145,44,25,199,59,110,165,206,51,212,115,159,175,78,63,85,17,41,255,0,150,202,58,245,185,151,130,61,1,57,228,103,176,201,239,142,42,111, +179,218,0,57,12,114,9,34,57,198,8,244,220,217,231,131,237,78,17,219,231,10,56,39,0,108,155,25,227,35,239,115,159,167,227,234,1,93,163,56,226,236,142,132,98,230,227,131,215,7,25,192,61,199,92,131,192,60, +212,69,71,35,237,67,174,57,184,184,193,231,28,229,70,14,61,199,62,135,147,121,162,137,121,9,17,61,50,201,58,254,28,28,117,234,57,233,207,92,211,0,139,32,236,182,237,218,66,63,29,202,199,60,103,61,120, +246,160,10,225,21,65,34,228,41,239,135,186,110,115,253,224,163,219,144,57,199,90,10,146,119,11,167,57,193,206,251,190,6,122,228,174,71,174,123,244,171,91,225,29,99,132,144,120,11,229,99,158,217,107,125, +221,7,92,19,235,234,90,210,195,211,236,233,199,117,107,108,240,73,25,6,216,158,221,79,3,35,129,154,0,136,1,142,110,156,142,251,141,193,247,228,50,17,143,126,125,13,59,39,28,93,1,145,212,9,73,29,48,123, +16,125,57,7,158,115,158,84,79,15,81,4,96,231,230,200,131,167,111,152,218,0,61,57,161,167,132,125,232,129,246,18,90,245,227,168,251,40,235,192,28,142,164,247,160,4,203,21,193,186,12,51,209,162,151,145, +248,247,227,208,254,56,165,66,7,30,122,103,32,0,109,219,62,135,159,40,228,99,3,175,168,227,173,2,230,220,158,45,207,203,199,30,70,48,9,60,145,24,235,223,145,215,128,105,166,230,0,8,91,124,18,71,80,132, +117,234,10,17,180,143,166,49,223,56,160,9,114,227,149,150,223,30,174,161,71,57,7,25,140,126,167,60,227,25,160,73,50,146,124,251,115,207,240,136,155,220,144,24,6,228,156,122,158,120,60,212,6,120,179,147, +109,9,30,227,140,227,29,228,31,254,190,115,156,101,13,213,191,32,218,219,41,232,120,4,241,140,28,249,135,168,231,3,223,140,158,64,38,243,228,25,253,234,113,131,196,112,243,208,247,82,113,159,160,233,215, +25,163,237,12,122,202,249,201,4,42,194,6,61,136,83,207,95,94,59,212,94,109,129,193,251,52,71,233,128,15,254,63,211,142,123,103,160,233,77,103,211,200,39,236,136,120,228,18,64,227,167,43,40,62,163,36,103, +215,174,72,5,161,55,169,149,125,14,240,9,224,242,8,42,48,120,232,51,249,138,107,74,122,25,102,28,103,5,201,7,142,196,76,58,125,51,208,129,84,183,216,110,7,236,113,145,207,24,145,186,117,31,235,58,123, +241,192,249,135,20,226,108,8,36,90,66,123,240,100,79,196,229,143,175,211,243,224,2,83,59,140,31,61,129,237,151,151,219,168,243,115,142,185,30,220,142,104,251,68,160,127,199,203,15,83,153,178,122,245,38, +79,199,61,71,64,58,102,176,146,204,156,11,27,86,233,212,57,39,63,94,61,250,243,223,210,148,165,166,115,246,11,32,120,32,110,101,206,65,244,5,185,245,201,28,231,52,1,96,205,112,127,229,237,241,255,0,93, +37,231,216,3,58,142,59,100,251,142,134,147,206,152,114,215,78,56,61,25,216,245,29,133,208,254,103,158,56,205,64,34,128,242,182,22,32,144,50,3,28,118,232,118,30,51,220,19,159,199,53,47,149,9,192,54,86, +135,36,100,2,167,35,61,142,49,239,142,227,181,0,56,76,228,28,220,220,18,125,165,97,199,175,250,65,192,231,31,78,114,105,86,73,57,38,102,235,252,94,120,61,125,165,28,103,4,28,242,113,237,150,125,150,19, +255,0,44,109,198,113,192,0,231,142,128,136,191,30,189,51,208,211,205,154,168,202,219,43,123,140,113,232,127,213,49,231,211,131,147,219,145,64,18,163,190,9,107,133,29,176,124,252,122,117,19,14,157,187, +130,6,49,154,66,207,215,237,81,224,140,227,19,228,159,171,78,216,233,239,159,110,240,249,36,144,162,24,193,238,9,227,244,85,235,223,4,17,198,58,224,185,109,157,240,54,166,58,15,152,128,49,211,248,212, +227,57,247,7,147,154,0,121,146,65,193,154,51,200,198,76,223,55,94,219,220,103,166,114,49,215,3,154,120,118,61,89,31,28,19,130,79,108,15,153,65,239,156,228,28,12,14,213,15,216,220,19,149,76,18,7,51,100, +96,117,224,206,167,191,247,135,94,113,158,15,178,49,198,99,207,186,224,103,24,193,13,246,172,159,66,72,24,198,57,206,104,2,113,44,99,27,227,45,234,65,32,31,66,48,113,249,116,224,145,234,228,154,215,156, +195,143,96,204,115,207,81,134,207,124,31,167,113,140,82,54,147,41,251,160,12,112,88,140,228,103,140,253,168,231,240,247,228,210,155,121,121,253,225,4,243,128,163,191,166,217,88,100,142,115,206,61,6,40, +3,68,221,218,113,251,151,57,39,140,92,227,61,250,48,3,183,3,232,56,169,62,211,104,0,62,80,83,140,227,202,152,147,159,92,186,99,29,207,3,29,251,214,49,183,148,15,245,146,100,99,179,129,239,252,71,63,82, +121,236,7,38,129,20,163,3,124,167,28,12,239,31,251,54,7,127,225,207,94,228,100,3,95,237,22,167,254,89,200,15,222,27,68,139,156,246,24,155,61,191,42,84,154,223,156,71,42,231,185,146,79,175,67,63,56,3,167, +94,195,219,40,36,131,171,16,61,25,228,4,254,115,113,236,73,253,42,95,38,82,163,247,137,128,115,143,56,113,201,233,153,31,223,29,77,0,105,9,160,254,36,124,31,67,39,3,62,191,104,95,192,228,227,154,114,205, +111,187,10,28,115,223,121,7,216,230,235,4,231,56,237,252,171,56,70,216,251,216,35,142,36,139,255,0,102,140,159,78,156,82,170,183,221,51,99,61,24,53,185,199,126,15,217,216,247,199,36,142,189,104,3,83,205, +76,240,206,49,142,60,198,207,57,200,4,95,0,62,152,227,223,34,148,77,30,51,230,142,127,191,33,57,193,29,205,235,244,192,244,231,56,199,90,206,88,243,129,246,133,236,57,104,23,3,240,176,57,3,62,152,234, +51,198,42,65,24,4,15,180,219,254,50,66,196,159,64,63,179,199,111,212,250,113,64,26,38,116,35,137,3,158,78,208,192,254,162,235,35,57,207,94,131,211,138,103,154,199,185,28,115,146,187,113,158,58,92,156, +250,231,7,39,62,213,68,170,131,204,182,132,244,229,161,24,3,175,77,61,7,97,147,156,159,230,102,16,65,221,103,156,246,146,1,215,235,104,50,127,12,117,231,131,64,23,204,163,35,134,98,121,1,64,232,49,158, +12,249,239,233,232,122,142,20,76,163,7,201,201,232,3,47,56,250,171,158,15,175,56,201,201,227,53,76,27,114,50,94,212,17,211,247,182,252,251,128,108,136,233,215,175,92,100,102,151,22,131,150,120,9,39,179, +91,177,61,135,252,195,253,185,193,199,227,212,2,239,156,72,201,183,140,99,63,41,80,199,242,13,147,159,175,233,197,68,110,88,3,182,215,230,255,0,174,68,142,253,6,236,224,115,208,158,56,235,138,132,253, +140,117,10,216,0,140,36,61,50,6,65,22,203,237,223,28,253,13,61,94,215,130,34,140,99,159,186,128,224,103,174,32,200,30,227,24,160,1,174,174,15,75,110,128,1,251,135,224,243,219,105,36,122,12,241,235,200, +2,63,180,76,196,147,110,115,215,254,61,51,207,28,130,72,60,231,175,113,212,156,154,155,204,181,232,33,140,158,160,132,127,98,113,181,121,29,58,17,143,90,144,73,0,227,200,81,207,96,252,224,0,79,46,63,18, +0,235,128,120,25,0,169,230,202,73,253,198,78,122,155,70,4,123,112,196,30,58,128,71,191,108,1,229,29,33,60,159,249,243,110,62,135,204,255,0,10,185,246,136,58,24,228,0,119,88,216,231,219,239,143,192,253, +121,199,87,45,212,7,32,37,207,28,156,40,24,250,230,224,12,231,169,199,110,58,208,5,35,35,15,189,18,117,57,6,204,228,143,76,253,165,112,64,200,207,233,75,230,72,7,9,24,29,70,109,177,140,143,95,182,228, +115,223,185,198,15,82,116,68,176,18,72,142,225,189,63,213,228,158,114,121,184,97,249,131,235,205,30,116,107,144,144,207,199,102,72,91,175,168,19,47,56,28,117,25,0,227,212,2,136,158,94,10,249,39,142,130, +35,184,17,201,25,55,132,28,131,208,100,250,226,154,110,216,31,157,163,4,30,159,103,28,28,255,0,216,71,168,207,97,199,60,240,106,255,0,218,112,115,246,119,233,201,104,173,192,199,3,31,53,200,57,28,28,46, +115,207,66,112,24,215,128,31,154,60,122,110,142,215,28,15,81,43,243,192,227,62,148,1,76,93,147,255,0,45,35,25,29,60,132,24,239,207,252,76,14,115,159,83,140,145,219,34,69,187,67,193,146,46,58,229,16,103, +240,23,164,251,84,166,241,79,72,213,143,60,32,183,79,166,72,154,62,231,24,219,156,156,10,111,218,137,39,247,44,14,114,64,104,15,111,123,130,73,228,126,28,243,64,18,45,212,93,75,33,250,34,143,92,157,171, +114,192,15,92,243,158,220,230,158,46,97,198,114,190,196,70,127,14,124,238,15,191,62,181,88,220,205,192,88,14,120,231,54,164,242,122,3,231,228,115,238,121,201,233,73,246,139,182,228,70,203,142,128,253, +156,231,215,63,233,0,125,56,235,154,0,159,237,144,28,130,164,174,70,62,86,62,159,244,215,25,30,153,232,123,117,167,11,171,112,15,250,206,122,0,178,15,169,200,145,128,233,215,235,156,156,213,86,150,244, +142,0,83,244,128,49,31,81,57,227,167,76,84,5,245,33,211,204,30,234,96,35,159,66,210,118,237,249,123,80,6,143,218,97,227,137,142,58,127,172,244,61,120,39,60,245,207,177,197,56,205,25,25,30,104,7,142,114, +63,82,87,245,35,235,235,156,46,53,78,158,100,252,115,199,145,207,126,191,105,94,123,126,3,30,237,251,70,166,78,119,92,119,199,239,227,29,14,79,202,46,206,15,97,212,224,242,120,205,0,94,12,172,70,30,65, +201,39,230,207,167,56,36,244,231,158,190,221,234,64,19,60,205,49,207,171,149,29,57,245,244,227,143,83,222,179,196,250,168,28,75,118,59,128,211,198,189,120,36,98,127,169,31,55,127,202,101,184,213,151,31, +233,23,160,251,92,68,195,35,174,8,186,57,199,78,7,62,128,113,64,22,246,70,120,18,149,0,103,62,103,99,236,70,127,46,152,255,0,122,134,242,112,127,210,129,228,129,186,84,206,71,94,88,128,49,193,198,70,56, +239,156,194,183,58,169,4,253,174,243,39,61,100,65,143,65,196,196,244,247,35,56,231,131,79,23,58,159,57,191,188,67,232,37,201,239,216,77,158,227,142,156,116,57,38,128,24,85,56,11,121,24,7,184,154,34,59, +159,249,232,7,212,0,113,239,200,164,17,41,207,250,116,99,241,140,243,223,36,103,60,99,158,72,231,140,112,100,55,55,252,110,189,188,113,192,199,152,192,145,223,7,237,10,58,123,250,103,60,229,223,105,185, +29,39,190,99,142,66,220,99,32,117,251,211,159,192,122,12,208,4,38,12,255,0,203,244,103,118,79,59,7,67,143,226,200,224,99,219,60,112,121,163,236,99,147,246,216,9,192,229,150,60,122,99,132,39,35,61,114, +1,252,106,202,222,220,169,251,215,128,103,130,210,131,250,137,123,243,156,224,158,195,147,82,53,228,237,198,251,177,239,230,28,116,233,196,217,3,182,49,142,190,217,0,160,108,70,114,215,54,196,30,255,0, +116,126,106,1,231,183,249,6,101,179,137,84,230,91,115,245,121,14,125,50,2,145,208,17,207,227,197,88,243,100,99,147,44,224,231,248,139,57,7,61,243,50,251,14,58,30,157,5,47,153,55,67,44,239,159,250,102, +249,199,167,252,124,40,29,63,1,208,244,192,5,111,178,69,252,62,75,122,109,87,32,96,247,202,30,184,61,62,159,88,154,13,188,21,82,7,60,66,237,144,58,244,92,126,67,35,35,24,233,86,203,54,48,86,229,137,232, +124,174,58,243,255,0,47,190,157,182,231,154,99,0,48,222,92,173,219,136,1,56,245,32,221,241,219,244,239,201,0,172,177,171,125,219,104,200,198,62,107,105,7,78,224,249,71,28,159,83,159,124,211,196,4,224, +11,88,207,183,146,195,159,251,243,207,166,122,251,96,80,210,56,200,16,77,193,61,116,244,97,234,78,69,214,79,29,207,61,243,81,111,147,35,48,56,192,232,108,128,31,64,22,236,3,129,143,83,159,83,212,2,199, +146,20,128,44,249,228,19,130,160,142,185,229,6,121,245,29,189,113,71,148,9,255,0,143,3,206,62,98,209,14,78,79,25,93,221,79,78,72,238,58,212,27,164,39,253,94,57,234,109,28,114,122,242,183,157,191,63,95, +90,8,115,141,222,94,48,121,251,52,163,61,136,56,190,63,145,94,253,250,208,5,143,43,36,15,177,129,140,224,238,82,112,127,237,153,250,3,207,235,75,176,116,54,228,117,206,76,120,228,250,109,207,127,126,231, +154,168,96,220,72,197,183,61,119,218,202,189,61,254,217,158,123,145,143,106,141,161,10,126,237,151,254,3,205,158,72,227,155,179,215,174,0,63,92,98,128,46,180,113,142,177,109,236,113,228,243,233,157,201, +211,129,199,160,29,122,136,136,137,123,21,237,243,60,0,15,111,151,215,169,231,62,135,147,84,217,20,156,24,237,1,199,83,4,191,137,199,218,125,253,240,122,100,230,154,23,178,173,190,71,76,65,114,7,124,3, +130,249,192,62,131,215,210,128,47,168,132,255,0,24,250,2,27,184,254,37,114,61,125,127,74,26,40,78,51,34,140,142,222,103,35,215,134,3,159,167,78,156,28,85,63,223,227,133,132,1,211,105,185,140,31,174,84, +12,126,135,3,140,210,136,229,108,238,48,14,184,204,215,57,61,135,76,126,100,129,129,223,184,4,230,222,215,28,200,91,7,180,82,190,121,244,15,234,125,8,252,77,39,151,105,145,182,80,49,140,238,180,156,224, +125,50,71,111,195,145,131,214,162,48,49,198,13,190,49,255,0,63,87,71,60,115,147,191,156,159,203,167,34,147,236,110,223,242,202,34,127,217,186,185,31,134,48,113,129,211,7,140,30,123,80,4,134,8,243,242, +76,184,199,107,43,174,158,132,162,228,131,236,48,125,49,154,105,141,71,59,198,71,127,178,95,2,121,227,144,7,183,31,141,71,246,87,4,226,36,7,156,127,164,93,156,30,159,194,49,220,250,15,202,154,109,164, +61,98,94,71,32,92,93,241,206,1,193,35,61,57,224,12,247,25,160,7,52,106,228,230,225,71,174,44,239,216,228,122,230,54,250,12,21,247,6,162,104,19,175,218,216,142,63,229,202,239,230,32,242,127,212,147,233, +235,239,79,251,60,234,118,148,56,39,31,235,174,79,108,145,156,144,58,119,227,241,200,165,54,236,15,41,32,60,244,146,239,24,60,96,129,17,237,158,185,60,244,193,20,1,92,91,171,19,137,149,136,4,141,214,87, +156,15,97,246,82,14,61,207,78,156,210,155,118,0,226,72,200,32,12,125,142,117,61,122,228,217,140,241,156,28,131,159,167,51,253,152,28,146,184,255,0,105,167,187,4,99,140,109,42,49,140,116,192,30,132,212, +77,106,156,231,118,14,6,60,203,182,92,231,156,227,36,12,123,147,199,161,56,0,174,214,242,128,118,74,131,160,202,197,112,191,202,223,169,193,247,233,192,226,163,104,110,192,192,156,224,116,96,178,143,108, +115,15,81,244,224,250,145,83,139,123,97,201,192,57,198,65,188,234,7,28,144,7,28,231,7,57,198,57,193,167,24,173,241,157,173,129,207,15,62,9,192,232,90,39,57,7,3,211,223,142,64,40,152,175,134,51,59,176, +237,146,164,31,127,158,32,123,14,9,25,35,218,153,182,236,30,75,28,103,31,234,64,235,215,36,14,61,198,57,228,154,209,243,44,198,3,9,1,4,255,0,19,96,115,254,213,171,112,72,234,115,193,246,52,195,115,107, +156,2,253,123,201,24,57,61,0,31,100,237,208,28,16,122,241,205,0,82,34,227,251,204,122,244,91,119,35,63,94,73,235,211,7,25,168,243,112,63,134,70,25,255,0,158,86,227,243,59,128,199,228,121,207,21,120,207, +103,147,243,72,7,36,254,249,56,35,56,225,108,186,251,129,232,62,143,23,54,88,192,146,110,221,38,155,28,116,251,182,67,159,66,199,28,80,6,112,184,186,95,151,236,178,158,6,8,134,2,115,233,247,155,167,166, +112,121,199,29,70,154,248,114,182,115,246,198,45,227,3,29,114,48,192,241,156,16,15,35,128,8,197,105,253,170,223,162,9,56,232,77,220,227,143,79,248,247,207,175,56,63,135,24,30,241,115,129,230,250,252,183, +83,182,79,25,235,106,121,254,157,9,198,104,3,33,174,111,142,65,178,184,193,238,97,69,3,167,76,177,29,240,78,59,250,210,125,162,227,0,125,154,97,237,229,68,122,243,212,184,28,119,7,28,156,15,90,212,55, +96,140,21,99,147,193,107,169,71,254,133,110,7,60,18,50,113,219,28,211,126,208,152,63,42,131,143,249,239,235,199,70,64,115,142,49,187,39,211,52,1,158,37,152,227,54,210,145,220,152,96,30,248,255,0,90,222, +135,208,99,60,102,158,37,108,252,208,21,62,165,35,25,232,121,218,120,29,122,159,175,106,182,39,60,133,56,36,99,38,83,143,166,67,47,225,206,61,189,23,205,144,129,159,45,128,235,186,89,142,1,255,0,183,129, +201,233,215,28,250,10,0,164,207,156,124,132,28,142,161,64,239,206,55,19,236,112,7,110,122,211,11,119,0,116,199,221,94,58,250,231,167,185,224,253,43,68,202,79,7,202,3,161,196,151,157,58,255,0,207,225,28, +142,224,119,39,189,70,57,57,5,49,211,5,174,155,24,207,65,246,161,253,120,28,115,205,0,82,14,199,32,144,57,233,185,114,123,116,206,8,28,241,199,92,0,106,50,187,142,55,160,250,149,224,30,123,176,231,183, +7,28,125,69,94,118,98,8,249,58,117,31,104,60,250,97,174,182,147,232,122,99,142,121,204,12,73,254,54,28,113,251,182,108,119,60,121,217,247,228,244,192,238,8,0,170,81,215,248,227,24,250,0,123,117,243,187, +251,127,58,97,207,105,160,7,35,169,227,56,235,133,185,81,238,112,57,252,234,76,169,63,51,185,57,207,16,184,252,56,186,28,246,198,15,61,129,226,148,72,58,121,146,241,216,71,39,202,79,94,77,222,113,128, +114,59,228,158,220,0,68,209,200,195,253,101,179,1,215,42,249,60,96,1,139,130,56,254,71,233,76,242,200,28,180,28,228,125,217,0,31,240,21,99,223,32,141,195,233,86,75,177,28,189,201,63,238,79,199,126,211, +31,208,244,231,235,19,60,132,30,110,78,51,143,221,221,159,253,168,114,59,247,29,79,122,0,132,199,193,57,183,39,32,18,35,156,231,232,3,3,156,158,185,61,79,126,106,38,141,193,200,88,57,7,36,37,216,60,123, +2,73,227,212,100,247,247,123,73,33,200,217,116,72,61,160,155,24,233,159,153,78,7,126,122,14,115,138,174,77,193,193,85,188,61,127,229,135,113,223,38,46,57,233,140,244,24,160,9,54,77,140,1,110,121,234,86, +236,246,228,224,245,235,212,142,113,192,29,1,229,207,217,109,48,114,126,229,209,253,24,156,247,206,112,61,65,57,205,125,247,195,32,67,118,70,58,27,108,130,58,112,194,18,15,80,122,30,252,231,154,97,125, +64,103,247,119,124,127,211,4,237,211,150,139,211,3,28,115,192,245,32,23,85,110,191,187,106,192,127,118,59,159,79,114,78,61,177,216,241,208,210,147,114,56,49,219,123,130,151,92,250,242,234,221,207,32,158, +159,166,91,62,166,199,132,185,111,102,142,53,56,198,50,113,23,39,241,61,105,66,234,100,28,171,131,206,50,35,231,177,224,160,28,123,123,244,29,0,53,60,171,150,235,21,183,35,24,84,144,130,120,206,115,3, +1,211,160,7,61,115,130,48,211,20,224,156,36,39,232,172,56,233,140,125,149,122,99,167,211,147,89,109,22,162,65,38,48,221,57,34,46,7,62,136,113,248,128,7,242,170,69,254,72,242,192,235,200,242,148,14,253, +124,177,207,175,60,146,71,124,80,6,243,45,216,63,234,227,239,131,157,160,247,24,253,192,28,14,115,159,108,113,204,12,111,186,21,24,206,48,29,123,103,177,136,3,142,125,15,76,113,156,98,50,106,37,114,119, +237,235,195,193,211,220,21,245,206,49,144,122,142,162,154,18,252,224,134,149,78,59,73,16,24,28,255,0,10,129,248,28,156,251,158,64,54,177,121,252,74,7,31,196,208,156,231,25,198,97,56,233,207,92,103,166, +105,132,93,119,242,193,245,18,91,3,239,214,19,220,12,253,0,231,182,73,23,227,147,36,220,16,15,239,8,199,63,238,145,211,61,62,156,140,101,140,47,8,203,72,227,29,67,75,39,81,212,240,7,190,7,29,77,0,107, +179,205,140,52,138,73,232,166,75,102,250,159,245,4,17,211,142,255,0,78,149,154,73,0,198,99,7,216,218,130,112,121,227,236,167,183,191,39,176,237,156,4,220,18,238,121,255,0,158,146,31,108,242,217,62,248, +231,158,71,38,164,95,55,61,38,35,209,100,42,122,131,212,204,190,185,39,215,7,173,0,89,23,50,3,204,169,147,198,225,45,138,250,118,251,48,193,245,4,254,93,154,110,102,0,31,180,38,125,26,226,215,24,56,39, +164,13,140,18,121,245,192,24,168,154,73,128,63,235,201,227,0,78,195,185,244,152,159,94,132,140,115,198,42,15,54,83,195,11,128,58,255,0,199,203,140,28,250,153,122,103,156,18,9,61,64,160,11,98,234,83,214, +104,88,140,242,47,44,207,78,227,247,57,28,117,200,199,57,28,138,62,214,217,27,165,139,36,129,205,197,177,227,140,131,155,108,103,182,51,198,51,219,138,194,70,39,143,180,28,158,115,112,196,19,219,32,77, +201,252,254,158,142,243,156,100,133,144,146,64,255,0,89,47,182,121,89,27,241,224,123,114,40,2,208,186,83,143,158,18,115,129,153,172,248,246,203,90,31,207,175,76,145,158,100,23,114,17,254,182,60,14,223, +105,178,25,244,255,0,151,49,128,51,216,158,189,79,53,64,73,48,61,7,57,254,41,201,231,190,51,201,199,175,167,161,4,59,205,148,116,11,211,156,179,250,115,157,204,188,228,122,244,227,0,242,64,46,125,182, +108,255,0,173,65,140,241,231,219,182,113,254,237,167,32,227,56,231,142,253,203,126,216,253,222,18,115,146,11,197,158,58,114,214,234,51,211,30,158,157,234,161,157,242,50,241,228,243,254,176,174,114,112, +58,201,129,140,243,220,247,166,153,157,121,223,15,167,50,48,235,235,137,9,39,216,30,184,237,154,0,187,246,198,56,225,51,140,29,183,81,160,192,232,72,17,0,56,192,200,246,237,78,23,108,58,44,0,158,50,111, +81,187,231,161,0,100,158,135,140,159,76,214,97,146,70,60,201,104,190,155,164,124,140,251,110,60,227,158,71,79,94,241,153,27,167,159,104,121,231,99,203,158,157,59,143,200,17,235,156,138,0,209,107,185,148, +147,152,51,156,228,79,19,99,215,129,144,123,227,36,116,24,28,131,81,53,212,135,230,200,29,126,233,71,28,116,57,14,125,125,0,252,234,160,156,168,230,120,50,8,57,219,38,70,113,232,164,228,255,0,245,136, +192,167,27,166,36,127,164,196,190,193,103,201,234,1,251,128,251,246,235,248,0,9,205,203,17,203,140,250,55,144,126,159,122,69,253,14,123,116,235,93,174,39,254,18,152,237,242,65,211,254,255,0,143,195,250, +113,77,105,137,235,119,128,112,56,18,168,252,71,126,15,175,28,251,154,60,216,134,65,186,57,238,85,220,118,227,144,227,25,254,157,51,208,1,166,73,136,249,154,51,206,126,100,76,115,215,56,186,3,174,115, +142,190,212,83,60,232,178,71,219,100,29,201,243,220,158,184,25,34,108,128,58,17,142,189,7,106,40,3,219,136,185,234,150,209,128,6,126,97,114,217,252,60,214,201,199,255,0,172,230,156,130,243,60,91,70,1, +61,118,206,189,177,206,100,231,208,113,223,183,118,108,79,238,175,253,242,63,194,174,136,227,56,202,33,249,87,170,175,191,181,0,65,139,178,112,33,141,73,35,170,204,64,245,207,204,122,122,115,156,116,231, +147,23,92,146,150,224,228,12,52,79,199,212,249,100,224,118,39,39,138,180,136,131,110,21,70,118,231,229,28,244,235,197,29,241,219,119,254,203,159,231,205,0,84,100,187,32,159,244,64,7,251,18,15,124,100, +91,159,199,39,167,232,153,186,200,195,218,143,168,159,28,115,255,0,62,227,25,60,245,235,233,218,241,3,142,7,67,216,122,154,137,192,192,24,24,231,140,113,219,181,0,86,45,122,163,153,108,112,127,190,146, +146,51,232,124,161,193,206,15,76,99,174,14,68,70,123,209,128,102,210,49,142,67,69,35,30,61,127,118,115,143,226,201,239,199,165,90,29,62,133,177,249,255,0,245,135,229,75,147,147,201,232,59,251,154,0,167, +231,222,103,11,62,144,59,127,199,172,220,118,200,34,3,216,142,248,28,158,77,56,75,123,142,110,52,208,15,66,18,101,207,190,126,206,9,31,66,64,207,81,205,108,199,209,126,191,214,140,3,212,3,64,25,30,117, +200,7,55,90,120,207,28,137,72,247,255,0,150,39,142,56,28,126,35,52,162,105,186,253,179,76,24,61,10,74,51,156,122,66,7,97,223,61,143,165,106,128,8,4,128,78,7,36,2,122,122,212,240,198,141,157,200,135,175, +85,7,211,212,123,159,206,128,48,77,203,22,195,221,105,252,18,9,2,65,211,216,5,61,59,103,29,251,228,60,220,198,14,62,215,167,103,183,18,117,24,245,144,125,121,207,161,230,182,124,168,183,191,238,227,224, +140,124,139,199,211,142,41,74,32,28,34,142,189,20,15,225,111,65,64,24,159,108,25,226,243,75,29,0,30,89,99,250,182,57,245,201,228,243,211,151,125,170,44,224,221,233,163,36,30,35,198,79,215,112,232,71,24, +238,127,1,166,252,48,3,129,184,240,56,29,71,106,114,147,129,201,232,59,159,79,254,185,160,12,225,52,68,127,199,229,167,29,54,150,92,143,64,119,140,122,113,192,226,152,206,156,143,182,90,16,115,128,101, +57,199,227,113,131,140,250,116,235,158,113,174,140,219,135,204,123,247,62,245,28,221,254,163,249,80,6,67,4,25,196,150,109,254,241,136,231,215,147,49,43,220,251,123,154,3,199,252,82,89,158,8,206,109,137, +231,167,38,78,222,249,62,226,174,177,57,60,159,226,238,123,40,199,229,218,163,44,193,73,12,115,243,115,147,158,0,199,229,219,210,128,42,1,16,235,37,185,24,206,63,209,215,29,79,31,189,35,166,7,175,0,30, +121,169,21,96,108,0,208,130,57,36,136,184,36,251,72,61,185,199,76,250,211,221,223,143,153,186,183,241,31,95,173,52,59,146,1,102,35,61,55,28,115,215,189,0,12,138,8,229,14,6,1,2,51,199,215,39,7,28,28,30, +158,252,210,237,139,146,192,147,232,17,56,35,28,100,186,175,66,49,142,128,14,148,198,102,218,126,102,254,46,231,176,24,252,178,127,58,98,179,110,97,185,177,207,25,56,235,245,160,4,242,173,243,210,112, +115,216,175,24,29,254,118,3,119,227,219,29,73,1,72,120,203,79,198,127,229,148,108,62,159,117,137,246,227,4,231,7,156,212,236,238,9,1,155,28,113,184,250,125,106,186,59,150,57,118,56,81,140,177,227,147, +211,158,40,1,224,219,237,59,164,184,60,127,207,186,156,0,125,225,57,28,116,254,162,148,53,168,63,241,245,58,158,156,65,16,35,191,7,200,207,177,193,7,140,156,242,106,38,146,77,255,0,125,255,0,139,248,155, +212,15,95,78,62,156,83,90,105,87,238,203,34,240,122,59,14,235,232,104,2,193,22,132,100,94,93,100,1,243,8,84,175,94,228,67,158,78,15,126,188,122,208,30,220,1,254,151,117,140,18,9,137,206,122,100,143,244, +96,48,63,30,188,245,225,124,233,128,108,75,32,234,56,145,186,109,28,117,168,158,121,192,140,137,165,7,119,81,35,231,175,214,128,6,154,2,78,221,70,224,14,251,163,144,116,235,159,221,129,216,118,233,220, +228,138,97,184,136,244,212,101,56,254,34,141,159,126,64,30,188,114,120,233,158,105,86,230,227,229,255,0,72,155,163,127,203,89,61,71,251,85,23,218,110,78,115,113,57,231,188,178,122,15,246,168,2,77,241, +156,127,167,177,36,227,129,40,62,252,110,206,79,161,29,125,198,68,137,183,147,246,189,220,99,230,18,131,219,158,79,110,121,62,190,184,166,249,210,148,92,203,39,44,1,249,219,145,176,240,121,166,52,178, +229,71,155,38,51,140,111,110,153,28,117,160,9,182,158,210,43,246,39,124,128,12,12,30,0,97,187,215,128,48,122,115,154,104,133,242,78,244,39,177,243,72,60,246,25,135,3,158,192,99,4,250,112,197,154,95,152, +121,178,99,113,227,123,123,123,209,20,243,19,204,210,158,87,254,90,63,175,215,216,126,84,1,33,138,70,235,179,208,126,250,101,233,198,115,28,35,175,94,64,239,206,49,131,203,113,252,80,129,158,67,92,93, +227,29,122,121,4,143,174,8,224,103,38,160,107,155,140,145,231,205,140,158,60,215,199,229,186,154,243,77,129,251,217,62,238,127,214,55,94,121,235,215,222,128,45,133,99,128,26,47,79,248,252,153,70,120,232, +94,0,113,237,131,143,198,164,72,102,60,102,7,28,158,111,88,99,175,92,194,63,80,127,78,40,36,178,224,126,242,78,74,231,231,110,120,62,244,229,146,66,167,46,231,230,31,196,222,163,223,220,254,116,1,162, +44,219,25,49,196,7,25,197,222,78,123,96,155,114,126,246,126,167,159,170,27,37,235,132,92,30,64,186,92,99,167,32,217,156,145,215,241,250,230,158,230,17,185,12,115,207,57,57,237,222,162,220,217,95,153,185, +47,158,79,60,154,0,191,246,53,24,62,116,8,115,193,55,41,187,39,219,236,138,15,183,56,198,122,12,210,139,81,198,110,161,61,70,68,160,145,156,14,162,44,103,142,163,3,61,253,114,229,145,193,225,220,96,140, +97,136,199,29,185,170,102,89,126,111,222,73,247,191,190,223,237,123,208,7,64,45,20,127,203,228,92,117,204,185,36,241,198,74,128,9,200,192,198,121,192,52,207,32,3,255,0,31,118,237,146,62,83,33,31,66,62, +98,1,3,161,32,115,211,156,227,156,14,228,156,187,31,171,19,252,77,234,125,135,229,82,142,83,39,147,130,114,121,231,158,104,3,123,202,224,143,180,196,64,28,97,227,56,235,142,140,6,73,235,140,116,227,24, +38,152,208,177,233,112,163,57,200,57,108,140,142,70,46,135,127,110,61,61,57,246,224,224,112,55,17,142,216,1,176,49,79,31,119,61,242,220,247,251,164,255,0,62,126,188,208,6,195,66,20,97,229,87,238,48,167, +35,29,241,231,182,113,158,48,56,247,200,21,88,149,76,226,69,232,120,96,114,51,201,35,13,237,142,72,250,241,196,10,1,25,32,18,24,96,144,15,113,76,160,9,140,216,60,73,30,49,208,237,97,143,163,75,145,158, +255,0,94,41,173,60,157,21,33,218,120,200,227,29,113,192,114,73,227,39,146,56,24,25,28,163,112,120,227,147,211,142,203,76,60,245,231,235,205,0,47,157,54,65,8,155,185,201,201,199,83,142,27,183,79,195,131, +64,185,156,28,148,136,99,208,199,158,160,99,169,56,3,61,179,239,73,128,122,140,212,107,247,191,224,35,249,10,0,156,222,200,127,135,215,186,30,188,147,156,28,231,255,0,175,205,48,222,72,120,249,136,239, +149,129,128,62,220,144,120,232,125,121,244,21,93,137,193,228,244,61,205,46,230,254,241,252,205,0,75,231,202,113,133,94,189,12,118,254,222,172,120,39,36,240,127,90,11,204,199,229,68,206,123,71,108,78,72, +192,227,204,25,206,122,1,158,157,133,84,154,71,193,249,223,160,254,35,235,143,95,78,62,149,66,105,36,1,113,35,142,79,71,97,253,104,3,111,23,71,141,202,189,198,32,128,115,232,72,184,29,178,9,253,58,84, +171,111,114,121,224,131,233,10,123,14,118,220,144,61,240,122,231,145,198,121,232,230,148,237,204,178,30,123,187,122,253,105,194,89,121,253,236,157,63,190,222,163,222,128,58,53,180,185,206,126,100,247, +17,43,12,117,7,13,54,61,243,200,207,233,40,183,184,251,167,113,29,11,27,104,186,126,18,228,147,128,73,228,130,43,154,89,36,35,151,115,207,118,99,233,234,106,220,108,205,188,51,18,55,99,4,147,199,167,52, +1,182,44,156,231,35,156,142,62,198,188,122,114,174,71,191,39,168,244,56,10,116,249,8,31,32,56,3,59,96,141,65,25,235,130,217,200,36,240,79,57,206,59,214,106,170,158,74,130,120,228,129,232,15,243,166,48, +25,35,28,122,126,20,1,170,154,100,143,207,151,237,131,12,121,250,2,172,71,94,163,235,237,86,6,150,112,51,3,17,223,105,132,99,175,80,85,184,207,61,51,249,230,185,253,171,232,63,33,82,69,26,51,28,162,31, +170,131,216,250,138,0,221,26,116,104,57,134,65,239,152,8,227,169,199,146,221,59,17,131,144,56,239,65,178,135,178,145,234,90,104,144,246,207,203,228,16,73,247,198,62,167,35,10,72,211,112,27,19,25,35,27, +70,49,145,199,78,158,212,227,12,88,7,202,143,57,60,236,92,246,246,160,13,183,182,85,28,38,56,193,196,208,19,207,161,251,41,207,215,62,135,235,17,183,95,86,4,114,63,127,0,24,207,39,34,216,100,253,127,74, +197,104,227,0,226,52,31,54,56,69,232,84,100,116,167,36,113,237,31,187,78,255,0,194,190,167,218,128,53,90,209,142,14,246,227,140,253,186,37,56,25,224,17,8,231,61,190,167,154,137,160,108,99,124,132,115, +255,0,49,72,215,216,159,245,103,131,253,57,246,172,232,131,24,69,29,122,40,30,158,130,145,0,200,24,24,231,140,12,116,244,160,9,154,9,64,251,210,241,206,70,170,135,35,175,85,65,212,119,199,211,56,205,32, +66,51,251,215,232,6,14,166,160,143,94,4,126,216,61,120,62,134,163,96,50,70,56,244,252,41,180,1,33,112,167,253,116,170,221,120,190,206,62,132,69,77,105,134,56,187,99,207,3,237,211,125,56,11,110,79,255, +0,175,140,138,149,0,32,100,118,111,234,127,152,7,240,169,97,234,199,184,233,237,242,246,244,160,10,6,64,8,38,226,83,208,113,123,55,39,211,13,110,14,56,247,234,6,73,6,131,50,117,51,204,185,201,230,226, +228,245,247,22,224,99,158,217,199,76,115,90,50,59,134,32,59,1,207,1,136,29,79,161,168,188,217,55,99,204,124,109,233,189,189,126,180,1,80,92,68,50,124,217,8,29,205,221,193,200,244,3,201,7,39,223,159,97, +205,32,187,128,96,179,185,110,121,251,69,192,0,99,24,25,137,187,243,207,92,118,193,173,54,145,249,249,223,238,177,251,199,175,28,245,235,85,204,178,111,3,204,124,17,200,222,216,239,219,52,1,8,190,183, +200,195,144,50,63,229,171,177,224,115,199,145,156,245,193,227,29,177,78,55,214,252,102,114,57,228,126,247,166,0,235,229,12,244,236,15,124,242,106,235,187,142,140,195,142,204,71,240,31,122,129,100,144, +182,11,185,25,232,89,177,247,219,182,104,2,33,121,104,71,51,161,200,234,5,192,3,57,235,229,194,58,142,15,60,156,147,193,197,33,190,178,94,60,248,241,142,255,0,108,192,252,12,96,30,157,8,199,78,120,173, +96,204,58,51,15,161,35,250,213,87,150,76,127,172,126,135,248,219,212,123,251,159,204,250,208,5,31,183,216,118,158,22,36,12,143,38,83,248,228,167,56,207,82,113,140,31,164,139,127,100,191,242,245,31,28, +159,221,47,35,140,127,3,30,126,152,231,235,76,51,206,1,2,105,64,218,199,2,71,3,60,115,141,221,105,209,220,78,118,230,121,143,94,178,57,233,156,117,106,0,83,168,216,19,197,220,45,156,127,203,43,113,142, +253,90,44,158,78,120,239,200,205,60,95,90,224,149,186,183,82,14,72,104,173,143,78,71,34,31,76,122,122,28,116,160,73,33,28,200,231,167,86,99,252,35,212,208,37,151,143,222,73,247,143,241,183,109,216,239, +219,181,0,32,190,183,57,205,213,170,227,3,136,45,143,30,227,203,4,19,235,252,197,31,107,181,32,109,187,128,115,200,91,88,1,244,237,31,211,28,243,147,198,115,72,102,155,126,60,217,113,145,199,152,216,237, +219,53,89,166,155,113,253,236,191,247,241,189,62,180,1,113,110,237,148,255,0,199,234,131,237,109,111,219,235,22,120,28,117,28,123,243,79,55,177,150,27,47,65,235,156,90,90,227,211,31,50,175,174,13,67,28, +211,17,204,178,30,23,172,140,123,31,122,149,228,147,123,13,239,140,47,27,155,29,251,102,128,20,93,103,35,237,109,200,235,246,59,16,56,231,184,61,71,60,251,0,51,214,101,146,67,199,219,186,244,196,22,106, +125,121,192,31,207,57,227,167,74,202,238,118,229,155,183,241,31,241,173,24,201,56,201,39,229,29,254,148,1,6,249,185,31,218,15,199,60,193,111,142,189,62,92,15,203,3,158,180,160,92,140,145,118,196,117,207, +217,163,62,255,0,194,221,113,219,57,57,198,15,38,174,0,50,120,236,199,241,193,230,172,70,6,79,3,248,191,244,42,0,204,6,224,227,253,46,117,0,114,86,203,156,126,50,140,118,227,142,192,28,244,153,99,149, +134,77,229,217,200,224,11,35,207,78,72,89,88,147,223,142,189,241,91,8,170,81,73,80,78,58,144,9,252,205,74,145,198,114,74,38,120,231,106,251,251,80,6,40,128,131,147,121,124,7,79,248,240,111,229,230,12, +247,239,198,79,173,75,229,161,4,11,251,209,146,51,186,199,111,174,78,60,197,35,174,65,252,207,53,177,52,81,3,196,113,143,151,178,40,254,33,237,85,217,16,2,66,174,120,231,104,207,81,223,20,1,156,177,40, +251,218,141,234,129,255,0,78,234,7,191,38,64,125,120,57,29,249,29,23,201,137,185,58,157,214,49,131,242,0,123,100,224,74,51,233,201,231,166,78,5,93,96,6,220,0,62,81,211,143,90,184,170,191,221,29,187,14, +234,51,249,247,160,12,95,179,91,142,91,81,187,63,246,201,200,36,227,146,60,225,207,176,198,123,210,8,173,249,255,0,76,184,32,31,226,181,153,134,57,29,77,199,57,56,236,1,247,207,27,111,192,227,142,123, +113,216,212,10,73,47,146,79,61,201,61,205,0,102,109,181,198,5,228,235,144,50,126,197,62,51,158,163,55,3,28,245,63,78,249,167,121,86,252,31,237,9,128,29,65,181,35,118,49,199,55,4,142,253,207,166,114,50, +117,72,24,7,28,241,207,226,223,224,63,33,81,183,79,207,244,4,143,200,243,245,160,12,183,22,138,72,107,210,122,143,248,245,148,158,61,71,159,223,129,215,29,125,64,166,1,106,71,203,120,167,215,54,179,112, +65,61,133,206,72,250,227,28,250,85,151,119,218,126,118,237,252,71,233,235,233,199,210,161,86,96,70,24,142,71,115,235,64,16,188,22,236,114,46,115,158,57,181,185,35,61,190,237,193,206,122,227,249,26,103, +144,163,133,185,192,237,254,129,114,125,7,81,114,1,252,64,57,56,226,180,152,144,153,7,7,105,57,28,115,242,243,245,247,168,25,155,113,228,244,61,207,247,104,2,167,149,206,124,221,195,223,74,156,228,158, +56,204,221,122,100,242,56,201,193,200,39,150,228,16,25,113,200,231,74,147,191,124,52,132,113,207,98,126,160,212,210,51,2,112,196,117,232,79,247,133,64,73,61,73,63,90,0,79,179,204,114,50,135,161,255,0, +144,122,46,120,235,243,17,140,99,145,237,201,230,144,218,93,146,49,199,39,143,177,219,14,49,215,230,152,19,249,99,62,184,169,194,33,3,40,167,142,234,15,94,189,69,86,153,16,6,194,168,250,40,31,195,236, +40,1,94,210,243,24,0,1,159,226,180,179,63,135,19,18,127,47,67,208,84,127,101,188,207,220,28,244,219,103,101,239,211,51,15,175,166,120,237,85,169,195,238,183,182,220,123,114,122,80,4,255,0,102,212,84,100, +15,148,245,6,219,78,199,126,63,227,227,211,250,103,39,129,27,71,168,46,7,148,132,113,201,131,78,7,29,206,77,200,28,103,145,158,199,154,82,204,3,96,145,130,49,130,70,62,239,165,68,206,248,63,59,116,63, +196,125,62,180,0,241,29,243,31,154,217,27,182,10,105,128,31,196,93,30,188,113,238,122,245,169,22,9,216,157,214,41,128,125,108,143,62,248,187,95,99,158,121,207,176,12,136,150,127,152,238,224,245,231,183, +189,52,187,130,112,204,57,61,24,142,249,245,245,160,11,63,103,144,14,109,136,207,181,177,247,232,183,203,130,59,30,220,226,151,105,81,254,170,64,64,233,136,177,245,249,117,60,245,227,145,232,61,204,33, +155,229,249,143,221,245,63,236,212,82,59,134,24,118,31,50,244,98,59,125,104,2,98,71,32,134,39,166,55,48,35,7,156,98,253,200,63,79,168,35,173,68,100,140,156,24,91,61,200,105,215,56,201,57,34,243,190,73, +224,18,57,38,163,105,36,193,253,227,245,199,223,110,155,71,29,122,123,84,108,204,85,114,73,206,115,146,78,121,29,125,122,15,202,128,44,135,136,31,245,82,3,216,137,103,192,252,62,211,252,200,61,134,69, +51,237,3,161,140,228,99,172,151,57,227,166,63,127,140,1,142,14,127,48,77,64,17,14,204,170,156,238,206,84,28,254,98,156,99,143,31,234,211,168,254,5,245,30,212,1,55,218,99,199,59,131,14,128,52,237,211,166, +79,159,193,254,95,83,195,190,217,24,232,228,115,200,45,62,51,207,172,204,115,244,4,0,115,235,80,136,162,198,124,168,242,51,131,177,125,87,219,220,254,102,161,104,162,221,254,174,63,186,127,129,123,3,142, +221,176,49,244,160,11,70,253,59,79,2,143,246,227,156,142,189,15,36,117,239,145,248,85,118,191,45,187,109,205,191,114,63,119,47,65,254,246,125,125,129,235,159,88,76,81,30,177,198,126,168,167,250,84,45, +20,64,144,35,140,15,64,138,59,125,40,2,115,125,33,233,115,22,70,120,17,57,39,159,101,193,231,142,125,41,194,242,83,146,46,99,246,255,0,71,110,58,231,3,29,126,185,60,231,7,53,92,70,159,47,200,157,72,251, +163,167,203,199,78,158,213,36,145,198,0,194,32,233,209,87,186,243,219,189,0,77,246,169,248,197,202,140,227,63,232,143,237,130,112,220,16,59,247,230,165,23,142,23,63,104,201,236,22,206,102,31,150,241,248, +231,30,196,30,106,137,68,25,194,40,249,155,162,129,232,125,61,121,160,128,9,192,3,147,208,99,189,0,93,55,110,122,76,65,28,241,101,55,76,245,249,164,28,231,220,227,140,246,166,53,211,117,18,185,97,235, +100,235,245,249,183,140,12,103,161,57,245,170,189,243,223,215,191,231,81,185,39,169,39,159,95,101,160,11,70,238,224,231,18,18,49,211,236,206,57,61,206,27,28,14,158,185,200,246,97,158,232,158,94,83,236, +182,210,30,115,143,93,184,246,200,35,167,20,212,3,112,224,126,94,198,155,49,32,224,18,7,160,56,29,7,106,0,26,75,133,29,110,129,61,133,179,115,235,206,210,122,142,205,129,234,122,22,25,164,61,124,227,207, +59,161,110,64,245,37,91,243,25,233,193,192,38,153,185,191,188,127,51,68,142,248,63,51,116,95,226,62,131,222,128,3,51,14,74,182,61,124,150,200,244,39,133,25,7,29,178,49,218,163,55,9,131,184,201,219,164, +61,122,127,120,144,57,231,63,211,138,174,238,224,140,59,14,59,49,29,207,189,55,204,147,251,239,255,0,125,55,248,208,4,174,202,217,34,73,49,140,229,173,226,63,151,202,114,49,250,28,231,138,128,168,39,137, +156,31,104,99,94,157,129,217,239,215,147,233,142,208,111,127,239,55,253,244,127,198,160,119,126,187,219,59,250,238,57,234,190,244,1,123,102,8,30,108,184,246,69,28,254,42,6,79,78,9,227,211,165,30,72,117, +37,230,184,192,255,0,96,99,183,99,25,60,227,168,3,144,57,205,101,137,101,249,143,153,38,113,215,123,122,129,235,233,197,61,102,155,56,243,100,198,209,199,152,222,131,222,128,47,152,35,224,9,174,48,115, +203,0,0,224,240,24,39,127,81,215,235,128,25,228,70,14,62,209,54,58,99,205,198,70,58,112,20,142,253,79,31,94,42,138,205,46,225,251,217,63,239,182,247,247,169,210,89,114,71,155,38,48,188,111,108,125,239, +76,208,5,129,110,132,146,183,51,0,122,1,46,70,15,76,157,217,29,61,125,253,42,38,128,2,63,210,231,24,199,89,121,4,30,185,40,220,123,99,145,248,26,130,105,100,221,254,177,255,0,239,182,244,30,244,197,150, +76,15,222,63,223,3,239,183,79,78,180,1,100,198,253,22,229,207,97,186,105,15,167,4,11,114,123,158,217,239,142,64,166,109,145,0,38,233,70,9,60,207,50,241,207,24,16,3,211,169,228,103,223,128,248,201,56,36, +146,119,99,36,147,199,28,84,204,205,146,55,54,62,110,50,127,186,40,2,183,153,34,243,231,158,58,159,181,74,1,3,175,6,33,199,233,158,212,195,114,115,133,153,248,255,0,167,135,63,159,238,142,71,25,206,125, +123,113,86,76,142,122,187,159,171,31,241,168,149,220,158,89,143,35,171,19,217,189,232,2,17,52,217,36,59,177,235,254,178,102,25,28,241,182,223,60,247,193,7,223,208,251,68,195,25,142,92,99,147,182,102,36, +158,235,152,199,160,236,120,234,42,203,147,131,207,240,231,241,35,36,254,124,213,117,102,37,1,102,32,129,144,73,35,248,123,126,38,128,24,110,159,60,197,116,216,207,75,118,63,78,150,237,140,253,41,13,212, +191,243,194,232,115,211,200,218,71,126,190,64,193,245,61,120,228,113,83,133,82,204,8,4,114,112,64,35,57,235,85,88,0,72,0,1,232,0,29,168,0,91,222,112,209,94,19,147,247,99,201,56,7,32,126,235,168,29,51, +235,130,49,76,105,209,201,13,109,168,18,122,159,41,70,0,207,32,108,37,134,126,157,63,10,145,149,75,114,170,126,101,234,7,161,168,221,84,6,192,3,7,140,0,49,207,181,0,68,76,29,13,190,160,79,7,27,23,142, +163,60,170,240,122,241,200,3,24,61,226,38,28,241,111,120,58,158,81,61,241,208,96,224,244,207,32,96,227,160,169,88,13,199,129,254,64,167,162,169,28,168,60,227,144,15,28,113,64,21,74,161,193,17,76,51,219, +102,113,238,64,69,28,122,100,113,144,6,77,48,172,107,156,164,132,176,56,204,100,99,241,221,129,193,237,215,181,92,112,6,48,7,115,208,117,227,154,172,73,201,228,245,61,207,173,0,64,68,25,198,25,125,126, +83,207,177,249,79,76,118,206,121,227,165,48,71,30,73,221,208,28,100,204,167,243,84,3,129,250,31,106,157,217,176,14,230,206,113,156,156,227,158,58,212,6,71,249,190,119,251,163,248,143,251,94,244,0,132, +40,255,0,150,136,121,199,222,184,227,35,212,70,222,157,248,61,72,205,51,104,32,97,237,179,208,6,91,188,231,234,33,35,156,243,255,0,234,20,43,185,32,23,98,61,11,19,216,251,210,183,83,254,225,160,4,17,158, +62,123,16,123,134,91,210,79,94,8,17,224,243,142,227,60,17,70,233,151,1,78,159,238,119,95,174,122,117,196,71,223,160,252,122,83,227,36,224,18,72,220,56,39,233,78,144,14,120,236,127,66,216,160,6,111,159, +7,38,205,185,0,237,125,69,125,200,31,232,220,142,199,147,207,122,66,211,12,99,236,188,228,241,38,163,140,127,192,236,206,61,58,19,156,246,205,66,73,0,144,112,112,121,31,74,172,236,216,234,122,250,159, +122,0,188,100,184,39,3,201,238,62,89,111,134,7,24,36,253,128,247,231,143,161,166,153,110,151,128,241,112,50,127,125,121,253,108,84,99,177,206,79,215,24,21,48,61,7,229,85,217,16,177,37,20,144,112,9,80, +112,1,224,14,59,80,6,151,218,46,215,39,204,143,216,173,212,227,158,127,189,106,7,224,58,113,199,161,84,196,113,225,15,150,153,219,215,98,231,169,61,113,235,207,214,138,0,255,217,0,0}; + +const char* CompressorAudioProcessorEditor::brushedMetalDark_jpg = (const char*) resource_CompressorAudioProcessorEditor_brushedMetalDark_jpg; +const int CompressorAudioProcessorEditor::brushedMetalDark_jpgSize = 462527; + +// JUCER_RESOURCE: c4dm_png2, 4439, "../../../../../Users/Antoine/Desktop/SAVE window choice and tests/Assets/c4dm.png" +static const unsigned char resource_CompressorAudioProcessorEditor_c4dm_png2[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,232,0,0,0,43,8,6,0,0,0,114,213,196,98,0,0,0,1,115,82,71,66,0,174, +206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,43,14,27,0,0,0,6,98,75,71,68,0,0,0,0,0,0,249,67,187,127,0,0,0,7,116,73,77,69,7,215,12,11,9,54, +44,101,11,42,46,0,0,16,199,73,68,65,84,120,94,237,93,9,88,85,213,22,94,128,40,34,206,8,168,32,14,32,206,138,3,138,3,166,224,152,13,250,28,178,50,135,202,207,231,243,89,54,137,169,89,62,123,233,179,52, +125,166,169,101,78,153,165,105,105,206,56,207,130,243,136,8,40,10,14,56,224,12,226,208,250,55,28,60,28,238,112,238,225,94,186,93,207,250,62,190,175,238,61,123,90,123,175,181,255,245,175,117,174,78,79, +88,72,23,93,3,186,6,236,82,3,206,118,57,43,125,82,186,6,116,13,8,13,232,6,170,31,4,93,3,118,172,1,221,64,237,120,115,244,169,233,26,208,13,84,63,3,186,6,236,88,3,78,90,73,162,181,187,206,210,136,105,59, +236,120,105,142,55,181,106,190,165,232,149,246,213,29,111,97,207,240,138,226,47,220,164,225,253,154,24,213,128,102,3,253,96,242,54,218,24,157,244,12,171,182,224,151,62,102,96,40,189,252,92,181,130,31, +88,31,209,102,26,152,247,199,9,234,219,165,150,209,254,53,65,220,251,25,15,105,199,225,100,155,77,90,239,56,175,6,156,157,157,168,77,99,95,93,53,14,164,129,139,87,239,82,133,114,197,76,174,72,147,129, +238,56,148,76,25,15,30,57,144,170,236,127,41,33,181,125,168,164,71,17,251,159,168,62,67,213,26,216,126,48,153,90,54,168,104,125,3,221,184,79,135,182,170,119,193,74,15,134,135,84,178,82,79,122,55,246,162, +1,32,209,162,69,10,89,215,64,31,100,62,34,88,190,46,5,167,1,103,39,39,106,219,196,175,224,6,212,71,178,185,6,46,49,188,245,41,107,26,222,98,18,22,67,220,157,135,83,232,94,250,67,155,47,64,31,224,169,6, +26,214,244,162,50,37,220,116,149,56,144,6,182,115,152,216,42,216,52,188,213,100,160,81,123,117,120,91,208,231,36,66,135,183,5,173,114,155,143,135,75,206,221,205,52,188,181,216,64,51,31,62,166,109,7,47, +216,124,242,250,0,79,53,192,232,150,225,173,30,127,58,210,153,184,116,237,30,195,91,119,85,75,178,8,226,238,57,122,145,238,220,203,84,213,177,254,144,117,52,80,63,176,28,149,43,93,212,58,157,233,189,216, +133,6,118,240,37,215,82,5,188,181,248,6,213,225,109,193,239,111,68,83,255,130,31,84,31,209,166,26,184,115,63,147,138,185,185,170,26,67,245,13,250,232,209,19,218,122,224,188,170,78,245,135,172,167,129, +112,157,189,181,158,50,237,160,167,203,215,1,111,205,179,183,210,84,85,27,232,190,227,151,232,230,157,7,118,176,196,191,102,10,126,222,197,233,227,1,33,52,61,50,156,190,27,221,142,60,220,213,121,192,252, +204,182,78,181,178,228,227,169,110,51,155,247,95,76,147,23,29,200,25,110,253,158,115,20,252,234,66,74,76,190,105,241,20,144,74,67,219,31,86,30,207,105,251,248,241,19,194,231,249,145,57,191,31,19,253,130, +203,248,187,200,124,46,197,195,156,145,179,180,134,108,63,112,65,21,123,107,177,129,70,237,59,103,141,249,89,165,143,183,187,214,165,73,239,181,182,74,95,106,58,41,82,216,133,102,179,81,182,168,95,129, +226,47,164,81,204,137,203,244,144,17,133,173,37,63,240,182,136,171,11,149,45,233,70,46,46,170,125,112,174,229,160,173,187,44,137,254,235,166,56,106,218,247,39,186,126,43,221,214,203,182,171,254,139,50, +211,10,93,48,87,103,21,17,240,182,168,122,231,174,106,247,224,61,55,199,216,15,123,235,235,237,65,53,42,151,177,138,194,212,116,130,177,188,203,184,211,148,159,14,210,87,11,247,211,183,191,30,161,116, +43,121,84,83,227,231,167,122,168,117,35,95,138,154,209,157,42,249,20,87,179,196,92,207,20,102,227,70,219,94,237,131,44,110,235,104,13,122,68,84,23,186,112,51,83,241,163,102,221,87,24,222,122,241,57,178, +68,92,62,101,49,215,32,230,228,21,90,178,225,180,209,199,0,195,130,131,188,168,46,51,142,197,216,227,164,166,221,39,229,47,29,149,40,86,152,234,5,122,82,131,234,94,228,202,7,224,42,63,35,23,120,149,170, +21,75,18,60,140,139,179,51,213,175,94,78,60,143,154,223,91,119,159,66,107,95,134,154,109,27,251,9,232,183,239,216,37,242,44,85,84,252,93,187,153,78,40,40,175,94,169,52,61,18,112,236,49,5,240,127,135,214, +171,64,215,111,222,207,129,40,128,166,117,3,202,81,195,26,94,132,91,230,42,183,51,245,171,76,128,182,77,235,248,136,126,182,176,147,194,24,69,10,23,162,219,247,158,206,169,114,249,18,212,132,107,101,125, +189,60,232,62,207,247,46,175,65,46,165,185,200,192,159,13,229,198,173,12,206,125,185,82,48,143,93,179,74,25,74,48,1,63,225,20,6,188,88,219,160,206,143,197,95,163,95,120,63,144,242,202,96,216,89,165,66, +73,250,158,225,99,109,134,196,161,117,203,139,54,73,151,110,211,31,219,19,201,159,231,230,198,8,64,18,80,252,75,162,78,211,42,254,238,202,141,251,84,209,171,56,237,103,68,112,36,46,149,170,251,151,22, +143,193,33,47,90,27,75,133,92,156,152,65,118,167,131,177,87,104,237,238,179,98,190,30,188,79,167,206,222,160,163,103,174,114,91,15,145,203,187,198,123,185,126,79,18,143,151,64,235,118,159,163,211,231, +110,80,113,222,111,236,139,92,208,15,66,37,32,32,23,214,163,33,193,185,88,190,57,158,188,152,185,190,200,115,93,190,249,12,161,180,20,233,38,236,5,228,56,175,255,247,173,241,60,102,22,170,195,26,229,178, +120,93,172,56,3,202,88,111,245,206,68,209,167,252,249,243,151,111,211,207,235,79,211,202,109,9,132,34,156,120,94,35,106,158,177,103,144,147,137,215,197,56,181,170,150,17,123,47,9,224,254,42,238,15,122, +196,218,129,172,112,198,203,240,109,107,76,214,240,43,154,225,156,50,131,3,84,43,170,12,20,56,252,120,194,181,60,125,162,142,112,120,223,198,244,249,224,150,212,190,153,63,53,174,233,77,175,116,8,162, +230,245,43,10,197,74,130,207,166,125,212,150,186,182,13,20,48,17,158,25,6,141,162,251,244,236,162,251,230,108,0,223,125,210,158,206,156,79,163,169,31,182,161,158,237,170,115,159,149,169,87,187,32,74,187, +147,145,51,254,87,195,90,115,255,21,196,65,239,206,222,77,250,155,201,183,90,113,247,194,180,106,74,87,97,32,67,94,9,166,33,61,27,80,24,211,217,56,24,56,176,221,218,6,208,55,28,67,118,15,15,36,140,215, +147,251,110,82,203,135,118,153,168,142,154,252,254,115,220,46,80,44,5,55,26,198,243,241,116,23,155,134,245,127,58,176,25,141,126,187,25,181,224,162,231,206,45,171,80,159,206,53,9,132,26,198,148,164,71, +68,32,97,222,208,225,252,255,116,164,46,173,170,242,184,222,52,127,213,73,163,251,4,157,193,137,40,5,122,125,111,210,86,118,58,233,2,42,253,190,37,158,112,200,98,217,104,228,6,186,151,157,215,216,217, +123,232,197,176,170,57,135,45,150,13,103,192,103,235,233,80,108,170,48,30,204,113,217,166,51,226,112,109,59,144,44,246,14,130,24,17,207,193,25,98,159,112,112,55,71,159,23,28,196,3,254,14,186,60,155,114, +139,154,213,41,79,165,138,23,161,17,255,223,65,56,252,112,172,216,207,213,124,16,225,64,48,70,173,42,101,115,150,160,198,64,79,39,165,209,240,169,219,201,181,144,139,152,127,218,237,12,58,112,42,107,158, +48,184,228,43,119,104,240,248,77,92,205,150,73,209,236,88,96,168,94,236,68,224,240,36,25,48,118,61,207,203,77,56,86,185,140,156,190,139,46,94,189,67,29,66,43,139,143,209,239,235,163,215,208,217,139,183, +196,58,224,236,118,30,74,17,142,8,231,25,178,134,215,53,233,199,253,212,159,157,165,107,161,44,192,121,142,159,31,56,46,138,86,237,72,20,78,204,137,189,199,222,99,23,105,215,145,148,156,179,98,104,99, +225,156,66,20,115,50,103,168,102,75,25,30,243,245,178,145,55,199,144,12,123,173,33,189,220,38,128,38,204,139,166,95,55,198,113,92,246,88,28,134,70,92,154,38,73,135,80,127,54,226,38,98,195,22,175,143,21, +10,14,15,241,163,200,126,33,244,65,159,198,52,106,250,206,92,93,143,232,31,66,223,255,118,140,86,108,139,231,87,113,60,104,212,155,77,233,221,87,27,18,94,16,199,77,250,246,184,13,244,217,160,80,97,88, +157,135,46,55,56,47,120,104,188,103,55,100,194,38,113,115,226,6,65,89,213,232,183,154,209,111,91,206,208,162,53,167,40,145,15,88,27,190,137,35,251,55,33,140,249,254,228,173,6,251,122,147,55,27,94,239, +203,97,97,98,51,225,189,37,25,216,173,46,117,106,81,133,62,157,185,91,120,96,87,87,103,250,224,245,70,52,164,87,3,177,233,202,151,10,34,249,197,220,119,191,218,34,98,88,115,85,36,134,170,135,112,88,191, +92,16,35,214,242,229,187,97,124,56,156,5,113,35,173,211,220,102,79,152,27,45,116,49,127,108,199,156,219,237,71,214,5,250,4,10,48,38,112,104,248,241,199,255,206,217,39,98,127,101,217,225,59,188,63,104, +47,221,48,152,211,48,118,34,83,22,29,164,142,205,43,171,78,41,200,199,135,35,154,195,14,187,86,213,178,2,69,13,30,191,145,38,206,143,22,243,94,252,69,103,10,100,116,132,106,28,236,207,172,101,71,132,243, +181,84,22,173,61,197,241,101,81,90,49,233,37,70,69,79,111,53,83,113,54,208,214,24,222,239,155,124,105,44,28,215,137,2,253,74,229,12,155,146,122,199,232,20,82,25,173,0,141,88,42,102,99,80,120,91,64,24, +165,192,120,254,193,27,7,195,252,153,13,15,198,9,185,193,36,130,60,95,250,47,190,197,64,45,195,136,193,40,98,243,214,236,60,75,235,25,50,117,230,195,13,207,37,23,120,235,5,171,79,10,111,13,120,129,141, +194,77,101,73,204,137,118,211,151,28,22,55,41,224,26,54,18,183,41,230,246,197,15,209,20,199,183,52,230,187,97,239,57,1,81,80,136,174,150,45,149,230,138,13,237,221,161,6,247,145,36,188,56,28,25,14,210, +120,94,39,54,234,205,151,234,228,209,217,236,229,71,5,44,199,156,76,21,124,96,211,149,176,13,157,173,99,157,73,107,129,113,66,0,151,6,117,175,111,118,223,47,176,99,196,13,214,187,99,141,92,208,179,55, +223,154,249,45,132,64,104,34,55,78,220,68,120,177,28,97,64,2,255,98,128,22,129,243,132,113,66,160,107,32,47,172,29,177,53,140,19,2,39,215,140,33,61,206,151,150,2,26,156,43,236,133,132,226,164,121,154, +170,123,62,22,127,149,14,159,78,21,251,43,55,78,180,133,77,24,19,132,35,97,13,205,215,222,42,219,155,53,80,99,175,150,85,243,229,77,225,171,125,203,126,227,228,17,20,136,184,33,11,94,6,230,130,164,8,42, +16,87,32,126,146,203,6,198,243,114,129,50,32,222,42,75,163,240,108,204,201,203,185,250,112,97,24,130,159,11,57,199,243,120,177,117,181,92,243,0,68,129,84,85,204,195,220,161,194,186,112,112,0,143,229,2, +120,187,231,232,37,30,47,75,63,114,65,44,175,70,140,145,67,48,50,24,36,214,34,151,90,50,120,103,172,255,228,43,183,197,87,65,217,135,91,122,14,134,21,32,187,5,212,204,79,249,12,32,54,144,80,248,160,165, +130,233,13,123,235,23,250,104,202,118,241,88,74,234,93,45,93,230,73,69,84,203,158,99,171,224,220,47,173,7,176,158,33,105,183,45,103,151,17,122,0,42,183,27,188,84,32,27,196,208,230,82,73,73,140,140,32, +13,24,250,91,34,64,127,8,193,44,21,147,6,138,235,220,152,129,2,26,64,12,221,174,210,36,36,146,0,111,141,35,22,146,255,5,49,33,1,162,65,30,120,163,221,229,235,185,55,20,222,24,98,140,84,48,180,96,196,103, +114,129,71,132,145,130,137,85,206,163,78,128,167,152,135,165,34,145,1,55,12,28,12,124,6,67,82,230,74,65,86,169,145,136,166,134,107,111,193,28,131,216,82,216,189,24,75,169,71,229,56,112,28,66,143,217,14, +73,254,61,98,71,173,130,155,107,224,231,81,124,59,167,82,63,142,211,144,39,94,249,245,203,244,237,199,225,162,75,9,89,89,218,127,177,162,185,163,47,201,217,129,132,148,139,83,54,113,163,38,233,165,252, +141,246,122,76,106,174,157,214,141,6,247,168,79,128,160,163,103,236,162,14,67,150,137,216,210,152,72,249,80,115,239,113,202,219,131,248,42,167,32,204,212,234,195,228,206,224,58,7,124,48,36,151,174,101, +25,82,121,19,137,116,48,134,128,126,235,56,126,124,227,147,181,6,255,246,43,110,59,181,19,55,245,156,114,179,174,165,165,11,207,184,37,230,188,209,121,32,192,183,68,46,243,218,32,48,122,165,224,51,192, +49,57,251,172,182,239,202,21,74,228,185,33,165,182,128,80,128,141,136,127,228,146,204,144,26,80,205,148,128,113,133,128,132,147,11,156,48,72,34,115,34,97,129,39,138,113,128,112,240,110,227,191,57,238, +6,65,22,90,175,188,96,179,255,202,98,4,24,143,242,220,34,126,79,76,201,11,183,113,171,245,123,161,54,253,200,241,36,28,11,144,209,12,14,143,140,49,251,126,217,105,171,248,100,243,58,147,116,186,149,139, +19,194,26,106,251,185,26,147,6,26,101,226,151,19,64,165,195,163,191,16,102,252,71,172,96,20,39,18,174,83,59,102,196,44,161,150,205,29,22,120,109,36,143,37,86,205,220,243,112,18,135,227,174,82,27,38,123, +204,145,51,230,250,146,190,7,217,133,56,185,125,54,35,40,125,142,195,1,18,231,100,98,94,214,91,77,223,237,76,212,222,34,222,130,44,147,49,228,248,255,229,204,112,154,147,74,62,37,68,28,15,162,78,30,175, +137,212,3,27,152,57,1,43,10,73,96,114,77,46,153,143,178,16,142,20,19,227,191,113,184,145,186,248,171,4,151,70,12,51,166,114,137,98,190,65,66,17,210,231,74,56,11,199,130,76,4,28,158,60,141,38,239,167,78, +53,79,42,203,183,225,2,102,224,149,253,25,91,47,28,53,82,48,90,196,180,129,154,120,247,19,76,215,44,38,61,0,199,70,114,9,28,226,24,16,62,72,13,200,9,146,241,115,247,137,124,217,55,195,219,138,239,74,122, +20,22,244,61,218,77,124,39,76,203,156,41,142,169,120,24,60,216,93,120,236,70,172,84,115,50,145,201,27,207,82,110,2,130,33,197,129,92,23,54,4,100,196,215,156,74,177,84,0,221,230,172,56,38,250,122,143,153, +91,28,10,196,134,96,123,209,55,72,42,45,98,170,56,1,169,4,176,162,211,126,62,68,83,23,31,20,36,23,24,88,188,252,107,206,1,2,22,127,248,70,99,66,178,188,215,136,85,130,180,195,47,51,34,61,133,125,145,160, +162,177,57,215,229,156,52,198,24,247,221,30,81,172,129,118,232,11,105,24,172,23,169,136,31,86,28,103,210,45,65,176,202,202,91,94,139,46,180,182,233,202,153,5,220,160,72,21,129,192,124,103,226,102,154, +187,242,68,30,50,172,15,163,186,49,223,238,166,165,76,116,130,216,196,158,253,194,57,98,252,254,147,49,131,66,106,43,146,179,18,64,151,125,62,89,35,178,19,104,11,125,32,61,164,20,228,231,61,179,195,65, +45,235,49,106,160,96,66,77,209,198,24,108,46,215,106,130,122,239,192,135,102,201,132,46,180,121,102,15,174,83,109,207,44,91,169,156,185,32,45,1,69,33,113,253,61,211,230,91,102,245,164,149,147,95,162,177, +131,154,115,78,77,91,109,39,130,249,165,172,72,228,170,166,177,225,163,54,214,156,128,185,237,59,102,157,40,125,155,53,170,29,207,163,135,128,52,95,12,105,73,15,31,107,171,13,93,200,94,20,213,69,61,152, +205,94,61,181,43,45,253,95,23,10,242,47,35,242,148,200,177,89,42,112,92,136,205,77,201,184,127,182,160,55,158,175,69,27,56,15,59,97,94,140,40,248,152,57,50,130,26,179,163,240,203,134,177,104,143,184,27, +142,75,94,1,3,67,156,247,89,71,122,142,153,80,220,154,216,39,232,162,16,231,247,228,49,18,242,122,104,91,94,86,212,13,216,62,123,84,132,48,72,192,100,228,32,1,227,133,51,138,108,43,28,20,210,99,115,57, +189,21,192,253,78,24,218,74,244,1,164,35,9,152,114,124,166,36,207,228,235,69,33,4,158,41,81,44,55,187,15,231,143,207,221,21,101,114,232,31,159,35,54,151,164,7,231,208,17,87,194,129,204,88,122,132,227, +115,236,121,132,96,130,229,4,219,11,156,143,190,192,228,25,32,237,72,38,185,144,243,236,198,198,61,145,83,88,146,120,179,14,208,191,156,3,193,229,178,96,108,39,161,51,48,243,99,102,238,226,74,187,243, +66,55,74,217,202,36,170,86,120,139,190,140,254,46,46,60,52,60,162,26,129,119,246,229,138,20,144,34,96,237,140,121,79,224,125,255,242,197,69,108,134,248,212,28,99,166,102,108,45,207,96,158,72,99,220,101, +168,156,194,7,53,191,243,0,65,3,54,26,144,31,240,72,171,244,231,88,104,104,239,96,173,205,53,181,3,148,123,126,232,111,194,201,2,9,233,98,93,13,224,133,3,236,171,86,49,122,131,90,242,203,125,136,57,64, +181,227,214,53,5,109,112,24,80,166,134,180,75,126,141,66,235,130,209,14,49,24,110,118,20,19,88,99,30,32,104,64,180,228,199,56,49,175,252,212,222,170,209,7,42,100,0,201,128,140,144,179,5,143,0,152,123, +47,35,147,94,235,84,67,77,23,250,51,22,104,0,97,160,28,65,88,208,52,231,81,131,55,104,92,210,13,234,25,185,74,75,127,122,27,141,26,0,68,4,76,182,165,156,58,123,93,84,98,201,73,34,164,194,70,189,213,148, +90,107,100,25,109,57,223,191,123,223,40,178,65,17,76,126,126,207,216,160,129,34,88,6,182,214,165,224,52,128,20,5,200,38,91,11,110,251,36,70,59,183,56,85,131,26,86,196,88,202,188,170,173,231,240,172,244, +159,95,120,11,61,25,52,208,110,31,174,212,244,162,239,179,162,120,91,172,19,255,62,7,88,101,93,28,71,3,168,75,207,111,216,162,249,31,79,114,28,53,234,43,209,53,96,191,26,208,94,227,101,191,107,210,103, +166,107,192,97,52,160,27,168,195,108,165,190,16,71,212,128,110,160,142,184,171,250,154,28,70,3,186,129,58,204,86,234,11,113,68,13,232,6,234,136,187,170,175,201,97,52,160,27,168,195,108,165,190,16,71,212, +128,110,160,142,184,171,250,154,28,70,3,127,2,16,73,2,138,24,57,209,70,0,0,0,0,73,69,78,68,174,66,96,130,0,0}; + +const char* CompressorAudioProcessorEditor::c4dm_png2 = (const char*) resource_CompressorAudioProcessorEditor_c4dm_png2; +const int CompressorAudioProcessorEditor::c4dm_png2Size = 4439; + +// JUCER_RESOURCE: qmul_png2, 23512, "../../../../../Users/Antoine/Desktop/SAVE window choice and tests/Assets/QMUL.png" +static const unsigned char resource_CompressorAudioProcessorEditor_qmul_png2[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,123,0,0,0,112,8,6,0,0,0,255,142,208,124,0,0,0,1,115,82,71,66,0,174, +206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,43,14,27,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97, +103,101,82,101,97,100,121,113,201,101,60,0,0,3,102,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187, +191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111, +98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,48,45,99,48,54,48,32,54,49,46,49,51,52,55,55,55,44,32,50,48,49,48, +47,48,50,47,49,50,45,49,55,58,51,50,58,48,48,32,32,32,32,32,32,32,32,34,62,32,60,114,100,102,58,82,68,70,32,120,109,108,110,115,58,114,100,102,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111, +114,103,47,49,57,57,57,47,48,50,47,50,50,45,114,100,102,45,115,121,110,116,97,120,45,110,115,35,34,62,32,60,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,32,114,100,102,58,97,98,111,117,116, +61,34,34,32,120,109,108,110,115,58,120,109,112,77,77,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,109,109,47,34,32,120,109,108,110,115,58,115, +116,82,101,102,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,115,84,121,112,101,47,82,101,115,111,117,114,99,101,82,101,102,35,34,32,120,109,108, +110,115,58,120,109,112,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,34,32,120,109,112,77,77,58,79,114,105,103,105,110,97,108,68,111,99,117,109, +101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,70,55,55,70,49,49,55,52,48,55,50,48,54,56,49,49,66,49,50,51,66,48,67,48,66,70,67,68,65,53,69,67,34,32,120,109,112,77,77,58,68,111,99,117,109,101,110, +116,73,68,61,34,120,109,112,46,100,105,100,58,67,53,69,66,52,65,68,52,70,68,57,55,49,49,69,48,57,57,50,48,57,48,49,67,49,52,70,51,54,55,56,55,34,32,120,109,112,77,77,58,73,110,115,116,97,110,99,101,73, +68,61,34,120,109,112,46,105,105,100,58,67,53,69,66,52,65,68,51,70,68,57,55,49,49,69,48,57,57,50,48,57,48,49,67,49,52,70,51,54,55,56,55,34,32,120,109,112,58,67,114,101,97,116,111,114,84,111,111,108,61, +34,65,100,111,98,101,32,80,104,111,116,111,115,104,111,112,32,67,83,53,32,77,97,99,105,110,116,111,115,104,34,62,32,60,120,109,112,77,77,58,68,101,114,105,118,101,100,70,114,111,109,32,115,116,82,101, +102,58,105,110,115,116,97,110,99,101,73,68,61,34,120,109,112,46,105,105,100,58,70,55,55,70,49,49,55,52,48,55,50,48,54,56,49,49,56,69,69,48,67,52,55,54,67,69,69,57,65,57,56,51,34,32,115,116,82,101,102, +58,100,111,99,117,109,101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,70,55,55,70,49,49,55,52,48,55,50,48,54,56,49,49,66,49,50,51,66,48,67,48,66,70,67,68,65,53,69,67,34,47,62,32,60,47,114,100,102, +58,68,101,115,99,114,105,112,116,105,111,110,62,32,60,47,114,100,102,58,82,68,70,62,32,60,47,120,58,120,109,112,109,101,116,97,62,32,60,63,120,112,97,99,107,101,116,32,101,110,100,61,34,114,34,63,62,181, +3,247,42,0,0,87,214,73,68,65,84,120,94,237,157,5,156,85,213,22,198,247,208,221,136,18,210,45,13,210,221,40,165,34,130,232,179,27,44,12,84,76,236,14,196,68,20,155,16,16,4,21,36,165,187,27,21,233,238,30, +222,255,219,247,158,203,157,97,226,230,56,192,89,191,119,31,227,204,185,39,214,222,103,237,181,215,250,214,183,98,78,35,198,21,87,3,174,6,92,13,184,26,56,175,53,144,230,188,126,58,247,225,92,13,184,26, +112,53,224,106,192,106,192,53,246,238,68,112,53,224,106,192,213,192,5,160,1,215,216,95,0,131,236,62,162,171,1,87,3,174,6,92,99,239,206,1,87,3,174,6,92,13,92,0,26,112,141,253,5,48,200,238,35,186,26,112, +53,224,106,192,53,246,238,28,112,53,224,106,192,213,192,5,160,129,243,202,216,255,56,125,189,25,57,251,239,11,96,216,220,71,116,53,224,106,192,213,64,112,26,56,111,140,253,201,83,167,205,171,35,22,155, +103,127,156,111,142,159,140,13,78,11,238,209,174,6,92,13,184,26,56,207,53,112,222,24,251,121,235,119,154,249,43,182,154,133,171,183,155,89,124,92,113,53,224,106,192,213,128,171,129,51,26,56,47,140,253, +137,83,177,230,145,175,102,25,163,90,96,62,125,190,153,99,142,158,56,229,142,179,171,1,87,3,174,6,92,13,120,53,112,94,24,251,137,75,183,152,169,139,54,25,147,49,157,49,25,210,154,63,151,108,54,191,47, +250,215,29,100,87,3,174,6,92,13,184,26,56,95,140,189,188,250,151,134,46,52,38,54,46,197,207,179,63,44,48,71,143,187,222,189,59,211,93,13,184,26,112,53,32,13,156,243,158,253,194,13,187,204,236,181,196, +232,241,232,125,146,46,141,89,252,215,46,179,136,143,43,174,6,92,13,184,26,112,53,112,30,24,251,125,7,142,154,35,199,78,26,19,19,227,55,158,49,214,209,95,191,237,128,59,198,174,6,92,13,184,26,112,53,112, +46,122,246,177,48,50,111,221,115,196,236,57,116,204,28,198,200,23,191,36,167,201,155,51,83,220,48,14,199,100,33,126,95,169,104,30,115,18,171,191,109,223,17,179,139,69,225,84,188,80,143,59,3,92,13,184, +26,112,53,112,161,104,32,230,92,226,179,223,125,240,152,121,98,240,28,51,108,230,6,147,62,109,26,83,32,87,38,211,163,73,25,243,243,220,127,204,100,37,100,211,121,67,57,224,236,107,148,189,200,116,173, +87,194,12,231,216,245,91,15,152,52,105,98,76,195,242,23,155,183,110,169,99,10,231,205,122,161,140,175,251,156,174,6,92,13,184,26,176,26,56,103,140,253,73,18,177,173,159,31,107,254,152,249,151,49,153,211, +123,96,150,138,220,80,76,149,49,75,6,115,236,100,220,100,108,166,244,105,205,209,195,199,9,84,121,195,59,58,158,69,160,90,133,2,102,202,11,87,154,108,153,56,135,43,174,6,92,13,184,26,184,64,52,112,206, +36,104,167,82,48,245,199,66,188,247,172,25,141,193,171,55,36,97,237,191,36,102,143,37,128,169,63,122,156,56,62,6,223,30,227,28,159,41,157,89,176,124,155,25,191,120,243,5,50,188,238,99,186,26,112,53,224, +106,192,163,129,115,198,216,79,91,177,205,99,180,157,60,172,186,41,42,6,111,187,42,38,210,89,81,127,23,117,130,127,231,197,180,49,110,133,173,59,251,93,13,184,26,184,224,52,112,206,24,251,75,114,103,57, +147,132,37,164,147,22,195,95,170,96,78,83,190,72,110,226,241,60,134,191,65,199,198,199,128,206,209,223,75,241,119,29,107,141,190,13,251,196,186,49,251,11,110,154,187,15,236,106,192,213,192,57,19,179,23, +140,178,66,175,33,230,216,209,147,38,87,142,76,102,84,159,86,166,2,134,60,27,161,153,33,51,54,152,27,222,252,195,19,218,145,128,210,121,255,190,70,166,91,253,146,214,190,175,218,188,207,244,120,251,15, +179,158,127,99,48,252,171,62,188,214,148,6,197,227,138,171,1,87,3,174,6,46,20,13,156,51,158,125,177,252,217,204,93,173,203,27,179,255,168,233,215,189,166,105,88,225,98,147,55,123,70,147,145,184,124,135, +154,151,154,12,74,218,122,195,58,74,216,94,81,189,136,253,123,30,62,117,65,230,188,216,227,114,99,14,29,55,87,55,40,97,74,20,200,113,161,140,175,251,156,174,6,92,13,184,26,56,183,98,246,130,78,202,200, +87,173,86,216,148,38,60,227,47,27,119,29,50,39,149,144,149,27,79,248,230,36,9,219,253,135,79,196,57,70,48,205,74,149,11,154,143,238,104,64,232,223,191,0,203,157,9,174,6,92,13,184,26,56,255,53,112,206, +120,246,26,10,193,37,199,63,215,206,84,45,150,39,206,200,12,248,117,133,137,221,123,196,247,187,83,120,255,95,79,89,27,231,152,114,133,114,153,177,79,181,177,222,190,43,174,6,92,13,184,26,184,208,52,112, +206,196,236,19,27,24,27,143,127,103,162,169,81,60,175,73,147,54,173,1,108,99,246,28,60,106,214,16,227,255,230,254,166,166,212,37,110,200,230,66,155,212,238,243,186,26,112,53,112,182,6,206,121,99,191,143, +194,169,156,196,232,227,139,168,17,132,191,23,109,130,43,174,6,92,13,184,26,184,208,53,112,78,27,123,25,250,189,36,93,15,30,61,97,54,237,62,108,249,111,50,224,221,95,4,87,78,129,92,153,77,158,108,25,77, +102,140,125,86,215,224,219,121,174,118,141,107,216,9,205,223,176,211,44,253,123,183,89,244,247,30,179,121,207,97,115,26,56,106,134,12,233,76,137,139,178,155,10,133,115,154,154,165,242,155,106,37,242,153, +130,121,178,80,128,236,230,55,46,100,35,161,119,108,193,122,216,99,227,77,3,253,103,85,118,211,9,57,90,225,234,235,95,114,112,171,153,167,202,211,249,4,56,117,122,208,118,213,184,166,235,192,133,166,225, +128,140,189,140,68,6,7,214,24,218,117,34,246,173,45,24,167,169,203,183,154,95,225,194,153,179,122,135,89,242,207,30,139,157,87,193,85,90,197,112,16,91,111,117,226,164,201,76,181,109,213,75,243,152,86, +85,11,155,150,85,11,1,213,204,101,114,171,2,247,63,22,113,240,167,99,34,171,22,32,37,68,93,187,68,247,252,246,200,37,102,204,252,141,230,32,11,164,173,59,72,239,173,46,182,74,227,35,61,66,59,17,195,226, +120,113,206,204,230,134,38,165,205,237,173,202,187,161,176,148,24,164,84,122,141,73,52,6,106,245,204,24,79,65,163,191,224,96,9,222,124,39,243,35,146,18,203,142,188,199,123,147,204,144,73,107,76,12,14, +136,79,160,69,201,133,19,55,229,133,43,140,242,111,174,4,175,129,128,140,125,159,175,231,152,71,59,85,54,185,241,148,255,11,145,29,90,250,207,110,51,120,226,90,243,205,212,181,102,243,118,168,139,213, +152,4,170,132,66,192,40,91,99,200,69,110,150,159,201,128,9,53,187,136,217,139,252,236,183,133,155,204,150,157,28,123,140,99,129,102,86,33,177,123,79,219,138,166,227,229,69,173,231,255,95,200,1,94,146, +215,104,140,126,55,48,210,130,42,20,139,178,108,218,125,200,244,253,102,174,213,219,113,33,148,68,22,167,213,208,91,96,134,187,228,249,217,169,54,214,75,237,252,157,69,34,111,158,172,230,185,235,107,154, +155,48,252,89,93,62,161,40,143,86,234,59,253,20,104,74,26,63,62,242,140,177,119,56,169,120,255,234,86,42,104,38,195,51,37,143,59,82,178,235,192,49,83,234,222,31,204,222,125,71,185,38,19,211,143,3,43,39, +239,247,172,87,58,154,178,241,208,120,145,186,246,249,126,158,128,140,253,181,111,76,48,235,182,236,55,35,40,100,42,146,47,101,25,35,55,19,158,25,240,219,10,243,30,94,233,126,194,52,50,74,105,48,58,157, +106,23,51,61,175,168,104,202,23,206,101,242,83,100,21,103,203,103,157,212,211,102,7,168,28,45,18,131,38,172,54,63,254,185,222,156,56,130,71,27,147,198,20,43,152,195,188,250,191,58,166,125,173,34,38,179, +191,247,16,229,209,86,184,169,199,91,19,205,202,173,251,204,162,55,175,178,53,2,209,148,121,235,118,154,238,20,147,173,38,92,99,11,206,188,20,207,133,169,89,104,83,163,136,173,85,80,136,43,13,47,212,97, +12,251,1,10,214,198,204,251,199,204,92,185,205,236,100,43,109,185,133,100,248,249,223,117,141,75,153,119,111,173,75,136,236,191,89,36,163,169,39,247,220,137,107,192,26,251,62,163,124,198,94,155,209,211, +108,0,53,47,244,238,204,123,179,179,125,7,35,37,226,173,106,249,36,215,243,190,151,246,122,118,215,121,218,228,198,216,207,124,185,131,41,227,26,251,144,212,29,144,177,255,126,218,58,211,237,217,95,76, +89,40,130,199,61,221,198,20,203,159,61,164,139,5,251,37,81,23,63,250,229,44,179,146,110,84,214,88,17,122,40,135,119,254,209,221,13,41,148,42,16,112,104,233,4,223,155,177,122,187,185,231,227,105,102,153, +206,37,97,6,93,213,176,164,121,249,134,203,77,153,20,168,166,21,61,115,251,23,127,53,211,121,166,190,24,205,231,186,214,136,219,111,37,88,229,36,115,188,194,54,45,24,179,157,187,14,123,140,54,198,188, +20,241,248,215,111,170,99,234,148,41,96,46,206,157,176,209,214,123,245,55,59,167,97,211,55,152,167,191,159,103,14,31,97,55,32,15,11,79,174,9,133,106,35,89,240,115,168,128,205,149,11,66,3,113,140,61,206, +66,131,138,23,195,45,181,131,233,132,197,167,182,229,179,7,154,154,91,155,151,141,136,46,100,212,239,228,29,253,116,212,18,219,79,186,16,142,101,145,124,217,204,204,229,91,172,147,230,26,251,240,212,28, +208,254,171,114,209,188,38,51,74,95,181,126,167,105,247,252,56,163,4,74,52,69,94,249,128,113,43,76,199,23,198,153,149,120,230,118,149,103,114,117,99,82,77,125,169,131,105,92,241,146,128,13,189,238,83, +219,204,70,120,177,19,158,191,194,220,217,174,162,103,107,72,56,99,248,148,117,166,33,91,212,121,60,87,52,69,189,112,219,66,207,60,93,172,157,24,202,230,108,127,163,25,174,215,142,166,211,43,191,155,157, +236,138,28,67,127,59,207,61,245,229,142,118,71,148,152,161,151,14,20,209,41,70,162,246,97,194,118,127,190,210,193,84,41,145,215,19,203,231,229,155,132,215,255,224,192,153,182,33,140,43,23,160,6,152,7, +205,42,21,50,101,229,201,107,78,48,91,190,157,186,206,38,254,35,33,7,216,121,143,154,243,183,167,197,104,44,116,228,128,4,46,187,52,119,188,46,116,145,184,210,133,121,142,128,140,189,66,55,69,11,100,179, +6,114,5,134,177,253,139,227,204,33,181,2,140,130,200,208,191,52,108,161,185,167,255,20,115,90,217,120,197,152,241,32,30,189,182,186,249,236,158,134,38,31,33,155,80,165,0,33,8,133,34,158,184,174,134,221, +22,106,17,217,78,215,171,166,79,140,50,115,214,238,8,245,180,73,126,79,47,66,231,215,126,55,179,73,116,25,120,124,114,145,43,40,121,113,244,176,255,39,121,174,123,63,157,110,254,218,184,215,99,232,209, +221,253,87,85,49,239,223,86,215,92,28,100,158,162,106,177,188,132,238,90,155,106,165,47,178,59,3,67,248,108,224,47,75,121,193,227,22,172,69,69,113,238,73,83,159,6,112,189,139,95,148,205,180,164,18,221, +38,248,113,162,254,36,228,247,207,206,131,17,185,215,5,236,186,183,41,31,103,217,109,99,76,103,28,19,139,188,137,166,103,20,145,59,63,55,78,18,144,177,207,142,55,90,159,176,137,93,205,121,225,23,174,218, +110,99,193,145,110,243,167,109,220,155,108,225,158,254,98,166,7,41,34,99,79,24,225,134,86,229,44,85,66,36,32,87,138,147,63,123,93,117,115,71,187,10,24,48,15,231,253,1,18,151,141,159,26,77,227,242,200, +26,124,61,79,223,239,231,154,113,228,11,108,195,21,22,178,138,120,42,209,140,123,143,91,176,209,12,153,188,198,122,226,50,244,109,235,22,51,175,19,170,10,53,63,80,140,151,251,231,39,90,155,252,234,238, +101,17,60,105,77,207,79,166,27,229,82,92,185,192,52,192,252,205,5,154,173,123,131,82,30,3,204,231,24,237,65,103,172,130,126,60,76,81,187,209,111,84,245,174,93,35,159,236,217,50,153,166,151,93,98,78,58, +108,181,97,158,223,253,122,16,124,246,77,47,99,53,119,112,175,24,252,81,147,215,154,79,126,95,25,81,29,14,159,181,193,60,246,249,116,143,161,210,100,194,88,149,7,243,61,0,62,27,181,33,140,148,232,92,239, +225,225,215,44,127,137,101,200,212,182,241,8,120,226,102,125,199,68,52,68,245,27,240,208,215,134,44,244,24,122,9,19,183,69,229,66,65,133,160,130,121,230,253,44,140,15,145,227,240,160,107,98,77,86,94,204, +207,239,105,20,54,90,162,16,120,251,79,217,85,233,156,242,186,246,67,77,241,218,200,197,137,117,17,8,230,150,221,99,207,49,13,168,41,144,32,204,23,145,228,183,243,1,249,145,252,78,184,142,223,158,131, +199,205,207,132,9,237,78,30,167,178,17,29,229,10,129,4,219,15,58,199,245,236,35,51,73,2,182,160,42,180,17,254,218,199,27,143,193,191,239,163,105,70,212,195,145,16,109,5,111,126,111,50,11,138,215,163,103, +117,79,79,152,101,216,163,45,128,252,69,190,10,86,158,238,87,247,55,54,25,4,39,84,72,135,255,62,180,255,136,233,246,246,68,28,254,240,99,144,123,72,200,118,123,11,218,101,11,99,244,66,200,88,84,236,14, +41,74,50,126,209,38,179,230,47,114,28,122,97,8,187,188,120,67,45,99,251,0,68,64,196,34,218,162,102,81,223,226,248,201,184,229,102,227,142,200,108,223,35,112,123,238,41,82,72,3,170,217,80,161,98,135,90, +204,5,133,246,152,107,147,150,110,54,91,169,127,9,71,150,82,47,179,85,185,64,1,49,48,246,157,46,47,102,157,162,19,241,218,141,134,115,141,11,253,187,1,27,123,25,13,209,12,219,173,188,4,47,63,150,193,190, +125,192,84,79,102,62,12,81,127,217,219,7,76,51,7,246,65,102,230,96,118,241,32,122,182,175,20,213,2,10,21,103,60,122,117,85,187,131,176,130,225,159,70,24,228,243,63,86,135,241,52,30,251,222,247,251,249, +102,143,3,95,212,217,4,85,203,156,193,147,112,138,130,72,135,111,253,12,138,65,23,103,241,202,71,66,253,198,198,165,35,118,165,116,120,244,125,187,84,243,44,92,140,253,17,60,177,239,167,19,158,114,229, +130,210,128,83,130,113,109,189,226,190,185,112,16,64,192,52,98,247,225,200,79,51,55,176,120,8,230,123,218,100,128,254,164,13,236,182,18,213,205,184,18,25,13,4,4,189,212,165,180,77,187,253,163,169,230, +139,177,43,60,217,114,107,192,248,96,240,167,188,214,209,52,4,150,25,170,140,153,183,209,92,9,76,208,119,94,174,149,141,208,199,202,15,186,216,173,92,52,69,229,224,69,239,248,206,236,195,19,183,137,33, +22,179,236,20,143,253,251,105,119,147,35,75,104,16,195,229,255,238,49,85,30,24,206,169,212,29,203,59,89,89,80,234,16,10,155,4,34,40,212,248,121,82,122,88,132,71,127,249,163,35,204,113,121,91,132,166,122, +93,83,213,188,123,75,221,136,170,78,73,249,170,15,15,55,107,85,181,140,84,160,116,125,246,107,157,226,208,81,28,32,148,164,248,171,36,35,94,95,38,103,174,4,121,39,74,108,31,241,46,194,210,160,24,79,227, +215,82,36,116,74,93,255,47,118,28,179,215,108,103,13,63,101,54,237,58,98,233,51,210,3,31,45,87,56,183,197,132,7,155,168,78,232,58,218,253,173,99,87,187,124,227,110,136,247,142,147,164,60,100,50,101,76, +107,178,241,188,69,47,202,97,23,245,75,89,112,211,121,171,186,147,122,124,121,203,78,31,101,85,85,39,4,109,213,245,214,108,221,111,150,161,251,125,135,143,153,191,119,28,178,243,51,35,206,145,40,191,107, +148,200,111,159,51,210,18,7,122,73,157,200,192,135,155,155,155,155,149,49,130,18,151,185,111,136,217,181,23,143,158,123,235,8,140,121,216,35,45,66,162,15,23,229,73,213,222,195,205,223,212,242,200,171, +87,177,214,20,138,181,228,96,116,123,125,130,249,94,11,65,144,56,251,157,212,228,168,176,82,72,59,157,71,17,136,28,153,85,25,158,69,40,78,152,115,243,154,226,5,178,39,73,247,32,155,167,218,24,71,84,147, +162,115,249,203,62,238,125,49,136,193,197,188,127,210,137,142,151,126,84,11,32,154,117,251,250,243,58,168,186,95,115,56,84,209,43,37,180,146,131,131,75,71,4,36,216,136,71,192,198,94,55,105,241,246,64, +250,108,76,221,17,12,64,115,182,116,99,159,106,29,82,92,93,47,245,229,143,143,48,139,86,145,28,117,12,3,231,188,167,99,101,211,255,246,122,161,234,38,224,239,73,137,143,127,61,219,188,246,221,188,51,177, +117,22,128,151,110,175,111,250,128,98,9,86,116,190,94,3,103,152,15,134,47,180,59,5,127,61,61,213,189,150,121,190,91,116,240,245,239,255,178,204,244,250,112,42,99,163,16,78,172,153,253,214,213,166,86,169, +124,193,222,126,178,199,63,251,227,124,243,220,32,242,2,60,155,94,26,21,135,85,42,234,161,156,214,14,175,206,227,163,48,68,132,246,88,231,30,236,80,201,60,201,162,19,138,124,199,92,235,249,25,249,27,206, +147,35,107,6,51,1,106,235,226,64,66,19,147,67,20,132,13,197,40,8,178,187,140,151,207,190,164,252,206,230,153,188,161,180,76,156,39,127,142,204,166,59,134,233,206,54,229,147,60,95,98,215,209,51,206,89, +179,195,188,78,21,244,248,197,155,204,65,229,124,152,47,214,81,240,86,123,166,199,51,205,204,92,190,170,118,81,115,119,155,138,230,242,210,249,147,84,193,43,63,45,50,111,252,180,216,102,208,84,9,62,251, +213,78,190,188,142,174,55,91,215,227,152,241,75,54,155,67,122,46,91,251,112,230,122,242,132,243,227,160,220,3,188,246,14,192,12,225,32,214,226,223,104,124,99,255,249,195,205,204,45,205,202,162,210,211, +230,127,31,76,49,131,209,183,66,160,57,178,103,48,107,251,119,181,5,142,193,202,100,112,244,205,159,28,109,78,105,172,120,190,15,123,53,177,21,230,146,110,20,116,126,79,39,186,64,141,253,186,109,251,205, +55,228,19,7,77,88,101,182,179,227,56,228,80,131,104,209,85,0,66,14,24,115,87,134,178,84,129,156,230,129,142,151,153,182,213,138,36,88,81,191,252,223,189,166,73,223,209,38,246,36,33,229,140,105,204,240, +71,90,218,70,72,146,35,192,169,53,254,125,200,145,173,101,33,57,166,235,104,29,96,14,140,121,238,10,211,28,196,82,23,238,125,250,18,80,120,60,87,97,230,238,180,23,175,180,78,108,40,178,132,57,221,146, +156,162,131,129,188,177,105,105,243,22,53,51,193,72,192,97,28,157,84,47,117,230,108,48,76,250,247,123,101,82,79,230,161,215,110,217,23,204,117,125,199,46,164,248,103,17,232,30,11,19,148,112,110,229,6, +110,226,97,82,66,180,242,118,107,80,210,164,151,23,239,44,155,228,10,222,38,36,34,175,63,88,217,3,58,65,147,205,247,60,206,9,24,112,77,128,104,160,200,228,129,252,78,188,222,67,129,112,218,228,33,161, +90,242,226,232,20,190,53,161,198,33,141,119,81,62,125,60,214,66,239,252,101,59,161,56,149,188,139,148,78,212,16,161,138,94,38,231,60,242,152,78,41,175,146,136,40,223,115,21,78,200,77,80,93,207,90,182, +197,28,84,82,15,39,34,45,198,61,3,159,24,239,11,118,20,227,191,17,104,223,171,44,88,13,129,219,10,35,30,140,168,126,161,55,11,93,99,42,60,71,176,24,217,235,104,65,33,60,167,235,164,231,163,23,251,4,243, +102,63,199,14,250,117,165,169,255,216,8,243,26,134,220,217,165,36,116,61,45,76,210,151,158,119,59,201,111,103,142,104,46,61,136,227,208,132,123,29,201,245,14,121,43,200,211,103,103,167,162,231,82,46,139, +235,29,103,7,180,137,144,225,147,28,219,154,58,24,157,43,90,226,4,85,180,3,233,170,80,142,12,52,159,253,64,152,103,134,128,202,145,41,25,51,119,163,57,165,29,41,63,171,58,190,21,244,39,62,9,16,152,161, +221,228,104,18,188,181,31,25,97,158,129,30,100,3,187,132,67,26,31,126,175,121,144,158,49,74,47,219,197,191,138,70,28,98,55,182,104,253,14,115,51,121,181,118,212,243,136,86,36,190,104,161,117,230,160,254, +61,230,205,31,104,247,120,31,240,230,14,124,111,25,30,189,221,149,41,252,172,92,25,239,134,118,244,218,189,43,239,176,107,31,4,141,120,228,186,214,60,167,160,51,132,193,25,54,227,47,179,141,29,235,46, +104,36,142,49,183,255,215,164,76,208,103,9,202,216,107,91,122,169,170,103,253,95,60,117,134,194,187,209,128,5,43,26,160,143,104,60,98,225,86,206,44,226,65,138,177,189,138,100,9,118,114,247,165,45,87,57, +8,211,176,40,158,67,25,184,29,108,203,227,27,178,228,206,163,191,171,82,119,207,46,18,151,254,147,148,73,35,124,125,180,184,245,101,96,133,81,182,201,109,244,87,163,120,62,147,61,140,45,99,82,207,169, +222,189,217,229,189,169,102,158,73,61,157,23,220,9,219,232,101,245,71,77,165,13,99,101,59,171,153,88,34,161,219,13,24,239,122,143,141,52,191,205,249,203,179,88,163,247,26,229,11,152,103,224,243,25,210, +187,185,25,254,88,75,27,94,120,243,206,250,166,14,133,117,182,26,152,147,111,34,12,114,35,139,195,167,1,34,202,118,98,188,229,169,189,55,124,17,92,113,178,74,49,166,16,11,234,83,61,106,153,111,30,108, +106,134,3,36,208,245,222,190,163,190,185,182,105,25,144,80,30,195,143,83,104,30,251,236,79,115,15,112,213,196,138,209,252,245,148,129,115,75,135,10,67,180,125,110,172,233,175,235,97,204,229,189,95,221, +168,148,121,251,182,122,230,71,174,51,226,209,150,246,186,15,95,85,213,194,20,237,59,196,162,54,127,217,102,115,253,59,147,194,70,199,36,62,7,206,12,68,117,138,158,178,217,185,224,89,136,191,97,65,18, +145,89,48,114,232,216,9,51,124,22,99,167,1,199,152,86,166,136,175,136,96,190,65,136,46,47,100,96,199,126,44,116,226,212,209,47,120,135,235,16,14,234,7,45,138,198,101,196,227,45,241,204,91,152,47,122,54, +54,79,116,175,97,46,45,148,211,115,77,12,244,124,28,150,107,8,23,57,161,52,231,210,254,83,78,167,204,130,19,168,49,188,235,227,63,205,192,113,203,60,223,247,30,84,156,243,213,164,30,165,30,0,140,188,94, +178,197,246,181,46,53,89,88,152,237,216,176,219,22,101,139,118,68,193,138,28,5,11,75,21,28,29,91,162,162,204,210,33,244,233,8,202,216,43,230,212,128,23,201,83,61,231,39,60,180,60,75,103,229,11,244,97, +118,179,90,254,2,11,99,124,47,184,85,149,194,17,193,212,7,122,31,194,239,183,133,25,83,3,226,19,12,153,6,39,88,72,217,200,217,127,159,205,16,200,96,151,39,25,28,45,124,189,98,158,91,133,123,215,2,131, +193,175,12,165,68,36,201,169,252,245,40,218,232,194,202,163,104,206,242,66,41,86,25,9,244,82,160,99,229,127,156,60,254,70,79,252,108,54,17,203,214,75,155,143,5,245,235,135,154,154,9,207,182,51,207,66, +71,161,162,28,161,136,244,239,67,36,251,127,127,166,173,25,138,145,44,140,51,161,23,240,20,99,124,15,192,128,233,201,36,23,149,252,190,141,16,217,100,59,87,211,88,182,210,231,48,242,115,95,239,108,94, +32,44,167,176,208,21,53,46,181,4,123,15,92,121,153,25,124,127,19,51,29,194,174,218,229,88,92,4,104,200,152,222,12,34,204,246,206,104,18,232,73,9,247,148,63,111,22,51,31,74,225,186,44,96,179,8,219,200, +160,52,231,220,191,19,26,248,129,120,185,206,223,137,235,180,131,219,72,59,210,55,110,170,109,230,146,51,107,44,111,88,33,37,22,133,95,73,156,79,128,99,38,218,162,144,77,171,42,92,87,30,47,115,225,215, +249,255,154,61,10,103,4,33,43,55,237,51,235,160,51,182,94,49,186,186,145,5,45,131,126,14,66,134,19,190,187,155,144,146,93,103,24,171,203,200,37,253,241,220,149,102,252,51,237,108,24,81,227,223,142,121, +112,37,189,170,21,49,120,145,112,234,124,198,238,105,21,87,218,241,73,103,102,82,221,254,131,234,97,18,17,205,1,133,96,6,195,198,249,237,239,56,168,54,191,119,202,180,38,132,61,242,137,86,150,160,77,97, +154,63,225,238,169,47,167,2,209,187,210,204,79,63,178,13,251,226,181,75,13,228,49,133,84,90,75,72,137,192,191,93,92,52,223,66,169,57,10,202,216,203,81,107,84,1,108,122,252,173,21,19,114,197,166,189,54, +81,21,140,136,131,126,155,16,43,254,231,99,229,19,181,65,74,243,168,215,82,92,213,159,152,140,159,39,47,219,106,14,7,81,41,44,207,96,249,198,61,103,194,65,142,50,152,80,50,6,209,162,137,86,120,225,164, +88,64,109,24,39,214,84,210,46,37,74,162,254,189,54,118,238,69,101,137,15,63,190,71,20,165,75,199,57,173,22,225,255,189,63,217,252,43,67,193,88,229,226,197,250,165,111,27,115,61,198,34,49,142,117,57,43, +87,215,41,102,102,240,98,94,44,66,63,206,161,151,248,58,182,242,73,133,89,62,135,72,111,164,245,172,212,9,45,198,12,195,75,124,10,100,82,98,137,94,141,115,101,66,158,163,201,99,117,172,95,194,131,246, +194,160,60,242,249,76,194,157,44,76,73,200,6,222,135,206,175,254,110,214,178,136,166,197,184,60,222,173,166,249,233,241,86,246,157,72,172,119,178,118,166,42,124,43,192,206,219,161,251,238,55,108,65,196, +104,12,18,187,93,37,43,175,135,32,207,78,60,126,222,203,92,88,24,100,168,98,132,188,122,205,93,57,227,60,111,27,226,231,193,136,98,244,55,9,178,237,157,251,215,183,44,107,105,81,154,86,186,36,201,4,166, +218,147,202,33,120,160,51,121,57,91,107,147,206,188,66,184,45,49,102,0,133,101,38,178,248,246,250,124,134,117,168,50,240,223,111,179,91,212,174,81,48,84,45,124,241,129,23,26,47,25,102,27,151,67,63,91, +216,133,138,179,42,24,209,70,224,71,161,222,20,42,98,190,230,35,68,219,132,98,179,80,36,40,99,175,11,40,217,20,163,237,132,255,110,132,135,87,50,100,47,49,198,96,228,15,121,46,241,182,250,105,89,213,255, +11,10,211,138,20,138,216,184,155,179,205,226,190,182,131,187,15,166,82,116,47,177,90,197,78,125,197,103,82,134,244,68,28,175,33,69,34,209,146,197,52,34,177,225,9,73,186,24,115,9,19,34,90,98,81,45,226, +19,183,161,55,32,152,188,168,66,191,88,73,36,212,18,141,123,153,6,27,227,104,197,220,133,144,96,254,141,197,107,175,69,45,72,32,162,36,232,104,250,17,91,88,31,47,225,70,22,232,65,19,169,58,78,64,20,203, +125,104,16,21,221,202,83,224,201,189,1,194,73,158,98,32,206,136,18,165,3,225,124,191,68,59,9,205,43,190,255,192,23,51,206,132,189,226,95,15,227,176,139,247,232,31,28,167,24,174,247,41,33,7,237,28,84,193, +158,156,232,152,123,96,129,117,106,70,22,110,216,29,213,216,189,115,63,117,8,93,40,68,105,175,203,156,248,18,207,55,208,80,133,114,21,67,148,124,101,206,42,132,90,6,164,84,81,193,187,3,20,25,230,174,111, +254,97,14,10,178,173,56,54,73,221,79,238,106,24,240,14,90,166,231,225,142,149,8,145,161,95,126,86,72,208,58,107,94,241,77,103,126,208,51,61,63,100,1,121,154,163,36,107,211,153,161,132,7,123,93,113,89, +178,136,24,241,120,229,16,83,44,223,143,197,177,24,202,243,6,19,201,81,152,107,8,241,122,27,194,97,254,180,36,2,17,106,2,62,104,99,47,188,189,245,236,156,248,182,247,37,63,134,247,18,204,118,94,113,222, +45,94,216,150,79,187,76,150,172,120,104,25,244,96,41,44,217,73,220,196,89,153,153,9,66,10,45,3,70,25,168,40,140,125,86,92,150,80,65,54,98,120,209,108,184,160,152,189,53,180,194,40,103,202,16,103,173,9, +244,222,3,61,78,33,140,172,153,48,124,74,14,114,77,37,177,20,70,74,73,209,60,123,156,30,11,118,113,198,227,185,11,35,87,91,252,61,65,72,141,146,249,160,204,192,56,202,235,182,94,221,162,4,159,227,179, +241,171,204,97,12,176,12,89,53,226,177,247,180,133,102,35,8,209,86,254,157,91,65,149,105,39,196,117,126,37,20,180,102,115,18,222,189,168,2,88,36,190,33,206,124,51,177,255,248,80,191,164,46,221,160,92, +1,147,198,139,148,59,140,145,88,161,173,127,148,69,125,33,234,113,93,107,15,88,160,198,82,167,18,232,14,95,187,156,117,78,120,130,197,226,58,194,82,193,80,142,43,63,160,240,76,14,244,85,142,252,193,7, +183,213,15,58,188,33,15,191,132,226,223,156,235,40,206,170,18,177,103,9,243,92,182,96,187,146,184,204,247,143,169,38,111,79,72,40,144,5,95,124,92,237,84,51,224,77,226,14,159,165,80,78,224,239,203,98,232, +201,55,106,247,106,67,180,49,22,214,25,200,117,19,26,246,160,173,170,18,127,90,173,44,140,201,79,210,112,51,193,116,94,210,234,38,42,221,56,241,127,21,30,177,61,202,167,164,70,10,139,86,249,92,234,101, +235,60,151,242,69,120,14,65,133,40,18,242,108,153,36,85,137,161,139,83,36,90,178,13,4,135,179,67,82,206,40,90,225,34,231,254,229,73,91,65,105,50,188,170,22,142,182,248,123,67,235,153,55,179,87,110,181, +187,153,44,24,211,135,218,95,22,18,202,233,30,224,151,105,181,104,113,158,141,24,30,187,67,242,147,253,188,148,159,141,135,18,196,54,209,56,141,151,93,51,36,221,182,229,101,47,36,14,118,133,141,136,217, +138,22,36,65,225,239,121,152,251,227,216,165,40,30,31,172,136,119,201,89,28,100,8,215,41,151,17,101,81,168,162,171,66,85,182,216,46,141,217,69,40,103,250,234,228,11,172,180,225,29,71,156,252,148,66,40, +202,115,2,25,238,128,1,13,38,167,175,221,204,179,16,36,78,33,44,247,11,59,181,108,33,84,218,75,95,182,145,145,77,16,131,190,161,241,145,35,103,165,82,249,123,43,118,117,55,210,200,39,80,145,126,110,6, +170,234,232,71,141,151,2,13,229,104,55,241,29,164,131,177,114,20,248,159,26,9,213,42,25,216,238,53,34,198,94,133,45,45,149,116,240,127,251,212,50,12,67,233,108,55,229,181,175,101,162,125,63,109,61,221, +165,214,240,112,187,207,138,31,42,86,106,147,57,254,69,39,2,57,112,254,96,19,52,129,42,62,169,227,50,209,177,201,22,41,248,63,23,171,113,66,49,251,101,108,245,84,115,48,24,194,49,253,236,36,113,245,252, +57,133,194,136,131,72,56,109,219,34,70,211,0,251,16,16,232,79,137,217,104,119,20,243,223,166,107,172,131,217,209,133,58,86,254,235,232,144,25,235,45,246,89,9,245,182,228,66,130,217,250,251,95,95,136,134, +42,120,132,122,201,213,135,119,236,2,40,168,253,68,243,246,95,10,115,100,141,138,20,204,101,26,193,229,30,138,40,87,112,125,67,98,219,74,100,50,223,71,206,249,39,78,213,185,191,81,81,146,89,136,142,80, +68,249,4,167,16,80,231,212,98,149,18,162,38,56,170,97,80,204,242,52,186,28,171,68,118,50,114,140,240,223,87,10,157,217,62,21,167,76,121,22,42,21,135,5,43,178,23,234,64,167,2,169,80,68,200,167,35,135,89, +112,116,31,66,22,38,6,241,69,161,105,113,68,223,99,151,150,88,238,36,177,235,215,42,157,207,92,12,161,160,197,248,43,212,197,115,251,16,108,73,220,180,138,178,44,82,201,238,96,79,154,107,235,23,39,31, +149,124,72,47,177,83,6,237,217,235,68,74,0,102,146,167,234,24,70,30,162,72,254,172,182,65,181,66,10,125,6,207,54,245,40,174,233,246,250,239,230,70,146,95,141,159,252,217,244,254,114,166,141,239,58,162, +175,122,104,22,82,48,208,155,204,108,56,203,171,208,246,205,15,121,36,163,254,22,172,156,245,65,74,116,35,137,118,227,91,19,77,131,62,63,155,91,65,2,40,110,173,10,187,74,150,127,219,123,33,133,181,241, +118,154,1,149,74,41,209,75,30,76,76,48,165,238,43,220,235,56,6,81,189,1,198,47,244,34,77,120,208,107,192,122,135,186,173,85,200,160,153,147,236,194,104,76,165,184,199,217,201,73,135,19,225,124,113,122, +243,170,190,32,84,56,171,230,85,171,170,212,88,88,168,95,26,179,138,208,197,86,112,233,142,248,222,0,254,126,20,79,55,212,197,83,14,148,122,27,159,57,113,202,188,91,170,114,175,69,88,204,38,90,49,158, +90,204,132,148,74,74,214,147,88,181,97,38,75,124,118,154,176,72,209,160,67,48,225,206,41,125,95,33,200,83,26,228,228,32,163,44,72,181,89,212,66,89,84,180,171,191,170,78,113,175,126,98,108,168,43,193,112, +81,188,7,82,13,210,102,229,195,188,33,156,27,160,63,9,38,122,18,95,63,33,25,123,121,82,106,109,231,83,16,138,234,192,96,41,6,39,195,174,106,212,29,138,199,123,139,12,246,17,11,123,31,188,240,19,223,204, +241,25,34,109,159,20,207,116,152,243,156,27,179,158,98,152,92,59,161,76,2,193,70,15,31,21,162,197,239,5,225,197,201,225,87,45,252,49,88,222,135,161,140,176,49,55,53,84,225,197,85,82,250,75,218,38,214, +238,253,147,249,13,248,169,37,136,114,38,14,139,96,110,58,66,149,138,34,127,189,158,213,105,180,174,69,70,148,176,209,14,171,88,163,229,21,121,86,209,160,127,136,63,134,206,176,28,36,22,173,106,66,121, +200,233,120,137,202,11,47,29,134,200,200,216,80,34,23,248,123,251,65,139,111,151,168,48,102,38,149,171,206,88,182,16,135,123,24,162,238,110,57,69,74,119,58,134,254,170,71,64,125,156,41,56,139,19,46,224, +62,206,10,31,4,113,221,112,190,27,196,101,226,28,170,93,235,77,10,85,200,115,229,231,77,132,42,22,0,31,77,74,70,210,177,141,149,213,30,146,134,119,169,3,152,244,104,139,156,53,1,46,68,161,48,8,254,171, +91,251,79,53,77,169,144,93,98,243,114,201,44,140,188,87,122,183,67,217,161,235,204,221,26,16,234,18,218,15,231,111,27,53,60,115,105,25,154,148,200,217,208,14,192,206,77,244,90,148,228,117,197,48,219,63, +134,100,236,21,238,104,40,188,189,98,73,74,10,98,16,181,82,53,122,234,103,179,82,172,139,138,125,251,195,41,245,51,199,188,131,193,87,17,142,29,96,126,85,36,175,50,239,113,141,171,120,66,84,192,146,210, +162,80,200,110,161,137,252,52,162,106,62,39,62,45,148,205,67,84,205,89,35,239,255,108,50,124,60,219,118,98,149,93,212,164,4,3,225,41,58,98,180,240,88,46,187,52,175,103,81,139,162,20,200,37,35,226,121, +205,181,206,4,91,27,16,236,173,29,177,113,86,79,28,91,219,224,92,118,11,31,93,113,118,43,218,218,218,202,92,174,47,143,254,32,21,172,234,156,182,145,23,40,148,143,16,33,25,53,62,140,227,14,12,189,147, +108,22,253,194,26,11,235,76,67,85,103,58,187,128,170,82,55,148,107,232,59,218,213,102,5,111,111,98,180,221,139,161,55,114,2,168,143,232,170,48,170,103,87,67,19,171,71,77,64,236,130,48,229,137,161,114, +148,236,180,152,118,189,71,24,179,162,20,167,93,22,5,184,176,230,140,236,210,212,229,91,141,232,68,186,82,20,87,147,10,91,245,174,80,229,236,64,156,180,133,216,163,227,14,108,57,9,13,9,129,88,33,12,99, +171,231,83,239,107,61,239,105,116,52,84,161,200,36,182,224,170,130,214,14,192,225,235,234,76,53,174,64,36,225,72,72,198,94,47,153,112,191,158,10,50,216,47,25,52,85,34,238,84,162,208,159,55,199,255,206, +188,198,161,39,124,245,218,110,234,28,249,114,48,57,252,137,178,248,157,184,44,252,201,135,194,121,184,96,190,171,109,103,156,100,44,3,162,85,92,112,48,153,209,39,191,157,107,142,57,28,40,9,157,152,85, +123,63,247,254,238,152,101,230,152,23,150,168,129,109,83,173,80,80,136,138,96,238,217,57,182,160,245,24,181,110,130,32,98,193,138,166,177,215,162,104,195,113,50,248,92,51,3,99,111,243,20,146,40,186,149, +142,75,240,23,94,163,125,71,44,66,226,148,185,130,190,190,85,30,26,110,170,65,164,37,50,173,64,63,246,120,72,221,4,221,179,161,58,230,242,49,12,191,147,255,144,161,218,41,100,6,94,137,134,179,47,187,213, +234,236,222,2,61,191,115,156,115,95,13,113,132,182,106,183,235,165,240,22,204,239,124,18,161,244,106,43,215,32,212,9,115,98,20,212,5,106,96,159,144,108,100,209,92,46,188,185,98,209,40,183,19,30,115,40, +201,213,196,244,167,98,77,21,121,62,76,19,164,186,208,85,52,126,122,180,233,133,163,54,140,90,137,45,240,54,29,194,153,20,37,139,32,148,37,105,185,154,81,14,92,82,115,87,241,122,28,191,96,99,245,254,247, +39,135,200,230,109,52,215,216,149,142,82,168,43,33,228,143,247,75,170,136,223,142,147,96,109,44,182,229,218,122,37,130,74,94,39,164,155,144,140,189,78,84,167,204,69,38,141,182,37,188,20,50,222,150,119, +58,57,30,11,148,186,16,207,215,233,249,170,70,30,113,208,56,10,67,0,133,251,47,94,132,21,106,227,231,24,105,107,184,78,155,156,172,164,194,252,43,15,241,3,201,230,68,23,50,71,179,60,255,105,182,92,150, +121,82,194,66,166,100,91,48,8,131,80,12,64,57,95,79,80,207,183,45,17,89,148,68,11,201,26,167,48,8,29,105,151,39,26,141,168,139,215,218,11,121,228,49,200,158,95,236,195,171,223,141,225,220,5,25,213,238, +32,62,246,120,190,119,16,56,221,105,17,139,89,226,180,19,190,10,80,121,159,154,215,206,142,73,244,219,193,94,67,247,227,124,103,47,177,215,83,114,22,100,0,9,95,252,23,187,215,104,142,145,101,168,84,1, +145,198,70,181,11,204,17,129,23,18,18,113,216,156,80,37,169,69,240,24,42,143,3,171,91,72,238,254,149,55,19,97,156,170,143,91,63,247,139,121,27,50,194,53,188,215,167,229,152,48,158,153,216,121,148,42,146, +219,220,10,124,246,171,94,77,32,156,235,104,105,20,4,143,140,31,78,142,115,45,109,198,248,69,66,108,164,201,221,147,255,223,175,169,91,220,164,149,115,139,1,223,73,36,32,177,222,215,114,52,190,101,97, +138,149,77,101,14,150,230,253,174,84,148,92,96,152,18,178,177,87,97,74,105,197,75,189,149,148,113,44,154,119,43,231,180,24,115,194,61,210,216,105,12,161,80,58,18,197,254,115,90,69,251,45,171,252,168,242, +245,64,178,213,97,62,123,156,175,47,254,27,79,195,225,181,215,95,120,174,218,44,104,42,75,214,150,244,168,32,89,90,101,109,120,198,107,4,116,223,158,184,201,153,115,57,150,157,223,91,124,125,24,91,191, +64,159,175,48,137,241,116,154,68,82,35,247,184,154,23,45,90,73,90,229,83,236,98,172,133,29,117,228,103,252,124,84,171,41,144,15,180,180,209,94,81,178,170,37,80,184,142,77,74,153,14,84,114,134,252,193, +72,117,224,211,158,234,219,124,224,174,37,251,33,175,178,198,94,130,50,69,187,123,53,24,231,144,175,161,251,179,215,41,97,218,243,111,13,161,128,206,51,145,243,150,86,33,92,68,134,106,248,204,191,206, +114,152,149,124,30,244,7,177,104,75,55,16,107,10,65,7,93,163,100,222,176,52,161,234,231,47,136,193,215,126,228,39,243,232,192,153,102,53,49,248,211,66,213,112,13,21,76,213,165,234,255,29,56,139,166,246, +187,210,204,124,165,131,249,236,222,70,166,7,227,81,21,90,5,133,88,253,231,84,82,55,18,238,59,165,90,155,50,2,112,200,102,242,17,185,89,66,118,78,40,197,159,68,187,34,103,154,227,186,3,195,13,135,30,217, +121,166,144,141,189,226,143,54,148,227,175,1,61,4,171,104,78,20,88,146,133,160,5,248,226,102,76,128,162,36,40,85,94,108,183,120,24,163,159,73,206,40,84,35,174,24,161,28,236,239,125,119,20,99,198,0,221, +10,10,223,30,214,84,145,163,117,202,140,82,194,40,14,109,131,177,248,97,121,178,195,196,167,173,237,183,165,78,128,0,139,69,170,30,188,39,45,224,35,17,100,44,175,112,186,122,6,103,225,179,139,197,41,83, +29,66,178,220,81,196,215,59,143,173,48,74,33,91,42,239,41,169,158,181,122,199,25,67,21,166,110,226,127,93,140,127,27,69,244,166,69,141,112,78,21,104,1,124,68,94,81,12,227,156,245,24,204,59,113,229,15, +125,164,185,25,218,187,37,255,182,8,251,51,140,170,200,242,112,222,75,52,191,237,182,93,243,155,255,61,14,225,216,247,15,53,179,229,241,225,94,107,24,252,60,66,17,57,146,146,106,139,240,116,136,115,186, +34,80,80,84,147,225,246,134,114,134,83,45,106,41,153,253,68,115,103,137,66,56,42,156,228,56,209,87,100,13,131,180,79,33,69,161,225,110,129,212,78,140,161,78,243,163,188,0,35,122,66,177,61,233,121,56,114, +160,79,184,159,90,12,117,219,203,27,175,134,7,176,104,212,28,163,248,186,206,200,124,85,161,156,117,14,9,97,201,174,40,7,21,95,212,11,123,159,58,127,49,255,210,226,108,118,97,71,16,9,9,217,216,235,93, +111,45,242,48,199,209,194,16,22,1,75,58,160,103,35,51,139,237,209,2,120,206,127,127,186,173,229,33,95,244,246,85,144,83,93,97,110,167,201,183,66,63,235,216,222,41,105,165,151,73,252,219,113,180,13,130, +103,3,137,177,213,74,142,165,144,200,83,93,161,130,26,167,75,150,188,242,92,153,232,23,91,208,34,111,230,96,60,99,136,179,93,133,231,55,25,239,96,14,13,59,254,124,169,61,196,90,237,236,86,112,30,164,74, +170,120,172,4,99,159,157,232,122,123,209,75,179,42,5,67,202,222,7,251,216,130,118,137,129,208,142,5,250,93,176,97,167,15,85,18,232,185,4,243,250,155,88,106,114,176,63,97,207,15,29,98,130,122,243,53,242, +230,2,105,42,18,232,125,36,119,156,138,142,156,205,147,238,85,73,85,53,8,81,162,56,18,31,231,220,25,45,225,25,119,195,34,175,177,223,76,184,71,161,10,125,34,113,29,127,184,104,10,108,136,146,83,107,68, +254,174,102,53,214,152,121,123,21,175,167,214,102,157,173,83,56,35,163,69,103,172,176,153,182,133,188,111,90,244,130,121,126,255,133,81,94,241,61,159,254,105,190,131,187,200,34,255,236,34,13,7,17,228, +103,34,38,83,159,105,241,207,135,66,26,22,17,133,196,59,137,158,83,161,156,116,90,220,120,127,118,179,240,205,162,201,142,191,232,153,44,10,71,15,202,252,22,27,111,164,216,114,67,54,246,186,193,138,196, +191,50,105,219,203,224,93,75,85,217,108,140,222,93,173,43,216,56,183,86,76,197,236,180,74,169,48,73,108,153,226,173,248,13,246,62,121,161,150,127,29,81,7,249,66,20,172,156,9,7,241,75,86,235,47,18,225, +42,137,198,32,8,134,117,74,33,28,231,77,39,174,122,35,124,209,106,116,33,68,198,65,146,158,95,60,208,212,124,79,227,6,237,102,148,140,210,51,105,33,208,246,74,225,168,238,44,4,19,241,34,238,134,149,208, +41,158,241,97,184,163,113,211,126,231,20,182,90,101,227,14,132,240,0,201,102,53,94,8,70,94,128,247,163,26,137,206,142,175,252,102,139,139,20,179,78,72,212,104,194,234,138,241,21,74,197,105,230,96,143, +13,230,173,13,230,230,116,53,239,91,174,110,76,142,161,212,28,251,11,184,100,52,68,209,57,235,113,202,177,103,62,10,37,118,190,120,224,209,208,151,115,206,38,116,99,19,119,188,85,28,243,228,39,21,5,121, +69,115,106,40,161,29,79,98,54,214,86,132,134,211,166,83,40,155,65,99,161,26,86,49,36,222,178,208,42,163,33,195,123,237,198,218,244,115,0,249,146,10,69,53,9,151,43,145,109,145,140,198,114,50,249,135,114, +148,203,17,165,134,135,11,39,214,220,210,188,76,196,160,205,97,25,123,241,78,171,90,179,6,161,152,175,238,111,106,89,0,247,99,248,223,160,139,79,153,123,126,52,245,105,186,112,11,91,172,123,225,127,110, +15,106,226,87,140,136,140,251,4,188,227,173,144,250,43,68,162,194,150,167,175,173,22,55,148,195,239,6,130,238,217,18,102,19,227,64,198,90,140,145,31,253,70,73,188,67,171,42,20,14,77,14,212,111,85,182, +127,10,19,234,23,40,115,255,199,98,166,138,196,161,196,217,110,235,63,197,212,162,5,96,217,123,127,52,93,95,31,111,143,145,241,23,207,198,219,55,215,49,55,182,44,199,132,79,111,202,192,253,158,82,162, +93,136,133,190,121,170,213,136,7,6,71,184,164,246,118,123,208,197,88,98,133,87,60,255,139,233,241,246,68,12,105,92,175,76,196,83,62,200,28,215,208,98,31,74,145,73,56,58,41,234,215,234,47,22,35,28,12,81, +93,48,215,85,167,41,219,18,211,27,26,83,1,80,20,215,178,96,110,45,85,31,91,156,221,125,57,39,46,205,46,72,243,197,97,20,213,14,122,174,60,89,47,167,81,167,203,47,77,178,45,96,82,15,170,220,145,16,114, +246,37,229,231,220,192,157,39,179,219,182,97,225,84,44,66,248,117,111,68,34,91,158,3,187,112,193,43,253,185,114,102,208,200,105,143,232,202,113,224,210,145,111,16,233,94,164,36,44,99,175,46,243,205,88, +201,63,133,24,72,219,94,25,195,142,47,253,102,30,249,96,178,169,192,128,79,233,215,222,204,128,223,185,114,241,60,230,55,86,171,54,20,48,188,49,114,137,245,252,251,116,174,234,131,50,245,192,43,46,171, +22,122,78,133,45,219,230,3,24,250,247,192,198,70,91,6,208,60,197,198,199,156,120,61,6,237,126,184,207,109,134,30,81,152,73,161,10,25,149,250,84,5,119,121,113,156,165,65,253,238,193,102,230,229,27,46,55, +243,40,142,104,76,98,72,13,211,213,89,72,5,70,47,95,95,203,136,13,48,218,180,5,254,186,41,136,97,178,60,218,202,224,99,168,190,35,155,175,248,122,160,34,92,185,101,46,100,50,158,166,223,224,16,168,32, +84,32,231,191,13,95,64,49,202,58,39,220,197,162,120,23,44,131,254,205,74,2,189,86,64,199,197,115,163,157,77,87,38,28,1,15,122,2,191,30,186,4,233,63,26,162,173,191,250,2,88,15,140,23,79,219,109,85,239, +186,146,180,6,52,62,150,214,215,206,165,180,160,97,246,152,13,160,146,36,106,227,119,68,181,44,22,133,35,250,223,82,65,87,63,59,11,174,120,127,20,122,116,120,240,251,16,186,169,70,194,245,92,16,245,88, +200,164,174,89,232,97,31,118,101,206,26,207,28,150,243,251,213,36,66,82,122,72,230,157,118,0,145,236,193,29,150,177,215,118,186,55,20,161,242,240,116,163,221,241,6,39,193,189,220,22,47,88,196,68,226,244, +158,79,252,248,185,175,230,152,227,218,23,99,72,180,26,47,194,96,248,211,182,234,197,26,12,20,42,141,23,119,107,159,156,45,244,219,236,16,226,195,183,116,29,53,18,30,72,143,201,23,135,46,160,3,208,159, +230,33,240,180,111,142,92,140,162,214,216,142,77,218,10,5,82,133,171,138,223,151,126,156,119,134,199,158,109,103,49,22,41,113,149,59,198,69,220,232,218,126,118,125,115,130,89,165,130,49,37,5,225,197,249, +27,152,151,24,232,230,188,209,217,180,166,20,250,219,209,75,205,29,24,124,93,87,97,158,247,232,40,20,53,67,152,192,140,150,199,208,75,44,142,22,145,67,101,47,144,196,247,126,89,26,240,220,191,141,221, +72,23,80,45,122,89,109,56,136,49,249,7,253,92,254,232,79,224,195,129,59,178,99,232,253,21,189,103,237,172,60,109,114,240,140,130,204,157,45,94,43,205,132,13,7,114,154,93,168,14,127,144,150,247,231,44, +232,191,190,154,219,219,36,87,140,109,69,151,20,23,125,32,10,72,168,248,71,115,187,30,104,44,203,221,228,165,56,16,119,122,184,18,205,26,136,112,239,45,18,223,151,157,186,18,190,34,133,248,236,84,193, +49,82,200,86,112,217,111,167,64,73,45,75,198,216,229,99,135,38,78,155,96,197,9,225,201,6,28,145,131,162,121,134,131,165,162,163,144,228,63,136,205,9,201,216,88,125,65,108,126,239,180,249,122,10,180,208, +220,188,32,222,227,22,18,222,22,152,5,125,93,7,64,36,148,138,221,196,244,16,150,177,215,73,5,95,210,13,141,154,243,183,25,163,120,28,161,140,231,97,7,204,228,109,4,50,142,238,53,118,165,82,66,15,35,164, +238,64,43,18,192,223,214,132,205,237,153,238,53,61,120,103,137,45,114,33,118,254,206,36,219,115,81,162,194,167,187,63,154,102,106,80,16,115,43,141,43,158,162,145,192,0,122,197,10,79,219,155,80,145,154, +89,212,123,124,164,169,13,206,182,11,109,198,180,32,200,3,240,231,228,113,20,33,4,78,143,119,57,183,40,18,116,111,94,158,158,33,160,45,226,227,105,183,17,114,154,33,38,63,193,27,49,2,39,143,157,50,31, +140,91,110,17,47,242,222,63,186,179,129,73,71,129,216,80,98,255,226,171,150,145,19,211,101,56,198,46,148,137,219,6,244,83,217,98,120,55,242,64,121,217,94,161,98,89,139,82,32,34,202,214,111,201,75,104, +55,214,68,68,119,66,30,97,240,119,179,104,72,175,3,198,174,48,179,150,163,3,21,205,49,70,247,147,155,40,148,0,111,126,122,133,195,52,115,185,7,155,167,14,1,175,166,239,88,198,70,200,159,226,139,18,164, +182,62,67,194,181,148,236,95,10,13,108,56,50,130,185,219,19,167,97,157,215,3,117,206,213,136,144,64,90,45,126,200,81,10,96,126,133,165,49,28,89,69,254,231,30,232,54,228,144,248,27,125,127,228,113,56,231, +79,45,223,45,166,80,142,173,253,240,212,222,168,17,252,26,198,115,30,125,88,61,196,103,177,150,76,49,232,202,114,229,79,124,243,9,126,120,25,123,126,167,16,78,168,70,81,209,137,148,22,205,225,219,154, +67,47,225,13,229,168,91,159,162,34,218,61,30,246,22,90,169,38,64,13,143,34,41,97,27,123,221,140,188,217,119,71,19,114,209,205,51,152,194,125,59,98,111,88,198,94,198,131,98,146,236,240,173,215,23,255,117, +60,145,97,124,138,173,216,117,66,231,56,108,125,24,215,249,52,169,232,73,245,155,188,117,85,75,126,138,97,223,139,167,153,1,104,92,70,182,243,25,5,109,20,44,210,139,219,85,83,233,245,52,63,31,201,14,227, +86,140,121,141,135,127,50,87,67,90,54,152,38,224,107,248,189,94,50,25,250,103,190,159,231,105,251,38,3,46,244,0,247,254,5,9,216,154,34,116,138,39,130,225,229,80,210,201,73,90,114,188,98,147,142,151,145, +159,164,97,9,111,67,143,190,236,92,148,204,251,47,68,33,164,143,239,110,224,89,184,208,137,26,46,223,244,254,164,128,239,71,147,176,22,225,180,159,105,179,86,83,33,33,141,25,59,172,223,230,109,52,247, +125,50,205,167,227,220,36,164,31,84,34,58,158,72,31,182,127,168,94,114,244,169,246,122,193,122,178,50,244,47,14,93,104,250,210,52,250,172,166,237,222,235,41,25,157,85,192,0,111,157,67,31,116,30,108,239, +83,231,214,213,156,228,38,230,201,7,132,23,171,223,63,212,67,126,230,21,245,109,184,28,52,135,245,192,208,173,22,207,228,8,190,18,27,119,33,135,110,37,215,243,9,215,169,79,37,110,63,158,209,209,77,172, +26,33,156,71,34,208,130,37,254,82,40,135,240,238,130,245,187,45,47,214,49,156,36,39,132,211,173,126,201,176,72,189,236,2,169,255,99,190,168,222,194,199,15,21,132,30,181,110,44,33,202,160,2,167,168,54, +129,72,224,158,212,109,42,135,32,219,24,199,93,56,84,114,36,196,117,111,95,28,66,177,117,177,145,130,178,70,82,34,98,236,15,18,27,182,241,51,203,251,77,85,163,31,181,170,12,251,23,224,147,43,179,3,168, +195,214,101,204,147,173,121,136,132,43,46,101,44,62,187,187,145,185,70,164,74,78,67,12,18,157,159,254,186,220,84,188,127,136,89,187,121,175,233,11,197,232,151,192,28,127,238,211,202,140,229,92,163,168, +128,251,186,119,51,243,230,29,245,76,99,188,133,92,226,165,113,132,133,71,247,162,164,227,141,132,97,106,63,58,210,220,76,62,225,94,22,143,87,121,217,172,151,202,136,107,109,87,87,160,155,18,225,169,22, +86,254,75,194,76,121,116,110,6,162,6,84,183,125,187,84,247,65,14,181,216,89,143,3,131,240,15,144,210,104,197,145,3,25,120,209,205,246,104,67,131,13,138,130,180,144,77,194,80,247,30,52,43,168,248,189,94, +86,181,185,187,88,100,119,222,242,110,187,160,90,104,10,28,219,44,138,9,229,35,52,126,182,91,148,22,69,174,45,8,104,48,141,26,20,46,123,10,35,255,244,87,179,225,43,241,67,71,233,149,240,203,142,10,145, +115,115,115,156,2,121,254,140,225,4,60,243,159,102,255,21,136,122,226,28,163,235,93,247,214,68,179,95,77,170,49,74,39,48,30,197,212,152,199,43,242,22,213,243,213,113,98,118,176,75,122,246,135,249,65,239, +86,100,151,250,17,114,252,83,8,52,230,210,17,230,100,53,242,88,14,100,213,118,204,58,207,68,205,182,133,17,151,8,107,63,92,92,56,222,186,133,156,24,185,218,101,66,224,101,151,154,188,170,82,141,69,26, +56,240,53,47,119,139,88,46,17,106,134,196,212,170,93,185,118,254,109,104,234,110,67,190,222,9,230,79,26,26,205,33,201,131,179,210,129,94,194,78,77,66,31,154,241,140,81,173,143,119,103,124,11,16,214,72, +135,129,35,98,236,213,68,215,66,245,164,48,148,62,119,221,25,198,59,253,234,38,110,124,26,216,244,241,160,112,108,195,242,36,68,213,152,106,216,124,43,69,16,214,179,244,86,194,109,223,118,144,88,237,37, +230,193,14,151,217,230,1,173,40,104,106,74,85,163,184,226,197,57,161,134,210,99,201,19,204,4,95,59,224,238,134,166,14,113,221,76,182,137,177,182,146,220,4,134,88,100,86,131,233,60,244,249,216,229,190, +10,208,52,156,255,201,235,106,38,217,144,64,207,160,48,199,220,183,174,50,147,95,236,96,155,63,251,135,48,246,177,48,253,165,16,0,198,65,62,154,237,28,245,31,137,12,238,135,183,215,179,156,31,142,103, +222,127,212,98,27,178,82,109,67,160,34,100,85,119,45,126,78,19,118,69,225,48,134,79,147,124,86,67,248,132,68,122,210,98,99,39,44,63,111,3,125,161,62,190,129,136,60,236,91,250,79,54,47,99,76,37,57,188, +149,172,137,125,247,97,230,65,246,156,236,32,245,162,50,182,221,49,218,42,198,11,84,228,85,43,215,51,77,223,177,45,7,99,205,231,189,26,123,186,176,249,137,198,189,154,114,4,222,176,214,251,232,114,208, +196,213,65,245,119,85,117,231,243,223,177,83,209,117,88,132,111,97,110,139,65,209,49,241,41,89,167,16,168,126,194,61,174,60,59,93,219,1,74,239,175,30,212,1,64,240,62,182,224,189,13,58,132,227,189,33,39, +228,85,162,64,14,147,77,5,82,56,31,170,202,255,70,45,42,3,20,133,54,123,125,54,221,220,70,33,214,81,133,141,125,205,120,48,95,41,148,132,215,123,218,85,76,152,10,107,161,155,245,132,248,118,123,25,87, +179,48,247,163,65,139,30,17,99,175,134,9,42,102,176,130,97,237,55,116,254,89,21,176,74,200,250,142,137,55,40,82,176,146,165,175,12,91,104,94,133,219,66,147,255,67,226,224,111,209,208,215,22,68,200,203, +195,219,28,73,60,188,53,43,241,164,101,91,18,100,212,19,92,174,44,149,187,66,137,252,6,92,114,194,11,87,152,7,58,85,129,107,31,15,85,179,196,75,42,228,137,189,123,110,66,36,110,95,243,242,246,164,56,99, +226,210,45,73,246,237,20,204,176,17,219,175,248,85,177,130,57,158,208,78,68,201,34,206,233,228,43,2,156,123,17,63,76,186,158,10,12,173,152,154,65,104,50,19,119,30,133,103,85,27,82,168,143,64,31,137,67, +36,49,70,66,141,133,96,134,247,17,195,254,2,248,171,145,247,36,225,165,205,138,87,170,238,78,73,229,34,154,130,206,178,59,2,45,254,232,246,206,15,167,216,14,80,137,133,238,229,36,204,128,121,176,221,243, +99,205,55,191,175,178,33,181,78,188,4,175,253,175,118,92,250,138,120,90,146,7,254,62,139,154,53,194,220,144,152,11,175,126,249,119,91,144,146,156,151,39,246,202,59,200,253,244,7,0,160,121,165,58,145,59, +169,182,180,29,151,226,137,160,193,223,224,124,100,80,194,209,34,115,136,183,2,39,126,252,235,217,54,113,157,148,8,134,252,58,192,1,233,192,169,192,46,77,241,155,26,96,248,203,249,231,215,27,91,127,210, +161,86,177,184,144,106,61,52,99,117,77,221,18,161,147,3,122,39,146,106,91,108,5,191,108,3,139,253,107,236,156,20,130,243,81,92,36,48,48,98,71,253,88,116,228,48,95,14,248,25,240,2,246,64,16,233,44,106, +179,169,243,242,223,254,99,26,237,113,17,98,79,13,196,61,187,103,76,177,94,44,22,174,22,149,11,123,186,103,69,88,210,62,139,132,123,78,109,55,148,92,88,201,182,93,219,234,157,120,144,251,121,249,212,190, +80,157,147,18,18,197,88,165,216,95,64,83,60,73,60,175,47,49,244,49,20,96,140,95,178,201,172,160,225,114,11,66,50,205,73,196,181,192,115,255,139,243,109,80,194,14,131,179,153,159,7,211,170,75,69,67,170, +166,84,56,65,70,62,190,40,126,173,198,188,217,64,117,44,129,12,233,47,167,69,155,94,88,219,141,70,174,170,199,58,239,97,69,157,183,122,187,249,10,180,192,24,194,30,106,77,166,239,170,72,35,185,173,148, +96,101,215,66,109,124,194,18,255,144,159,230,122,47,225,253,70,130,203,34,156,113,145,193,239,218,160,148,25,207,11,176,77,133,71,232,227,32,11,146,182,138,95,1,203,84,201,250,202,77,251,240,246,15,90, +88,233,196,101,155,205,16,22,132,119,129,187,62,11,195,227,84,190,119,212,22,126,240,80,222,242,238,227,24,175,211,232,76,20,24,137,53,12,145,190,132,133,31,194,2,170,69,230,8,158,236,224,201,235,236, +226,175,123,58,129,238,85,147,176,145,23,111,17,137,202,190,223,206,51,218,194,170,93,155,198,229,122,114,54,106,210,173,208,224,215,228,89,244,2,8,33,36,8,108,124,111,176,10,187,23,145,97,255,41,4,3, +243,76,222,250,8,146,129,19,22,111,182,113,92,45,92,26,105,167,0,78,115,230,107,158,253,62,194,120,19,25,103,187,232,115,47,87,55,45,109,147,236,137,117,72,203,207,92,168,5,50,103,8,40,172,83,214,83,141, +49,51,169,173,248,137,240,209,206,253,199,108,114,80,185,6,1,1,68,145,188,146,249,43,135,228,129,207,102,216,122,17,235,141,146,199,40,66,161,207,12,118,184,241,157,133,73,56,25,147,57,94,231,21,250,171, +23,61,117,67,97,88,20,5,137,106,70,14,9,114,203,185,180,235,13,181,235,149,51,247,84,85,61,136,112,135,211,182,175,35,236,139,129,64,28,101,183,242,0,47,20,27,174,207,171,71,17,10,179,190,114,67,45,58, +106,5,70,215,59,12,208,135,165,131,70,135,153,89,112,111,35,124,167,119,83,243,175,46,99,210,31,160,132,108,137,122,63,127,11,231,150,152,69,181,64,107,30,74,31,234,81,32,68,223,91,0,57,122,1,232,248, +145,57,101,245,131,20,103,247,241,35,33,225,29,140,225,42,11,26,161,235,21,20,39,2,58,72,182,239,63,130,115,180,210,82,18,167,101,140,85,107,19,106,87,180,132,222,101,133,162,100,63,230,193,5,230,171, +222,231,157,123,229,166,218,166,2,8,199,72,75,12,30,158,166,98,216,162,190,138,85,123,13,245,222,180,208,45,167,76,23,8,124,30,191,186,170,197,138,42,70,37,145,97,209,203,48,106,246,63,102,36,198,93,219, +119,235,49,105,81,112,184,72,120,105,46,193,115,27,242,104,11,155,204,213,160,9,190,245,46,240,198,233,20,29,156,112,176,186,24,176,50,120,242,117,192,163,214,229,35,99,160,213,88,28,214,179,89,124,102, +172,218,106,86,254,187,207,227,253,137,138,151,73,210,153,114,101,197,232,180,200,236,97,144,173,49,83,152,71,179,211,26,54,62,12,174,122,155,138,217,243,58,188,76,109,169,46,197,147,112,12,191,14,19, +167,250,76,238,229,22,144,42,155,196,50,41,195,65,56,235,222,206,85,128,93,214,13,26,63,28,246,0,36,114,2,133,148,94,195,131,253,0,221,29,211,36,151,158,245,172,94,157,171,119,176,35,177,74,68,202,50, +121,115,47,246,133,96,119,160,73,185,2,195,236,233,42,20,107,158,187,190,166,121,164,83,229,68,155,67,235,229,123,144,16,201,123,236,212,28,4,147,194,105,106,134,157,141,4,125,22,118,11,50,138,118,203, +172,6,22,92,50,35,252,62,15,179,11,235,75,129,157,118,70,131,48,18,55,227,125,235,126,196,181,52,247,245,78,9,54,129,209,88,170,136,175,31,21,192,135,213,29,201,75,30,165,103,72,195,253,106,215,169,133, +95,215,82,221,65,172,22,46,111,98,79,207,119,15,33,21,45,206,50,178,201,137,118,126,93,72,246,239,146,71,239,4,119,81,101,90,174,35,84,135,66,144,74,196,234,217,236,117,108,104,211,115,214,122,56,62,63, +96,88,4,187,139,47,2,11,60,175,240,21,231,20,131,232,154,254,215,134,132,46,217,74,162,177,42,201,223,109,222,162,156,55,216,29,61,204,142,37,28,153,2,64,162,113,159,81,30,131,205,156,31,248,48,141,208, +129,28,7,34,170,71,41,223,107,136,217,40,202,4,205,59,188,240,14,216,132,159,64,188,5,26,186,234,6,156,91,45,64,245,94,230,38,87,163,186,29,213,233,56,50,130,92,77,183,87,199,123,64,8,186,71,94,78,65, +184,229,168,105,220,149,80,63,165,156,154,108,128,198,76,134,155,177,186,11,230,203,222,29,42,147,163,201,102,110,253,112,170,25,200,162,161,191,247,224,217,196,136,169,97,83,242,182,42,0,15,245,128,77, +207,156,157,0,61,138,13,83,70,80,102,224,100,214,163,78,199,121,183,114,226,192,174,31,208,53,228,48,87,82,183,22,49,99,47,3,216,251,203,89,230,173,239,137,77,102,193,176,75,91,12,64,38,94,34,17,158,21, +202,235,161,24,248,135,16,130,120,174,79,58,220,240,142,231,239,188,28,36,202,242,131,225,110,75,92,248,54,188,185,134,138,151,122,69,147,71,171,252,112,188,183,241,120,111,242,246,247,40,62,110,89,40, +253,30,211,187,37,99,180,161,60,200,8,194,38,63,152,240,162,118,160,202,178,154,203,11,83,220,110,50,47,239,15,76,36,85,192,90,67,40,187,151,214,27,226,241,34,61,116,86,77,178,6,36,151,149,29,207,201, +246,244,24,215,251,147,213,120,14,198,222,210,144,202,208,99,76,178,103,203,100,214,14,184,214,62,111,106,18,169,67,161,20,45,150,35,105,118,189,91,139,156,223,194,234,11,30,11,102,200,115,199,240,210, +40,100,245,63,114,45,183,183,44,107,61,167,210,119,255,224,193,53,131,109,151,190,91,129,178,234,221,177,178,229,237,16,84,85,212,2,254,225,43,25,87,197,170,159,37,86,173,198,46,158,151,221,187,152,232, +134,44,135,56,100,102,124,79,132,114,189,59,86,177,249,28,199,163,253,12,15,245,246,143,207,24,251,57,175,117,52,165,147,168,72,86,211,152,15,199,173,48,63,209,20,66,125,5,236,243,57,139,151,174,167,5, +206,34,175,120,217,49,2,245,112,34,122,226,65,119,162,66,49,185,221,155,255,88,138,222,121,208,31,171,108,167,35,237,50,125,78,130,23,51,109,255,91,161,71,239,162,89,18,86,199,135,58,85,178,124,228,242, +72,19,18,237,108,20,194,212,61,235,152,77,159,118,15,201,216,171,226,188,210,131,195,205,46,189,19,156,235,229,30,181,204,227,56,31,225,136,118,40,77,41,174,115,140,253,39,15,52,179,115,34,16,145,218, +31,28,52,211,188,43,48,132,13,131,157,50,3,169,180,15,116,177,208,53,174,122,109,188,135,114,193,107,236,167,19,158,20,123,164,35,186,198,84,22,164,7,216,173,45,16,72,68,122,215,59,41,123,224,5,77,56, +77,82,114,97,72,219,51,222,242,208,85,201,239,44,56,253,201,225,221,7,112,67,58,171,197,123,62,237,197,246,86,255,11,169,171,169,193,226,233,24,251,223,250,182,53,66,209,68,82,4,96,168,248,192,48,179, +73,57,63,222,171,238,45,202,81,115,212,56,224,197,48,152,123,137,152,177,215,69,245,130,11,237,242,61,197,77,246,101,211,74,235,231,69,121,94,12,14,148,81,213,207,50,210,54,1,203,36,199,64,182,228,165, +239,65,159,69,21,99,37,228,1,249,63,152,226,178,98,208,91,189,121,63,215,61,105,227,208,242,98,213,76,163,16,222,147,98,94,226,182,41,94,32,155,221,89,36,182,45,86,204,120,41,134,240,15,96,152,122,129, +133,133,22,167,190,189,63,223,66,36,111,223,11,143,147,231,168,56,184,55,177,98,143,99,17,202,198,206,101,52,9,98,133,174,82,171,104,238,171,247,167,12,191,16,67,139,245,114,96,233,79,120,159,77,240,82, +113,221,168,216,165,2,236,143,254,113,195,105,44,110,237,224,8,63,112,208,131,242,177,134,20,29,228,194,235,206,71,44,95,185,140,79,72,140,199,215,243,95,236,122,38,45,217,98,57,146,132,157,23,188,83, +195,175,134,17,234,118,214,128,197,92,252,40,241,91,27,106,7,232,20,212,233,59,181,75,231,79,150,208,74,139,184,198,111,14,134,127,62,213,190,107,153,27,116,1,180,139,59,116,102,220,171,7,246,91,3,120, +173,10,1,195,9,181,109,82,123,59,116,56,135,29,164,138,4,165,91,135,42,87,97,197,90,165,46,178,225,142,106,144,227,57,213,216,137,205,11,233,101,189,23,227,175,93,148,238,49,148,190,186,10,149,205,196, +83,116,120,141,202,224,1,135,27,118,80,85,248,92,181,103,212,60,231,93,174,200,187,169,94,211,129,138,29,71,139,212,243,236,32,133,214,10,166,179,153,188,107,27,71,71,191,10,9,95,158,200,60,16,248,66, +115,76,33,188,229,132,100,78,49,32,233,189,117,61,101,224,222,210,188,86,77,144,56,115,226,207,81,25,220,217,56,110,114,122,52,47,181,163,151,177,87,68,65,187,119,235,43,112,251,114,26,131,185,247,64, +116,164,14,120,151,97,236,247,106,87,138,61,28,129,13,145,99,26,13,137,168,177,215,13,202,8,127,73,201,111,191,31,23,152,45,60,136,21,167,177,137,147,36,245,110,183,10,224,193,107,165,236,84,187,56,177, +197,139,204,37,76,162,96,188,172,72,43,68,133,13,115,214,238,180,48,190,177,160,52,148,33,247,133,118,100,228,181,91,145,205,247,162,16,173,193,227,37,168,132,241,80,66,57,57,164,81,164,239,55,220,243, +41,130,167,56,183,134,69,143,150,88,126,197,185,142,120,59,186,189,49,222,252,173,109,185,45,146,243,198,40,88,28,171,227,17,137,105,80,12,148,137,137,140,145,188,41,29,33,3,30,109,145,209,115,162,115, +250,55,90,115,203,95,143,122,166,80,11,124,162,173,143,11,229,252,30,40,244,153,233,153,18,115,45,84,221,254,72,61,80,215,151,127,179,139,225,37,180,105,93,242,206,213,150,99,43,26,18,113,99,239,220,164, +86,116,37,109,229,49,171,225,248,70,254,91,158,54,204,43,54,249,32,111,174,50,213,158,197,136,133,167,198,193,216,14,246,122,5,77,16,38,112,255,75,217,206,45,144,135,193,54,89,225,138,195,172,248,218, +61,200,115,19,101,105,187,26,69,194,242,18,163,49,176,209,58,167,188,172,47,73,190,126,1,132,117,3,201,175,227,218,21,48,190,149,48,246,243,97,61,77,202,216,71,235,158,220,243,186,26,56,23,53,160,69,169, +205,11,227,204,31,2,11,176,58,221,70,88,241,83,118,199,209,146,168,25,123,255,27,22,74,193,110,165,241,174,148,41,63,215,68,220,43,39,133,4,194,216,91,102,5,126,150,177,87,232,225,66,245,226,180,109,86, +152,69,113,77,161,153,114,18,202,185,79,253,10,146,194,101,158,107,3,239,222,175,171,129,40,106,64,16,231,74,61,135,24,91,111,143,211,52,133,157,177,127,142,50,210,151,142,138,177,87,102,92,93,106,148, +105,22,188,207,151,140,229,129,98,49,6,39,181,199,82,236,64,113,111,197,240,237,206,63,241,237,127,164,31,58,217,243,233,254,188,200,156,52,132,37,210,121,227,247,25,136,167,202,184,11,113,97,57,117,248, +91,105,98,128,213,9,227,92,7,202,32,210,241,188,100,239,211,61,192,213,128,171,129,115,82,3,130,138,94,209,111,156,249,13,84,162,194,194,101,200,133,44,161,104,211,118,244,139,146,68,220,216,43,78,122, +199,128,169,230,75,113,196,219,224,172,23,234,23,165,7,72,241,211,250,22,39,174,172,159,109,230,255,180,169,73,162,241,55,58,115,165,36,173,113,138,63,187,123,65,87,3,174,6,34,162,129,15,104,186,210,19, +150,92,11,21,6,9,56,24,218,23,81,189,71,83,34,158,37,83,140,254,75,226,185,246,33,108,82,51,5,61,118,11,183,138,166,186,226,109,64,108,86,147,103,36,52,53,23,180,138,186,206,184,226,106,192,213,128,171, +129,196,52,32,132,143,32,201,61,63,250,211,87,123,160,170,234,144,41,154,131,80,117,196,61,251,121,64,222,234,210,228,227,132,138,24,18,169,158,77,242,254,28,124,172,14,178,5,79,94,248,166,131,123,247, +150,22,199,16,82,241,148,131,249,89,119,231,199,56,235,11,255,161,255,86,129,139,45,188,16,138,196,91,192,229,71,109,108,143,177,159,16,22,39,47,97,199,15,52,191,22,158,218,21,87,3,174,6,92,13,168,106, +87,248,133,234,106,194,142,109,218,67,253,199,103,227,87,154,241,20,136,158,148,61,194,110,8,33,54,251,173,206,80,162,115,76,148,37,226,198,94,80,190,207,41,175,238,73,245,227,113,47,52,209,83,192,227, +53,222,122,122,85,98,58,134,214,49,226,250,59,133,23,122,120,167,169,179,240,176,90,47,114,3,69,202,151,61,139,45,191,182,24,95,142,205,145,53,189,197,207,171,128,73,61,88,5,233,83,211,16,137,18,169,42, +113,22,214,118,7,168,26,85,233,238,166,170,86,52,168,250,219,238,3,199,105,200,125,196,87,197,233,137,198,196,218,143,133,109,57,12,122,14,188,208,97,124,212,243,88,138,5,239,199,91,67,16,195,239,238, +185,226,50,243,38,101,206,241,241,226,81,30,63,247,244,174,6,92,13,164,82,13,212,163,242,120,134,168,16,100,243,28,39,210,134,129,177,31,48,182,102,164,24,241,115,138,204,174,87,103,175,20,144,136,27, +123,221,179,144,55,211,86,108,51,159,83,242,62,141,234,182,221,224,215,101,192,179,3,91,84,18,83,73,78,149,51,171,112,74,133,59,226,64,23,73,154,146,19,185,249,123,46,144,29,194,154,58,85,153,42,82,145, +225,23,210,67,6,59,84,196,135,238,203,226,202,181,16,120,63,42,26,57,14,179,227,110,254,221,75,193,208,78,144,37,170,244,85,2,229,95,120,65,84,168,181,105,215,97,22,134,99,132,214,78,217,30,187,42,187, +23,102,60,15,247,170,66,141,155,161,100,86,51,6,21,196,184,226,106,192,213,128,171,1,105,192,26,123,64,42,113,4,187,34,251,39,10,150,231,105,214,100,41,193,83,72,162,98,236,253,239,125,23,198,243,192, +145,147,214,88,203,104,139,63,68,101,53,231,154,97,212,2,113,140,100,236,97,26,48,168,98,247,56,59,0,45,94,226,227,9,148,231,35,133,198,212,189,140,171,1,87,3,169,64,3,139,161,118,153,186,124,11,78,227, +33,194,54,167,76,54,28,92,85,110,139,98,68,236,188,41,13,67,143,186,177,79,5,58,119,111,33,2,26,80,73,185,248,128,20,107,204,193,142,70,120,224,80,152,25,35,112,43,201,158,66,117,29,98,146,60,1,25,159, +152,44,69,133,107,169,178,83,153,248,167,156,66,73,21,165,178,199,113,111,39,149,107,192,53,246,169,124,128,2,189,61,17,116,169,23,128,242,14,162,247,21,9,150,26,144,56,242,23,20,194,234,178,164,92,70, +102,118,36,253,186,215,32,15,146,48,49,87,66,215,20,209,88,93,182,165,177,208,190,150,130,135,123,193,155,157,83,109,213,240,6,158,181,236,125,67,204,9,118,149,153,208,193,146,183,175,78,144,49,51,80, +221,70,227,56,17,250,245,99,60,22,254,189,203,100,98,33,122,159,6,245,137,21,212,140,164,211,218,176,233,27,96,115,140,177,205,85,158,185,182,122,52,110,41,232,115,138,64,240,11,72,225,180,104,213,102, +78,220,77,31,9,87,82,175,6,34,14,189,76,189,143,122,126,223,153,18,207,159,211,252,227,75,154,147,12,226,179,79,196,74,126,178,157,30,190,95,194,205,253,21,127,83,2,125,63,116,204,193,136,60,79,27,122, +3,102,154,218,147,208,194,83,121,238,53,173,101,226,116,240,85,106,94,161,126,5,250,252,151,173,35,197,78,217,224,137,159,205,15,112,72,137,184,109,17,4,94,98,131,77,76,102,174,222,97,6,67,193,171,241, +27,22,68,71,166,96,198,55,148,99,85,65,61,136,122,26,221,215,248,32,186,132,133,114,45,247,59,225,107,192,53,246,225,235,48,85,156,65,136,36,85,248,202,192,197,192,189,45,132,144,191,216,144,139,159,1, +12,54,4,163,100,122,159,171,170,154,103,187,213,180,30,92,106,54,248,42,108,19,181,239,179,215,213,48,143,194,145,175,38,55,146,113,11,254,53,237,33,157,186,146,198,245,79,195,33,255,95,201,119,52,217, +216,167,22,116,80,112,139,101,241,162,220,89,147,108,230,225,44,92,26,63,33,56,82,139,136,97,86,16,104,221,87,250,84,24,38,75,45,122,74,45,247,225,26,251,212,50,18,169,236,62,60,53,12,103,68,176,214,167, +174,169,106,158,161,113,201,189,52,126,8,135,65,210,97,163,136,196,35,39,212,123,71,141,72,158,160,105,206,51,44,76,125,174,170,98,17,94,18,127,30,163,108,161,212,128,4,113,195,73,213,246,109,218,10,155, +170,174,79,227,150,199,104,2,179,238,163,174,182,199,113,164,69,186,137,63,142,201,93,35,185,227,133,104,115,68,208,230,228,36,128,67,206,58,69,40,223,73,238,62,220,191,83,98,20,137,182,132,174,34,255, +123,13,168,153,248,151,244,17,56,5,166,87,49,251,251,218,86,4,190,122,38,38,175,208,193,39,162,176,16,207,55,222,228,253,182,245,93,26,203,96,57,157,196,235,6,194,8,226,63,95,242,207,110,219,138,237,103, +26,196,252,11,83,169,208,3,130,205,170,94,65,29,131,116,236,63,92,75,13,159,127,166,197,225,4,10,68,230,209,142,82,16,90,255,110,79,195,248,254,68,120,236,197,124,90,134,166,35,66,30,8,214,58,130,248, +179,250,6,252,138,151,61,119,221,14,251,123,241,189,59,136,166,213,132,53,126,160,61,226,108,66,23,130,183,42,175,48,112,194,74,27,122,81,195,17,237,72,196,188,169,56,246,39,132,164,198,208,113,76,33, +44,65,122,157,182,133,130,198,126,67,139,73,245,182,21,215,188,154,93,72,39,107,48,178,67,248,189,112,207,151,147,96,86,255,4,237,127,212,122,239,91,90,39,234,94,183,113,110,233,65,199,75,212,54,78,207, +45,94,243,221,64,115,75,94,156,221,247,183,248,163,190,147,80,217,112,218,232,169,112,102,26,241,236,209,220,155,96,189,133,161,174,117,22,26,203,57,15,15,254,148,133,255,90,188,245,13,192,118,197,175, +47,56,113,98,73,90,53,109,159,180,152,214,139,140,131,234,76,238,104,89,46,209,9,39,3,47,154,238,193,180,223,211,125,171,195,155,66,69,154,11,234,22,231,236,247,22,210,121,108,56,77,65,102,3,13,212,179, +74,207,170,126,255,144,50,254,159,231,252,3,237,71,38,219,172,199,145,125,20,4,125,206,56,12,100,110,108,160,71,65,41,198,84,80,229,239,38,123,122,87,92,198,60,185,166,94,113,123,184,144,107,130,28,126, +70,37,253,216,5,27,173,78,212,44,72,99,228,63,39,213,115,64,253,155,149,15,42,144,43,139,77,162,255,200,216,247,167,53,230,44,126,39,32,64,65,111,237,204,127,255,134,157,251,119,224,38,104,207,253,49, +180,79,32,164,76,179,103,126,193,184,156,180,33,156,149,239,117,177,70,203,17,85,54,215,236,61,194,26,186,108,212,49,172,254,160,139,45,58,43,71,34,243,16,70,184,20,68,76,234,224,243,34,125,8,142,170, +211,147,10,65,48,46,253,110,174,99,158,32,124,51,15,195,220,248,233,49,230,48,6,173,50,205,29,254,164,99,208,147,223,204,53,239,169,105,55,41,186,207,40,14,185,181,133,167,131,145,140,122,121,90,84,170, +23,113,78,22,129,53,31,92,107,27,65,116,124,249,87,90,189,237,241,52,127,81,5,33,47,179,194,65,189,104,157,247,34,152,99,237,22,190,36,159,112,19,109,226,212,213,170,117,173,162,20,205,101,50,131,105, +18,125,241,197,57,205,230,207,187,179,232,28,49,205,159,25,99,150,113,30,219,106,78,21,213,120,242,50,244,106,50,47,195,169,4,109,149,135,134,155,3,220,71,118,140,216,90,218,252,201,128,189,76,55,40,53, +10,81,70,49,127,238,204,116,190,202,65,163,136,98,166,19,205,34,42,61,56,204,28,167,152,46,63,29,213,86,191,127,173,143,212,238,5,218,29,62,61,104,150,173,188,126,136,93,194,27,255,171,147,160,81,86,19, +243,182,207,141,181,205,218,149,4,183,237,22,89,200,52,22,141,192,84,143,126,178,141,45,6,191,254,157,73,102,54,99,101,219,113,98,100,11,209,134,176,16,6,124,224,189,141,76,69,104,191,19,146,231,24,147, +103,105,112,46,106,142,154,60,223,28,250,216,38,36,170,29,121,133,36,253,75,36,126,15,139,179,73,197,129,114,147,49,162,234,176,246,197,131,205,76,231,218,69,237,87,117,204,147,63,210,10,81,141,218,225, +100,81,127,224,65,191,210,154,143,197,73,55,154,141,14,111,83,95,238,72,101,103,30,91,147,114,221,91,127,152,161,50,236,182,127,179,49,37,169,47,105,192,226,251,37,11,183,140,125,87,116,248,253,99,45, +173,161,239,75,15,227,55,208,181,165,191,182,221,205,8,247,112,239,185,24,167,97,125,90,210,37,170,160,61,135,142,235,71,39,51,201,227,93,171,219,177,25,50,137,190,195,182,243,28,109,8,209,205,28,218, +81,170,225,136,43,225,107,192,13,227,132,175,195,115,246,12,190,226,52,224,137,107,241,254,250,98,212,74,227,5,151,40,138,209,1,19,172,151,254,61,90,25,30,199,112,248,179,241,105,43,47,195,220,185,78, +49,15,197,4,239,255,239,120,158,206,246,123,45,200,160,189,106,141,199,47,26,86,40,64,127,214,180,230,250,119,39,153,37,120,235,146,220,249,179,155,18,116,28,18,109,133,60,221,215,191,157,107,134,128, +54,177,118,73,49,96,253,192,191,106,62,175,196,164,140,137,226,214,199,48,76,143,211,194,111,41,94,159,60,216,172,120,125,5,101,32,89,56,118,227,145,55,121,234,103,250,15,31,165,64,47,189,45,236,147,56, +185,9,117,231,90,167,62,186,162,203,0,213,178,131,100,237,244,89,127,155,165,120,160,242,96,197,92,42,35,179,31,111,85,200,37,137,144,77,127,174,220,106,89,9,229,117,95,85,167,120,130,134,94,199,221,218, +127,170,89,78,162,213,94,149,107,100,165,186,91,114,154,47,78,166,49,249,147,223,206,177,13,201,199,225,233,110,218,162,48,14,207,201,113,155,208,251,108,254,190,91,11,108,152,34,79,249,169,175,102,153, +195,234,180,134,81,206,72,139,195,180,44,130,42,203,223,71,66,190,43,141,103,180,11,146,248,234,92,208,235,48,118,0,95,99,200,27,210,160,60,39,61,89,13,227,117,16,61,126,69,2,89,207,51,159,157,200,80, +26,181,235,158,211,208,211,183,134,90,243,241,135,47,213,76,220,155,27,114,194,105,227,216,177,188,196,179,30,247,234,95,104,168,52,44,36,90,0,247,224,40,92,77,15,95,193,120,37,190,102,57,44,4,175,14, +91,100,212,92,188,94,229,130,38,139,80,100,124,103,15,99,244,139,155,248,13,115,86,156,249,186,107,236,35,166,202,115,248,68,188,152,162,113,254,236,193,166,102,214,171,29,204,88,90,163,101,203,12,46, +157,23,249,32,149,195,142,225,116,66,0,150,249,130,143,66,60,185,188,253,118,231,175,223,69,15,19,140,12,34,164,203,73,245,155,229,188,93,234,149,180,222,238,12,66,4,50,224,42,40,153,210,239,74,51,255, +141,206,230,171,251,105,236,236,105,33,69,194,116,174,109,26,157,193,246,59,16,189,6,247,196,191,247,119,169,102,222,163,161,195,237,236,26,54,237,57,100,59,136,169,71,92,94,174,59,15,175,79,176,202,7, +137,207,139,125,244,8,6,77,225,29,133,178,156,133,76,94,169,126,22,214,190,38,30,182,245,76,89,28,46,229,62,186,66,113,81,165,76,126,27,74,106,79,79,93,201,49,12,209,202,77,123,237,207,106,92,191,4,136, +164,221,9,16,138,209,78,32,33,89,182,113,175,153,76,241,140,60,249,139,241,210,7,245,106,98,251,152,126,136,183,110,241,253,124,190,193,88,138,178,227,94,194,107,101,181,176,136,122,131,251,168,200,162, +215,133,223,21,200,21,56,12,54,161,123,144,109,237,63,118,133,207,243,190,182,81,73,51,229,133,43,205,196,231,174,48,237,232,187,170,135,56,1,66,107,132,250,185,74,195,78,2,159,123,40,134,231,60,151,198, +51,191,246,109,99,30,81,131,114,75,3,98,108,229,184,60,245,95,23,17,114,146,183,205,61,247,104,84,218,252,14,187,235,188,55,58,153,7,217,233,216,29,26,199,166,103,129,21,227,237,71,236,194,156,198,222, +61,219,87,50,83,209,131,238,161,86,185,139,236,239,247,112,78,133,143,36,62,12,1,231,174,196,206,114,1,115,226,15,118,103,15,92,89,209,182,250,148,62,23,209,47,193,149,200,104,192,53,246,145,209,227,185, +125,22,44,69,14,98,180,29,8,155,200,240,41,174,42,250,10,143,85,72,136,24,78,137,63,182,217,132,131,172,71,140,252,131,55,188,97,251,126,187,229,159,66,140,89,6,32,13,161,131,26,244,96,93,142,177,167, +227,139,53,34,93,234,151,180,93,202,20,223,191,166,110,49,27,78,209,14,226,223,157,135,161,11,241,54,138,214,37,49,202,151,211,170,242,37,234,5,122,182,171,104,19,174,89,50,164,183,222,177,103,45,192, +179,231,30,21,190,121,254,186,234,230,133,91,234,154,105,24,160,235,27,151,178,247,224,136,140,160,22,17,53,22,127,130,4,179,221,53,240,247,22,149,11,153,175,104,236,252,32,77,211,37,234,113,155,214,75, +119,49,145,130,44,45,112,138,223,111,199,56,73,20,30,242,143,55,251,15,248,82,242,28,106,104,35,235,85,29,6,67,133,195,68,163,113,35,255,150,82,40,13,123,184,135,29,131,22,195,151,73,112,95,215,16,42, +91,47,39,212,157,173,202,153,111,30,106,154,100,51,245,64,38,23,35,98,115,32,90,80,181,11,123,12,52,146,250,181,54,100,145,243,225,223,25,75,229,30,36,105,157,182,144,232,178,62,134,88,125,135,53,246, +162,42,113,250,197,106,247,38,93,170,38,192,178,187,162,147,230,85,10,90,26,111,141,159,122,178,198,164,87,79,138,211,38,11,149,241,106,242,163,133,93,146,133,191,247,238,88,201,134,157,180,208,62,112, +37,139,136,198,151,49,83,140,94,226,75,152,51,166,61,154,148,178,189,167,21,214,83,252,222,145,88,167,247,115,32,74,112,143,73,82,3,174,177,119,39,136,213,128,140,167,94,86,137,194,54,103,204,101,2,10, +162,139,183,135,207,46,198,92,65,75,70,29,124,236,200,113,179,150,222,180,250,238,159,171,48,246,24,17,245,24,86,34,87,97,14,187,104,96,12,39,16,238,121,146,176,205,99,131,231,152,71,191,154,109,233,39, +124,140,163,254,13,108,136,243,202,83,204,226,215,217,44,63,97,9,25,93,93,124,55,9,227,58,143,141,196,155,93,78,40,40,214,60,197,14,160,14,133,61,25,9,53,248,35,116,116,143,34,183,83,56,71,137,219,24, +133,79,248,28,192,203,149,177,113,118,0,213,48,210,249,148,12,68,15,147,150,109,177,137,213,21,120,248,39,229,129,99,240,218,215,186,52,209,138,225,195,196,165,237,238,135,107,28,241,238,110,164,53,135, +127,73,63,43,1,45,126,37,37,187,247,19,206,176,48,88,174,127,128,221,136,140,106,8,92,171,103,13,140,37,30,68,210,99,48,253,81,51,202,151,88,3,206,103,215,65,174,237,47,186,159,68,66,72,206,58,239,52, +48,215,247,21,119,119,196,255,89,189,156,128,190,133,86,122,247,135,247,238,210,51,179,248,123,38,219,217,115,202,31,129,99,231,139,87,156,68,185,251,154,134,175,1,215,216,135,175,195,243,231,12,73,90, +248,120,143,233,181,78,50,176,105,133,253,230,187,179,136,127,255,179,227,144,217,178,135,120,61,111,127,51,18,113,42,106,242,55,22,74,78,190,68,98,238,53,146,131,31,140,90,98,14,98,128,181,16,168,251, +87,124,139,167,112,140,191,200,128,12,184,163,190,201,45,207,15,131,176,137,221,196,125,176,171,214,121,108,132,249,150,98,35,199,163,247,230,16,207,26,23,127,131,18,107,153,76,207,136,140,88,147,138, +196,162,121,174,53,24,121,37,153,151,42,153,204,142,36,134,144,86,131,178,5,18,31,103,63,75,29,71,133,103,97,8,61,7,122,76,178,71,34,202,171,228,181,206,186,108,156,75,251,221,95,66,198,83,221,227,146, +18,223,95,25,203,163,14,35,44,95,72,232,107,113,66,125,126,202,144,19,112,198,128,159,125,181,96,166,222,249,243,194,165,236,147,184,198,62,101,245,157,98,87,83,145,149,191,132,202,20,154,220,13,151,43, +156,203,228,3,49,35,99,47,168,163,18,106,177,222,190,1,173,4,109,244,134,92,156,243,100,192,187,203,71,232,38,31,73,209,124,196,183,243,225,173,235,115,49,191,243,228,122,147,126,237,133,48,154,75,251, +182,182,160,104,210,42,180,128,209,95,139,113,190,254,245,241,230,254,129,51,172,193,15,165,47,176,140,110,187,234,236,82,88,4,100,40,85,128,53,101,5,113,120,30,160,96,158,108,36,113,73,92,94,232,18,137, +237,199,133,174,195,255,240,249,93,99,255,31,42,63,146,151,246,109,219,49,84,214,104,198,123,49,69,219,236,239,57,71,202,147,82,236,182,137,160,116,88,72,161,65,62,5,99,174,159,101,212,27,85,192,83,70, +124,33,116,12,243,93,196,168,215,127,220,205,172,5,142,185,126,192,117,102,199,160,30,102,199,23,61,204,166,79,187,91,248,159,111,23,144,132,114,74,20,200,110,70,62,209,202,140,39,241,215,177,62,216,110, +61,12,33,134,254,67,23,90,180,75,252,133,46,225,83,157,173,1,221,175,173,80,229,62,133,247,86,255,100,41,173,57,8,145,108,78,8,34,25,23,152,165,34,209,35,146,91,200,34,57,31,226,220,134,223,45,249,135, +119,130,190,30,115,40,15,11,179,35,193,204,161,52,58,216,93,44,130,86,121,36,191,224,26,251,72,106,243,63,60,151,141,165,122,97,144,177,39,79,91,228,135,191,88,195,229,141,111,164,39,28,146,13,244,68, +66,213,167,193,62,130,226,178,29,137,103,91,228,14,84,214,43,128,56,202,27,46,15,124,211,65,152,216,237,190,94,118,174,175,228,155,140,122,78,48,246,250,87,133,96,31,18,119,255,152,2,41,25,250,164,104, +28,180,96,169,232,235,189,49,203,204,54,160,157,77,128,0,254,248,72,75,243,222,93,13,60,117,1,36,255,84,200,163,142,64,42,229,79,220,234,158,78,208,120,171,48,76,137,85,201,4,208,67,234,101,32,157,182, +1,146,168,16,82,98,226,11,197,16,231,207,237,87,200,38,104,161,255,243,156,249,57,24,51,25,247,170,137,133,125,180,115,59,237,13,123,105,119,163,132,169,35,62,198,79,22,97,229,52,130,21,223,221,50,126, +123,201,205,56,146,206,63,20,150,128,122,124,208,74,190,112,145,242,33,74,174,35,39,19,139,179,5,123,99,238,241,65,105,192,53,246,65,169,43,245,30,124,105,254,108,38,167,141,157,11,109,18,107,30,26,56, +211,8,85,162,66,149,241,36,69,95,31,177,200,99,113,49,4,133,9,73,228,0,47,109,99,220,17,240,182,170,208,82,45,179,40,9,116,109,25,89,140,118,179,138,5,125,124,221,150,93,211,134,149,132,24,217,110,155, +195,72,4,171,187,243,195,41,230,222,143,167,153,71,41,26,18,230,62,41,26,134,201,36,78,107,60,252,147,185,159,239,244,166,38,64,200,28,133,108,26,19,107,143,241,26,30,85,5,91,73,32,160,236,51,90,92,71, +73,91,97,242,253,69,253,22,90,97,216,165,35,235,1,243,111,38,22,81,155,20,78,66,138,162,79,107,200,57,94,104,148,29,36,35,245,117,45,176,170,60,118,112,250,62,232,102,232,182,222,168,146,85,9,100,223, +135,49,158,70,30,68,196,118,197,46,2,26,138,33,85,178,92,85,180,74,204,10,211,190,20,194,50,139,132,225,153,47,187,52,143,125,146,64,22,250,19,22,194,106,76,33,120,145,172,163,192,127,44,82,173,130,87, +14,112,29,91,64,166,71,231,220,25,65,230,40,137,46,57,196,125,42,135,35,61,43,49,174,93,159,221,226,49,55,138,48,87,37,2,104,185,146,114,26,112,141,125,202,233,58,170,87,202,65,17,212,93,162,152,21,242, +130,88,246,180,165,155,77,171,231,199,154,122,176,43,182,164,178,115,149,94,120,107,144,98,77,31,96,121,18,107,208,194,48,60,206,3,93,138,177,43,83,56,183,199,187,150,157,197,11,110,93,13,163,233,149, +122,64,40,243,168,244,30,3,60,98,198,95,166,35,133,53,79,80,125,219,174,223,56,91,40,133,75,111,174,166,96,73,30,168,69,98,156,149,216,244,156,72,70,189,44,57,2,221,243,15,224,214,27,247,29,109,250,112, +158,78,156,207,62,6,139,136,242,4,10,45,249,39,4,157,251,176,45,39,117,110,16,62,67,8,211,52,127,246,23,243,218,79,170,0,62,35,138,219,219,92,128,119,39,162,34,51,61,95,82,82,31,234,5,167,37,230,114,146, +186,21,239,31,106,90,60,55,198,52,122,106,180,217,162,74,89,12,92,173,36,160,155,193,76,12,81,31,52,165,146,217,247,65,7,173,24,223,253,24,222,251,174,168,224,193,167,179,224,222,205,2,170,138,106,233, +232,233,111,33,125,211,51,241,251,118,213,61,227,98,161,162,201,136,60,112,45,158,45,9,99,217,197,130,115,12,24,183,194,188,60,124,145,121,138,36,187,16,85,86,79,140,235,97,140,187,160,155,157,133,233, +231,121,53,19,186,188,62,193,234,184,22,9,244,183,72,198,235,251,105,89,16,58,83,109,43,9,43,164,148,220,205,187,127,63,75,3,174,177,63,79,38,133,28,89,177,82,54,3,187,110,95,120,68,221,113,182,203,216, +200,192,201,136,242,185,169,77,69,115,117,93,226,220,122,217,84,205,110,141,45,221,183,240,118,157,151,79,14,152,45,144,226,247,199,188,176,60,21,215,56,199,202,3,247,247,12,179,17,50,104,80,30,180,138, +104,147,89,108,210,177,195,144,183,239,136,146,155,31,223,217,192,122,225,167,249,238,120,42,70,95,166,76,126,179,42,85,49,12,5,240,72,95,128,161,82,222,241,49,157,67,37,251,92,251,56,97,33,127,209,98, +48,250,137,214,166,128,60,67,158,109,14,30,237,43,156,103,131,176,221,92,183,28,52,14,194,184,251,96,164,206,115,121,147,6,42,239,87,51,19,21,7,157,224,119,139,40,254,154,161,10,89,63,17,95,124,94,161, +125,188,58,107,93,45,249,118,147,218,17,136,238,32,131,48,231,220,215,14,56,133,254,88,180,217,22,164,105,44,178,177,179,249,252,222,198,190,93,139,109,54,237,213,187,116,153,156,56,122,119,190,19,255, +95,213,39,104,151,163,112,83,11,241,211,112,205,163,242,238,197,13,68,177,219,41,65,106,209,107,55,10,211,234,160,35,201,41,239,248,234,92,39,252,16,54,246,126,188,11,176,133,108,34,66,41,21,212,34,203, +121,4,161,124,226,243,233,230,69,244,94,141,26,10,187,51,228,247,39,188,99,213,11,206,165,114,106,181,199,119,143,115,141,169,240,35,173,18,78,223,62,243,73,243,232,213,213,76,133,34,156,11,57,10,181, +135,115,45,127,61,120,238,193,243,55,103,23,152,156,142,220,191,39,175,1,151,8,45,121,29,157,51,71,40,4,114,85,237,226,230,18,133,21,248,249,24,198,221,18,132,97,108,154,83,68,212,175,199,229,150,0,205, +41,149,63,137,181,223,140,97,42,195,139,92,157,2,153,43,169,34,149,65,21,228,113,203,238,35,166,36,173,211,170,242,226,118,198,235,86,200,71,156,248,165,168,154,173,13,12,177,21,61,119,133,25,119,68,4, +93,187,217,174,151,163,48,70,197,89,194,223,251,199,151,43,240,189,198,149,10,217,62,190,71,56,87,14,138,119,138,65,42,118,83,139,242,230,221,219,235,153,226,36,93,37,251,49,16,7,121,201,43,82,228,83, +27,227,172,226,39,127,209,243,116,226,126,246,96,92,14,19,7,80,47,227,162,156,231,230,86,229,77,127,193,50,41,248,145,177,216,204,253,235,185,170,149,200,111,239,69,9,86,133,24,20,198,16,47,141,108,84, +46,244,210,176,226,197,60,203,153,93,136,188,211,161,84,120,218,133,136,197,233,49,22,208,178,120,247,201,137,248,91,244,124,162,42,56,130,222,115,176,224,137,186,248,234,6,37,204,123,60,159,138,150,28, +217,78,62,37,3,122,174,88,52,47,100,108,133,45,81,91,82,178,135,154,128,88,145,141,145,79,144,94,252,63,21,248,111,141,93,75,244,164,162,47,141,97,94,114,15,90,172,229,149,231,202,150,193,84,99,87,113, +31,197,99,47,116,171,225,89,236,144,61,44,6,90,74,117,174,122,20,61,53,96,119,98,245,207,162,112,140,241,41,199,189,53,193,163,23,180,54,19,58,209,120,175,133,20,238,20,70,187,60,99,220,159,170,102,21, +187,109,130,126,161,2,69,114,13,120,246,58,236,224,52,7,187,209,64,59,3,207,127,144,123,208,2,175,66,45,253,237,153,235,107,197,97,76,221,203,181,78,49,16,229,139,231,51,173,217,113,56,122,80,168,234, +24,8,131,138,44,38,77,168,122,78,201,62,173,201,141,243,185,252,119,151,8,237,92,30,189,36,238,221,54,86,247,11,135,164,197,245,79,40,185,39,143,221,10,47,157,63,60,211,63,196,227,124,47,177,99,157,219, +72,238,239,58,206,105,250,238,189,100,156,5,67,191,243,96,196,19,190,39,255,199,213,33,90,172,20,70,208,174,70,139,155,127,250,193,119,47,124,41,254,115,171,153,188,115,13,245,67,246,79,190,138,61,84, +184,253,205,176,52,102,198,72,173,31,208,53,78,199,175,228,166,139,255,243,233,88,237,86,226,195,94,253,169,135,133,123,79,6,230,110,239,53,145,200,150,239,118,206,122,70,66,48,14,250,71,215,143,159,248, +78,76,207,73,233,223,206,41,62,186,103,71,103,73,141,185,66,114,78,176,40,185,123,240,215,67,160,115,32,185,177,112,255,30,87,3,174,177,119,103,196,5,175,1,25,37,209,240,138,19,71,93,188,254,161,18,88, +161,158,110,45,203,154,193,176,121,6,219,232,229,130,87,168,171,128,84,169,1,215,216,167,202,97,113,111,42,37,53,112,136,152,117,189,39,70,153,197,226,141,17,196,18,215,50,51,73,222,197,239,92,99,137, +219,92,113,53,112,62,104,192,77,208,158,15,163,232,62,67,216,26,176,97,18,194,19,42,6,43,73,149,238,152,190,109,93,67,31,182,86,221,19,164,38,13,184,158,125,106,26,13,247,94,92,13,184,26,112,53,16,37, +13,184,158,125,148,20,235,158,214,213,128,171,1,87,3,169,73,3,174,177,79,77,163,225,222,139,171,1,87,3,174,6,162,164,1,215,216,71,73,177,238,105,93,13,184,26,112,53,144,154,52,224,26,251,212,52,26,238, +189,184,26,112,53,224,106,32,74,26,112,141,125,148,20,235,158,214,213,128,171,1,87,3,169,73,3,174,177,79,77,163,225,222,139,171,1,87,3,174,6,162,164,1,215,216,71,73,177,238,105,93,13,184,26,112,53,144, +154,52,224,26,251,212,52,26,238,189,184,26,112,53,224,106,32,74,26,112,141,125,148,20,235,158,214,213,128,171,1,87,3,169,73,3,255,7,228,28,107,163,151,61,200,252,0,0,0,0,73,69,78,68,174,66,96,130,0,0}; + +const char* CompressorAudioProcessorEditor::qmul_png2 = (const char*) resource_CompressorAudioProcessorEditor_qmul_png2; +const int CompressorAudioProcessorEditor::qmul_png2Size = 23512; + +// JUCER_RESOURCE: knobstrip_png, 160459, "knobstrip.png" +static const unsigned char resource_CompressorAudioProcessorEditor_knobstrip_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,60,0,0,11,184,8,6,0,0,0,189,218,219,70,0,0,0,1,115,82,71,66,0, +174,206,28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,32,99,72,82,77,0,0,122,38,0,0,128,132,0,0,250,0,0,0,128,232,0,0,117,48,0,0,234,96,0,0,58,152,0,0,23,112,156,186,81,60,0,0,255,142,73,68, +65,84,120,94,236,221,7,184,221,85,149,254,113,122,17,66,239,24,170,212,80,2,132,222,123,7,169,161,247,94,21,5,69,41,2,98,69,68,197,142,221,209,65,84,20,105,34,132,20,66,34,138,56,214,41,204,56,227,232, +52,203,252,71,69,177,238,255,251,57,220,117,231,112,185,33,55,36,55,185,97,78,158,231,247,156,219,115,214,222,107,175,189,246,222,239,119,175,5,91,107,11,252,159,250,199,224,255,75,207,92,49,246,254,251, +239,95,227,174,187,238,218,237,243,159,255,252,241,159,249,204,103,46,248,232,71,63,122,249,7,63,248,193,203,111,189,245,214,139,110,185,229,150,19,223,250,214,183,238,241,134,55,188,225,165,115,163,225, +135,197,224,105,211,166,173,49,105,210,164,211,31,124,240,193,119,125,237,107,95,251,252,195,15,63,124,79,190,246,149,199,30,123,236,43,223,248,198,55,238,206,235,61,83,167,78,189,247,161,135,30,186,55, +13,113,239,167,62,245,169,123,223,249,206,119,222,119,221,117,215,221,249,186,215,189,238,189,175,124,229,43,207,206,191,209,25,106,11,205,233,70,152,35,6,255,240,135,63,92,228,251,223,255,254,74,223, +250,214,183,142,248,230,55,191,121,235,19,79,60,241,165,39,159,124,242,43,255,252,207,255,124,255,191,252,203,191,60,242,79,255,244,79,211,191,247,189,239,61,26,67,39,167,33,38,62,240,192,3,15,223,119, +223,125,15,223,123,239,189,147,191,250,213,175,62,50,97,194,132,233,143,60,242,200,55,242,58,237,206,59,239,156,144,222,127,224,245,175,127,253,61,23,93,116,209,135,78,59,237,180,99,143,56,226,136,85, +247,219,111,191,69,231,132,241,179,101,112,140,90,228,239,254,238,239,214,136,193,39,253,224,7,63,248,120,140,187,255,223,255,253,223,239,255,233,79,127,58,229,111,255,246,111,31,158,50,101,202,3,159, +254,244,167,39,188,233,77,111,154,118,249,229,151,127,231,146,75,46,249,251,243,206,59,239,71,233,189,31,159,113,198,25,63,62,245,212,83,127,116,202,41,167,252,67,158,239,229,107,143,93,113,197,21,147, +111,190,249,230,137,127,245,87,127,245,104,12,159,254,177,143,125,236,225,27,111,188,241,225,115,207,61,247,179,71,31,125,244,89,123,236,177,199,58,91,110,185,229,98,179,99,248,11,54,248,31,254,225,31, +86,139,193,7,231,245,131,255,246,111,255,246,192,207,126,246,179,7,126,242,147,159,76,72,47,223,23,35,31,186,234,170,171,190,119,254,249,231,255,34,61,244,187,195,14,59,236,233,189,247,222,251,79,187, +237,182,91,219,117,215,93,219,254,251,239,223,121,124,188,203,46,187,252,37,95,255,99,190,255,116,190,246,187,60,191,60,248,224,131,127,152,70,152,124,253,245,215,79,184,237,182,219,30,253,192,7,62,48, +229,154,107,174,153,124,194,9,39,124,42,63,123,204,214,91,111,189,86,220,125,193,23,98,248,44,27,28,247,92,228,71,63,250,209,166,255,248,143,255,248,218,244,228,253,191,252,229,47,31,200,235,3,113,229, +123,227,138,83,94,245,170,87,253,123,222,108,219,113,199,29,219,14,59,236,208,14,56,224,128,150,222,108,233,165,254,231,109,111,123,91,75,160,106,103,157,117,86,59,243,204,51,91,26,165,29,119,220,113, +45,110,219,249,189,237,182,219,174,237,185,231,158,109,175,189,246,250,143,124,109,122,60,99,66,126,103,106,122,255,145,184,249,164,24,125,227,166,155,110,58,110,165,149,86,90,114,86,141,158,37,131,99, +236,210,25,151,251,252,235,191,254,235,77,49,244,222,95,252,226,23,15,125,247,187,223,189,255,19,159,248,196,148,215,190,246,181,63,57,254,248,227,255,180,243,206,59,183,244,68,139,241,237,226,139,47, +110,151,94,122,105,231,121,197,43,94,209,255,241,187,223,253,238,246,174,119,189,171,93,112,193,5,45,46,222,226,206,157,70,137,139,183,19,79,60,177,221,112,195,13,109,252,248,241,109,167,157,118,106,249, +123,127,218,126,251,237,255,45,198,79,207,207,79,138,225,211,94,243,154,215,76,142,209,31,94,111,189,245,142,92,117,213,85,87,156,149,224,54,100,131,211,163,43,196,216,241,113,219,219,126,253,235,95,63, +244,31,255,241,31,247,39,224,60,144,55,247,143,233,189,223,102,124,181,67,14,57,164,157,115,206,57,45,189,220,18,161,91,220,186,101,236,182,140,205,206,235,171,95,253,234,206,247,50,29,53,70,167,183,90, +220,254,89,70,51,62,110,220,49,252,168,163,142,234,184,190,70,140,183,252,118,179,205,54,251,167,184,254,164,252,189,71,222,248,198,55,78,207,255,121,199,234,171,175,126,222,178,203,46,43,162,47,60,148, +222,30,146,193,125,198,158,18,35,63,253,155,223,252,102,250,143,127,252,227,251,18,88,38,165,165,127,190,239,190,251,182,131,14,58,168,99,232,101,151,93,214,49,238,202,43,175,108,183,223,126,123,231,141, +103,154,105,233,253,150,159,237,24,237,103,222,243,158,247,180,76,67,237,194,11,47,236,24,204,221,185,183,94,78,116,110,49,166,227,37,122,57,193,170,37,6,180,125,246,217,167,165,167,219,230,155,111,254, +243,177,99,199,78,203,239,76,126,223,251,222,247,157,244,244,93,203,47,191,252,43,150,88,98,137,117,98,244,34,51,51,122,166,6,247,185,241,120,198,62,245,212,83,143,39,80,221,151,32,50,53,111,252,183,229, +190,220,149,49,12,213,171,9,48,157,30,188,231,158,123,58,6,107,132,204,173,29,23,231,198,137,218,29,163,244,166,49,124,250,233,167,119,30,46,253,142,119,188,163,211,243,25,30,237,216,99,143,237,24,156, +105,169,29,122,232,161,157,120,32,208,197,232,223,174,177,198,26,211,242,51,19,63,252,225,15,255,112,219,109,183,189,59,6,95,180,208,66,11,173,25,163,159,119,250,122,94,131,5,40,99,150,27,235,89,198,190, +247,189,239,157,150,55,254,123,255,249,29,119,220,209,233,17,134,94,125,245,213,237,218,107,175,237,127,24,254,229,47,127,185,99,224,129,7,30,216,18,121,59,15,111,208,123,39,157,116,82,103,8,232,189,195, +15,63,188,243,61,6,11,102,2,88,25,123,228,145,71,118,190,239,103,189,242,22,110,30,247,126,122,133,21,86,152,150,198,152,248,150,183,188,229,187,27,108,176,193,157,49,246,164,60,43,60,159,123,63,175,193, +162,177,0,101,204,114,99,61,203,88,227,149,27,126,232,67,31,234,244,34,67,147,26,118,30,189,171,39,245,138,113,200,45,53,14,131,24,119,204,49,199,116,162,178,72,206,40,227,212,207,190,252,229,47,239,24, +172,167,25,231,107,101,172,222,245,251,188,196,247,13,35,239,97,163,141,54,122,122,153,101,150,97,244,228,52,236,99,171,172,178,202,39,99,236,94,121,150,158,81,32,155,161,193,230,89,83,143,104,44,64,25, +179,229,198,140,21,124,184,171,94,76,146,208,49,86,235,115,69,111,200,20,227,141,235,173,250,121,110,95,174,109,252,250,58,183,102,132,30,175,158,213,40,92,89,99,148,103,212,88,247,183,19,184,58,211,22, +163,215,93,119,221,167,18,169,167,230,119,31,73,3,77,29,53,106,212,45,49,118,108,158,37,7,155,171,7,53,88,6,37,169,48,207,154,122,68,99,1,202,252,40,184,148,177,122,54,249,111,203,226,160,51,246,184,46, +67,189,158,124,242,201,157,6,41,151,55,142,69,233,204,169,157,96,101,58,18,232,24,172,199,25,92,227,150,87,48,190,130,150,96,102,92,51,86,240,202,20,213,49,118,247,221,119,239,188,142,30,61,250,231,153, +162,30,206,223,154,158,169,236,209,69,22,89,228,220,24,187,122,158,231,100,101,131,26,44,93,148,65,73,42,204,179,166,30,255,153,177,199,88,99,182,140,213,179,122,77,15,112,89,143,239,113,109,6,139,206, +21,192,146,43,119,198,104,25,237,251,31,249,200,71,154,68,196,239,51,82,175,114,111,110,236,255,211,251,254,190,134,100,104,25,43,107,75,150,214,49,218,124,29,119,126,50,223,155,144,161,50,109,205,53, +215,252,66,140,221,41,207,178,3,199,243,115,12,182,16,144,27,75,23,101,80,146,10,243,172,96,35,26,151,177,12,213,187,130,18,23,243,125,61,81,227,216,207,113,245,44,24,218,183,191,253,237,150,213,82,203, +2,161,227,13,140,52,23,39,194,118,30,211,20,15,121,243,155,223,220,25,255,12,246,247,140,125,174,93,99,94,111,122,250,82,210,154,159,59,95,75,16,123,106,157,117,214,233,184,118,62,159,190,228,146,75,94, +25,99,77,85,75,116,79,85,207,49,216,170,199,66,64,110,44,93,148,65,137,142,230,85,111,74,52,174,0,165,167,184,175,168,233,235,122,149,11,235,81,70,102,1,209,255,100,89,216,49,90,47,223,125,247,221,237, +115,159,251,92,203,186,184,19,248,100,93,89,36,116,50,44,143,158,55,142,245,42,23,214,160,101,180,175,233,89,189,42,117,213,211,98,133,175,175,181,214,90,255,154,185,250,129,12,143,71,147,144,220,29,99, +119,28,24,181,159,99,176,37,158,85,143,133,128,220,88,186,232,15,222,116,211,77,45,235,215,150,245,107,123,251,219,223,222,9,80,53,102,245,108,25,203,240,68,243,150,191,209,50,165,181,196,130,246,247, +127,255,247,45,127,183,211,219,19,39,78,236,68,118,13,168,167,165,160,146,16,134,242,152,74,84,244,44,67,185,48,183,21,177,253,63,34,191,249,159,209,26,154,23,248,92,47,199,216,63,198,208,41,105,156,71, +243,241,180,69,23,93,244,178,24,44,11,235,207,185,159,99,176,245,172,37,158,85,143,133,128,63,38,184,8,58,230,214,79,126,242,147,157,158,50,150,181,170,49,155,85,77,167,103,171,247,179,171,209,210,96, +45,83,90,203,212,214,18,237,219,223,252,205,223,180,199,31,127,188,101,61,220,178,22,238,207,196,222,255,254,247,119,26,147,177,198,190,134,244,127,25,207,12,173,177,42,203,18,8,5,77,175,188,206,247,183, +217,102,155,150,204,171,243,202,248,76,85,63,141,241,95,75,131,61,146,41,235,142,24,187,113,119,47,63,203,96,59,21,22,239,214,179,150,120,230,74,173,44,104,24,147,122,209,155,18,109,5,20,1,166,2,148,113, +200,61,255,250,175,255,186,101,206,110,249,27,157,135,209,122,59,67,165,227,230,198,113,25,108,252,38,145,233,4,50,127,91,131,10,114,12,246,112,107,222,197,147,178,36,236,24,38,51,51,206,77,75,101,108, +214,200,205,163,3,52,76,166,170,7,51,11,124,99,181,213,86,155,20,99,247,205,179,70,158,197,59,27,150,221,3,218,182,140,157,10,139,119,235,89,75,181,238,105,72,15,122,83,146,2,127,92,75,123,163,26,131, +49,140,211,179,12,142,151,116,158,4,191,206,215,18,249,91,34,126,199,59,50,205,117,122,152,59,27,239,130,21,15,169,168,206,232,50,188,190,54,110,220,184,54,102,204,152,206,255,43,65,17,197,53,0,67,183, +216,98,139,206,107,82,204,142,199,197,224,239,166,67,166,102,140,79,89,120,225,133,175,139,177,235,229,25,245,28,131,237,65,217,150,177,83,97,241,46,40,104,77,61,234,63,102,172,143,43,115,242,185,175, +139,198,2,84,119,143,150,193,73,90,154,135,91,251,153,175,127,253,235,45,91,60,141,219,39,249,111,89,227,118,198,47,87,214,112,181,208,40,163,53,132,33,195,219,54,217,100,147,182,241,198,27,119,122,157, +135,49,180,140,221,106,171,173,58,94,96,236,39,215,254,89,220,250,33,137,72,230,228,207,197,216,49,121,44,35,23,126,86,15,219,112,179,7,101,91,198,78,5,195,172,101,101,72,12,243,136,150,130,133,49,230, +205,120,99,211,167,79,239,24,195,117,141,89,15,227,203,216,255,252,207,255,236,124,79,0,19,188,44,29,243,127,116,166,35,115,48,47,233,54,152,225,254,174,215,154,17,188,102,234,105,73,48,58,27,4,140,54, +134,245,122,25,203,11,184,127,92,253,169,52,206,132,196,158,111,38,112,61,220,151,121,117,220,186,223,96,91,169,118,23,109,184,217,131,178,45,227,141,88,217,116,7,19,127,80,67,72,11,189,161,108,179,54, +83,78,54,233,58,6,37,97,233,68,101,6,114,101,70,255,215,127,253,87,167,1,124,141,91,155,154,178,83,217,233,93,211,17,79,41,131,203,147,106,213,229,255,247,152,25,252,191,107,175,189,118,203,66,161,51, +23,139,204,122,157,107,51,214,99,24,198,237,127,251,178,151,189,76,222,255,173,229,150,91,110,74,12,61,48,207,186,121,150,234,55,216,190,177,173,84,187,139,54,220,236,65,249,79,146,67,119,130,76,122,191, +211,43,50,31,137,65,5,22,223,211,195,34,176,192,196,112,70,49,60,141,215,49,90,15,27,203,220,220,215,69,234,143,127,252,227,157,177,171,231,42,253,212,192,62,231,226,150,143,12,53,247,107,24,83,151,239, +189,244,165,47,149,74,118,140,99,52,23,215,243,122,89,16,243,245,4,211,63,166,81,158,72,128,123,44,175,12,62,63,207,70,121,150,233,55,216,38,185,125,99,91,169,118,23,77,7,122,145,75,215,24,246,134,140, +29,115,98,229,198,230,102,115,107,246,153,91,166,180,78,111,155,111,191,243,157,239,180,36,48,29,3,25,93,134,11,108,2,151,8,237,239,9,132,149,180,104,0,17,155,145,30,70,26,231,245,152,194,18,144,218,202, +43,175,108,156,118,130,148,207,51,21,117,122,217,231,122,56,195,237,47,113,245,31,38,23,159,154,70,16,169,175,233,27,199,43,244,27,236,68,192,38,185,125,99,91,169,90,175,12,54,231,218,169,144,70,74,249, +76,23,166,42,153,150,55,152,253,229,78,82,146,96,215,49,62,67,163,61,250,232,163,157,0,101,204,234,249,164,171,253,70,107,12,217,85,237,110,24,199,230,98,233,38,163,68,111,201,139,215,108,213,118,50,50, +159,155,34,185,116,166,155,142,43,11,82,201,174,58,70,235,101,189,91,155,18,9,102,79,102,174,158,28,59,38,198,216,155,242,108,158,103,149,126,131,29,127,56,17,176,73,110,223,88,15,75,56,24,197,56,143, +6,96,176,192,37,122,91,245,248,190,249,87,6,38,79,150,69,213,199,166,31,1,170,26,65,207,50,86,80,227,178,198,63,99,36,51,201,217,59,145,187,30,195,199,35,5,53,133,105,156,21,87,92,177,227,210,217,237, +232,24,206,133,203,197,245,114,141,97,217,88,92,252,71,121,175,19,147,169,49,248,214,60,91,228,89,173,223,96,103,61,142,63,156,8,216,36,103,176,165,155,101,25,183,102,160,6,176,62,53,69,212,18,207,171, +104,235,141,125,241,139,95,236,188,57,111,84,2,226,205,139,1,94,25,38,149,244,179,198,166,241,109,238,230,254,147,39,79,238,76,85,26,71,163,137,11,26,205,90,187,26,208,248,77,0,234,244,110,214,191,157, +158,101,96,53,192,250,235,175,223,113,107,61,44,63,72,99,252,40,1,118,98,18,20,6,191,167,63,82,87,226,225,96,203,89,143,227,15,39,2,92,90,210,193,141,25,205,48,13,96,58,176,83,161,183,53,128,150,215,195, +213,83,54,238,202,29,185,103,237,80,50,82,250,40,250,50,90,170,89,137,137,113,206,120,238,47,0,138,7,188,162,226,131,215,175,124,229,43,29,151,102,112,182,118,250,199,112,150,130,45,249,115,203,74,169, +243,53,185,131,196,36,238,254,100,222,235,164,52,64,185,244,216,78,198,85,6,59,197,115,176,229,172,199,241,135,19,1,105,156,133,186,181,42,215,53,142,181,158,49,92,139,119,198,86,80,49,230,106,169,39, +232,24,155,181,97,87,211,141,36,66,79,27,227,22,23,89,149,117,166,46,61,110,90,51,222,53,134,158,55,4,196,129,106,0,61,207,157,179,45,219,25,191,122,216,231,26,129,139,103,115,190,99,176,33,151,222,254, +161,196,35,174,205,96,65,235,217,6,59,178,116,138,231,96,203,89,143,227,15,61,194,24,46,106,222,20,104,244,186,30,174,19,3,65,203,88,52,117,120,101,164,241,89,171,31,145,184,54,3,188,250,190,191,165,7, +37,43,166,44,79,69,114,134,235,113,211,155,94,55,230,77,121,26,232,179,159,253,108,199,88,46,45,103,54,134,69,108,61,158,83,136,142,123,75,68,50,147,252,57,175,79,100,153,248,245,36,42,162,180,105,201, +24,94,189,191,135,157,207,58,178,116,138,231,96,203,89,143,30,149,241,24,191,12,53,7,27,195,230,97,91,50,30,46,207,216,154,82,24,90,83,77,205,175,149,130,250,158,70,51,174,185,169,158,172,140,204,107, +25,46,65,97,180,200,46,7,103,188,222,150,54,26,199,220,215,244,99,204,114,103,15,215,150,133,201,169,147,52,253,62,189,61,53,177,232,241,52,208,228,24,122,72,95,148,94,245,89,169,165,243,89,71,150,78, +241,28,108,85,162,110,29,90,71,33,220,217,226,65,106,105,15,202,171,30,229,13,94,25,91,105,97,101,79,190,198,248,108,167,118,60,70,79,9,82,230,237,74,67,107,158,54,174,25,239,235,92,92,143,243,4,13,196, +176,108,186,119,242,103,27,0,146,14,95,227,214,146,17,25,152,180,55,195,241,119,49,120,66,122,250,177,228,210,15,197,88,219,61,155,230,89,241,89,6,59,140,118,62,235,200,50,17,238,151,90,81,136,23,4,60, +198,175,141,53,137,135,214,174,109,86,65,77,239,73,65,43,15,102,116,25,92,203,74,227,218,56,23,201,77,89,122,173,210,80,43,44,99,185,22,29,149,151,251,186,204,205,208,97,44,23,230,206,222,155,94,101,172, +135,59,155,154,188,183,140,227,95,166,65,30,140,241,147,98,240,237,49,116,135,60,214,197,203,61,203,96,39,239,14,163,157,207,58,178,148,164,235,81,134,122,24,175,71,69,106,95,103,60,247,246,212,6,64,45, +235,106,181,35,88,9,84,26,196,24,23,176,108,224,11,64,214,198,178,49,43,41,61,90,233,39,163,107,29,205,112,211,150,158,228,206,2,147,169,71,68,46,99,189,154,166,140,95,6,231,123,63,200,123,156,28,247, +126,56,167,17,111,140,161,219,229,121,89,158,81,207,50,152,204,192,201,187,195,104,231,179,125,71,150,29,215,149,82,118,111,163,214,246,170,117,105,101,95,26,65,131,72,59,171,135,185,179,5,130,104,45, +130,155,190,24,44,59,147,83,11,74,198,169,49,203,200,218,56,208,179,162,45,227,196,13,189,43,56,137,194,220,217,56,46,131,245,180,40,93,11,138,44,28,30,206,123,153,158,64,54,33,70,30,154,103,155,60,206, +148,151,124,150,193,249,194,66,100,6,78,222,29,70,59,159,245,199,237,108,232,77,46,108,231,82,164,53,45,249,154,134,176,138,49,222,205,147,150,108,12,175,113,204,205,43,160,25,191,82,197,50,88,10,154, +29,150,206,84,100,156,154,166,106,19,129,177,121,63,45,187,143,29,99,179,13,219,201,149,25,165,39,245,54,247,102,44,119,54,126,109,37,103,170,250,207,60,15,100,243,111,210,82,75,45,101,139,199,70,158, +180,114,213,60,139,60,103,79,139,166,130,204,192,201,123,198,192,116,231,179,2,129,185,88,47,25,151,122,81,171,27,199,12,246,90,27,228,50,52,223,51,150,185,185,96,102,252,89,121,73,72,172,146,24,108,231, +210,50,81,224,210,203,140,46,215,230,222,26,154,177,12,99,176,220,153,177,122,152,129,92,92,170,89,217,151,213,82,130,213,159,19,169,167,199,157,167,164,81,166,100,252,190,38,70,110,159,199,74,201,30, +245,66,207,49,152,128,132,166,130,204,192,201,187,195,104,61,104,12,154,150,108,158,213,89,143,177,204,205,141,239,234,93,187,137,214,204,122,184,182,93,25,107,234,18,176,228,204,89,153,117,50,39,169, +164,4,67,47,155,162,106,27,200,152,245,55,24,90,15,99,185,119,220,181,211,171,245,152,147,185,186,120,19,35,127,150,69,132,96,53,57,238,124,87,12,180,14,230,206,118,46,59,251,211,207,49,152,90,134,128, +132,166,130,204,32,61,55,221,97,180,30,100,40,35,245,96,237,71,219,70,149,91,155,182,4,12,17,180,178,32,145,189,230,94,75,61,89,153,212,83,212,246,117,70,75,40,42,171,226,226,188,161,166,31,110,92,61, +203,115,172,138,186,141,173,133,131,105,42,255,231,239,211,24,143,231,253,76,206,252,60,117,177,197,22,187,42,70,238,156,199,246,206,202,220,121,80,131,125,145,90,134,128,132,166,130,204,192,201,59,67, +244,180,0,229,225,230,198,12,131,245,174,212,83,126,173,183,37,4,198,153,55,107,217,230,231,25,89,75,188,114,69,191,103,62,182,208,16,39,202,80,110,170,215,140,89,30,163,247,4,169,193,140,221,112,195, +13,59,83,84,92,249,223,226,214,147,242,158,166,164,119,63,31,3,37,27,122,215,78,199,210,149,66,15,122,182,68,26,68,45,67,64,66,83,65,102,224,228,221,184,18,156,202,216,26,183,149,95,155,182,100,100,122, +214,247,204,139,178,31,17,84,111,232,161,250,88,254,235,97,132,116,177,198,170,20,209,212,227,255,170,49,203,88,13,80,6,251,91,30,127,155,177,105,216,95,229,111,79,203,251,122,52,31,63,146,169,200,6,188, +222,221,44,207,42,121,250,15,201,103,120,92,74,26,68,45,67,64,66,83,65,102,224,228,157,107,213,145,165,222,21,192,4,173,58,254,208,83,166,44,141,192,253,37,248,53,238,68,85,70,154,78,106,236,49,214,215, +25,197,53,121,146,177,202,88,159,51,140,161,188,162,214,195,190,230,231,253,237,52,206,31,210,136,223,206,207,79,142,241,83,162,4,176,20,172,222,93,71,239,230,233,151,56,205,208,96,63,68,26,68,45,67,64, +66,83,65,102,224,228,221,230,153,57,186,162,116,247,89,15,247,171,72,109,108,219,39,246,230,189,185,209,187,142,110,11,29,186,80,91,100,219,69,218,194,219,46,220,22,58,120,161,54,122,151,103,246,167,68, +95,189,213,167,227,120,206,120,101,180,0,198,3,24,43,42,103,216,252,49,13,248,221,252,206,148,196,148,105,105,188,79,228,125,31,151,71,162,33,179,90,169,187,119,103,56,134,203,223,233,160,72,131,168,101, +8,72,104,42,200,12,156,188,27,207,162,54,227,251,84,54,157,177,102,220,213,137,0,3,170,113,252,204,38,123,110,210,22,59,97,177,182,192,41,11,180,136,19,218,162,71,47,218,214,217,118,157,206,120,151,57, +25,2,122,177,59,161,24,232,198,140,22,35,210,240,206,145,190,23,79,116,254,245,55,9,112,142,72,47,234,114,101,219,178,47,25,40,114,153,169,168,133,14,138,52,136,90,134,128,132,166,130,204,192,201,187, +94,150,104,232,157,129,198,50,90,111,85,240,18,92,214,26,179,86,91,252,248,197,219,2,103,198,224,147,99,240,254,139,182,21,215,92,177,227,210,92,92,208,50,86,125,204,232,50,214,194,192,163,65,52,98,254, +230,31,244,44,99,211,232,63,200,207,57,41,20,149,201,29,182,202,195,149,71,229,121,142,148,105,166,6,231,151,22,162,131,34,13,162,150,33,32,161,169,32,51,112,242,46,184,232,69,70,115,205,58,254,168,158, +230,122,190,166,7,55,220,104,195,54,234,244,81,109,129,215,197,224,11,23,104,75,236,185,68,167,71,187,199,182,143,125,173,50,40,57,178,237,27,203,62,94,18,99,127,21,151,126,130,27,235,217,62,99,29,167, +28,144,103,92,158,245,243,44,151,103,80,9,211,76,13,238,83,204,47,76,7,69,26,68,45,67,64,226,224,153,204,192,201,187,195,232,58,153,215,179,222,156,6,48,31,215,156,236,149,241,163,79,29,221,22,248,88, +12,126,235,2,109,185,93,151,235,95,203,50,204,163,39,185,173,113,202,43,252,61,49,33,141,249,251,24,254,147,120,214,163,2,148,49,219,231,198,122,150,177,198,173,140,202,184,157,161,0,117,72,6,247,25,189, +72,159,14,234,36,106,25,219,39,52,21,100,6,121,147,83,251,14,163,255,104,108,75,74,244,124,25,171,183,203,229,183,56,120,139,182,192,195,49,248,11,11,180,181,183,91,187,211,123,92,181,206,141,172,113, +77,93,26,204,223,137,177,127,142,119,252,87,34,253,55,243,247,38,154,122,226,214,147,250,2,148,49,203,141,245,44,99,37,24,75,228,153,161,240,116,200,6,247,25,189,104,254,24,29,212,94,212,50,4,36,52,21, +122,219,201,123,198,213,20,231,179,198,174,232,44,138,123,211,21,212,140,191,157,118,217,169,45,48,101,129,182,240,221,11,183,205,182,220,172,227,238,26,67,164,151,193,89,160,120,36,37,249,250,127,198, +139,76,135,95,179,221,154,28,96,178,121,182,111,234,17,141,205,181,198,44,55,214,179,140,125,94,81,249,44,25,92,238,157,63,106,110,27,75,45,67,64,66,83,65,102,224,228,221,97,180,243,89,71,150,114,91,7, +91,206,122,28,127,56,17,176,216,120,233,39,146,52,188,111,189,78,170,218,55,181,253,37,107,234,223,219,169,176,120,207,144,248,94,122,244,33,171,30,11,1,185,177,116,81,6,213,151,84,152,103,185,176,196, +98,157,190,49,187,216,243,245,236,243,102,90,51,213,43,90,117,60,163,131,34,13,218,137,128,132,166,130,204,192,201,187,195,104,231,179,142,44,157,226,57,216,114,214,227,248,195,137,128,77,242,24,240,47, +249,222,143,51,215,63,105,195,205,30,148,109,25,59,21,22,239,214,179,150,120,86,61,22,2,125,185,49,67,245,170,148,209,60,107,234,17,141,103,170,177,156,45,131,251,122,122,65,193,33,143,101,151,86,222, +145,166,130,204,192,201,187,195,104,227,220,145,165,83,60,7,91,206,122,28,127,56,17,200,88,159,20,119,127,52,61,203,59,190,110,195,205,30,148,109,25,59,21,22,239,214,179,125,75,60,171,158,50,180,122,149, +11,191,36,207,144,84,180,179,109,112,255,31,112,200,252,204,216,49,182,45,195,180,252,190,78,222,29,70,59,159,117,100,233,20,207,193,150,179,30,227,209,137,128,77,114,251,198,182,82,237,46,218,112,179, +7,213,183,45,99,167,194,226,221,122,86,143,90,245,88,8,200,141,13,169,23,196,64,204,242,24,158,145,187,107,233,62,55,103,56,87,35,51,240,38,199,230,209,67,246,134,109,136,59,216,114,214,35,231,245,177, +175,249,30,119,181,187,104,195,205,248,100,164,157,10,209,87,67,138,192,29,67,243,188,32,249,255,76,83,203,153,141,229,193,190,223,103,248,226,121,53,182,200,12,24,175,103,188,113,13,192,8,155,226,26, +162,30,159,251,186,173,84,30,98,195,205,30,148,109,25,67,134,7,13,121,156,62,223,251,158,99,61,60,19,227,151,202,27,94,38,143,222,231,146,171,245,53,132,198,240,8,126,140,211,64,203,245,53,150,160,184, +72,158,57,202,46,13,171,193,47,196,67,134,251,119,122,6,15,71,11,247,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,67,67,251,135,60,15,247,216,195,30,123,216,99,15,123,236,97,177,135,206,163, +74,5,84,170,160,23,45,123,72,251,69,187,249,162,100,15,73,30,60,133,230,208,93,123,40,115,139,61,44,69,223,124,203,30,146,64,20,218,83,76,4,245,142,211,125,186,73,186,14,15,13,54,163,157,39,23,130,75, +36,51,95,177,135,20,62,140,173,94,37,1,166,151,164,197,34,46,163,227,160,223,32,36,255,210,151,190,212,81,247,80,239,81,246,144,66,208,130,112,121,58,146,17,207,30,234,173,50,150,193,52,28,164,131,69, +166,209,77,82,234,80,198,122,232,162,233,171,137,92,104,183,72,154,52,0,101,60,109,180,160,230,244,193,65,157,6,24,113,236,33,181,93,137,74,189,97,34,150,130,182,232,175,8,207,244,52,185,33,33,11,233, +33,53,15,99,245,46,93,117,1,151,69,174,118,227,120,117,31,200,136,97,15,141,67,26,44,46,75,157,195,192,110,85,29,145,168,94,6,129,232,97,6,211,107,49,150,186,135,44,81,163,209,117,213,216,167,212,117, +114,232,113,56,231,88,102,196,176,135,122,136,206,170,116,207,133,227,21,138,231,115,6,27,211,213,195,68,166,140,165,156,39,60,173,96,87,81,93,111,214,141,47,14,232,70,12,123,72,64,42,2,23,178,195,184, +110,254,176,20,178,165,125,174,49,76,70,220,205,31,210,85,235,221,98,162,76,95,84,6,142,91,71,4,123,104,204,50,86,79,137,192,165,151,52,102,169,96,245,110,225,120,94,53,8,163,141,99,106,90,74,123,189, +75,165,215,205,14,119,19,166,48,192,226,165,234,12,185,112,249,121,194,30,114,63,114,126,128,6,229,58,163,60,162,179,94,46,163,225,120,37,250,6,114,80,211,26,243,230,104,194,241,82,207,23,108,89,189,92, +23,162,208,110,210,111,21,123,200,232,121,194,30,26,123,100,192,140,96,180,249,150,225,122,146,88,148,58,150,75,131,57,52,128,222,39,53,20,216,140,95,191,47,88,49,180,251,26,27,6,214,53,55,60,201,207, +16,187,21,123,40,144,205,85,246,80,203,203,150,204,159,34,174,94,46,10,165,46,58,40,241,55,247,46,224,82,143,131,54,32,184,34,51,133,110,209,165,197,16,123,173,241,204,213,75,96,238,255,44,21,94,55,123, +72,48,51,172,236,33,73,2,99,5,21,111,66,132,150,72,72,31,61,82,71,129,201,20,84,42,89,189,171,183,129,28,60,192,184,151,101,137,204,69,151,214,141,47,140,52,39,51,148,216,148,203,75,74,232,180,103,196, +30,50,120,216,216,67,178,5,105,100,177,76,82,66,61,134,34,227,170,136,50,13,64,30,220,237,238,220,156,193,230,100,176,101,97,246,53,255,150,174,90,182,197,213,253,93,4,121,55,38,100,12,147,53,9,96,20, +62,115,133,61,148,1,21,123,104,245,131,99,16,113,37,18,176,59,92,146,30,132,231,125,225,11,95,232,199,234,40,103,141,117,6,235,65,61,44,104,137,212,94,77,81,245,248,154,225,34,49,241,181,130,48,233,54, +9,81,203,224,185,194,30,50,24,201,226,97,108,93,64,98,17,224,99,50,97,1,201,227,205,250,154,94,42,222,223,184,21,208,36,32,133,217,73,51,53,142,134,34,39,214,104,5,96,130,49,13,27,218,45,226,212,234,225, +185,202,30,90,44,72,253,244,130,222,169,158,2,98,153,87,61,92,146,155,122,138,248,22,144,228,207,22,22,133,224,137,238,198,60,247,7,102,155,163,173,166,44,46,12,15,13,97,217,185,244,210,75,119,216,7,2, +83,140,131,49,91,236,161,177,45,120,201,204,134,149,61,100,152,49,87,50,127,1,166,22,1,198,102,49,75,117,165,13,227,185,190,233,171,48,188,130,177,138,57,132,247,232,121,67,160,26,128,36,25,3,81,226,114, +26,206,185,202,30,146,252,91,178,89,217,48,178,88,253,186,139,167,104,180,186,92,204,171,72,235,222,14,189,39,130,215,252,92,249,55,55,183,132,196,64,212,170,138,241,162,190,94,151,91,151,132,120,32,123, +72,163,73,182,168,33,242,115,195,199,30,146,253,51,88,111,154,86,234,74,169,162,210,42,18,115,105,222,192,157,17,45,130,151,36,68,47,23,119,104,218,170,235,47,244,54,195,81,47,53,214,33,128,51,99,15,45, +48,134,157,61,212,171,101,44,67,235,41,148,199,247,69,100,227,93,48,50,125,25,179,140,171,213,20,195,245,184,249,186,150,146,114,115,136,15,111,240,59,2,214,204,216,67,235,230,97,103,15,5,47,6,21,126, +87,6,235,237,186,181,193,24,23,173,173,144,184,167,109,30,220,161,94,173,132,68,16,211,219,140,22,212,52,136,37,165,149,152,29,20,90,106,65,107,48,246,176,244,212,246,196,230,10,123,104,207,153,203,153, +151,139,74,235,198,240,76,73,166,48,115,115,55,119,104,65,193,181,187,65,203,234,101,41,169,70,17,184,136,198,103,198,30,34,104,24,60,236,236,33,152,195,166,27,248,3,231,208,237,202,162,178,96,37,113, +48,79,155,98,100,97,130,145,20,147,65,92,152,107,23,108,89,160,101,145,165,120,168,17,195,30,202,171,139,99,178,233,38,3,227,202,166,35,129,172,166,44,25,147,68,194,220,106,177,33,16,25,159,92,182,86, +85,181,37,100,209,161,209,140,121,65,177,92,121,102,236,33,196,40,63,51,252,236,161,181,105,237,48,22,64,205,88,227,218,102,158,71,116,22,176,76,73,122,216,180,83,200,187,241,202,125,11,180,228,154,17, +164,117,230,93,198,122,70,28,123,104,43,149,16,92,166,227,156,72,176,210,187,50,47,143,197,62,20,158,193,198,48,131,101,88,166,158,218,206,53,158,45,48,162,162,237,60,197,29,202,159,103,198,30,246,1,37, +255,53,207,216,67,43,25,233,167,185,183,48,90,238,9,253,145,47,115,233,186,202,70,178,193,189,77,85,26,73,54,197,88,65,10,221,194,216,249,130,61,180,37,195,61,69,112,103,71,222,188,105,69,30,220,125,131, +139,19,10,199,44,53,207,22,150,231,247,231,27,246,80,196,6,108,20,123,232,85,130,111,253,90,128,115,209,162,221,236,161,20,113,86,216,67,48,72,198,247,175,179,146,154,183,236,161,233,73,48,27,183,93,46, +23,217,42,172,225,186,207,92,39,35,65,176,218,41,35,231,32,123,56,101,158,178,135,230,230,98,15,215,61,105,221,182,224,121,11,182,5,15,95,176,45,188,215,194,109,225,3,22,110,163,199,62,147,232,67,125, +42,115,122,209,176,135,99,78,31,211,22,184,246,25,26,109,129,211,51,221,188,124,201,182,209,102,27,117,214,175,197,54,73,250,103,149,61,204,152,255,254,136,100,15,95,182,203,203,218,2,159,142,177,111, +206,243,138,48,135,187,46,218,150,89,115,153,126,198,80,48,171,27,87,134,194,30,38,16,142,108,246,112,139,109,182,104,11,223,191,112,91,224,139,49,248,109,129,180,246,94,184,189,100,211,151,116,12,22, +153,203,88,134,15,133,61,76,176,251,214,136,102,15,183,220,107,203,182,196,221,75,180,5,158,88,160,45,114,203,34,109,209,99,22,109,163,118,28,213,217,163,242,216,92,31,200,30,138,224,216,67,46,223,199, +31,99,15,127,58,95,176,135,219,236,180,77,91,234,158,165,218,2,79,46,208,150,126,221,210,109,209,243,23,109,43,29,178,82,135,0,55,79,155,134,60,166,49,41,164,6,16,192,138,61,204,207,252,87,140,125,124, +190,98,15,23,123,104,177,182,208,183,22,106,47,185,226,37,109,225,43,23,110,43,158,181,98,231,204,215,195,184,98,15,37,32,30,199,42,243,53,123,184,249,219,55,255,203,203,222,251,178,182,213,105,65,217, +207,28,211,246,62,123,239,206,238,98,246,198,254,146,44,236,207,216,195,184,238,139,139,61,140,187,254,93,166,158,127,201,252,251,175,238,172,115,141,155,155,205,94,180,236,97,84,119,211,146,125,77,205, +190,19,224,121,162,59,235,240,137,61,246,240,153,43,161,122,236,97,26,161,199,30,206,42,103,53,100,69,252,172,254,225,46,154,28,120,217,99,15,95,72,3,206,137,223,25,214,30,158,19,111,112,78,255,141,185, +98,112,143,61,236,177,135,61,246,176,199,30,246,216,195,30,123,216,99,15,7,157,114,135,52,15,247,234,30,246,234,30,246,234,30,62,111,221,195,98,15,95,212,117,15,137,93,170,118,41,246,144,78,179,42,211, +194,241,108,232,205,215,117,15,73,153,138,61,164,215,96,108,85,168,69,159,145,30,251,153,98,15,221,116,58,95,215,61,236,134,44,41,97,157,238,147,55,16,153,209,93,57,16,39,71,170,155,200,201,10,203,197, +231,187,186,135,101,44,185,33,41,49,105,18,240,131,178,142,188,129,212,129,48,141,193,52,154,122,151,250,199,207,242,6,138,129,249,130,61,164,220,41,153,112,73,251,245,36,189,21,193,74,25,173,135,137, +90,124,143,220,129,216,165,8,53,122,16,234,31,238,61,226,217,195,194,241,244,40,233,47,23,166,189,162,150,173,18,98,190,7,2,169,218,105,244,208,84,244,84,122,122,152,244,95,175,19,172,66,13,136,89,168, +131,70,92,221,67,50,67,90,44,110,219,141,227,149,194,206,215,170,151,141,99,106,90,141,66,168,70,210,52,35,224,18,50,79,199,49,98,234,30,150,62,154,150,146,244,72,15,22,85,170,87,11,195,171,138,121,116, +88,165,135,46,224,146,232,20,42,80,192,101,149,21,163,217,20,15,28,184,213,85,236,35,166,238,97,213,108,232,198,241,40,235,186,139,85,48,190,2,151,168,77,160,86,252,161,72,14,211,41,36,183,106,142,139, +222,206,136,201,14,189,114,239,121,86,247,176,216,67,99,144,88,180,202,133,233,197,129,149,241,138,65,244,117,90,74,81,154,80,28,192,97,236,18,176,85,208,235,158,183,137,217,186,25,195,121,90,247,176, +234,178,208,78,22,153,70,63,73,205,206,189,75,67,169,103,7,22,124,100,176,241,139,124,41,254,176,84,184,5,91,86,162,34,120,185,221,120,32,123,216,87,134,119,238,212,61,44,24,210,43,87,44,101,157,232,235, +169,90,136,166,34,211,82,41,222,141,111,110,109,8,192,117,140,91,226,113,52,90,233,172,187,65,75,70,251,156,55,65,107,231,25,123,72,245,14,199,171,177,86,162,81,64,6,28,79,15,50,186,2,89,73,253,49,136, +92,222,207,209,79,107,172,114,229,170,239,210,93,187,148,193,149,162,186,251,163,192,172,146,18,115,241,97,103,15,205,137,117,31,135,214,47,52,7,142,103,94,45,20,15,138,99,108,203,172,74,8,142,50,229, +234,134,1,149,45,105,191,100,133,59,123,170,100,104,225,181,133,255,84,101,46,74,190,193,234,30,14,43,123,104,110,180,0,0,91,214,149,20,230,82,193,11,146,39,16,81,204,22,134,103,250,209,227,12,175,68, +196,247,101,99,21,149,25,198,173,235,209,235,166,39,175,85,119,205,43,117,207,60,97,15,45,241,0,151,197,5,138,180,178,37,65,200,199,230,86,159,75,70,170,17,0,90,146,13,10,120,111,94,47,22,96,89,101,59, +101,90,36,196,158,170,114,233,99,174,111,172,207,136,61,228,218,195,86,247,176,216,67,9,191,132,131,226,157,123,138,182,130,144,207,11,199,171,186,163,104,181,42,172,44,109,20,204,244,188,72,45,151,214, +56,197,49,106,68,57,181,185,89,227,129,187,234,239,211,117,17,164,146,55,117,179,135,26,98,88,235,30,86,121,64,61,194,128,234,17,137,127,145,163,198,103,221,201,209,141,206,234,233,170,66,45,168,9,114, +85,220,209,247,36,35,117,161,137,215,202,179,129,34,130,22,61,117,213,46,157,171,236,161,59,53,244,90,141,179,74,9,43,192,8,70,245,8,70,26,67,111,9,88,130,152,0,38,122,51,90,210,82,75,70,247,3,232,121, +196,105,53,0,68,8,108,105,252,206,147,186,135,197,30,86,161,244,186,169,165,162,108,69,93,223,247,177,239,115,111,1,205,148,36,219,50,69,121,170,214,161,132,197,28,238,242,19,238,110,188,87,69,121,192, +199,226,139,47,222,65,3,114,33,255,115,234,30,206,53,246,80,41,177,129,69,147,187,167,24,189,174,151,185,190,113,169,215,36,29,240,29,217,87,213,58,228,226,122,29,117,106,254,54,157,21,101,202,221,205, +187,122,152,59,235,225,25,213,61,156,43,236,33,215,150,20,116,51,135,85,186,179,170,92,114,101,83,152,57,90,15,50,206,20,197,165,43,11,171,59,123,184,184,41,204,99,145,193,35,52,148,94,124,62,246,144, +24,117,216,217,67,247,227,72,68,236,67,153,170,234,122,10,189,42,104,213,13,74,214,187,230,105,46,202,96,233,101,247,69,8,213,211,140,174,21,85,25,46,79,23,23,140,223,121,202,30,74,64,202,88,146,127,27, +114,213,179,92,185,110,104,40,140,71,47,21,104,201,165,25,87,72,45,247,214,219,5,90,202,198,252,140,96,102,27,104,40,117,15,187,216,195,239,15,91,221,67,128,86,213,81,171,241,42,131,210,187,85,26,219, +180,34,88,73,61,235,226,3,65,139,81,12,174,77,130,110,156,214,215,229,220,182,131,252,31,92,89,15,63,95,221,195,186,204,100,174,212,61,36,247,181,251,88,105,32,87,238,166,210,184,179,241,203,224,90,73, +49,186,238,236,169,141,130,186,205,197,43,151,230,53,133,5,140,24,246,208,56,182,54,117,55,14,32,171,42,187,51,88,178,160,119,205,167,238,248,48,221,48,88,52,182,101,171,39,45,25,11,180,228,242,18,25, +83,148,228,6,242,51,226,217,67,227,186,138,160,115,103,144,165,181,175,29,14,235,230,50,152,209,230,224,50,90,42,153,162,22,109,193,5,23,236,55,148,177,67,97,15,231,121,221,67,111,64,174,45,47,38,229, +183,202,145,172,152,98,24,92,23,21,213,237,76,34,51,154,45,53,89,250,33,203,161,214,61,236,91,15,171,123,248,173,121,90,247,176,187,22,90,81,105,78,27,36,30,30,1,201,92,107,170,178,141,195,192,130,44, +37,24,51,171,123,40,175,174,186,135,105,208,121,92,247,112,223,125,218,134,155,110,216,1,43,1,88,94,139,84,41,160,3,143,8,227,97,92,1,150,149,34,14,181,238,225,136,98,15,55,188,106,195,182,216,197,139, +181,213,54,92,173,141,94,107,116,255,181,50,149,30,214,171,158,125,33,117,15,33,187,93,117,15,231,61,123,184,197,251,82,46,236,179,129,179,110,120,6,195,91,112,252,130,109,189,77,215,235,184,161,245,172, +177,87,213,243,228,198,47,144,61,252,94,95,221,195,233,243,188,238,225,250,175,91,191,45,240,245,24,11,195,187,126,129,182,252,97,203,119,220,155,75,215,30,148,69,124,85,211,155,239,217,195,209,111,73, +5,188,191,143,177,83,243,124,48,144,229,238,75,182,165,54,10,238,190,113,112,247,245,150,239,175,107,56,43,236,161,49,59,98,235,30,174,249,230,53,219,2,255,30,99,191,191,64,91,252,29,139,183,165,15,93, +186,45,185,207,146,109,145,67,23,105,163,198,141,234,16,227,197,29,86,181,247,161,176,135,35,182,238,225,154,215,196,224,159,46,208,22,155,176,88,27,117,233,168,182,236,41,203,182,101,79,90,182,45,118, +193,98,109,185,125,150,235,208,227,51,98,15,171,238,225,32,236,225,180,17,91,247,112,217,79,44,219,22,248,167,5,218,50,111,93,166,45,127,78,170,69,159,159,194,231,151,173,208,150,184,113,137,182,234,113, +171,118,10,66,90,225,152,175,7,178,135,221,117,15,231,27,246,112,221,79,173,219,150,156,178,100,123,201,219,94,210,150,184,118,137,182,212,155,151,106,75,223,20,216,242,189,139,182,149,47,90,249,57,236, +161,85,215,243,176,135,147,70,124,221,195,77,55,223,244,231,99,246,31,243,187,184,224,211,187,30,177,235,95,118,63,127,247,182,243,171,118,110,219,92,177,77,219,247,188,125,95,156,236,97,54,200,39,102, +60,62,214,87,248,177,191,238,225,139,157,61,124,34,11,135,111,116,215,61,236,177,135,189,186,135,189,186,135,189,186,135,47,132,90,27,146,34,254,133,252,225,145,250,59,61,131,135,163,103,122,236,97,143, +61,236,177,135,61,246,176,199,30,246,216,195,30,123,216,99,15,135,84,52,61,167,123,75,231,116,111,124,78,232,63,253,212,83,79,61,158,67,236,251,34,22,155,26,233,225,111,137,181,171,4,66,149,24,41,200, +131,96,205,153,17,69,0,61,38,153,162,195,53,172,82,157,33,59,251,165,112,119,185,167,135,240,219,81,43,136,171,24,38,71,177,36,75,110,80,164,223,112,153,88,54,240,127,155,29,207,105,249,153,137,81,252, +253,48,103,80,119,47,177,196,18,23,229,228,113,205,220,25,178,232,11,46,154,30,99,23,137,177,251,228,252,246,182,223,252,230,55,211,25,27,113,202,180,188,241,223,251,207,157,249,150,8,148,60,201,201,127, +61,12,119,0,206,64,167,135,7,31,124,112,231,129,231,104,36,231,200,246,176,32,59,78,248,125,143,193,100,18,69,168,149,126,164,84,6,94,105,72,246,223,127,127,155,127,79,231,40,117,90,26,99,98,206,147,191, +155,179,171,59,99,236,73,125,133,217,23,158,145,209,207,155,75,7,202,216,52,50,254,155,126,253,235,95,63,148,19,249,78,207,50,214,225,55,165,58,93,165,94,172,10,28,197,63,232,73,189,66,190,111,83,78,227, +48,104,96,221,195,23,37,123,200,104,39,249,207,199,30,58,55,238,46,3,72,44,163,119,93,142,93,158,113,254,249,231,119,26,217,25,50,158,137,88,92,195,103,175,236,169,92,38,56,53,94,241,136,171,170,34,90, +187,37,189,60,54,207,146,121,22,28,216,211,131,246,112,92,119,145,60,7,71,134,112,255,47,126,241,139,135,34,83,120,32,162,237,159,59,228,166,201,34,12,55,54,245,44,185,47,41,161,177,199,117,221,241,236, +149,222,163,106,176,24,195,101,112,201,250,41,113,141,85,227,152,43,51,152,171,215,54,45,183,246,49,195,53,136,159,101,44,45,9,28,160,36,22,94,163,161,254,121,54,245,31,206,223,154,158,99,214,71,23,89, +100,145,115,99,236,234,121,22,27,146,193,81,207,172,145,147,249,15,254,242,151,191,124,32,178,132,251,163,200,249,71,255,153,55,196,216,18,109,51,150,27,11,72,122,128,203,122,74,7,93,165,192,24,172,81, +104,58,234,118,127,42,0,218,202,18,138,243,4,70,50,112,190,98,15,171,152,5,99,171,132,16,81,25,29,7,61,71,81,45,174,75,103,48,145,26,245,44,131,75,247,37,34,207,55,236,161,104,77,136,166,39,201,27,8,90, +200,26,234,222,247,170,218,65,208,66,75,201,232,170,174,165,145,76,103,212,63,26,96,190,96,15,169,118,40,232,74,127,213,45,73,98,116,21,126,36,106,129,227,145,21,138,244,170,3,144,39,122,232,50,197,4, +151,249,142,72,246,208,88,214,179,100,255,184,37,10,58,198,17,151,117,11,207,104,177,170,110,154,94,39,106,225,5,164,133,132,107,85,201,135,170,158,146,143,236,95,224,26,145,236,33,55,212,99,3,171,227, +85,161,56,178,194,66,121,140,99,252,97,17,166,96,144,42,93,4,35,160,226,171,128,232,213,120,118,108,58,98,234,30,138,218,20,118,164,190,234,161,145,20,210,93,21,164,53,144,63,228,242,21,180,186,249,195, +42,9,40,242,151,186,190,248,40,6,67,242,76,123,243,140,61,172,121,214,43,80,139,246,10,8,173,151,75,90,40,72,113,239,66,241,244,116,21,124,52,126,185,51,174,1,204,193,149,137,205,171,146,79,205,223,230, +116,198,234,97,231,200,82,82,83,228,92,173,123,168,244,80,205,179,242,105,178,65,227,209,52,195,104,227,179,219,189,245,50,198,161,56,98,223,163,202,19,172,170,132,88,21,162,98,176,191,45,89,49,239,203, +157,139,64,43,65,204,92,175,123,40,93,44,70,144,75,99,147,244,86,21,133,98,140,49,202,176,34,77,241,13,12,214,227,92,95,210,161,119,77,69,133,228,85,173,195,202,200,24,45,187,99,112,9,220,136,220,172, +154,230,106,221,67,111,204,155,194,40,233,33,6,235,173,66,241,76,53,80,188,186,221,161,202,147,232,105,209,90,166,133,92,225,25,132,168,130,83,209,170,3,233,210,98,28,185,113,177,135,221,117,15,201,38, +134,181,238,33,181,108,141,175,162,187,75,53,75,42,236,97,60,65,184,164,2,151,36,42,23,201,162,151,21,182,64,173,97,34,24,43,14,116,195,150,229,61,149,131,215,247,104,54,231,25,123,136,63,148,36,112,73, +61,85,24,158,30,151,64,20,134,71,250,207,112,110,94,149,119,184,179,233,71,218,201,216,42,227,57,16,3,98,120,85,188,244,115,112,218,121,202,30,114,105,46,233,85,148,149,33,213,199,230,102,141,33,2,107, +16,13,192,120,99,90,128,98,92,149,234,20,168,138,128,41,154,173,64,204,2,47,253,44,57,211,96,117,15,231,10,123,104,201,86,215,80,8,58,182,110,170,12,103,33,121,69,182,232,157,226,132,65,147,230,105,110, +143,74,213,32,197,47,118,87,217,171,235,45,52,142,143,121,132,30,158,167,236,33,185,126,25,89,203,194,66,241,106,219,167,86,77,122,78,195,72,82,140,99,238,45,168,153,195,225,181,198,190,88,64,84,206,35, +10,176,44,47,226,73,198,240,60,101,15,187,131,78,85,196,235,126,101,188,207,43,55,102,148,128,37,229,52,77,85,133,203,90,68,72,51,45,23,185,191,128,88,165,60,43,86,144,26,207,83,246,208,212,84,83,202, +64,194,187,122,216,43,87,213,115,166,45,83,146,169,169,230,101,169,166,40,94,176,165,249,220,6,97,213,66,149,103,27,14,118,69,40,230,213,135,152,103,117,15,173,91,189,17,17,187,219,224,26,179,220,156, +43,90,35,227,132,139,106,225,210,101,176,143,107,65,81,119,244,152,199,61,166,54,46,13,180,44,246,144,91,207,83,246,208,78,133,125,229,50,184,136,211,170,120,201,88,46,234,205,155,147,101,95,85,250,175, +22,22,118,68,186,171,200,75,81,37,46,22,23,254,254,194,11,47,220,143,9,200,180,32,2,34,115,169,112,221,13,48,236,236,97,109,178,73,68,112,135,230,75,198,114,113,198,138,174,166,42,198,26,151,48,30,99, +85,2,82,220,97,17,166,26,64,16,179,138,178,57,96,189,108,71,4,246,35,138,23,237,98,252,62,95,221,67,123,98,195,94,247,208,30,116,141,87,198,10,100,197,242,11,58,166,30,193,136,59,51,162,118,68,108,14, +84,193,214,226,14,77,87,140,174,138,150,122,218,244,53,139,117,15,135,143,61,172,13,55,121,110,185,176,121,182,146,142,186,253,65,176,178,154,210,115,12,174,91,92,106,217,200,96,189,236,235,30,94,96,129, +193,96,255,199,80,216,195,90,80,204,53,246,208,56,174,4,194,171,222,53,13,233,93,1,136,193,220,149,193,30,145,186,174,173,241,170,199,185,181,109,32,61,109,181,229,111,22,70,59,20,246,48,139,138,225,175, +123,216,205,30,218,52,151,83,75,28,24,43,50,215,69,38,166,157,90,68,48,72,143,22,52,93,46,93,21,106,5,54,203,194,23,194,30,230,180,98,74,68,231,83,178,33,255,154,108,198,111,159,103,163,60,203,230,89, +232,57,39,15,25,143,171,230,72,227,179,9,20,83,114,51,225,132,4,136,127,115,54,36,113,208,218,14,180,184,152,35,16,59,15,78,249,236,72,84,221,67,209,211,153,145,189,41,121,180,227,17,61,93,197,29,25,204, +24,219,63,85,220,145,209,198,183,41,206,20,166,97,4,194,42,242,56,95,176,135,220,207,22,140,169,195,116,97,44,219,228,99,176,157,77,227,180,64,75,83,146,116,209,212,35,26,23,146,55,84,246,208,255,147, +61,47,236,225,227,243,132,61,220,114,171,45,59,28,131,61,40,48,150,157,10,115,180,229,161,40,93,134,51,94,52,54,237,84,82,81,236,161,222,29,10,123,104,78,150,132,228,108,169,195,30,102,147,111,74,134, +193,231,227,190,135,228,217,38,207,186,42,128,212,25,211,160,135,105,129,47,22,203,6,248,49,89,13,77,74,178,63,45,39,0,147,242,198,127,206,93,237,26,218,99,234,62,216,226,210,146,3,46,105,220,237,250, +190,237,219,138,55,143,106,155,108,186,73,103,211,77,15,203,142,80,44,136,52,141,161,231,83,52,170,195,46,149,145,94,205,179,243,93,221,195,109,190,188,89,91,50,128,214,98,159,91,160,45,117,242,146,109, +249,157,151,107,171,175,189,122,127,61,180,193,216,67,32,166,198,144,84,80,22,152,98,184,170,45,29,141,34,82,123,124,238,177,46,30,17,236,225,184,93,198,181,117,63,185,102,91,252,63,83,253,46,53,210,22, +254,76,140,190,244,37,157,94,99,80,149,9,155,93,246,208,112,137,167,252,49,116,234,188,103,15,151,159,246,146,182,248,47,99,236,143,211,203,159,95,164,173,113,212,26,109,204,150,99,58,140,146,55,170,103, +108,194,25,163,243,61,123,184,229,94,91,180,101,166,45,217,22,253,121,42,224,253,203,130,109,201,55,132,55,28,31,222,112,223,48,75,59,45,221,150,217,122,153,54,106,139,81,109,133,245,87,24,50,123,88,59, +149,98,65,23,123,248,61,69,30,51,85,254,32,46,127,119,2,211,85,121,246,202,179,85,158,117,242,140,202,243,28,173,199,76,245,210,38,235,4,146,209,9,40,175,160,150,33,32,201,92,61,153,204,192,201,187,64, +102,127,216,27,209,91,99,246,221,180,45,254,15,11,183,69,126,22,184,242,243,75,180,101,47,8,126,119,110,158,243,242,156,182,108,91,250,232,128,90,202,0,110,251,12,123,56,43,117,15,253,95,25,26,191,26, +81,236,225,203,206,88,191,45,28,222,112,241,71,22,111,203,190,126,217,182,220,5,203,181,21,95,149,128,243,186,21,219,74,87,228,198,134,11,87,104,139,95,146,75,132,246,93,126,150,216,195,12,131,170,123, +136,61,156,18,89,197,180,204,211,95,232,235,217,3,242,186,93,95,70,181,210,96,82,135,231,157,150,6,147,252,228,143,44,210,167,131,58,41,255,209,39,9,72,104,42,50,209,79,72,79,79,205,180,243,175,137,176, +127,220,248,29,27,182,165,30,123,73,91,250,195,75,183,165,174,94,170,45,115,229,50,109,133,107,83,206,254,186,85,218,202,87,175,220,86,122,221,74,67,102,15,251,116,89,127,238,98,15,39,101,74,124,52,243, +238,228,62,56,250,162,62,55,30,215,103,236,202,121,93,98,48,49,203,44,27,220,87,48,106,209,252,177,21,252,39,212,50,4,36,57,180,158,70,65,19,99,31,136,123,78,73,146,241,211,49,199,140,105,251,238,191, +111,219,226,172,45,218,234,55,172,222,150,250,240,82,237,37,183,189,164,141,186,117,84,27,149,249,121,40,236,161,211,255,174,186,135,15,166,97,71,46,123,152,49,246,80,122,252,7,49,254,23,9,44,191,77,178, +242,219,253,79,217,255,207,123,94,180,231,139,151,61,204,162,226,209,220,220,242,112,230,219,9,201,113,167,38,5,124,34,243,230,255,25,246,240,91,209,84,62,214,99,15,119,222,121,98,18,254,137,201,177,39, +37,8,77,206,250,245,161,60,183,39,56,246,234,30,38,80,138,192,189,186,135,179,202,89,205,52,211,154,213,63,216,253,243,82,187,60,189,186,135,179,211,136,179,251,187,195,218,195,179,251,230,134,227,247, +231,138,193,61,246,176,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,61,246,112,96,42,215,99,15,123,236,225,235,58,167,251,228,72,100,133,84,236,14,200,157,44,58,101,116,96,142,54, +163,196,35,255,37,5,166,231,26,88,247,176,216,195,249,186,238,161,35,212,66,109,73,128,137,188,33,123,3,217,67,151,234,195,9,6,194,150,243,29,123,88,26,203,18,122,235,97,170,188,34,90,200,30,40,122,28, +142,19,151,242,14,82,137,98,134,49,140,148,65,100,22,26,138,199,128,44,11,180,4,112,237,178,203,46,157,59,173,29,193,228,112,224,73,135,2,246,201,115,214,228,68,98,167,62,93,199,179,206,151,158,51,87, +229,13,45,146,231,164,136,76,30,136,246,226,129,48,9,83,162,211,248,45,118,8,17,90,160,101,105,154,1,209,54,205,125,159,107,210,105,49,214,207,185,64,155,16,141,62,68,207,50,140,188,129,160,148,212,176, +10,90,80,231,81,221,33,209,186,239,156,119,242,160,1,120,128,239,57,195,242,56,59,102,172,115,100,103,90,125,133,166,158,202,126,120,7,171,205,231,211,83,23,226,202,190,67,181,37,158,181,11,51,48,50,135, +0,93,41,26,169,143,135,64,121,32,61,112,111,90,254,39,4,43,228,189,196,102,37,43,100,176,114,156,208,89,138,0,208,71,21,183,32,104,209,123,112,157,170,144,71,196,82,197,227,200,146,124,79,111,235,225, +146,25,106,24,100,169,177,207,208,249,130,61,36,249,165,197,170,98,113,101,112,49,136,94,171,158,3,241,25,41,113,21,140,19,252,232,165,9,219,40,127,184,243,136,102,15,137,83,24,80,90,44,61,89,79,213,63, +36,81,42,1,154,134,33,37,238,6,46,233,50,11,184,164,211,20,245,71,20,123,40,16,137,198,244,149,198,98,85,208,210,123,198,41,121,82,85,222,233,230,15,125,157,180,176,128,75,211,27,17,27,77,117,81,106,254, +38,129,42,77,216,136,96,15,49,15,85,152,149,225,36,134,3,113,188,42,109,192,149,203,96,189,237,235,197,16,19,173,17,144,22,18,68,208,134,111,40,6,81,4,239,211,116,116,162,181,32,70,28,231,107,174,123, +37,126,241,74,66,33,186,187,67,51,17,126,106,60,99,74,180,95,215,37,120,173,71,17,240,156,92,58,82,221,119,101,124,221,31,37,220,3,65,220,127,193,149,220,216,32,97,168,10,29,62,174,91,27,186,171,208,18, +132,3,175,74,49,75,232,205,93,97,240,5,105,117,75,133,141,113,83,19,175,208,187,100,138,197,58,80,227,213,245,24,37,73,54,47,151,40,134,177,115,157,61,236,206,160,188,57,98,210,170,229,64,68,106,154,33, +33,228,182,85,166,164,248,195,194,227,185,51,116,79,73,4,172,19,174,65,192,170,235,49,234,210,19,73,11,253,23,125,23,145,155,203,23,24,61,87,235,30,154,134,170,142,18,89,33,46,1,254,206,173,245,116,201, +133,171,226,165,105,168,92,90,224,50,77,21,209,34,50,155,202,244,172,113,203,133,245,108,119,58,74,1,196,88,15,145,155,232,237,106,11,114,40,174,93,106,32,170,60,231,209,142,104,227,157,223,138,38,108, +74,220,249,192,62,69,222,82,253,137,71,192,138,221,226,134,95,137,56,251,209,36,9,223,201,28,248,39,173,45,144,144,225,235,53,124,161,169,194,92,89,25,148,72,170,103,4,26,17,22,60,89,42,90,211,140,223, +53,207,138,220,122,182,208,90,99,152,218,93,35,1,64,224,61,230,225,238,98,143,69,151,154,239,9,215,24,74,106,232,213,120,101,116,233,189,134,157,61,148,57,113,53,66,240,210,72,151,91,146,14,155,90,244, +58,233,127,213,88,50,166,171,202,165,128,197,27,252,126,177,79,229,194,5,114,50,184,140,230,194,164,138,20,120,68,167,85,51,141,156,81,175,207,181,186,135,122,199,27,174,202,59,188,194,199,122,158,155, +106,132,50,92,106,41,80,25,203,230,107,13,83,80,87,185,48,119,174,106,153,221,6,107,96,95,31,140,61,100,52,151,215,235,117,33,82,34,247,147,201,16,39,39,13,157,24,119,190,41,207,230,121,86,233,119,233, +184,227,229,9,34,247,36,136,184,241,228,199,220,197,74,134,59,73,222,61,180,207,114,102,1,203,18,207,195,64,174,200,104,227,79,192,65,121,23,58,103,122,209,0,94,53,0,183,151,112,24,6,122,148,193,85,87, +173,138,181,250,186,143,11,154,102,108,141,107,6,207,83,246,144,33,5,67,122,243,221,55,46,213,165,68,181,114,42,84,79,175,139,222,230,93,141,160,65,138,81,44,210,173,18,26,61,239,247,107,122,50,126,231, +41,123,168,55,235,130,130,193,80,60,111,220,215,253,12,163,24,203,157,5,47,238,45,168,9,116,176,1,189,110,40,136,214,60,198,207,107,128,106,4,43,49,234,189,121,194,30,214,229,95,220,156,107,23,247,219, +109,116,85,138,247,202,245,1,91,198,177,128,5,223,49,61,49,90,178,226,235,238,242,16,236,42,181,44,76,215,239,86,241,72,176,244,96,236,161,96,102,158,54,45,153,73,50,85,253,144,120,142,134,36,99,247,154, +60,99,243,172,209,63,134,147,179,238,145,41,226,222,168,214,167,103,237,249,189,140,225,63,106,81,111,210,116,100,250,16,81,37,0,22,234,110,58,147,226,121,236,110,84,113,184,202,200,184,97,85,182,20,216, +244,158,136,45,33,97,48,12,143,209,230,103,99,90,74,138,124,193,23,251,191,184,187,167,46,68,48,19,248,219,122,183,10,197,81,229,106,0,234,249,42,106,35,120,69,168,254,231,24,255,68,118,81,190,78,48,19, +67,207,207,179,69,158,213,251,13,142,203,189,52,127,244,190,36,10,223,72,239,61,150,121,248,105,251,79,34,163,244,146,161,90,78,34,111,30,46,67,169,224,45,206,141,177,186,30,142,251,214,53,112,198,167, +148,209,220,140,76,147,108,96,29,202,96,171,41,139,140,98,148,244,118,17,166,122,92,144,211,227,12,151,89,49,216,156,60,24,123,104,218,146,132,36,58,255,62,9,201,212,108,72,60,78,29,20,67,225,0,162,244, +170,207,218,241,72,143,222,153,30,158,150,121,112,114,22,245,191,171,75,66,236,100,120,92,24,66,234,143,68,19,169,45,221,188,106,148,34,211,170,172,39,55,148,76,232,37,153,152,236,75,162,33,157,172,74, +120,166,39,249,181,207,37,34,54,13,244,180,113,93,160,37,163,253,159,122,17,210,51,207,235,30,186,213,204,24,22,173,185,176,158,229,194,12,214,51,140,181,91,194,0,235,94,152,29,3,187,139,60,22,145,230, +123,118,64,24,13,8,113,111,128,57,92,89,177,98,15,97,0,243,156,61,180,15,85,107,87,46,220,141,225,21,168,37,53,229,206,181,144,168,140,171,187,192,163,94,150,130,118,131,150,98,8,131,11,4,193,63,72,46, +100,90,34,118,61,166,171,185,82,247,176,216,67,227,184,16,118,175,122,182,22,19,117,167,7,99,44,11,45,254,187,175,171,41,42,77,0,179,156,180,185,7,195,43,247,150,47,151,193,51,171,123,104,65,145,133,195, +132,12,131,233,25,2,19,50,110,15,205,3,231,89,43,207,146,207,26,195,249,194,66,89,212,127,40,110,244,112,198,226,132,108,123,254,135,45,80,110,11,157,21,157,237,92,26,155,178,48,95,179,46,181,62,182,225, +102,138,170,29,11,145,221,178,175,110,111,177,106,170,91,91,4,169,26,191,198,112,113,135,5,90,114,109,121,183,181,178,134,52,118,69,230,161,176,135,249,153,185,203,30,154,159,185,177,93,11,70,139,204, +85,220,209,116,196,24,81,218,14,72,25,93,251,92,181,215,197,181,141,229,2,45,71,116,221,67,227,171,238,191,178,245,98,106,171,125,174,50,184,187,184,35,163,171,112,171,70,224,210,162,185,169,111,196,179, +135,135,157,112,104,219,118,167,109,59,187,140,197,30,218,157,176,243,193,69,205,181,198,169,185,87,111,50,80,6,165,152,178,96,36,34,11,122,192,15,99,118,196,179,135,47,191,229,192,182,234,63,47,210,182, +218,122,171,254,93,70,189,44,73,49,15,215,238,135,160,196,181,185,174,232,90,23,26,48,82,175,74,46,134,194,30,22,247,223,205,30,230,32,111,238,177,135,59,222,190,69,91,229,119,11,180,21,66,181,172,121, +238,42,109,195,205,55,232,144,43,150,116,216,35,31,219,146,209,8,94,101,70,149,76,116,215,61,156,47,216,195,157,246,9,225,121,95,80,157,167,22,104,203,253,207,2,109,217,127,200,243,241,69,219,102,91,111, +214,49,76,111,84,61,180,129,236,225,50,203,44,211,161,75,53,196,124,195,30,110,191,255,182,109,149,127,91,164,173,240,235,148,251,251,213,2,109,197,9,75,182,113,151,142,237,236,59,217,96,179,5,35,89,48, +167,214,51,59,117,15,7,97,15,167,205,213,186,135,155,93,182,97,91,225,63,147,17,197,216,101,126,186,96,91,246,213,169,147,118,82,110,85,121,249,170,109,227,189,54,110,59,236,242,76,32,179,194,153,239, +217,195,237,119,220,190,173,253,225,68,214,24,187,236,247,22,109,203,190,123,169,182,220,43,18,120,94,189,66,91,246,178,101,219,168,139,194,43,29,51,170,45,179,199,50,109,153,109,94,4,236,225,174,251, +236,218,150,255,209,34,109,153,255,76,207,190,123,153,182,236,43,151,109,203,191,42,17,247,245,43,180,21,223,20,12,239,13,43,182,21,174,72,244,61,107,185,255,101,15,251,234,30,206,151,236,225,70,251,109, +240,244,154,2,214,23,150,111,75,191,117,233,182,244,235,151,110,43,222,144,207,111,92,169,173,252,166,149,219,42,55,174,210,86,186,102,165,23,23,123,56,122,157,209,63,217,98,175,45,254,178,241,105,27, +183,151,94,251,210,182,204,71,227,190,31,206,56,126,215,242,109,165,55,39,23,158,1,123,104,91,102,70,117,15,229,232,9,122,35,150,61,252,26,196,54,43,149,127,223,102,219,109,218,33,135,29,210,182,127,237, +246,237,165,55,191,180,45,253,145,165,159,197,30,46,246,190,197,158,183,238,161,69,202,0,246,240,107,125,236,225,148,68,248,71,114,1,254,123,178,208,57,46,207,206,121,240,194,235,231,65,149,2,45,23,122, +193,151,226,207,128,50,69,170,224,135,198,186,169,155,128,132,166,34,251,71,143,38,163,122,52,31,127,45,91,48,15,246,149,253,251,89,34,242,83,255,39,216,67,231,179,49,254,161,30,123,152,227,143,172,166, +38,246,234,30,246,216,195,94,221,195,94,221,195,23,66,174,205,21,50,237,133,188,177,225,250,157,158,193,195,209,178,61,246,176,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,61,246, +176,199,30,206,225,186,135,206,124,109,208,81,254,20,118,71,93,64,21,228,123,84,66,14,193,97,60,190,70,59,210,125,23,46,189,167,239,67,253,72,152,162,162,125,58,231,82,138,61,78,14,63,245,152,155,220, +178,215,230,34,64,123,110,131,110,230,205,112,241,16,1,247,106,145,238,191,54,149,241,238,141,44,225,254,156,234,79,170,242,157,164,13,85,10,112,40,236,161,159,47,28,143,100,130,96,21,47,65,100,78,58, +193,8,40,222,139,130,61,44,89,112,177,135,140,189,240,194,11,59,90,145,129,117,15,171,94,41,237,200,124,203,30,18,173,209,69,211,110,145,1,147,64,248,216,97,184,131,113,170,0,234,59,42,190,42,3,88,117, +15,235,178,253,249,134,61,36,33,164,163,164,218,161,203,162,154,165,172,243,113,73,14,105,58,200,153,80,48,20,63,56,165,42,206,10,243,51,142,71,52,123,72,84,74,193,131,115,208,131,197,28,86,149,188,226, +15,9,91,234,46,120,98,23,63,79,169,71,219,37,104,17,198,96,26,209,164,26,160,140,38,135,4,90,146,83,209,146,56,127,246,243,190,222,119,213,228,3,14,5,82,14,193,109,166,59,230,113,75,99,63,97,250,156,160, +149,30,57,34,130,147,251,243,198,38,68,115,53,37,227,234,79,254,32,41,47,37,172,94,32,43,164,158,173,90,165,164,74,4,165,244,150,68,160,133,239,232,61,18,37,2,150,42,115,64,162,196,104,95,99,48,5,15,253, +165,223,97,48,34,213,255,87,69,89,71,28,123,168,229,75,189,206,96,146,35,189,69,181,163,231,244,48,80,139,11,15,188,15,222,215,52,74,1,151,8,53,186,105,10,90,34,85,120,143,169,106,68,178,135,162,177,94, +54,70,41,232,140,201,82,235,84,93,135,186,245,191,74,28,232,253,42,98,65,76,74,196,6,201,171,194,52,116,150,2,158,30,31,17,236,33,97,184,49,203,189,139,103,232,46,96,65,77,199,32,17,89,111,14,228,15,245, +174,251,226,245,112,233,164,141,97,242,69,67,163,202,2,250,63,70,4,123,88,117,148,76,51,116,209,36,135,85,46,140,122,182,192,203,238,224,69,87,73,65,91,181,89,68,104,189,107,236,250,125,146,227,66,0,72, +145,121,13,165,174,196,132,24,6,163,68,208,74,152,62,87,235,30,74,12,234,82,3,128,134,94,225,138,222,180,94,54,22,11,137,55,158,245,50,35,171,114,71,149,230,213,187,4,225,52,213,85,115,77,207,86,61,181, +138,15,50,53,183,143,211,122,205,19,246,80,186,136,45,226,110,53,214,244,12,249,160,199,156,203,112,34,111,61,205,181,69,101,6,27,203,5,120,24,239,188,2,220,225,239,96,27,16,45,133,19,224,28,36,44,94, +77,71,68,110,112,188,185,206,30,122,19,90,93,79,112,105,26,73,12,146,32,83,21,242,104,166,73,136,233,165,25,173,151,69,108,70,155,166,76,71,166,57,158,65,99,237,111,208,94,22,33,35,54,84,118,38,53,165, +245,42,145,91,73,137,231,42,123,8,149,51,63,123,147,230,230,226,28,188,114,75,134,27,219,122,155,123,235,205,170,125,104,186,50,175,51,150,254,90,134,133,162,169,30,45,178,148,161,210,81,171,35,234,119, +128,135,94,38,79,100,180,207,231,26,123,232,141,120,163,197,58,20,161,38,200,8,56,190,167,65,24,110,140,51,220,152,21,173,5,50,174,239,231,252,126,247,189,31,221,236,97,25,44,17,161,174,37,70,165,188, +101,164,169,202,231,140,158,43,236,161,21,79,213,10,174,138,178,5,79,22,134,167,17,120,128,175,235,121,110,207,189,25,239,119,140,213,138,246,221,40,109,221,232,82,6,91,64,48,144,72,181,187,208,99,93, +152,63,236,117,15,45,241,172,103,185,181,104,61,240,41,35,10,197,171,162,141,62,55,215,74,35,185,125,121,72,1,94,21,249,25,239,97,176,167,232,82,6,206,19,246,80,148,182,120,103,116,149,15,43,163,187,141, +245,49,99,185,46,247,102,44,246,193,20,197,189,5,181,66,225,141,229,98,25,235,182,23,70,87,35,152,21,212,72,155,167,236,33,98,77,111,119,27,235,205,10,64,30,61,42,250,90,65,49,86,160,178,92,84,139,216, +52,85,37,194,170,232,178,105,169,88,195,186,254,198,107,213,55,157,89,221,195,97,99,15,145,106,22,14,122,185,24,96,198,49,82,16,226,170,130,87,213,46,101,172,233,73,18,98,169,200,96,115,177,249,153,209, +162,56,40,164,230,99,141,164,199,171,215,253,93,187,37,243,140,61,148,234,121,184,116,221,185,193,80,46,89,56,172,0,101,197,83,197,152,5,43,209,217,60,252,243,159,255,188,51,23,155,158,24,109,202,98,180, +140,203,239,200,165,61,230,103,127,143,225,214,192,243,156,61,148,211,26,159,85,88,149,75,150,11,215,205,15,210,76,185,181,49,91,137,71,101,92,140,54,55,3,179,228,212,54,5,25,93,160,165,233,76,195,241, +24,138,250,153,177,135,214,232,201,200,126,151,121,122,66,196,113,143,185,134,61,27,0,174,154,218,52,207,138,207,218,0,72,164,124,111,110,102,152,144,204,137,112,236,151,198,3,131,172,73,61,86,71,54,216, +108,187,184,13,169,238,191,18,65,69,92,198,114,225,34,211,16,165,224,14,185,114,113,135,86,77,22,16,220,185,48,60,99,90,32,131,234,105,24,203,68,141,4,191,213,219,226,131,247,81,216,236,60,103,15,237, +45,75,47,139,245,149,82,114,227,170,134,39,80,25,187,221,245,14,11,167,173,34,234,122,185,118,62,244,180,241,206,67,16,47,11,46,184,96,63,138,39,195,26,17,236,161,104,93,43,38,238,88,183,182,160,210,108, +223,212,18,209,152,173,66,173,220,218,102,128,237,158,42,216,106,23,19,238,163,167,5,170,184,97,91,106,169,165,134,204,30,74,65,231,74,221,67,114,95,183,167,153,87,5,24,175,117,225,9,35,112,74,32,45,99, +184,214,196,101,176,57,153,91,215,253,60,198,179,32,166,151,65,92,5,90,86,117,120,250,106,193,203,152,150,102,74,70,124,79,250,57,87,235,30,34,59,45,219,140,125,143,93,140,42,8,103,119,67,47,154,146,186, +65,75,189,205,96,99,91,239,23,67,108,24,136,25,210,72,6,87,41,64,251,91,12,148,128,248,30,195,97,4,86,82,9,86,127,206,122,121,250,92,169,123,184,219,181,91,117,238,170,99,176,55,37,239,53,247,26,187,220, +217,99,209,95,119,107,85,85,90,13,80,245,15,25,140,29,214,179,174,137,42,82,109,168,117,15,51,190,127,150,69,196,131,217,222,157,28,0,236,174,12,7,119,240,64,105,71,19,143,15,122,92,154,253,221,69,19, +129,207,162,169,136,107,78,221,103,159,125,166,199,128,223,230,181,179,181,98,67,205,61,0,117,23,158,125,227,163,174,57,184,141,253,217,82,109,203,143,174,209,191,95,108,233,102,94,182,139,169,151,245, +92,213,43,45,178,84,170,104,139,87,35,232,125,99,221,226,223,50,240,5,178,135,223,26,246,186,135,123,238,189,103,219,241,109,41,254,246,167,5,218,134,127,200,243,185,229,218,150,91,111,209,225,24,60,96, +44,135,101,198,179,13,59,91,183,198,170,30,68,163,25,163,166,25,91,70,220,116,86,216,67,174,173,172,216,92,103,15,183,126,114,133,142,177,27,252,126,129,182,126,216,195,245,190,191,72,219,230,229,91,182, +13,55,218,176,159,61,172,155,146,172,91,109,190,49,78,94,92,227,112,118,217,195,172,137,167,41,62,133,137,8,66,127,89,31,15,177,89,94,87,201,179,232,76,11,76,101,12,174,149,241,120,99,86,43,147,179,149, +243,72,182,73,167,165,183,126,107,140,214,169,0,119,62,224,166,157,219,70,191,92,180,223,216,245,31,30,213,118,191,114,251,142,203,187,100,83,48,17,65,69,211,110,246,176,202,235,214,56,117,241,200,172, +176,135,118,61,6,212,61,156,172,210,86,31,0,82,85,45,215,233,59,43,94,112,166,6,231,7,23,76,16,24,23,3,63,156,69,192,244,44,7,39,103,108,77,75,15,61,109,174,19,145,143,60,238,136,182,237,131,235,117,140, +93,247,23,11,181,53,166,45,214,86,120,109,166,139,83,87,110,155,30,177,105,59,228,232,67,58,99,94,48,195,31,14,100,15,37,17,238,178,171,204,137,107,250,216,207,217,197,208,72,221,143,198,65,163,106,156, +121,194,30,30,114,237,65,237,101,191,141,177,191,90,176,173,126,207,210,109,249,215,45,223,150,127,77,158,215,46,223,86,124,245,138,109,149,87,174,210,70,159,49,186,109,113,208,22,109,135,93,231,44,123, +216,87,228,241,251,74,1,230,252,235,111,250,10,198,169,161,6,237,225,202,107,228,121,201,64,25,199,76,229,195,97,145,86,204,120,59,47,61,125,87,54,228,126,24,121,193,68,50,131,244,192,83,155,127,106,116, +91,43,68,233,138,140,189,225,25,67,21,132,91,225,198,92,50,114,243,74,109,213,119,174,218,150,191,102,249,182,204,43,194,27,190,40,216,195,77,215,252,229,152,87,111,208,86,250,224,74,109,212,59,70,181, +229,222,28,192,242,237,225,13,111,78,239,222,156,42,120,111,79,21,188,183,172,244,191,236,225,217,203,181,81,71,167,72,156,186,135,243,43,123,152,64,244,228,203,182,122,217,211,27,94,180,97,91,245,131, +171,6,146,78,65,199,15,44,219,86,126,215,202,109,229,183,230,233,102,15,95,243,191,117,15,151,219,103,185,254,8,46,0,137,226,30,96,181,177,106,156,154,114,36,48,98,192,128,186,135,147,231,105,221,195, +204,135,143,230,141,254,100,171,253,182,250,243,216,203,198,182,117,110,89,167,45,251,137,101,135,204,30,118,23,114,181,251,200,112,217,218,243,212,61,84,114,236,19,25,163,35,163,238,225,182,219,111,251, +188,236,225,140,234,30,202,224,172,177,7,97,15,171,238,225,139,139,61,180,83,145,158,253,101,166,170,239,37,127,126,40,83,217,3,153,214,166,200,141,51,13,77,85,57,186,47,169,48,207,42,221,41,26,155,107, +151,203,179,152,169,116,102,8,195,76,163,244,12,128,203,133,242,199,151,204,179,186,237,19,151,87,211,84,100,14,157,150,60,252,145,236,115,125,163,199,30,246,234,30,238,57,49,91,53,189,186,135,25,34,59, +244,141,79,235,88,215,186,109,212,183,158,237,213,61,156,89,128,26,52,254,188,144,95,26,234,239,164,103,122,117,15,135,218,88,195,245,115,47,104,90,26,174,55,51,55,254,238,92,49,184,199,30,246,216,195, +30,123,216,99,15,123,236,97,143,61,236,177,135,61,246,176,199,30,246,216,195,57,204,30,58,49,4,95,185,81,152,72,197,102,221,139,146,61,164,229,162,151,164,175,38,72,117,231,60,245,94,201,23,93,176,255, +162,98,15,9,189,25,75,136,90,236,161,70,240,48,154,36,170,187,238,225,124,203,30,86,1,42,122,105,88,143,83,126,170,128,50,154,218,135,20,130,128,133,0,181,106,30,22,123,56,95,212,61,44,66,141,28,152,162, +142,250,142,220,129,126,131,158,195,67,98,72,150,212,141,227,81,250,48,156,178,214,17,171,243,101,143,49,62,34,217,195,130,50,244,42,233,33,131,104,59,40,236,74,144,86,56,94,189,18,179,144,49,145,64,20, +105,74,19,66,208,198,197,177,135,180,37,36,81,35,138,61,36,74,235,46,32,67,114,168,183,40,235,112,73,122,183,24,68,70,22,127,200,112,95,215,32,85,48,142,68,81,99,1,44,25,74,101,64,73,64,238,72,193,43, +186,83,226,33,92,52,136,243,39,159,59,164,207,65,192,31,115,32,48,197,237,139,14,5,22,93,116,81,210,7,10,158,37,103,168,0,136,108,232,214,8,199,238,143,194,245,190,68,214,127,247,199,72,132,5,29,189,200, +24,227,81,212,69,116,154,106,170,56,77,85,189,4,118,144,15,210,78,234,97,26,173,50,186,116,90,140,102,176,30,38,88,35,70,163,192,99,48,173,165,255,147,161,5,91,82,6,152,206,52,46,253,150,6,241,125,178, +7,106,0,175,140,15,11,241,83,87,77,58,1,201,57,246,29,49,118,227,60,253,132,233,179,242,205,24,178,70,122,228,75,121,51,83,162,149,124,200,127,160,149,241,6,197,40,209,68,139,182,2,138,241,229,115,189, +139,109,160,143,38,238,174,234,120,12,166,211,42,163,11,199,171,162,143,197,17,243,2,238,207,96,106,31,194,82,58,75,16,137,135,113,35,138,61,212,243,122,21,146,67,84,74,103,9,208,162,166,35,254,102,76, +161,181,221,252,161,94,246,117,122,105,61,76,151,137,99,34,91,244,183,138,65,164,221,162,5,33,131,170,114,42,243,172,238,161,32,229,13,121,115,37,46,37,251,21,120,68,99,136,172,72,173,151,171,160,69,105, +45,141,95,17,156,193,69,151,138,236,122,215,223,66,170,145,34,211,110,242,182,121,94,247,144,177,166,159,210,74,19,114,87,79,99,24,112,136,140,102,140,0,38,26,11,90,165,147,214,0,122,152,2,143,43,67,105, +25,11,233,99,172,191,75,120,94,228,42,86,169,155,61,52,134,245,58,105,20,151,167,20,50,149,185,30,214,141,169,137,3,223,76,224,122,56,99,120,108,159,200,101,241,254,49,108,43,53,145,245,158,180,250,244, +252,39,211,18,140,158,54,54,235,63,172,108,201,31,20,28,138,61,100,116,225,56,94,9,196,37,26,230,211,42,14,199,104,242,127,99,85,208,226,202,94,245,176,134,48,21,25,6,220,184,52,215,166,54,49,65,32,44, +104,68,0,235,102,15,69,102,189,62,87,234,30,82,193,123,10,196,226,214,100,250,30,31,83,199,87,57,192,234,105,227,180,20,181,164,195,122,87,84,230,254,85,236,177,26,143,86,186,234,164,9,152,102,9,141,76, +110,232,209,155,180,31,36,18,116,93,115,165,238,161,104,93,101,135,164,140,85,93,186,80,60,99,175,10,65,22,232,161,71,25,171,135,125,44,162,27,6,122,84,132,231,81,5,97,15,188,3,196,255,199,88,138,190, +170,123,56,215,216,67,83,21,64,203,155,43,174,168,42,216,21,134,87,72,15,195,25,195,205,141,85,174,108,252,170,124,105,220,35,97,10,208,18,19,24,214,77,150,250,191,172,178,170,170,37,181,45,87,158,107, +236,161,137,191,150,120,22,2,220,173,74,136,21,75,88,116,90,119,110,93,245,17,11,226,240,121,185,45,67,203,200,170,108,217,205,29,202,175,9,81,245,112,81,166,146,141,185,194,30,202,115,139,61,244,234, +141,117,27,90,16,101,25,203,168,162,212,184,172,196,194,124,219,61,12,106,156,118,47,37,139,59,148,124,72,114,74,253,30,117,96,39,90,27,199,213,0,68,228,130,151,204,80,135,164,49,126,228,74,231,104,66, +39,38,66,187,113,252,153,72,93,57,102,2,204,69,73,20,146,47,220,59,57,235,211,31,9,8,210,56,28,131,59,115,24,70,204,173,165,237,84,212,226,221,247,10,164,172,186,105,221,21,241,124,92,88,173,233,6,151, +196,157,165,154,220,219,248,229,242,69,181,105,56,198,23,82,91,189,204,104,179,3,201,49,225,90,141,97,226,83,82,100,99,217,215,8,84,173,175,227,238,79,230,189,78,34,171,136,161,74,121,62,219,224,4,151, +19,211,234,247,134,83,120,36,147,252,63,36,57,255,139,157,8,139,244,20,95,238,172,97,253,167,90,207,54,141,92,87,3,84,144,41,78,80,212,22,165,125,221,184,148,56,152,83,161,61,140,149,106,214,92,76,48, +206,189,25,109,124,87,57,222,242,140,114,237,122,53,43,80,211,206,147,186,135,197,30,86,173,210,170,87,42,218,22,58,103,78,197,18,86,132,150,102,202,172,48,75,30,189,108,126,102,52,62,194,207,155,206, +138,22,175,57,184,64,75,30,55,207,217,67,46,93,115,167,222,244,248,156,161,117,7,128,241,106,185,88,229,120,203,96,174,109,29,108,46,214,251,85,224,209,239,115,243,242,148,170,37,238,118,135,121,206,30, +90,53,85,233,93,137,134,105,166,10,196,201,139,25,43,147,178,114,194,38,21,164,85,55,61,72,55,45,46,172,129,77,83,85,75,156,139,107,60,211,89,101,92,53,126,41,231,129,151,146,14,227,87,212,174,218,75, +195,206,30,138,158,92,174,48,216,202,161,93,85,193,85,25,162,7,101,85,150,135,181,52,212,203,140,214,203,82,78,75,67,43,44,41,166,204,172,114,106,141,9,243,43,246,208,24,158,17,123,168,1,236,139,145,47, +166,65,224,60,147,2,91,222,222,39,133,178,46,94,238,89,235,225,76,240,103,103,149,242,64,254,195,71,35,244,252,33,23,18,160,4,42,143,255,20,125,34,82,251,186,221,69,27,110,140,214,187,198,170,141,185, +90,41,89,238,89,56,8,78,122,183,110,93,42,151,102,188,36,68,99,232,101,203,73,70,15,44,220,42,155,99,40,119,158,25,123,200,224,120,192,247,243,30,39,103,73,249,112,180,153,111,236,211,125,189,44,175,163, +158,101,112,162,238,232,204,153,247,196,181,20,108,157,140,107,176,197,226,234,54,174,219,125,133,155,8,109,159,169,234,30,10,40,181,25,80,247,241,112,101,155,115,12,178,179,81,40,109,129,150,12,238,46, +227,201,237,11,193,227,41,166,152,194,223,11,6,153,231,117,15,143,59,245,216,182,255,65,251,117,22,230,118,71,44,217,76,89,92,89,174,108,29,108,11,199,99,241,47,143,182,60,244,48,152,155,91,80,212,38, +158,165,34,132,79,3,166,71,250,217,67,249,243,136,168,123,120,240,71,182,111,59,126,229,165,253,187,139,150,112,140,183,232,183,176,215,187,166,162,238,219,150,202,232,66,105,77,79,130,151,177,236,247, +120,134,249,31,196,85,60,19,117,188,100,104,40,236,33,201,113,214,201,83,50,126,95,147,70,219,190,79,190,184,108,94,23,122,206,25,106,32,142,85,147,69,125,54,89,209,148,36,27,19,18,32,254,77,134,35,13, +68,152,117,223,51,121,192,185,129,43,255,102,141,182,117,91,176,237,124,202,184,206,206,33,131,101,98,118,58,112,132,198,47,131,170,236,95,129,150,117,167,150,175,107,12,6,251,89,193,75,192,195,70,113, +227,122,24,43,109,148,66,118,163,61,210,76,52,155,64,22,35,255,107,88,217,195,221,223,61,166,99,236,86,57,124,31,251,151,5,218,86,127,181,90,219,110,151,109,59,171,24,238,39,186,50,160,198,112,237,88, +218,2,178,81,160,135,61,26,68,239,234,89,153,218,136,172,123,184,247,121,59,181,109,254,99,201,126,99,183,8,123,184,245,147,163,218,110,175,217,166,109,57,246,153,13,55,143,205,55,99,90,4,70,129,75,57, +43,226,202,125,141,93,57,181,136,175,183,138,21,30,81,117,15,247,59,120,223,182,221,237,235,244,27,187,217,239,22,108,47,187,99,249,182,235,121,219,181,67,15,123,134,64,229,218,181,7,85,117,15,185,163, +85,142,21,142,94,148,72,84,17,244,217,101,15,67,193,12,31,123,184,221,13,217,82,233,115,227,141,255,110,233,182,214,39,86,105,43,4,212,90,241,252,21,219,152,147,199,180,241,39,60,83,181,22,180,193,181, +45,220,171,238,161,104,43,59,170,177,103,33,224,107,86,59,179,201,30,78,201,52,54,101,142,179,135,155,110,179,241,31,199,252,96,84,219,244,215,11,183,117,39,174,210,214,249,200,232,14,136,165,70,218,138, +111,94,177,173,124,253,202,109,141,215,172,209,182,61,115,219,54,254,180,241,157,147,137,170,125,88,236,161,94,174,229,156,69,252,172,178,135,60,198,218,55,73,200,31,227,41,223,203,239,79,73,74,57,125, +216,234,30,110,112,202,154,127,218,232,182,245,218,106,247,172,214,86,184,41,216,221,91,83,12,238,150,64,89,239,75,65,184,247,135,72,243,241,181,43,183,85,95,189,234,51,236,225,129,169,88,185,203,246, +115,180,238,225,92,103,15,71,175,61,250,233,77,79,221,180,45,247,169,229,218,114,183,47,215,86,250,64,10,193,49,246,214,224,119,183,60,211,0,29,246,240,234,229,219,168,75,251,234,30,238,158,194,113,91, +247,213,61,92,111,133,254,233,197,56,230,230,5,76,115,119,95,171,233,167,182,113,204,197,188,33,61,251,7,61,11,180,204,84,249,131,252,156,91,74,175,202,227,170,101,53,212,214,233,164,145,93,55,150,206, +20,167,237,255,129,76,214,113,149,209,137,158,175,200,120,188,59,75,182,239,186,207,57,1,231,209,188,145,95,108,113,116,10,180,126,118,149,182,220,23,150,107,43,222,22,183,126,119,158,193,216,195,203, +187,234,30,30,61,107,236,161,33,32,218,91,33,197,216,95,39,64,61,193,141,81,165,125,198,94,23,227,14,200,51,46,143,130,113,203,229,25,180,92,209,144,244,210,90,42,193,96,157,60,23,37,0,221,233,242,234, +44,34,30,201,27,121,56,134,63,185,241,118,27,255,110,211,215,110,218,86,251,200,106,207,207,30,94,241,191,236,225,242,251,46,223,137,216,24,195,161,178,135,249,249,159,138,198,73,66,140,217,105,125,8, +173,158,101,44,112,11,16,162,58,222,98,51,18,155,15,201,224,142,160,43,45,150,149,199,154,121,61,201,77,221,57,175,157,154,5,196,244,44,46,38,36,2,79,117,17,238,11,97,15,33,242,47,128,61,156,60,95,177, +135,131,213,61,148,54,254,159,100,15,51,54,123,236,161,75,72,22,91,108,49,99,21,100,9,121,7,113,217,193,128,189,139,198,67,174,167,54,228,49,252,28,150,62,36,167,224,144,199,178,203,52,176,35,77,5,153, +65,166,140,73,89,198,77,49,206,29,89,230,148,226,91,217,242,125,44,249,242,212,172,182,122,117,15,19,125,1,208,147,93,246,101,15,170,111,91,230,80,141,152,199,122,86,143,142,201,179,110,30,247,114,40, +107,208,127,55,199,172,224,63,47,184,135,7,233,113,20,26,196,150,128,132,171,173,215,247,38,199,230,213,157,56,231,231,185,38,143,83,128,91,243,56,254,240,177,175,249,30,119,117,179,89,143,61,76,35,168, +58,59,228,113,250,124,61,62,199,122,120,6,96,117,143,61,156,149,241,54,28,63,59,172,61,60,28,111,120,118,255,230,92,49,184,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,61,246,176, +199,30,246,216,195,97,98,15,171,238,161,243,39,154,140,23,101,221,195,170,213,64,205,71,133,91,236,33,173,200,139,134,61,164,144,173,26,13,37,40,175,98,51,85,228,145,177,243,53,123,8,168,42,53,79,9,188, +9,204,168,115,28,126,83,3,128,178,104,160,203,104,2,54,106,187,249,142,61,212,123,85,16,138,34,150,110,203,201,63,53,15,35,41,121,234,46,105,186,44,218,74,186,44,226,52,223,39,91,66,179,84,25,64,218,18, +141,48,34,217,67,189,85,56,158,158,37,130,97,44,35,74,171,213,93,18,144,144,165,46,211,174,234,90,117,123,56,217,146,191,71,35,70,40,227,140,121,68,177,135,148,181,196,40,85,151,133,123,210,114,16,169, +16,181,48,152,74,135,120,133,161,37,97,170,162,143,12,214,251,122,153,146,135,194,86,207,211,106,51,152,246,11,116,57,162,216,67,189,75,253,106,188,82,239,144,30,145,46,85,209,199,162,76,185,47,4,143, +177,3,249,67,61,92,106,60,222,33,178,83,15,212,189,243,166,177,17,195,30,82,188,66,113,136,76,201,128,137,68,169,115,4,43,189,76,58,92,56,94,55,112,89,58,45,106,188,226,15,11,184,36,74,39,63,36,70,243, +144,57,136,234,120,11,178,200,2,45,157,29,123,8,226,28,152,71,78,241,160,171,38,157,128,100,123,119,223,190,125,242,197,159,147,90,198,149,78,79,15,124,37,238,247,112,220,243,123,254,51,45,90,181,134, +139,101,144,40,248,227,85,247,208,215,11,208,42,28,79,228,37,7,118,193,61,215,198,44,149,94,171,238,136,47,172,150,240,148,219,87,97,11,238,236,119,53,160,26,166,222,199,136,170,123,8,224,96,48,87,46, +56,171,192,75,120,157,32,84,104,45,151,46,224,18,131,72,112,106,186,34,76,227,254,85,206,179,106,181,136,228,26,17,99,49,34,234,30,74,46,170,80,156,87,250,230,42,16,231,141,114,111,189,101,76,146,34,10, +78,85,167,165,10,90,212,216,37,55,246,179,140,53,52,138,65,20,23,4,193,129,236,161,128,230,64,125,174,179,135,69,148,149,100,191,170,103,233,117,197,27,205,199,196,226,122,176,12,214,203,198,50,119,6, +96,151,34,94,3,85,117,75,222,130,129,160,151,198,84,24,183,243,148,61,68,144,25,191,222,12,183,46,26,197,20,85,85,241,244,54,3,24,109,44,83,216,154,134,200,135,69,107,189,238,235,162,58,116,128,145,69, +150,106,72,127,171,96,75,193,170,216,195,185,90,247,144,26,190,106,130,203,174,100,85,21,208,170,42,30,227,11,196,228,234,140,198,51,232,73,134,146,16,115,101,174,14,144,134,242,104,156,226,133,53,88, +55,252,229,255,0,113,13,100,15,9,99,134,189,238,33,20,160,170,189,91,253,12,36,211,42,1,241,90,197,86,189,50,156,146,86,180,230,210,240,0,189,202,80,189,105,72,152,222,164,167,140,43,60,175,170,227,225, +151,72,24,187,203,0,186,124,155,209,5,110,209,138,152,175,35,99,124,210,225,123,20,63,19,251,142,101,93,251,186,74,255,190,79,162,234,229,153,22,238,73,224,120,56,75,182,31,155,236,169,96,205,133,18,125, +143,72,105,154,176,158,45,246,208,82,207,155,27,12,197,243,198,43,183,246,253,250,92,80,210,179,24,39,95,227,9,5,69,251,91,5,91,214,237,46,5,91,250,191,244,48,33,170,136,93,236,33,163,1,30,220,156,150, +75,135,36,144,253,40,239,117,98,210,83,6,59,143,222,34,207,106,253,6,39,162,94,158,169,227,222,36,11,15,39,133,235,24,108,173,138,75,242,31,49,80,3,80,218,48,216,215,125,173,200,52,174,92,84,169,87,185, +180,87,134,86,45,181,34,213,24,107,76,235,193,26,10,62,238,38,209,24,93,151,30,48,152,17,68,168,165,194,101,240,64,246,80,180,30,54,246,80,114,47,215,5,84,213,13,15,221,220,176,143,25,104,110,22,173,205, +167,240,28,110,44,58,155,123,185,183,40,236,103,245,108,61,131,85,181,148,105,169,237,66,114,76,111,77,138,172,71,187,217,67,106,220,97,103,15,171,2,94,1,149,69,169,49,212,60,44,24,85,237,52,105,166,241, +43,66,51,26,154,167,167,253,172,241,91,11,144,110,194,84,47,235,97,184,144,202,90,85,219,197,152,213,195,52,153,122,157,162,143,32,125,216,235,30,154,35,171,56,156,41,133,193,122,179,106,16,75,49,171, +50,173,244,81,210,161,4,32,230,193,231,85,89,186,96,203,238,194,173,229,214,130,162,143,173,147,231,57,123,40,90,23,149,230,77,23,134,199,125,225,238,242,98,139,1,185,180,101,161,222,173,154,135,220,218, +194,2,174,135,83,242,251,2,89,197,5,83,81,221,216,100,140,99,41,102,198,30,26,199,137,206,191,143,156,113,106,98,209,227,212,65,125,130,25,81,122,213,103,237,206,39,121,184,51,99,108,90,130,199,228,96, +108,191,171,75,66,172,67,61,246,158,204,193,22,15,2,23,112,203,2,162,242,93,89,146,8,44,127,102,132,188,184,238,228,145,81,153,138,84,180,212,187,5,119,88,69,153,155,37,30,188,162,234,152,14,134,201,27, +187,243,188,238,33,12,207,216,227,186,18,8,189,42,141,180,96,16,160,170,252,159,222,229,206,140,69,166,89,56,200,184,44,248,165,156,60,65,16,227,45,140,22,232,10,180,148,197,217,43,99,172,72,61,207,216, +195,99,79,57,170,159,61,244,134,244,182,117,176,69,128,169,167,182,118,172,144,24,44,195,210,195,12,46,238,176,123,91,71,99,49,218,176,224,53,21,0,77,109,51,99,15,229,216,2,217,176,178,135,71,253,245, +14,237,144,35,15,234,223,116,3,87,201,138,106,101,100,140,22,134,87,227,151,193,198,177,222,246,53,81,187,202,254,241,10,28,177,97,81,212,184,84,83,228,157,25,123,40,74,219,10,178,192,200,148,53,33,67, +111,122,26,105,66,198,45,69,31,37,223,90,121,150,124,214,24,206,23,22,74,66,241,161,140,165,135,227,166,19,146,165,252,135,204,133,219,226,138,16,103,130,148,185,247,164,247,28,212,246,255,201,74,109, +239,127,94,174,147,125,217,97,196,30,10,52,22,242,92,213,46,6,86,137,235,234,81,134,234,221,170,91,90,100,41,79,168,218,165,133,200,251,123,117,129,88,149,240,156,103,236,225,248,147,142,105,251,253,205, +234,109,239,182,88,219,171,45,218,246,186,114,203,206,38,155,93,70,73,67,65,150,220,149,81,181,224,47,230,176,170,196,215,109,105,122,217,88,55,47,27,203,146,138,52,126,63,104,201,96,153,213,60,97,15, +15,59,246,144,182,255,132,117,219,94,127,92,188,99,236,30,109,225,182,91,112,188,93,62,180,86,39,173,227,17,50,48,110,93,144,116,221,191,211,13,89,26,207,117,69,156,159,211,203,12,22,217,163,200,237,47, +223,201,149,215,95,127,253,142,177,207,199,30,98,157,147,120,204,217,186,135,135,28,118,72,219,239,166,113,109,207,223,45,217,49,118,183,63,45,212,118,252,217,194,109,143,251,214,108,7,188,114,231,182, +207,193,123,117,34,168,249,210,27,16,120,244,92,93,0,104,108,202,203,25,37,74,107,8,223,179,163,137,42,53,149,201,173,11,125,175,36,163,10,72,14,172,163,86,180,139,148,50,255,231,239,227,25,143,207,209, +186,135,187,190,127,243,182,215,159,158,113,227,29,254,237,37,109,243,233,75,183,209,225,150,214,188,96,213,246,242,19,14,239,63,9,172,13,55,110,232,205,184,22,131,241,150,118,85,218,94,143,218,135,182, +1,192,80,243,59,140,167,216,67,175,125,229,57,59,141,39,40,117,83,165,221,104,207,240,212,61,28,55,230,23,59,221,183,90,219,233,87,75,182,49,147,87,105,235,255,213,42,109,205,183,135,29,76,153,176,245, +222,181,118,91,239,117,235,181,67,143,59,180,157,118,250,105,157,4,69,210,98,201,102,173,106,202,240,134,245,144,165,156,55,235,123,92,181,138,160,23,123,104,250,1,125,24,26,53,102,253,174,113,220,205, +49,249,27,254,54,99,211,176,208,158,97,96,15,247,223,224,15,155,188,227,101,109,141,175,172,208,214,72,137,176,53,223,29,195,63,190,110,91,239,51,235,182,85,194,31,174,254,198,213,219,184,87,142,107,103, +156,243,76,86,6,151,215,59,197,30,234,97,15,16,11,115,200,200,98,15,95,72,221,67,139,7,208,86,26,244,219,208,158,97,97,15,55,222,110,195,63,174,251,206,20,109,188,123,185,182,238,93,107,181,13,238,220, +160,173,254,169,213,219,106,31,15,45,122,219,42,109,213,183,173,218,214,188,114,205,126,246,16,96,93,236,33,23,215,43,94,61,18,133,217,97,15,251,112,188,98,15,167,13,11,123,152,177,53,125,253,173,215, +251,227,166,239,217,184,173,249,216,154,109,213,59,87,109,171,125,98,181,182,234,71,86,109,171,124,104,149,193,217,195,212,61,156,239,217,195,181,215,93,251,119,99,47,28,219,86,184,119,133,182,252,23, +147,227,126,168,15,180,28,200,30,190,168,234,30,142,30,253,243,45,143,221,114,104,236,225,21,47,140,61,52,230,7,176,135,191,154,255,216,195,139,23,111,85,247,112,86,216,195,68,245,159,170,66,155,0,53, +111,235,30,190,16,246,112,149,227,86,233,191,156,115,22,216,195,137,74,238,38,26,207,255,117,15,135,200,30,78,86,95,184,15,123,63,46,249,54,74,13,47,12,161,69,149,162,95,22,154,163,84,75,254,32,82,5,40, +53,54,80,213,185,73,6,190,144,67,173,233,185,54,238,81,183,254,186,8,215,249,108,158,239,202,109,93,170,153,36,228,183,251,159,178,255,159,247,188,104,207,182,243,171,118,110,219,92,177,77,219,247,188, +125,59,115,117,118,82,254,146,223,253,115,54,233,126,175,238,97,143,61,204,141,43,61,246,240,25,214,145,11,191,132,199,205,10,233,50,219,84,75,159,139,27,59,16,60,151,87,163,62,247,93,120,225,133,175, +139,203,127,206,221,176,73,33,167,36,189,156,18,247,158,228,172,199,241,135,219,8,123,117,15,123,236,97,246,145,159,193,117,123,236,225,172,140,219,238,159,157,237,49,252,66,255,227,121,245,123,61,131, +135,163,229,123,236,97,143,61,236,177,135,61,246,176,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,28,102,246,240,69,91,247,144,40,149,142,210,83,236,33,173,38,249,98,177,135,54,244,72,161,52, +130,163,83,226,20,82,11,218,78,143,35,87,127,135,142,132,180,130,150,131,34,62,155,133,79,229,112,110,170,59,250,92,103,53,106,212,168,91,108,48,118,244,28,185,2,235,57,151,36,13,182,88,136,234,102,145, +60,7,71,120,114,255,47,126,241,139,135,34,54,121,32,98,149,159,59,9,236,134,62,170,54,131,3,110,130,50,247,179,59,38,245,10,172,34,42,27,200,30,82,212,81,214,209,138,48,2,165,226,103,231,219,186,135,52, +145,37,25,166,153,164,234,33,77,132,244,192,116,40,226,29,132,147,57,224,27,52,32,131,169,101,171,87,231,187,186,135,37,23,164,175,162,187,34,61,100,44,101,79,55,187,68,227,65,150,4,173,213,40,148,60, +104,24,46,92,117,15,71,52,123,72,49,71,163,193,224,210,74,19,170,149,214,178,46,215,70,179,120,24,76,229,83,15,121,162,159,161,224,51,198,139,61,116,198,60,226,216,195,170,181,68,195,165,151,200,138,9, +76,201,144,170,168,5,25,19,6,145,92,137,145,221,133,31,125,78,224,66,215,69,255,65,228,98,188,19,155,57,134,25,113,117,15,171,220,24,173,164,135,70,154,200,148,208,140,193,80,29,227,183,202,122,214,21, +234,3,129,75,223,47,85,143,113,207,221,11,197,51,206,71,12,123,8,226,168,74,30,20,59,122,153,224,148,148,208,27,71,140,50,186,112,60,189,91,213,60,124,76,143,89,132,41,73,49,183,246,80,232,150,193,228, +80,35,134,61,172,18,96,94,169,97,245,114,21,137,35,26,37,17,22,148,68,104,46,93,252,97,1,91,190,86,61,91,21,46,113,139,230,222,186,115,222,171,57,184,4,51,228,81,32,75,210,40,175,164,137,88,99,7,121,33, +91,166,186,106,210,9,72,230,99,23,18,142,122,78,46,29,96,234,93,9,38,247,71,206,251,64,230,200,95,104,89,32,135,177,68,160,45,234,250,152,14,82,36,173,121,86,239,146,250,82,199,27,187,36,253,85,118,136, +225,92,91,47,227,15,9,78,75,142,88,101,76,4,48,95,39,98,19,205,171,184,133,105,11,180,213,109,20,185,19,101,124,31,170,211,111,108,225,120,162,122,196,50,63,75,82,242,144,68,196,113,79,140,117,69,228, +138,157,99,161,238,196,35,189,240,249,140,173,71,194,33,76,72,84,252,29,195,40,231,232,39,25,236,17,45,137,62,101,69,245,181,226,141,136,186,1,27,12,247,20,14,64,237,174,151,25,82,197,91,171,216,35,69, +173,64,101,236,242,0,148,154,158,245,243,148,123,188,68,64,244,30,220,47,77,254,160,39,73,162,230,42,123,168,167,43,93,212,195,117,209,65,225,60,12,215,16,122,187,80,60,134,80,222,149,88,188,106,151,22, +59,204,88,65,142,71,84,85,30,241,192,35,62,72,43,187,217,67,233,37,245,192,92,169,123,40,139,146,34,202,164,170,114,109,17,105,101,52,165,188,158,54,174,17,46,106,184,16,144,22,153,166,151,205,189,220, +152,177,221,69,105,184,114,21,125,148,148,24,50,232,150,110,246,144,254,171,244,94,195,94,247,176,155,61,100,112,119,221,180,129,134,131,54,138,45,230,170,230,98,186,233,170,108,41,23,23,209,69,246,170, +138,89,60,178,121,189,18,26,158,52,79,216,67,171,153,226,137,186,93,185,140,214,195,85,113,186,187,50,30,55,23,196,232,169,5,44,175,2,19,67,21,166,210,147,213,155,60,131,161,133,248,21,193,54,35,246,16, +71,108,108,15,27,123,40,152,49,186,122,192,155,227,194,133,213,50,174,192,171,130,46,53,132,55,142,41,102,172,177,205,85,171,30,162,160,231,119,52,82,209,164,149,151,27,58,134,17,131,103,196,30,210,94, +18,155,14,27,123,200,104,174,202,101,235,169,42,150,12,246,248,188,230,232,170,165,86,198,22,151,84,69,33,25,87,24,94,197,134,186,202,198,248,245,49,18,141,32,117,158,176,135,18,124,99,205,220,203,21, +205,189,94,125,238,227,226,153,92,94,32,175,166,139,54,215,202,176,76,65,64,14,189,170,215,11,191,171,200,95,84,90,145,165,40,87,243,47,189,117,21,157,26,200,30,14,123,221,67,59,22,178,170,138,168,140, +244,57,3,205,189,30,44,147,244,82,20,102,172,140,10,153,38,141,52,77,113,107,46,93,23,21,13,44,240,88,6,139,194,234,47,21,123,88,245,134,231,42,123,168,254,146,96,99,202,241,198,241,70,224,73,207,192, +60,154,27,51,22,198,227,241,177,92,217,124,171,193,42,22,212,133,69,221,61,172,119,9,199,23,95,124,241,142,98,62,219,56,253,85,65,128,91,69,189,24,223,130,87,198,240,159,163,17,123,34,187,40,95,119,89, +119,50,44,247,87,227,135,87,239,207,180,18,40,94,26,119,188,47,121,236,55,178,207,244,88,114,214,167,5,37,45,46,189,180,74,97,160,148,210,142,132,45,25,143,55,198,64,11,125,143,164,193,124,106,89,168, +87,45,26,44,247,76,65,230,93,189,11,246,208,195,22,19,126,142,209,60,67,162,82,145,217,255,91,51,129,94,230,190,112,218,82,206,215,221,30,85,1,132,90,158,194,94,18,50,44,236,225,248,19,143,233,176,135, +140,230,202,122,153,161,220,20,112,37,141,148,100,200,145,235,238,142,66,240,44,24,228,207,210,76,189,140,59,52,12,196,3,88,174,40,93,0,53,195,53,170,0,201,157,231,25,123,120,228,45,59,183,99,79,63,178, +255,14,44,0,166,220,87,175,50,162,86,70,85,254,175,174,163,225,206,122,184,22,12,184,67,233,164,223,53,44,42,234,23,97,94,117,202,5,172,161,176,135,114,132,244,254,156,171,123,56,254,196,99,219,97,239, +216,182,189,252,223,87,105,135,127,109,163,206,78,4,23,247,134,68,90,189,90,196,10,183,173,221,13,137,70,141,95,6,87,133,120,105,37,86,177,106,136,27,207,122,218,152,46,150,152,107,207,51,246,240,232, +235,246,110,47,255,159,21,218,225,109,233,118,232,31,151,138,177,135,247,179,135,224,231,50,86,250,104,81,192,157,25,200,157,187,65,203,226,14,43,143,22,201,25,93,160,165,233,173,42,220,226,34,134,194, +30,202,173,231,40,123,120,244,77,187,183,35,127,177,122,59,236,47,75,181,67,219,75,218,193,109,137,118,224,79,150,105,7,28,178,127,103,63,90,154,201,96,227,214,146,175,238,205,42,131,171,192,163,121,88, +207,219,12,168,11,135,244,178,24,96,190,22,15,68,127,238,13,241,99,172,249,119,174,178,135,167,190,253,232,118,244,255,172,217,233,217,67,254,178,100,199,216,253,255,121,153,182,255,223,45,223,246,189, +252,153,18,128,54,220,36,17,118,30,245,108,33,120,181,246,45,208,178,182,116,52,138,198,169,50,158,18,19,89,153,93,13,89,26,136,179,202,0,14,133,61,140,142,243,207,153,134,166,207,118,221,195,253,223, +189,117,59,252,233,149,59,198,238,255,159,43,180,189,254,97,133,182,117,104,150,205,111,90,163,237,121,240,238,253,39,14,18,119,211,133,105,76,208,178,11,169,55,139,38,53,142,125,110,3,207,83,24,158,159, +197,42,234,213,236,80,180,5,23,92,176,195,30,154,95,25,12,190,156,25,123,56,71,235,30,238,124,233,152,63,236,245,15,171,183,29,167,173,219,198,125,110,189,54,230,157,235,180,141,223,49,186,109,240,182, +53,218,122,151,173,209,14,63,234,176,206,14,136,253,36,219,66,178,32,111,192,202,200,212,99,90,241,185,204,172,182,117,186,139,59,218,250,17,221,13,137,212,100,233,239,85,129,170,122,214,248,156,171,236, +225,184,163,199,182,45,238,94,187,141,249,232,232,54,230,253,107,183,77,110,203,237,40,159,88,179,109,248,225,213,219,134,55,172,213,206,190,236,172,206,134,27,74,124,32,123,232,174,28,8,158,52,208,156, +93,181,74,141,95,251,207,178,50,211,90,119,221,67,9,134,134,139,74,126,134,236,161,181,177,109,159,97,97,15,147,178,253,98,171,179,54,107,155,76,88,189,109,246,149,181,218,152,47,140,110,155,222,25,134, +240,11,107,182,45,239,220,176,141,185,105,227,118,204,105,71,183,51,207,122,230,112,172,216,67,217,143,55,5,199,211,67,140,175,234,120,190,167,17,184,110,119,221,67,63,51,84,246,144,71,97,15,209,46,0, +16,76,68,106,189,92,150,52,18,15,177,89,30,181,93,250,235,186,204,80,107,153,214,93,43,110,116,99,50,157,201,89,193,60,146,94,155,54,102,243,49,79,143,189,101,131,182,225,215,87,110,155,124,101,141,103, +140,189,123,131,54,230,75,235,183,151,126,42,133,221,186,216,195,148,243,237,103,15,161,58,213,195,149,252,119,179,135,122,246,133,176,135,166,171,97,103,15,55,221,97,227,63,140,249,216,218,109,221,71, +87,104,155,222,159,139,6,238,218,176,173,21,246,112,205,176,135,171,62,15,123,200,61,171,103,103,151,61,212,56,131,212,61,28,30,246,48,238,55,109,131,109,214,255,195,150,97,15,95,22,246,240,165,137,214, +107,134,61,92,109,48,246,240,242,190,186,135,93,236,33,195,245,140,221,9,243,170,87,15,3,184,50,15,224,230,221,101,0,45,12,106,243,78,212,238,139,17,138,60,126,95,41,64,213,241,250,10,198,93,212,229,202, +42,2,189,100,72,7,226,221,63,20,119,91,49,43,146,243,226,222,119,101,193,254,195,4,151,137,65,214,167,97,15,183,14,123,184,74,216,195,21,102,194,30,14,90,247,112,253,161,215,61,44,12,87,44,48,102,179, +244,155,251,117,15,201,12,242,70,126,62,118,168,236,161,186,135,103,46,215,150,62,106,233,182,232,44,212,61,28,132,61,156,207,234,30,94,176,66,91,124,136,236,161,200,94,83,83,134,193,239,231,235,186,135, +51,99,15,37,42,142,116,164,139,153,18,127,150,41,236,241,24,63,169,143,61,156,191,234,30,46,250,222,69,219,202,23,173,220,153,107,61,198,165,180,84,238,92,42,30,167,255,9,106,255,41,55,78,116,127,48,159, +79,202,220,62,229,69,201,30,230,248,243,123,174,151,73,244,126,32,91,74,83,210,171,147,19,153,167,38,213,252,124,95,82,161,190,154,210,157,18,139,117,242,44,151,71,133,190,231,200,148,102,57,74,207,160, +52,216,66,125,58,168,213,243,186,83,118,19,175,76,36,191,59,110,56,45,199,149,143,184,8,215,249,172,35,203,244,200,132,188,249,169,25,143,79,36,186,254,208,109,132,46,232,203,152,252,81,92,244,201,24, +242,67,27,110,238,191,202,51,33,61,254,96,86,59,147,221,165,147,165,225,36,213,222,123,236,97,143,61,28,154,86,122,72,106,218,161,98,61,157,211,245,94,221,195,142,204,64,138,167,34,165,218,192,164,7,238, +166,179,41,62,182,235,241,185,175,111,154,7,157,250,178,60,238,191,234,177,135,67,245,184,25,253,92,15,197,155,221,22,28,233,191,63,87,122,184,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,28, +90,62,61,228,105,41,167,125,43,228,16,123,124,78,239,111,251,245,175,127,253,80,206,139,238,71,187,228,12,247,31,115,226,240,91,135,105,206,136,93,171,78,165,231,232,132,28,137,212,168,174,66,47,162,133, +218,206,25,48,21,16,178,165,112,30,55,28,195,122,28,209,208,90,193,120,236,122,216,28,200,38,193,111,179,243,241,79,57,104,155,100,159,60,135,109,211,243,127,222,97,131,49,123,220,46,76,25,210,141,45, +67,50,184,207,216,83,98,228,167,127,243,155,223,76,207,233,223,125,57,214,156,4,237,33,248,180,83,193,80,7,215,140,163,191,114,124,226,141,119,223,228,95,154,171,82,221,81,187,23,143,68,67,194,96,39,254, +78,14,201,131,93,15,75,14,236,204,202,177,169,109,159,236,126,252,220,161,64,26,121,114,14,207,191,99,55,53,91,183,175,200,13,76,54,2,102,90,103,124,166,6,231,164,126,105,61,203,216,167,158,122,234,241, +28,131,222,23,105,194,212,24,247,219,146,249,97,144,170,222,67,73,14,245,32,189,71,105,53,8,83,156,42,186,213,212,65,55,163,10,210,34,150,241,16,126,59,46,213,243,244,35,182,123,170,106,30,185,48,57,179, +83,196,24,253,219,236,91,79,203,207,76,180,117,156,173,160,187,99,240,69,217,13,89,51,70,247,31,171,12,186,121,241,124,169,96,140,93,36,198,238,195,141,245,44,99,163,182,153,150,55,254,123,255,185,19, +251,2,177,156,11,87,89,131,34,90,156,234,51,16,146,83,132,25,111,208,123,196,48,134,128,222,67,173,248,62,131,137,90,138,80,171,26,106,190,239,103,189,146,85,112,243,184,247,211,14,5,236,147,71,253,243, +221,236,168,220,25,99,79,202,227,78,160,25,186,247,243,246,112,142,52,55,205,161,246,77,198,44,55,214,179,140,53,94,157,20,210,76,234,197,42,119,64,125,67,79,169,39,157,6,26,135,220,178,20,244,140,35, +58,169,186,135,47,74,246,144,107,22,123,88,99,152,4,169,155,61,52,118,187,81,188,249,146,61,52,38,141,231,194,241,170,238,97,69,234,50,90,99,84,221,195,10,84,188,130,23,84,208,210,32,26,72,128,172,107, +157,75,98,225,213,9,72,182,115,85,32,153,158,77,192,71,221,228,22,183,182,193,184,216,144,118,45,35,55,90,35,114,132,15,254,242,151,191,124,32,194,147,251,77,61,254,51,111,200,148,35,10,23,104,201,141, +5,36,209,150,203,122,106,12,119,11,70,139,121,112,218,79,226,64,25,64,223,65,216,66,50,204,253,25,105,220,206,119,236,161,113,172,81,74,22,172,81,168,243,136,208,8,76,25,74,214,84,101,1,73,22,53,38,87, +174,242,40,117,43,249,136,103,15,25,75,18,76,229,78,118,68,217,174,119,187,75,2,146,60,144,45,117,51,136,26,132,102,19,15,161,97,8,74,231,11,246,144,177,162,183,135,124,184,84,181,116,88,196,164,69,152, +146,36,234,97,134,83,244,20,225,66,217,83,87,168,75,98,70,52,123,72,9,43,109,44,72,139,96,148,134,210,124,140,76,35,75,44,151,214,203,122,152,150,171,42,92,82,246,20,112,137,83,68,168,137,15,206,158,100, +89,4,51,35,134,61,20,168,200,5,171,72,77,85,199,35,13,174,122,45,220,90,47,11,84,132,107,131,1,151,198,182,239,195,242,4,55,158,97,106,35,16,31,17,117,15,101,88,198,45,67,185,51,205,115,225,120,85,36, +14,93,70,34,172,151,25,140,66,227,202,165,212,43,57,177,175,17,164,50,182,128,75,6,3,46,139,51,52,174,231,9,123,40,183,173,121,150,209,69,167,84,237,37,249,50,227,25,109,17,33,18,19,131,155,150,244,96, +209,105,221,132,41,55,71,174,49,86,224,162,185,198,52,137,220,128,202,62,33,75,71,29,100,26,243,181,2,45,135,157,61,52,150,106,158,45,232,178,48,29,13,81,149,241,138,54,165,146,53,150,75,52,206,96,146, +68,15,215,22,168,140,91,6,107,20,222,64,157,139,107,146,67,131,44,169,128,160,119,69,145,206,85,246,176,251,170,10,115,110,149,3,43,88,171,18,19,61,205,104,226,111,189,92,245,31,170,140,167,192,37,80, +85,239,194,231,245,42,161,41,116,143,186,150,134,154,244,161,10,61,146,66,148,84,120,174,177,135,149,42,22,141,82,189,91,6,119,147,105,150,130,2,154,177,108,177,33,82,235,225,42,67,196,88,99,91,99,80, +199,51,84,116,55,173,105,40,60,132,32,232,255,154,103,236,97,1,85,69,163,12,36,76,11,157,171,170,119,212,237,146,16,70,211,88,114,101,6,87,25,79,189,218,141,208,98,158,10,17,178,97,80,165,2,231,41,123, +104,33,192,93,139,66,43,252,174,2,87,73,248,43,197,52,79,123,227,152,8,198,234,89,31,235,81,211,151,100,165,170,220,86,57,50,217,154,70,173,234,153,12,158,39,117,15,173,118,24,172,245,189,161,66,240,52, +64,53,2,195,171,103,189,225,90,47,251,190,249,86,42,201,101,53,66,33,123,166,52,31,87,29,212,130,53,53,154,6,155,167,236,161,61,44,1,133,209,220,207,107,25,172,167,124,207,163,183,24,38,243,66,170,233, +89,211,88,17,230,140,42,72,179,134,70,193,150,21,35,106,49,50,79,217,67,9,190,49,201,152,42,178,106,206,45,12,175,72,53,240,150,41,70,4,214,179,18,14,89,23,119,53,198,25,85,6,214,122,89,30,221,13,92,90, +150,138,27,148,183,51,98,15,135,189,238,161,169,169,202,104,115,79,145,213,99,250,145,89,153,119,37,27,198,41,174,65,128,42,224,195,124,235,103,185,48,119,29,88,213,146,129,60,200,6,161,199,16,242,106, +252,146,30,207,125,246,240,236,211,59,219,170,8,20,185,178,167,140,52,245,136,186,166,153,90,3,75,27,85,212,202,237,77,29,163,173,137,235,22,135,130,163,245,50,195,203,216,238,154,165,118,58,204,191,140, +69,184,88,76,80,229,206,21,246,240,168,43,247,108,39,191,127,175,206,62,148,20,207,118,171,29,76,189,41,247,213,163,117,225,80,93,54,212,13,106,73,54,100,85,178,41,99,218,248,151,139,115,111,70,119,51, +195,122,213,134,124,110,34,239,103,15,137,205,7,178,135,162,55,133,253,156,173,123,120,246,73,109,252,205,187,183,19,126,180,86,59,225,59,235,119,86,49,182,101,236,84,232,13,61,90,215,208,232,65,193,201, +154,183,200,22,56,15,195,141,97,13,33,205,212,203,198,189,72,221,93,224,177,64,75,6,195,122,114,1,73,63,38,224,106,11,146,69,233,38,216,82,32,19,189,101,98,118,74,178,119,253,59,34,183,236,162,60,150, +253,173,135,136,231,250,4,51,43,62,107,155,54,193,227,189,121,3,19,18,76,38,102,47,249,151,133,151,91,157,156,122,214,73,237,228,59,183,111,39,181,21,219,9,109,249,54,254,119,43,180,227,142,127,102,15, +10,142,39,202,26,167,246,170,44,14,106,11,71,70,197,64,110,92,100,154,197,62,131,45,18,100,86,53,61,25,207,166,50,185,121,149,226,229,222,62,46,0,132,75,115,101,239,141,112,188,196,228,12,214,0,115,134, +61,188,240,216,118,226,164,177,237,196,223,173,210,49,246,184,182,108,59,182,141,106,71,221,191,113,103,255,153,193,220,147,177,12,169,210,127,117,5,13,132,214,195,96,189,92,24,158,116,210,214,142,40, +142,22,183,113,96,254,237,6,45,25,107,199,178,88,9,185,179,19,15,11,137,50,214,235,28,171,123,120,96,106,164,157,240,223,47,237,239,217,99,255,216,103,236,143,87,110,71,252,215,114,237,208,35,14,238,184, +145,41,196,184,172,13,58,227,148,251,86,207,118,215,59,172,242,127,12,54,230,101,90,166,176,202,180,170,196,111,221,205,101,89,56,20,246,112,142,212,61,60,228,171,235,183,227,126,179,90,59,242,159,215, +105,135,124,123,221,118,240,212,13,218,129,159,29,215,246,190,105,203,182,247,62,123,183,3,15,219,191,191,62,33,183,174,74,120,22,245,85,5,175,64,75,81,218,215,237,118,116,35,120,130,157,160,103,78,151, +168,152,159,235,154,27,70,12,165,238,33,60,192,17,12,201,49,21,46,97,106,232,182,59,50,118,119,236,19,189,17,185,45,242,156,163,150,48,71,199,230,63,123,56,129,228,209,252,129,233,187,157,54,174,237,117, +215,86,109,255,187,182,109,7,125,102,151,182,247,199,182,109,219,189,119,227,182,229,117,235,183,189,15,221,171,179,24,119,238,83,27,227,220,209,6,157,113,202,125,7,26,171,231,185,188,57,185,246,173,184, +181,133,131,124,90,18,195,181,139,65,44,28,111,102,236,161,121,121,142,177,135,123,93,191,125,59,112,202,118,109,247,207,140,109,59,253,213,166,109,135,207,110,28,36,239,101,109,220,205,25,195,167,28, +222,217,92,179,72,175,186,135,34,54,99,44,236,185,169,192,84,209,185,251,254,29,36,170,192,197,96,217,153,96,228,28,202,188,236,111,189,16,246,144,152,156,190,154,228,56,61,122,96,30,101,60,157,31,47, +49,168,184,52,170,243,69,19,121,207,162,169,200,88,154,26,215,152,190,253,94,219,254,126,231,123,55,110,187,60,178,81,219,229,43,169,226,124,215,198,109,187,47,111,208,182,186,99,221,182,217,91,215,105, +39,157,118,66,39,9,17,188,170,238,161,87,39,130,34,39,88,82,158,173,199,139,44,29,88,205,82,224,49,245,96,15,11,125,151,84,12,149,61,196,68,36,49,81,247,112,18,49,121,254,206,85,49,18,157,70,223,185,114, +157,29,15,122,122,24,247,92,39,115,216,167,50,150,30,201,113,231,36,39,239,219,30,187,85,219,254,209,245,218,246,15,174,223,182,187,107,131,182,205,151,215,107,99,191,20,36,239,147,107,182,77,223,180, +246,160,236,161,123,176,68,83,243,163,147,66,243,178,41,75,239,219,145,52,15,139,238,220,184,251,66,3,185,178,222,181,149,243,124,236,161,169,200,216,53,39,103,110,254,55,76,4,76,128,114,62,6,82,205,235, +93,194,214,165,235,140,105,80,131,243,70,23,203,22,202,49,153,14,38,165,151,167,145,25,56,121,223,238,130,45,219,216,192,89,91,221,183,118,199,216,45,194,30,142,9,142,183,77,216,195,45,6,97,15,77,33,30, +111,74,118,164,167,125,94,123,83,50,35,245,191,187,217,67,243,108,25,49,212,186,135,249,155,191,26,54,246,112,235,176,135,99,194,30,110,22,246,144,177,91,135,61,220,34,236,225,58,97,15,71,135,61,220,182, +175,238,33,246,208,65,56,227,24,86,59,21,207,199,30,186,131,195,80,48,126,25,107,245,227,247,36,24,126,207,83,91,60,112,188,170,123,168,134,154,178,98,73,70,38,247,21,159,170,222,37,131,80,27,170,159, +133,152,225,129,184,31,74,203,141,75,79,127,152,128,132,166,130,204,0,123,184,69,216,195,13,194,30,110,30,246,112,171,176,135,235,133,61,92,43,236,225,26,97,15,87,235,174,123,120,250,248,78,48,171,186, +135,115,154,61,236,171,123,248,221,52,210,148,52,238,240,178,135,91,135,61,220,56,238,189,78,216,195,181,195,30,174,25,246,112,181,129,117,15,177,135,103,142,110,91,30,188,101,219,97,215,29,250,111,87, +153,19,236,97,188,97,238,179,135,227,194,30,174,17,246,112,149,176,135,171,206,172,238,225,177,163,218,50,123,44,211,150,217,122,153,54,106,139,81,109,133,89,96,15,187,11,179,118,177,135,223,5,90,230, +224,253,7,113,249,187,227,145,162,242,94,121,212,80,227,202,163,6,211,122,204,84,197,147,95,90,136,14,138,52,136,90,134,128,36,249,243,228,98,15,183,10,123,184,218,103,115,3,210,23,150,107,43,222,150, +113,246,238,60,55,175,216,86,185,121,149,182,114,10,185,174,244,150,149,218,138,215,173,216,86,152,115,117,15,95,188,236,161,104,253,162,97,15,87,61,110,213,206,125,149,34,115,213,61,52,95,75,84,76,97, +47,106,246,208,218,182,216,67,235,89,79,23,123,56,173,139,61,124,113,214,61,236,177,135,89,8,244,229,198,18,10,249,177,148,17,223,132,137,18,141,103,170,177,124,222,212,114,40,100,138,196,36,15,162,83, +17,55,211,192,142,217,104,187,44,184,252,29,73,23,39,185,8,215,221,176,57,219,253,102,148,121,223,202,173,193,143,69,119,53,53,137,200,228,108,24,216,66,154,152,101,229,36,63,227,102,179,44,62,30,183, +7,149,149,206,164,140,237,135,147,15,79,176,158,205,158,212,107,242,183,173,122,202,208,34,74,123,117,15,135,212,81,67,249,161,161,252,140,73,62,143,82,3,196,157,92,205,21,199,150,102,99,251,122,200,189, +116,215,228,185,41,207,173,121,222,211,247,177,175,249,30,119,181,187,184,67,30,108,48,183,133,231,65,248,172,103,45,241,228,197,139,230,153,41,39,60,215,200,180,62,195,23,207,171,177,213,99,15,211,8, +174,138,89,173,207,11,120,130,135,46,210,158,147,6,90,174,175,177,120,203,34,121,158,183,188,238,80,188,175,251,103,102,154,90,206,234,31,28,233,63,223,51,120,56,122,168,199,30,246,216,195,30,123,216, +99,15,123,236,97,143,61,236,177,135,189,186,135,67,186,169,165,199,30,246,216,195,30,123,216,65,230,220,92,74,25,64,203,85,202,249,193,216,67,242,254,98,15,231,235,186,135,84,1,85,133,163,91,93,71,134, +84,117,15,1,211,68,109,197,30,22,51,108,155,214,121,242,124,197,30,82,200,23,44,93,66,81,26,44,162,82,42,189,98,16,201,30,124,78,69,91,6,82,18,96,24,225,121,160,77,18,10,30,99,175,186,104,53,39,146,14, +203,137,94,28,136,71,142,248,100,190,55,33,199,180,211,114,214,244,133,190,237,34,27,140,207,98,137,159,51,87,229,148,126,145,60,39,69,147,241,64,20,116,15,68,123,49,5,227,79,154,68,21,87,160,101,73,126, +1,209,148,114,190,207,53,75,19,77,48,74,246,79,101,91,37,73,224,56,100,137,85,48,142,26,128,42,0,243,64,200,230,76,185,251,206,121,122,143,249,130,61,44,66,141,216,172,202,150,84,25,49,210,68,138,61,178, +165,194,241,136,95,168,123,40,241,144,165,180,149,168,25,13,73,29,52,162,235,30,50,150,56,156,118,178,155,78,35,62,163,214,161,218,33,29,174,222,165,214,163,204,35,86,163,223,114,223,180,134,0,107,241, +38,174,59,98,235,30,114,103,110,76,118,68,241,206,112,189,204,149,233,176,200,138,75,59,93,208,37,119,174,43,212,171,210,101,241,135,232,23,1,206,193,154,115,225,121,206,30,138,166,85,152,181,232,180, +110,28,175,122,153,209,4,164,140,166,163,214,139,229,210,37,62,45,224,178,187,194,37,237,38,143,96,232,136,96,15,69,207,154,122,24,94,228,9,183,174,34,113,122,154,70,171,155,63,52,134,11,184,164,219,170, +218,135,122,152,139,151,188,137,23,144,55,41,135,64,224,18,77,71,39,90,207,19,246,176,234,30,74,42,170,204,87,213,74,43,0,147,209,132,223,164,132,122,25,26,160,254,161,40,93,117,32,186,217,67,129,171, +12,102,44,79,160,193,54,20,52,172,179,227,121,94,247,144,138,182,184,164,129,116,154,49,77,123,73,29,75,245,78,75,73,134,88,6,235,81,234,60,143,94,238,46,131,64,180,166,146,143,168,46,216,249,127,28,158, +83,230,17,197,208,120,154,131,245,122,129,150,100,76,164,82,249,254,83,110,76,117,144,151,3,190,135,51,23,143,237,219,240,95,188,127,30,182,149,154,63,126,79,198,208,244,40,211,167,101,226,127,186,10, +176,114,215,74,15,253,65,243,35,192,67,20,173,177,59,88,177,56,223,99,180,158,54,229,208,93,82,192,115,105,17,153,161,122,216,184,229,198,34,179,68,164,84,122,164,197,5,92,82,9,80,8,84,69,1,209,219,148, +165,1,230,74,221,195,186,84,168,176,89,61,89,236,81,25,95,56,158,175,139,220,166,41,36,139,72,205,165,171,96,43,87,102,48,99,245,44,67,185,177,177,91,69,107,84,16,32,133,0,122,144,28,234,77,226,181,185, +86,247,176,12,54,62,139,36,99,148,192,197,248,194,242,170,46,113,21,97,22,192,164,151,140,173,50,68,122,182,138,91,148,161,40,25,145,157,112,220,248,151,158,18,184,80,190,19,157,18,185,209,98,86,41,5, +110,237,115,242,137,44,66,254,226,226,95,231,209,113,111,21,181,156,80,58,201,92,161,223,165,211,242,23,100,222,187,59,227,102,98,174,123,250,145,214,227,182,120,161,194,106,164,145,82,200,170,123,104, +92,149,160,219,252,107,26,242,74,235,92,104,78,85,185,44,226,140,196,159,91,155,134,184,178,36,68,3,192,103,101,99,140,20,209,185,191,113,239,41,240,210,223,159,167,117,15,81,100,222,28,118,169,234,36, +121,83,85,157,182,238,205,42,50,84,239,115,119,70,27,195,5,120,72,63,253,141,2,44,189,86,45,227,250,123,85,74,112,48,246,176,0,143,97,175,123,200,96,247,117,120,179,122,132,241,132,222,162,177,87,159, +115,73,31,235,185,98,155,68,99,99,191,88,99,67,192,244,101,104,120,245,104,148,2,46,107,88,104,44,216,206,140,234,30,10,94,210,80,137,138,251,171,201,42,82,127,105,98,92,217,225,251,51,145,186,14,207, +210,162,23,101,206,11,126,112,239,228,76,236,29,151,150,192,115,99,84,73,173,93,45,234,143,61,254,152,206,45,103,86,79,198,26,216,170,94,125,204,53,101,85,130,142,94,148,93,89,2,210,73,115,99,65,74,110, +205,232,154,210,6,150,1,53,3,212,99,252,215,247,201,141,231,42,123,120,234,107,143,104,167,126,101,92,103,225,94,183,164,85,129,56,83,136,160,35,185,40,66,77,106,88,245,211,140,91,56,143,57,87,3,84,205, +195,226,148,10,194,174,170,183,117,113,145,88,81,224,37,109,245,92,99,15,111,188,243,210,118,206,15,199,180,179,254,176,106,59,243,252,83,59,69,104,60,92,72,208,161,110,47,12,175,46,41,169,140,170,74, +0,50,88,254,140,73,228,238,220,183,187,62,169,97,82,132,41,58,173,8,53,141,224,255,26,118,246,240,138,43,47,111,23,189,235,184,118,238,247,182,104,231,252,105,245,118,118,91,165,157,217,86,106,167,191, +226,132,206,130,29,123,232,181,155,55,52,205,48,212,50,143,251,150,177,216,37,189,107,206,213,32,224,76,99,159,209,117,97,145,94,238,38,75,205,18,176,93,95,51,21,113,103,226,240,97,97,15,15,62,107,207, +118,214,228,157,218,121,191,90,183,157,219,86,235,55,246,140,224,120,167,126,125,227,126,246,144,107,154,94,228,191,240,156,238,155,148,234,114,146,98,152,208,45,85,100,217,16,16,216,68,98,243,118,97, +181,85,219,184,48,90,154,76,21,182,170,68,145,133,196,156,103,15,15,62,224,191,199,79,216,168,157,251,187,181,58,198,158,241,171,53,219,105,65,241,78,123,122,197,118,252,147,171,181,19,254,125,165,54, +254,180,103,234,30,122,211,150,114,122,174,48,60,211,142,222,101,40,132,150,43,99,152,170,135,165,151,0,45,209,219,148,102,85,85,220,97,183,193,134,75,46,247,123,86,165,45,235,227,97,97,15,247,56,99,108, +59,233,111,182,111,199,125,117,199,118,196,93,91,182,253,63,28,26,237,214,205,219,238,87,142,105,123,239,183,103,59,228,232,253,59,91,50,140,230,162,122,183,10,59,86,97,56,110,92,6,251,154,70,128,240, +48,216,162,160,174,131,52,119,155,158,170,151,45,61,107,252,86,205,82,61,44,74,63,31,123,40,41,138,7,124,95,233,4,138,190,52,214,27,51,29,209,125,185,134,125,212,179,54,241,18,121,71,39,128,220,147,76, +104,122,198,229,228,61,247,220,189,29,242,241,237,218,225,119,134,74,251,232,182,49,120,235,182,207,135,198,182,221,223,186,101,59,250,184,163,58,27,110,86,45,178,47,129,135,43,51,200,130,64,111,22,149, +86,84,105,45,20,52,140,21,147,233,202,20,86,101,60,205,195,92,187,48,249,74,95,65,34,216,67,6,75,46,184,179,113,220,93,166,200,231,115,132,61,220,235,85,227,218,17,147,182,109,71,220,187,99,59,252,43, +219,181,241,15,237,222,78,153,120,96,59,242,109,251,183,163,143,57,186,51,142,173,160,44,204,43,131,98,24,206,144,161,229,202,117,5,77,93,46,36,119,54,117,73,51,173,147,229,203,85,187,84,162,81,215,221, +48,174,74,120,206,172,238,225,28,97,15,119,61,116,135,191,28,122,239,214,109,252,163,187,180,51,191,113,80,59,113,234,94,237,160,251,182,106,187,223,54,166,29,113,226,225,157,189,99,46,109,169,230,145, +76,212,216,21,200,24,202,149,5,175,170,132,103,183,195,126,149,245,174,121,155,91,235,101,121,115,93,98,196,104,75,192,10,84,115,149,61,60,224,77,59,182,19,254,110,151,246,242,7,83,33,231,238,45,218,62, +193,241,118,255,202,134,109,231,119,111,210,142,62,237,136,103,177,135,130,137,205,115,227,76,52,149,48,20,25,94,24,30,151,118,91,139,197,61,131,5,61,41,170,224,101,245,101,138,218,110,187,237,230,29, +123,184,195,222,219,61,189,207,87,55,105,251,134,61,220,59,198,238,25,246,112,183,176,135,59,132,61,220,106,0,123,104,119,145,235,121,24,236,85,207,214,142,164,113,110,250,170,187,119,204,193,42,71,67, +241,236,85,217,204,183,252,43,55,30,42,123,152,165,99,177,135,157,66,54,179,205,30,110,31,246,112,143,176,135,187,135,61,220,45,236,225,78,97,15,183,15,142,183,85,216,195,45,194,30,158,211,85,247,208, +186,213,35,153,151,44,88,102,218,155,146,75,87,173,195,218,186,177,69,35,10,191,16,246,112,88,235,30,98,15,119,12,123,184,83,224,172,29,195,30,50,118,219,176,135,219,4,199,219,41,236,225,54,93,236,161, +19,195,190,122,132,32,200,206,162,221,18,14,123,104,95,138,145,54,227,124,207,21,21,21,129,171,87,109,231,204,172,238,97,149,22,51,132,134,141,61,220,60,117,15,183,15,123,56,46,236,225,184,176,135,29, +99,195,30,110,23,246,112,163,176,135,235,133,61,220,161,143,61,172,173,84,46,93,219,50,92,117,48,246,80,126,172,46,56,247,125,33,236,97,26,244,219,195,198,30,110,22,246,112,92,216,195,45,194,30,110,23, +246,112,135,176,135,155,132,61,220,48,236,225,122,97,15,71,135,61,28,125,229,154,109,187,51,183,77,38,54,190,115,10,56,167,217,67,30,211,85,10,240,123,195,206,30,110,148,186,135,59,132,61,220,58,238,189, +73,216,195,13,195,30,174,31,246,112,157,176,135,163,223,191,74,91,227,150,149,219,42,215,174,220,86,125,117,95,221,195,3,183,104,219,239,178,125,39,128,205,169,186,135,243,132,61,220,62,236,225,250,97, +15,215,14,123,184,118,216,195,142,177,183,198,216,91,86,202,19,131,223,185,106,91,254,234,148,177,191,116,84,27,117,76,216,195,221,251,216,195,205,195,30,174,55,244,186,135,35,138,61,220,38,236,225,58, +97,15,87,15,123,184,106,216,195,149,195,30,174,52,144,61,124,67,216,195,238,186,135,71,45,218,70,141,27,213,73,13,229,198,85,218,222,231,53,206,171,154,101,5,167,90,33,9,80,120,97,110,172,162,101,31,104, +121,93,242,228,3,242,140,203,179,126,159,170,126,80,180,103,72,2,113,167,232,238,96,119,45,185,155,186,179,237,243,88,182,66,31,113,197,177,147,247,77,182,219,248,119,155,189,118,211,182,198,71,178,253, +242,241,101,219,178,31,88,182,173,252,174,149,219,202,111,205,243,166,244,248,141,171,180,149,174,89,169,173,116,197,74,109,5,117,15,47,90,188,45,183,247,114,157,45,86,227,209,126,179,167,42,88,214,154, +119,32,123,152,156,250,167,72,112,1,10,47,220,87,190,19,85,202,88,11,4,64,8,188,231,57,215,44,207,50,183,132,63,232,187,131,253,164,252,71,159,196,27,185,207,153,204,32,111,116,106,222,240,191,110,181, +223,86,127,30,123,217,216,182,206,45,235,180,101,63,177,108,91,230,195,203,180,229,223,181,124,91,233,205,113,241,235,66,155,94,29,218,244,202,149,218,18,111,92,162,173,50,126,149,14,123,104,138,154,25, +123,152,159,249,89,26,247,91,93,117,15,39,37,178,127,34,239,73,173,82,8,173,158,101,44,242,101,137,60,51,164,94,134,212,195,253,173,243,12,66,3,211,217,43,211,200,45,46,175,166,169,208,219,113,177,7,226, +158,83,114,20,242,211,109,183,223,182,29,114,216,33,109,251,215,110,223,94,122,243,75,219,210,31,89,186,189,228,182,151,180,81,183,102,44,223,60,170,117,215,61,52,143,118,215,61,172,219,195,105,57,146, +94,170,123,216,205,30,206,255,117,15,229,221,73,84,254,28,89,195,239,35,82,249,93,26,238,151,221,236,161,2,232,189,186,135,61,246,112,104,210,225,33,137,75,103,70,185,136,224,125,129,194,216,134,204,161, +62,247,205,173,43,215,5,148,252,156,243,217,68,221,41,137,238,83,28,108,37,194,78,204,248,236,156,8,100,9,57,49,135,96,19,51,78,5,161,201,46,251,202,115,123,223,182,204,161,249,59,46,14,218,62,15,44,207, +97,152,75,72,128,94,29,36,111,102,239,109,150,11,91,204,202,31,236,51,188,199,30,166,33,122,117,15,211,8,61,246,112,86,134,207,236,252,236,44,37,30,179,243,31,141,148,223,157,43,6,247,216,195,30,123,216, +99,15,123,236,97,143,61,236,177,135,67,91,64,12,121,90,234,213,61,236,213,61,188,188,191,138,150,211,191,94,221,195,220,98,74,84,254,127,170,238,161,131,115,196,217,139,186,238,33,227,170,144,77,33,120, +116,87,85,247,144,154,47,87,79,117,24,197,249,158,61,172,162,20,36,132,37,69,98,108,61,244,155,12,30,200,30,206,151,117,15,5,174,170,107,74,175,193,232,162,75,93,130,79,35,237,80,156,4,145,154,135,114, +167,238,155,39,133,114,234,200,253,71,60,123,216,45,255,167,143,166,219,168,106,31,116,88,116,208,12,164,235,162,213,170,107,214,201,32,124,78,227,193,96,170,93,234,32,210,40,26,75,242,198,18,206,80,250, +2,45,251,234,18,119,190,158,211,196,167,114,230,52,213,161,64,62,159,30,25,197,149,217,89,89,199,6,227,243,222,182,20,209,216,74,209,73,126,60,146,163,7,162,194,185,55,61,243,19,236,31,165,13,145,118, +129,27,20,238,92,211,155,34,23,34,39,46,93,179,222,37,52,35,247,55,61,81,219,18,146,250,27,37,66,173,130,23,20,61,197,32,210,130,248,57,198,138,230,254,110,118,55,71,38,123,88,84,169,87,13,67,179,69,104, +6,9,32,225,103,72,9,196,185,50,73,49,17,106,209,165,197,32,234,233,210,125,213,69,190,35,138,61,20,93,187,113,60,184,78,225,120,52,87,92,148,193,100,73,136,22,66,52,50,99,16,86,119,153,4,42,121,250,76, +134,195,244,24,238,49,238,201,32,70,84,221,195,82,205,233,221,130,57,10,199,35,75,162,150,101,180,177,172,151,9,200,9,199,25,68,153,87,53,76,233,184,6,3,46,141,225,17,193,30,82,186,26,211,34,112,85,164, +45,169,126,225,120,2,149,158,22,172,244,50,141,116,149,245,44,254,144,114,143,177,158,194,241,140,107,154,107,65,141,120,141,252,105,68,176,135,122,183,144,187,50,178,144,60,175,5,105,25,203,196,224,2, +23,131,141,225,42,231,73,82,92,192,101,119,57,79,174,93,165,17,136,78,73,157,144,105,130,26,201,227,92,173,123,40,43,98,44,163,170,198,74,5,174,110,6,81,207,23,127,104,138,82,214,143,108,152,214,178,234, +65,84,73,192,210,99,250,58,137,177,49,174,97,240,17,84,183,228,79,180,93,100,137,140,166,158,165,251,154,171,236,161,30,20,152,170,242,59,227,186,43,228,85,49,117,95,215,203,162,53,131,69,232,42,126,81, +226,83,129,75,175,18,165,10,106,196,167,20,124,130,28,58,198,226,131,68,130,225,230,226,185,206,30,18,142,50,130,193,198,169,0,197,112,15,3,41,220,53,136,199,199,190,15,23,80,105,139,81,130,85,17,106, +213,171,2,153,222,39,47,214,179,140,53,134,121,7,77,200,64,246,176,42,94,234,229,186,138,61,119,8,252,49,63,247,132,235,97,157,90,38,249,112,81,40,73,196,50,253,59,30,9,38,199,71,7,249,149,60,147,147, +80,252,61,49,89,161,120,40,19,121,49,87,53,118,100,63,85,232,81,154,40,2,87,49,56,137,134,164,131,113,140,46,224,178,248,36,115,51,166,137,200,148,166,90,239,50,188,20,182,85,251,1,30,80,100,169,64,39, +17,161,242,41,232,146,161,115,157,61,20,157,7,86,159,100,176,30,55,21,21,70,167,247,171,12,32,119,55,61,9,78,2,149,177,90,227,148,171,51,178,168,82,194,113,76,132,255,195,34,131,46,147,218,135,164,137, +193,122,212,231,26,193,88,214,0,146,148,190,128,246,164,139,127,157,71,167,103,93,15,235,218,215,85,250,123,56,83,198,229,233,221,123,18,65,85,91,255,177,30,246,159,72,31,241,7,30,61,174,165,143,63,121, +124,7,194,68,124,122,83,2,81,247,227,146,3,111,210,52,36,50,87,57,78,238,207,221,129,152,18,140,42,48,165,7,187,141,211,32,20,242,245,123,149,162,90,70,18,169,145,53,21,56,93,162,181,234,113,162,84,104, +81,92,252,71,110,57,118,248,30,67,221,133,187,69,231,212,178,18,235,228,187,151,103,220,220,155,164,224,225,104,150,59,6,163,207,172,91,25,119,241,37,23,181,115,95,159,26,105,239,221,190,93,152,66,53, +150,118,190,78,197,46,153,168,199,155,247,112,91,89,149,199,152,213,115,18,14,99,147,177,133,219,86,129,230,170,89,204,59,170,142,98,213,82,172,107,50,12,149,225,175,123,120,225,249,237,226,235,78,107, +151,124,238,160,118,201,223,110,217,46,121,106,116,187,228,71,99,58,189,205,3,44,26,188,65,99,142,65,86,66,92,83,176,17,97,5,30,17,87,144,146,72,8,82,12,214,251,98,130,177,93,243,120,245,126,1,151,221, +0,166,220,92,35,13,103,221,195,118,206,155,142,107,151,222,191,95,187,236,39,91,180,87,254,97,237,246,138,182,102,187,180,173,209,46,250,231,141,59,198,130,49,61,230,218,34,211,76,37,30,238,74,12,110, +154,49,221,24,175,133,244,136,200,122,189,86,95,85,232,209,188,94,193,173,170,94,86,218,90,175,195,86,247,240,216,247,108,221,94,253,155,49,237,213,109,237,118,89,27,221,49,246,146,191,172,222,46,14,180, +117,97,112,188,179,206,123,134,59,36,217,247,230,107,109,107,126,45,58,77,79,214,92,139,110,169,154,135,2,149,121,85,186,169,177,170,200,99,49,135,102,0,1,177,234,26,215,43,111,26,54,246,240,224,179,118, +254,195,43,127,188,107,187,244,187,123,181,243,191,179,109,59,231,201,141,218,25,255,180,110,59,233,27,107,183,211,255,121,141,118,198,167,119,235,236,67,153,95,177,251,242,98,46,107,49,80,165,238,245, +106,213,77,51,5,249,216,20,100,158,101,48,146,197,216,53,79,87,189,195,110,208,178,62,46,218,148,84,113,88,217,195,147,190,176,123,59,245,158,61,219,248,143,237,214,142,252,240,206,237,176,15,109,219, +246,125,199,216,206,162,252,224,35,247,239,48,75,140,214,187,140,45,20,143,193,85,242,30,198,83,85,241,128,91,12,150,31,27,231,162,185,241,111,202,234,230,14,171,132,167,160,88,176,165,224,9,17,240,12, +15,123,152,186,135,7,188,102,135,118,250,244,128,89,119,237,221,78,250,242,158,237,216,59,118,109,7,125,120,187,118,192,81,251,246,223,5,96,31,202,27,231,166,69,165,85,173,180,114,99,174,108,252,202,153, +141,95,61,204,96,235,99,73,139,224,36,112,113,99,189,218,109,176,169,200,173,75,230,87,198,230,178,252,206,218,120,88,216,195,237,118,216,174,157,254,173,93,219,105,19,246,106,167,60,176,103,59,241,171, +187,181,99,62,191,107,59,240,138,221,58,27,110,118,23,237,63,217,108,171,26,105,221,133,225,138,57,172,122,135,26,132,39,72,52,172,152,170,222,97,85,193,19,152,24,92,53,75,205,4,64,203,5,23,92,176,31, +4,153,89,221,195,217,102,15,143,252,204,14,237,164,169,187,180,19,98,236,113,247,239,210,142,186,123,135,118,232,39,118,104,103,158,123,70,39,104,21,123,200,37,185,235,192,222,45,20,175,184,67,99,221, +52,101,250,42,208,82,66,194,173,165,161,2,88,25,124,254,249,231,119,140,133,210,22,249,66,121,251,124,236,33,21,110,232,153,9,49,124,186,210,9,73,54,40,250,40,249,214,202,179,228,179,78,15,243,133,133, +50,86,62,148,76,231,225,4,163,9,249,229,255,216,247,213,219,182,227,166,109,223,198,127,117,167,118,244,125,185,226,105,242,158,237,204,41,7,181,99,223,113,96,59,118,252,177,157,52,206,205,45,170,199, +202,147,237,88,72,27,245,166,49,91,215,206,20,134,87,235,219,2,45,187,107,29,118,215,46,45,208,146,11,151,177,178,41,171,36,27,1,130,23,245,124,41,231,231,88,221,67,236,225,203,195,30,158,24,246,240,156, +176,135,167,132,61,60,52,236,225,94,131,176,135,181,195,104,188,201,107,185,175,200,92,165,255,68,240,238,2,143,118,48,141,99,233,167,188,91,202,105,44,115,109,243,176,113,90,236,161,133,127,213,80,147, +78,194,6,10,9,130,17,204,209,186,135,7,133,61,60,37,236,225,81,97,15,15,10,123,184,127,112,188,189,194,30,238,58,128,61,180,87,44,37,229,118,222,128,92,88,148,230,206,213,195,22,245,210,75,153,152,249, +187,12,150,82,50,88,54,101,28,91,238,205,179,186,135,216,195,253,195,30,30,24,246,144,177,251,132,61,220,51,236,225,46,97,15,199,117,177,135,2,88,41,220,245,176,232,203,64,75,65,189,91,84,169,37,160,52, +212,84,163,129,204,229,242,102,227,216,78,202,172,178,135,230,231,190,186,135,223,156,99,117,15,119,12,123,184,111,216,195,189,195,30,238,25,246,112,183,176,135,59,195,241,194,30,110,213,197,30,90,43, +235,221,42,245,7,168,146,134,202,181,1,150,140,117,204,98,10,194,27,2,45,5,37,195,160,123,188,190,128,186,135,63,157,227,117,15,119,10,123,184,91,224,172,93,195,30,50,118,199,176,135,219,5,199,219,53, +236,225,118,97,15,143,61,237,232,118,230,89,103,118,162,183,219,75,141,187,98,15,173,91,145,222,150,117,166,22,68,183,245,109,85,177,172,177,202,232,161,176,135,198,177,191,221,197,30,170,181,250,104, +254,254,35,153,202,46,75,0,86,204,70,33,27,250,234,126,109,245,12,53,30,105,173,181,226,110,55,102,27,103,114,166,138,71,210,83,129,45,198,60,189,83,216,195,29,194,30,110,31,246,176,99,108,216,195,29, +195,30,142,9,123,184,65,216,195,29,187,234,30,218,104,43,246,144,193,3,217,195,110,14,81,3,200,160,102,149,61,76,196,254,195,176,214,61,196,30,238,16,246,112,155,176,135,59,134,61,220,37,236,225,230,97, +15,55,9,123,184,65,216,195,117,194,30,174,61,68,246,208,244,226,169,204,73,111,249,216,112,176,139,97,202,233,126,42,211,210,56,130,218,92,171,123,136,61,220,41,236,225,118,113,239,205,194,30,110,26,246, +112,195,176,135,235,135,61,92,39,56,222,232,96,120,171,135,61,92,125,16,246,208,182,204,124,89,247,112,221,117,215,254,221,14,97,15,55,14,123,184,126,216,195,245,194,30,118,140,13,123,184,70,216,195,213, +25,141,61,188,102,16,246,80,221,195,89,96,15,139,88,147,92,204,243,186,135,227,194,30,110,16,246,112,116,216,195,151,134,61,92,61,236,225,170,97,15,87,235,174,123,56,27,236,97,5,59,83,143,148,50,1,109, +222,215,61,220,52,236,225,22,97,15,215,10,123,184,82,216,195,229,103,198,30,94,28,246,112,159,161,179,135,50,44,243,108,23,123,216,169,85,58,34,216,195,173,103,198,30,190,110,112,246,176,206,141,234,86, +67,193,75,142,158,153,226,207,217,130,253,175,24,251,120,102,142,137,166,30,85,104,95,236,236,225,215,100,80,185,28,101,254,175,123,56,3,246,240,251,150,120,170,189,247,216,195,94,221,195,103,95,137,62, +51,122,102,200,242,225,25,150,213,235,177,135,189,186,135,61,246,176,199,30,182,161,241,10,51,11,72,67,249,254,108,7,173,161,252,39,35,233,103,230,138,193,61,246,176,199,30,246,216,195,30,123,216,99,15, +123,236,225,208,230,242,33,79,75,61,246,176,199,30,246,216,195,206,113,168,75,245,65,27,164,191,255,231,216,67,240,21,93,8,161,74,85,192,83,46,236,136,35,142,232,104,69,16,106,246,184,156,73,249,154,147, +72,100,11,89,133,198,34,133,240,125,7,117,180,210,217,225,124,122,153,101,150,153,150,159,157,236,218,58,55,185,101,37,230,6,53,151,19,13,90,93,126,134,65,43,234,185,213,18,168,94,251,203,95,254,242,222, +28,106,223,31,241,232,164,168,107,126,235,88,147,216,132,118,202,41,189,94,164,167,44,21,14,67,186,235,30,22,123,88,55,252,187,6,253,226,139,47,238,104,53,75,190,216,183,145,55,255,179,135,37,23,36,58, +171,218,135,212,185,140,165,170,243,188,40,217,67,189,79,128,70,121,71,206,80,116,41,21,64,73,31,52,14,201,81,149,1,228,198,243,69,221,195,110,246,176,138,198,85,145,25,26,104,2,22,122,142,162,91,8,81, +41,3,170,198,146,70,41,238,208,201,131,113,63,34,217,67,252,67,55,190,67,223,81,72,30,225,89,149,4,164,218,83,182,132,4,162,138,62,210,106,82,247,80,253,120,165,196,21,204,176,135,228,80,94,203,104,87, +179,19,207,56,88,115,146,72,35,162,129,124,221,85,147,110,95,140,28,242,209,168,124,238,78,224,114,227,154,155,220,250,171,91,62,39,104,69,71,117,68,180,86,247,71,24,58,33,162,113,183,131,254,201,31,36, +2,165,127,38,53,34,233,167,209,40,70,80,16,42,124,150,184,172,27,246,160,221,34,73,194,68,208,72,171,229,34,208,113,101,106,30,198,82,223,150,40,149,190,11,146,39,42,147,28,18,154,193,117,184,58,229,46, +181,187,192,201,104,13,193,11,124,46,106,199,216,63,198,208,41,105,156,71,243,241,180,92,79,71,250,224,218,186,37,103,120,145,103,132,220,183,70,76,118,127,12,191,47,145,248,223,253,49,129,69,208,161, +182,83,105,135,11,138,210,90,149,203,117,179,135,197,46,249,90,55,142,71,109,71,198,4,13,208,195,132,105,221,132,41,165,15,93,53,53,159,71,35,50,84,15,150,50,96,158,215,61,228,118,12,43,114,133,177,221, +149,241,138,84,35,75,162,104,39,229,71,193,24,191,92,218,248,173,42,151,213,195,148,184,12,38,113,170,170,62,220,185,110,36,55,135,107,12,34,56,74,2,42,33,103,199,30,29,224,212,49,114,137,7,51,3,124,35, +130,53,213,180,246,205,99,171,120,241,231,220,122,152,55,112,122,220,233,43,105,237,135,243,198,191,167,101,41,222,107,206,45,195,36,5,254,184,22,231,202,158,170,196,49,176,88,92,201,251,185,185,72,205, +173,245,48,113,233,96,53,76,171,142,105,21,124,164,210,229,254,221,117,15,193,211,162,120,25,235,123,12,38,160,225,113,49,248,187,137,240,83,51,198,167,184,125,49,198,174,151,103,212,115,12,142,126,234, +93,25,67,247,199,213,30,136,176,243,23,130,130,214,44,110,73,239,249,216,184,169,186,135,190,70,80,198,101,171,80,92,53,66,129,151,140,166,163,244,51,122,24,16,66,171,69,70,44,80,21,93,138,135,40,224, +210,56,214,235,12,134,18,80,233,205,243,186,135,85,248,73,4,46,50,141,241,92,184,155,67,212,0,190,38,128,161,197,185,170,8,77,165,103,220,14,86,221,146,177,130,89,145,106,20,244,197,30,234,201,98,15,231, +122,221,67,61,103,110,173,226,112,12,55,94,171,172,103,185,120,81,166,162,181,30,54,245,80,208,195,4,170,14,132,143,171,156,167,32,198,96,141,82,53,33,104,180,177,135,46,215,159,39,236,161,200,45,153, +168,42,118,212,237,198,105,21,133,211,24,122,182,92,220,171,94,54,23,11,88,12,102,160,30,230,214,165,199,36,49,150,136,104,20,24,16,247,151,149,249,251,37,23,174,186,135,115,141,61,188,226,138,203,59, +83,149,55,47,59,42,146,76,15,50,90,54,101,238,214,219,198,118,69,115,31,107,32,189,86,189,91,226,113,189,138,138,49,182,77,125,166,45,247,5,148,193,148,183,36,76,115,167,238,225,229,151,182,87,188,115, +124,187,224,238,173,218,235,255,113,108,103,169,198,96,43,37,36,26,55,149,84,120,83,176,188,66,241,140,89,13,192,248,130,47,53,10,119,229,202,100,197,62,46,162,148,129,162,178,121,26,85,90,171,49,233, +41,125,101,177,135,196,47,115,150,61,220,99,183,118,222,43,207,104,175,126,223,9,237,234,175,239,217,174,251,245,198,237,250,182,110,123,67,56,166,215,125,111,219,254,37,30,234,132,161,50,48,111,14,40, +9,195,51,245,104,4,115,174,70,144,176,136,208,197,26,51,148,235,22,77,202,101,5,38,127,195,239,107,68,193,173,126,159,212,152,54,147,209,112,60,174,205,224,110,246,112,182,234,30,94,250,224,184,118,195, +111,54,107,55,182,151,181,27,218,122,253,198,94,19,104,235,138,47,31,212,49,24,147,96,169,39,104,233,149,122,204,177,30,159,115,199,66,242,164,146,130,144,241,170,183,229,218,122,219,112,208,24,134,134, +121,218,171,207,61,181,224,16,15,72,138,169,223,169,112,245,48,3,171,1,4,178,217,170,123,120,198,109,59,181,55,252,120,151,118,205,143,183,107,215,252,124,179,118,245,239,215,105,140,189,42,132,218,21, +79,62,83,127,69,202,169,229,245,74,33,120,122,204,216,99,156,113,200,85,77,45,197,251,115,99,89,148,172,203,6,130,121,156,10,94,48,211,0,60,192,52,87,43,44,175,26,197,171,96,248,124,236,33,81,170,100, +201,206,73,50,179,39,51,117,77,114,165,115,31,78,59,182,147,113,85,82,157,63,118,98,220,242,222,240,68,143,36,147,249,135,195,206,219,189,189,238,137,195,218,133,159,63,176,157,253,215,1,59,110,223,181, +157,253,213,109,219,185,15,140,105,175,250,143,181,59,228,169,30,102,24,215,20,108,24,34,81,232,6,182,6,162,120,8,53,63,111,140,235,229,218,36,16,193,125,94,213,110,53,128,41,206,216,215,16,30,217,218, +176,177,135,251,29,189,219,159,175,251,167,35,219,13,211,78,207,115,102,187,106,210,201,237,130,123,14,107,71,157,248,242,78,90,121,250,217,207,236,63,153,54,24,89,201,127,55,149,6,240,64,182,224,151, +10,214,178,26,130,241,8,108,140,98,112,21,113,244,90,156,97,229,228,53,165,137,242,188,105,216,216,195,44,205,158,190,234,239,15,109,175,255,250,177,237,242,73,71,180,139,191,118,80,59,231,161,189,219, +161,151,237,217,161,210,108,198,193,240,76,59,214,176,12,174,59,117,10,195,51,221,128,60,234,49,231,138,200,178,44,228,183,100,133,33,12,173,61,47,169,107,193,150,69,152,22,114,107,1,49,35,246,80,16,163, +184,55,142,93,176,31,17,234,212,44,39,31,119,51,121,92,249,144,60,8,241,85,159,181,30,78,54,116,103,222,204,180,76,55,147,179,214,252,221,217,193,239,94,57,253,128,118,201,131,7,181,11,31,60,160,157,243, +213,125,218,113,159,222,163,179,163,104,115,206,134,157,5,132,49,42,15,46,176,82,175,118,99,120,122,151,43,51,152,219,215,53,21,198,102,213,47,53,197,117,195,149,22,44,197,46,249,30,60,111,102,117,15, +201,139,173,209,85,19,136,193,19,178,128,120,204,53,236,49,116,167,60,155,230,89,241,89,6,167,69,223,155,121,117,66,118,40,38,230,23,127,121,232,107,119,108,151,60,177,87,187,224,107,185,77,233,107,251, +102,12,239,213,142,255,252,46,237,200,147,15,235,71,241,164,123,166,159,170,147,86,198,102,183,179,223,149,171,222,33,15,176,224,23,185,77,57,230,104,110,173,151,235,146,177,42,253,87,160,165,87,134,51, +100,174,176,135,231,135,61,60,55,236,225,217,97,15,79,15,142,119,98,216,195,67,95,179,123,103,195,173,216,67,70,235,185,34,73,245,104,25,204,88,61,95,220,161,12,203,116,165,145,76,57,182,127,164,159,220, +183,46,24,171,138,150,117,179,154,221,77,83,146,30,30,118,246,240,248,176,135,103,133,61,100,236,169,97,15,79,8,123,120,228,32,236,161,224,194,85,81,163,85,133,182,80,60,145,218,170,136,235,139,234,22, +255,146,21,243,119,21,120,100,112,119,69,75,51,0,182,33,219,52,253,120,15,163,135,157,61,220,63,236,225,105,97,15,79,9,123,120,98,216,195,179,194,30,158,31,246,240,248,1,236,161,200,109,15,202,182,140, +164,68,111,23,134,39,114,91,247,218,221,48,79,75,25,25,44,177,48,183,90,89,105,48,193,171,80,90,39,14,25,115,29,174,137,43,23,199,52,20,246,48,203,199,175,102,243,111,82,120,168,59,250,54,242,158,9,88, +169,55,243,156,77,188,108,167,28,155,55,240,112,222,12,14,104,250,238,97,15,143,11,123,120,70,216,195,139,195,30,158,29,246,240,232,176,135,251,135,61,60,178,171,238,161,221,69,27,110,246,160,108,191, +84,101,203,193,48,60,94,32,125,52,23,91,1,153,99,37,31,54,12,24,173,167,109,214,49,182,2,149,69,195,92,99,15,15,15,123,120,110,216,195,19,194,30,30,17,246,240,176,224,120,7,134,61,220,59,236,225,49,125, +117,15,237,32,218,57,100,176,143,165,144,53,39,115,231,238,226,142,242,102,185,182,123,121,24,204,173,171,196,182,41,136,135,200,154,138,8,151,74,50,214,134,162,20,178,27,237,145,121,233,125,123,89,217, +12,248,175,252,222,131,106,187,4,248,186,43,61,122,96,30,40,173,157,203,206,221,120,207,233,225,184,230,162,9,66,103,209,84,36,130,78,77,207,77,223,41,236,225,225,97,15,143,8,123,200,216,131,195,30,30, +16,246,112,239,176,135,59,118,177,135,230,231,2,45,221,136,100,140,74,50,100,86,220,217,248,149,87,203,151,69,95,153,19,131,205,199,62,54,142,77,121,69,171,89,6,14,165,238,225,176,176,135,59,135,61,60, +52,236,225,193,97,15,15,8,123,184,111,216,195,189,130,227,237,28,246,112,187,176,135,231,118,213,61,236,43,224,214,129,176,244,148,157,70,203,72,198,234,93,61,198,85,245,140,49,108,252,190,16,246,176, +234,30,218,148,15,150,55,231,217,195,93,195,30,238,31,56,107,159,176,135,140,221,61,236,225,174,193,241,246,9,123,184,243,0,246,80,16,171,218,134,182,101,138,21,180,47,229,227,90,245,212,98,96,196,178, +135,187,135,61,220,51,236,225,110,97,15,59,198,134,61,220,35,236,225,86,97,15,199,132,61,220,181,139,61,180,149,90,236,161,113,87,236,33,99,25,90,11,1,61,14,189,27,177,236,225,110,97,15,119,14,123,184, +71,216,195,189,194,30,110,19,246,112,108,216,195,205,194,30,110,24,246,112,131,176,135,59,118,213,61,20,112,172,93,185,183,49,105,45,107,17,47,137,176,136,159,47,216,195,221,195,30,66,107,199,133,61,220, +42,236,225,230,97,15,55,13,123,184,81,112,188,151,5,195,91,59,236,225,75,195,30,174,117,198,232,182,197,48,213,61,204,57,210,247,178,160,232,84,199,235,131,182,212,80,43,140,214,105,195,75,6,42,121,103, +42,91,138,235,173,152,63,124,94,166,155,187,146,10,254,48,81,116,34,153,1,246,112,231,176,135,91,134,61,28,19,246,112,147,176,135,29,99,195,30,174,27,246,112,157,24,189,78,216,195,85,82,247,112,57,117, +15,143,126,145,212,61,220,46,236,225,102,97,15,55,8,123,184,126,216,195,117,194,30,174,21,246,112,237,176,135,107,190,125,229,182,218,91,82,254,175,155,61,60,114,233,182,68,95,221,67,23,23,204,172,238, +161,77,59,96,116,23,123,56,239,235,30,98,15,183,9,123,184,65,216,195,151,134,61,92,61,236,225,75,83,247,112,245,212,61,92,165,187,238,225,229,207,212,61,124,201,243,212,61,172,11,194,228,209,34,186,53, +176,163,209,1,236,225,200,168,123,184,77,234,30,110,27,246,112,195,212,61,92,41,117,15,151,29,172,238,97,216,195,151,12,82,247,112,48,246,80,198,150,128,135,61,252,89,31,123,56,169,143,61,156,127,235, +30,214,73,190,87,107,94,75,77,143,188,60,83,154,186,135,211,165,139,125,236,225,252,95,247,48,219,48,127,25,164,238,97,63,123,152,83,202,94,221,195,190,5,129,234,123,166,158,81,150,125,67,5,73,102,58, +45,61,15,130,183,96,254,163,197,242,44,155,103,29,235,78,154,138,76,89,119,56,121,119,24,173,190,105,246,174,191,153,213,207,183,92,170,153,29,146,169,174,94,116,27,97,220,119,162,125,99,63,147,30,254, +186,13,55,123,80,25,163,147,18,145,31,118,113,144,245,108,246,164,94,211,183,234,49,191,90,249,184,170,194,255,167,40,235,75,242,244,11,86,134,98,244,11,54,184,171,158,105,175,238,97,159,171,145,25,40, +206,56,182,175,135,92,151,122,77,30,151,106,186,103,242,61,125,31,251,154,239,217,74,181,187,184,67,30,165,117,245,166,157,10,87,172,90,207,170,60,219,41,240,152,103,134,213,103,103,214,203,179,221,195, +207,73,221,158,161,77,23,207,99,108,173,216,103,188,138,148,222,184,6,96,132,75,53,53,68,61,62,247,117,91,169,198,230,203,242,184,255,202,182,140,33,163,196,238,144,199,233,243,25,61,199,13,126,214,141, +251,255,107,252,82,121,195,203,228,33,18,115,85,76,175,238,225,204,92,113,78,125,127,88,123,120,78,189,201,57,249,119,230,138,193,61,246,176,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,28,116, +202,29,210,60,220,7,90,158,146,35,208,79,255,230,55,191,153,158,243,222,251,112,76,57,233,251,57,70,201,153,18,9,147,163,78,242,4,194,148,186,119,214,121,145,211,253,210,113,248,25,202,60,231,73,52,94, +206,129,73,160,232,178,73,252,137,92,156,36,34,90,28,184,219,253,160,129,118,58,217,119,95,222,207,93,72,152,223,153,28,201,196,119,236,166,230,208,237,21,75,44,177,196,58,67,201,183,103,106,112,68,100, +75,231,244,126,60,99,159,122,234,169,199,163,99,190,47,82,254,169,5,109,121,99,78,236,157,222,51,212,233,95,175,238,225,255,101,246,144,54,164,91,1,244,162,101,15,75,127,101,12,23,142,103,236,82,244,189, +232,234,30,22,123,88,183,131,51,184,184,67,198,210,70,146,56,208,125,9,84,243,117,221,195,18,144,82,236,17,141,82,5,16,164,117,3,151,84,121,126,78,68,230,226,208,218,249,130,61,172,82,98,5,127,0,61,8, +207,104,56,60,78,251,193,90,36,15,164,14,72,21,90,106,82,99,114,68,98,23,141,129,152,177,41,95,27,243,35,146,61,228,162,133,227,49,24,212,65,13,91,10,217,66,242,170,66,94,33,121,140,44,224,146,14,132, +220,152,222,139,219,59,125,32,148,33,97,26,81,236,161,132,129,129,221,61,91,149,180,168,236,244,36,25,176,132,131,75,227,36,200,150,232,61,24,71,87,93,192,37,101,110,225,59,132,47,36,80,180,95,52,96,35, +134,61,172,146,97,94,25,56,176,50,158,198,32,75,162,199,34,244,230,210,180,150,4,106,3,139,62,2,180,224,1,94,5,50,50,168,226,15,71,12,123,88,226,110,233,226,96,144,86,55,142,71,241,78,129,167,190,146, +146,68,51,170,114,73,227,37,29,173,43,216,201,160,168,131,70,4,123,200,32,146,126,227,84,30,220,93,195,116,48,224,178,187,254,33,29,87,33,2,122,181,232,82,31,211,119,185,37,66,162,82,236,161,220,29,123, +136,76,155,39,236,161,113,203,85,69,95,227,180,216,97,70,15,164,197,185,181,72,13,226,160,196,19,153,5,41,227,182,92,185,96,75,110,173,151,193,91,84,125,26,115,96,221,67,34,25,15,117,64,149,2,52,181,229, +107,63,75,176,123,200,185,85,206,166,62,215,119,0,224,80,96,225,103,45,30,34,235,253,124,254,195,71,50,47,78,72,84,252,29,168,178,244,202,165,78,23,45,29,84,87,221,67,189,75,66,72,251,108,124,22,160,37, +80,21,149,86,99,218,231,26,135,75,195,125,192,32,88,9,198,22,161,54,176,156,39,126,130,108,145,228,152,236,144,252,97,238,177,135,175,125,117,103,110,212,16,23,92,118,118,103,117,36,161,192,36,233,225, +170,140,199,104,243,174,94,209,171,221,165,0,121,1,151,22,176,104,167,245,32,99,73,142,61,221,181,75,97,5,122,191,100,199,242,240,225,100,15,255,242,246,183,191,173,125,242,139,31,104,119,124,243,29,237, +246,31,92,219,62,240,196,185,237,170,71,119,108,215,255,108,163,246,250,183,188,162,19,84,24,75,236,45,8,153,110,24,195,248,170,133,72,26,92,117,77,185,191,143,101,92,160,44,134,16,142,147,25,87,137,147, +110,14,145,177,60,192,148,101,172,251,251,4,110,148,181,221,236,97,85,183,156,173,186,135,151,126,110,135,246,142,255,183,77,123,231,159,54,109,55,255,126,179,246,246,63,110,212,222,30,104,235,173,129, +182,110,252,159,141,251,197,220,178,43,111,164,155,36,67,172,248,90,85,150,102,60,79,168,158,230,250,116,151,84,182,197,12,27,175,122,148,251,10,86,197,31,18,164,114,125,243,181,70,170,106,2,198,238,28, +173,123,120,222,135,118,109,111,255,233,174,237,166,95,143,125,150,177,111,9,142,119,237,148,212,81,203,170,199,248,174,29,140,98,5,77,53,192,45,65,201,174,71,193,152,122,149,209,54,8,184,58,119,38,34, +215,179,220,24,15,81,9,135,140,11,93,90,213,45,11,182,212,168,92,154,100,145,162,143,194,103,142,213,61,60,245,218,253,219,141,143,29,219,174,188,231,208,118,229,35,187,182,107,254,101,179,118,195,83, +235,183,55,133,61,188,230,251,227,250,217,67,41,32,227,204,167,162,174,199,27,20,100,164,141,221,76,97,109,251,24,215,133,207,138,192,208,248,66,103,171,86,169,6,244,187,112,1,227,93,239,242,20,238,60, +163,186,135,179,197,30,158,124,237,190,237,198,199,143,109,175,191,103,124,123,245,23,143,104,23,126,230,192,118,86,234,164,157,246,177,49,237,53,223,216,170,179,218,161,92,151,248,115,63,61,226,141,75, +19,189,121,189,99,220,249,92,111,86,234,88,108,147,28,219,88,23,3,52,132,56,160,225,60,5,107,250,184,134,138,233,142,161,195,198,30,142,191,114,239,118,227,223,28,221,222,240,240,241,237,154,135,199,183, +215,124,245,136,118,206,39,15,238,36,244,135,28,118,80,103,61,203,96,61,196,21,171,102,90,21,162,97,88,205,173,198,41,247,85,89,11,191,164,113,244,114,173,174,184,184,222,19,229,229,218,230,105,143,24, +80,143,8,173,182,11,229,173,242,38,92,219,24,22,196,40,250,168,113,103,139,61,124,121,216,195,27,190,127,68,187,250,225,244,242,195,71,183,215,79,58,186,189,122,194,209,157,252,214,37,34,118,41,101,65, +149,37,9,64,37,249,47,166,127,176,234,90,190,103,117,36,112,85,161,71,193,204,248,54,71,203,216,10,182,180,216,168,50,158,242,0,24,94,149,59,145,101,113,97,170,92,189,78,185,71,144,46,21,133,8,230,251, +63,148,120,36,33,153,152,132,131,172,130,218,224,127,97,203,184,204,30,9,48,247,102,12,78,79,234,246,189,3,194,30,190,229,95,142,106,55,127,231,220,246,238,191,189,176,189,243,111,179,252,251,246,9,237, +172,139,79,235,212,72,179,114,241,135,185,108,85,120,175,74,90,140,2,119,48,88,143,214,163,167,69,97,99,83,162,194,173,187,113,59,134,87,193,245,42,237,89,69,95,121,0,72,123,88,217,195,55,132,61,188,54, +236,225,107,195,30,94,246,208,193,237,194,73,251,182,35,174,216,187,179,35,129,59,244,88,48,48,180,140,227,182,48,60,160,86,61,85,224,145,139,27,207,178,44,61,204,192,129,69,30,125,94,243,117,173,165, +171,164,39,23,30,214,186,135,231,135,61,188,60,236,225,43,195,30,94,26,246,240,130,176,135,39,14,96,15,37,242,198,175,49,90,36,41,67,255,251,191,255,187,159,78,211,195,122,221,207,9,100,166,45,84,90,97, +120,181,73,207,88,143,207,171,178,101,209,166,190,54,51,246,144,240,220,161,64,244,153,47,140,61,60,60,236,225,101,97,15,47,14,123,120,97,216,195,243,194,30,158,212,197,30,114,109,201,186,30,227,194,133, +224,85,207,234,105,198,186,220,192,24,23,224,36,16,162,175,124,154,219,118,215,59,20,4,205,235,221,160,37,67,229,226,118,61,230,10,123,120,73,216,195,11,194,30,158,23,246,240,236,224,120,167,132,61,60, +124,0,123,40,130,26,95,130,144,84,177,42,89,86,249,78,46,95,55,174,152,163,77,53,12,238,230,14,171,192,99,149,0,148,212,56,209,208,0,85,213,114,40,236,161,14,200,82,242,251,89,62,78,166,232,75,177,169, +55,38,88,209,125,145,66,141,122,214,106,41,123,196,163,51,126,238,9,114,35,112,77,222,115,207,221,219,73,97,15,207,11,123,120,86,140,61,35,236,225,201,97,15,143,25,192,30,90,155,114,37,107,85,61,86,165, +178,171,62,184,21,79,93,112,80,24,94,113,135,214,207,198,236,140,64,75,189,45,87,46,28,111,102,236,161,45,161,217,170,123,120,96,216,195,179,194,30,158,30,246,240,212,176,135,231,134,61,188,40,236,225, +137,93,236,161,21,148,37,163,125,39,99,90,224,50,158,235,126,14,189,43,93,148,141,73,61,229,218,162,116,129,150,131,85,180,4,128,212,125,29,140,245,177,160,53,35,246,144,152,28,58,68,114,172,2,200,108, +177,135,39,134,61,60,39,236,225,43,195,30,158,31,246,240,184,176,135,7,117,177,135,122,215,233,158,214,245,230,185,112,45,228,141,221,186,167,195,252,43,85,180,159,101,85,101,142,21,184,170,58,173,222, +228,198,130,79,220,239,89,236,97,17,106,122,120,176,186,135,54,0,136,201,233,171,149,59,201,156,60,165,79,152,186,125,254,22,21,32,69,223,66,207,57,61,12,196,177,106,142,64,62,155,180,111,74,242,228,9, +57,162,252,183,35,194,30,94,24,246,240,148,176,135,199,132,61,60,50,56,222,97,97,15,247,237,98,15,5,21,116,25,161,183,55,45,205,100,168,135,59,23,134,231,190,15,75,73,99,184,219,224,114,107,65,74,190, +92,229,59,245,110,221,189,51,87,217,195,163,194,30,30,19,246,240,136,24,123,120,216,195,131,195,30,238,23,246,112,151,46,246,80,6,86,236,161,179,92,115,45,55,174,133,129,116,209,38,156,228,162,46,3,180, +51,82,219,65,122,216,38,124,119,165,60,105,36,55,182,115,57,176,142,90,221,220,210,197,30,62,158,212,119,114,178,172,169,139,45,182,216,85,233,81,146,99,250,78,194,212,142,86,115,208,243,225,236,7,173, +147,115,223,79,101,140,61,146,244,113,82,130,198,63,97,15,143,8,123,120,88,216,195,67,194,30,30,16,246,112,95,56,94,216,195,29,195,30,158,55,8,123,200,13,165,128,50,50,61,234,13,87,233,63,70,202,158,36, +21,60,66,3,141,184,186,135,187,135,61,60,56,112,214,1,97,15,25,187,119,216,195,61,130,227,237,31,246,112,183,176,135,227,251,234,30,58,28,19,177,25,92,117,15,37,251,12,182,126,213,51,197,35,190,80,246, +144,219,207,149,186,135,123,133,61,220,55,236,225,222,97,15,59,198,134,61,220,59,236,225,182,97,15,183,8,123,184,251,243,212,61,172,123,115,36,251,114,98,243,106,229,198,35,186,238,225,30,97,15,247,8, +123,184,111,216,195,253,194,30,110,31,246,112,92,216,195,177,97,15,55,13,123,184,81,216,195,157,58,236,225,177,29,125,70,177,135,230,83,61,44,10,235,125,203,185,249,134,61,220,43,236,225,222,113,239,29, +194,30,142,11,123,184,85,216,195,205,195,30,142,9,142,183,81,48,188,117,195,30,174,29,246,112,157,211,177,135,155,183,237,118,217,174,179,156,179,45,51,167,234,30,206,117,246,112,215,176,135,227,194,30, +110,25,246,112,179,176,135,140,221,56,236,225,203,194,30,2,46,215,15,123,184,122,216,195,21,46,25,213,150,157,13,246,112,68,213,61,196,30,142,13,123,184,73,216,195,141,194,30,174,31,246,112,189,176,135, +235,133,61,92,59,236,225,154,111,78,13,196,176,135,43,189,58,247,112,156,177,92,91,58,236,225,146,71,46,218,150,217,102,84,103,167,98,40,236,161,43,103,70,28,123,184,109,216,195,77,194,30,174,27,246,112, +116,216,195,181,195,30,190,52,236,225,26,97,15,87,187,49,219,50,215,4,186,196,30,158,191,66,91,42,236,225,10,123,207,184,238,161,100,67,16,115,213,76,95,229,232,145,203,30,110,31,246,112,211,176,135,171, +135,61,92,41,236,225,74,239,74,30,252,230,149,218,42,215,173,210,86,190,122,229,182,210,149,43,181,81,55,44,209,86,61,118,149,254,3,50,121,243,76,216,195,170,123,88,236,225,200,172,123,184,195,107,183, +111,47,189,249,165,109,233,143,44,221,94,114,219,75,218,168,91,195,17,223,60,170,45,113,235,162,109,229,11,87,238,236,63,213,113,104,177,135,150,154,3,216,195,148,1,238,103,15,95,180,117,15,191,87,117, +15,123,236,97,175,238,97,143,61,124,94,193,236,76,213,180,67,101,134,58,167,235,185,169,187,143,62,131,185,246,216,195,190,181,105,143,61,76,67,172,158,7,88,73,135,177,92,103,119,241,25,111,89,196,182, +204,80,189,108,40,63,55,199,92,122,40,255,217,72,248,153,158,193,195,209,11,61,246,176,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,51,60,91,234,78,62,122,236,225,123,223,59,45,151, +9,253,158,132,152,122,206,49,39,225,73,65,29,212,178,165,158,237,213,61,204,177,75,177,135,4,230,68,49,47,74,246,176,100,138,165,227,32,88,33,84,233,102,15,17,43,213,8,181,115,169,49,170,34,102,113,198, +78,37,73,43,168,13,48,77,57,145,124,42,39,144,83,243,187,143,80,222,141,26,53,234,150,62,213,157,229,229,115,46,41,26,52,146,69,64,182,72,158,131,163,209,184,63,82,164,135,162,138,125,0,28,141,44,233, +46,56,85,101,194,40,95,201,6,171,134,26,145,11,3,168,236,202,229,235,14,248,82,233,184,97,88,67,56,32,135,21,16,185,205,151,236,161,222,169,26,106,198,118,213,113,160,170,163,203,234,22,145,146,57,105, +64,6,211,112,250,221,249,138,61,164,191,44,99,41,233,136,193,169,102,9,87,200,28,138,80,35,32,37,121,240,208,103,65,106,169,122,232,63,124,175,138,186,10,140,54,229,71,44,123,72,198,32,90,151,86,178,234, +51,116,243,135,85,3,145,177,180,210,68,106,164,76,4,229,244,32,165,244,161,199,30,241,236,97,149,10,211,155,85,80,174,64,173,194,241,24,12,184,164,131,38,12,55,117,137,1,140,165,244,41,49,185,87,138,30, +98,22,234,157,17,85,247,176,216,195,2,177,244,104,213,76,43,102,169,122,187,170,227,13,196,241,200,144,105,49,171,222,75,201,157,68,118,202,32,143,105,204,152,23,16,201,164,64,152,85,10,208,171,33,16, +117,193,79,19,189,191,150,161,240,136,11,9,19,169,221,192,214,95,221,242,89,81,58,255,233,26,249,79,191,148,232,60,37,176,214,67,84,117,166,0,145,85,0,210,131,198,168,113,231,118,135,170,123,232,235,198, +39,69,123,141,215,129,56,158,223,3,106,49,88,224,226,210,64,105,227,86,239,150,193,84,123,212,244,52,216,68,109,254,110,25,204,40,239,105,158,215,61,100,92,9,205,170,106,78,1,90,85,207,84,79,151,242,93, +96,162,217,146,169,1,65,232,184,184,176,30,46,131,105,171,61,125,165,132,58,178,67,106,187,225,103,15,47,185,168,189,230,234,75,159,169,141,116,77,46,33,121,227,133,237,229,199,239,211,137,164,87,93,253, +250,78,128,162,168,131,235,208,64,27,159,12,2,75,19,142,114,237,129,245,15,245,48,233,161,123,227,81,48,140,229,202,40,181,2,46,189,234,105,65,205,252,15,182,36,130,113,142,236,255,230,97,115,148,61,60, +255,53,227,127,255,174,200,13,63,248,239,187,180,247,61,185,119,123,223,63,239,214,62,240,223,91,183,119,252,195,184,246,150,191,223,172,189,235,71,59,117,26,65,15,162,189,25,192,77,169,239,24,76,186, +175,183,185,100,21,137,43,236,150,193,106,60,80,214,10,84,232,51,198,66,123,200,143,61,244,154,85,221,18,56,2,157,159,17,123,72,252,70,41,64,52,35,249,137,235,63,21,149,208,4,151,136,230,114,209,135,251, +50,175,78,57,207,254,49,108,43,53,99,233,158,252,39,211,227,142,211,198,159,117,224,31,110,251,247,3,218,71,255,180,89,251,104,27,211,110,107,155,180,15,183,141,219,7,219,134,237,253,33,212,174,255,248, +25,29,245,186,167,10,176,138,186,148,178,140,103,184,68,131,107,119,215,76,210,235,26,132,1,166,34,42,91,6,49,146,106,190,96,203,130,166,245,50,37,61,47,112,251,3,65,27,229,236,28,175,123,120,248,113, +251,253,229,163,255,120,110,187,237,137,139,218,251,127,116,80,251,224,83,91,182,15,252,101,131,142,177,239,13,142,87,197,100,76,29,34,48,144,138,139,82,202,234,113,1,201,212,83,133,43,4,44,63,103,8,32, +88,52,140,222,21,152,40,230,73,141,189,50,184,80,90,198,210,90,139,216,184,39,127,187,187,238,161,123,167,185,248,28,97,15,199,95,176,95,187,245,187,167,180,183,124,237,180,118,237,151,142,111,87,126, +241,208,118,195,119,183,111,111,251,233,134,237,157,191,222,176,159,61,52,109,112,91,74,119,208,22,98,69,34,1,182,98,56,212,22,144,85,53,89,68,107,61,239,251,84,182,85,183,180,112,90,175,12,214,16,140, +85,188,202,207,233,97,255,199,176,213,61,60,249,181,251,181,91,254,230,228,118,211,228,51,218,219,38,159,214,110,120,240,132,118,233,95,31,222,198,191,118,219,118,229,3,227,58,83,21,99,5,44,111,68,209, +25,143,76,73,32,170,218,133,140,23,120,100,85,120,164,66,230,33,119,122,180,48,1,46,109,28,151,129,117,227,131,158,69,190,145,35,107,80,234,158,98,15,231,104,221,195,211,195,30,190,227,137,227,219,91, +39,157,218,222,58,249,212,118,227,228,19,219,171,190,48,190,163,124,63,122,252,17,29,208,146,139,2,181,68,88,79,161,175,230,84,244,10,151,245,104,132,170,226,161,215,185,180,40,204,125,203,72,127,199, +83,100,41,3,81,165,213,120,166,47,48,9,131,135,133,61,60,53,236,225,77,223,62,174,189,121,226,201,237,77,49,246,186,73,227,219,101,95,56,182,51,37,8,30,214,179,198,163,241,101,172,117,63,220,177,158,26, +135,2,143,143,245,42,99,165,159,149,120,24,6,85,39,177,106,38,50,176,234,38,22,184,137,134,225,210,4,169,180,154,115,180,238,225,241,97,15,223,26,246,240,134,176,135,215,79,60,174,93,51,241,232,246,202, +47,29,217,185,108,64,138,103,45,203,165,187,13,46,20,143,81,158,170,161,86,240,22,204,7,208,165,183,53,22,15,49,158,173,148,140,117,145,91,96,50,4,140,113,65,208,171,199,247,77,57,195,86,247,240,136,176, +135,111,14,123,248,134,176,135,215,132,61,188,38,236,225,21,97,15,229,177,214,173,216,67,41,158,222,98,92,21,148,170,104,91,212,55,99,187,203,137,9,68,85,120,189,242,235,90,54,214,90,89,214,38,194,27, +247,18,26,17,93,166,165,254,82,177,135,178,174,57,206,30,222,20,246,240,93,97,15,223,27,246,240,221,97,15,175,27,132,61,52,230,24,87,189,88,24,30,50,205,227,115,141,1,233,49,223,74,35,205,215,146,18,6, +87,242,98,126,150,157,49,90,32,20,224,204,215,230,115,81,158,38,115,241,197,23,239,224,60,217,198,233,40,232,5,45,180,139,170,62,94,185,187,41,42,155,9,127,14,228,241,132,155,201,35,34,87,71,220,253,213, +174,116,94,189,63,241,72,10,248,210,112,132,247,229,13,125,35,11,242,199,212,61,124,99,216,195,235,195,30,190,62,236,225,229,97,15,47,13,123,120,212,0,246,208,116,163,87,187,121,195,50,182,122,150,193, +162,176,192,38,162,75,84,44,34,234,218,41,115,57,23,151,134,26,219,117,97,17,227,139,54,181,255,5,167,21,176,184,53,5,159,12,139,64,213,67,124,78,132,170,231,95,112,221,195,139,194,30,94,25,246,240,242, +176,135,151,133,61,188,56,236,225,41,3,216,67,201,189,72,92,188,97,25,91,149,44,11,121,231,202,184,97,107,95,6,107,40,83,148,157,145,238,122,135,140,151,153,233,113,209,92,175,87,137,177,97,103,15,143, +12,123,120,69,216,195,87,134,61,188,52,236,225,133,97,15,79,29,132,61,180,56,183,227,104,30,46,215,246,90,174,92,220,161,233,201,212,34,245,172,107,108,244,114,85,181,244,90,160,165,215,186,139,75,46, +46,110,204,21,246,240,178,176,135,151,132,61,188,48,236,225,121,193,241,78,15,123,248,242,46,246,80,201,47,120,173,232,141,19,68,164,49,84,32,147,49,213,60,171,119,139,59,180,52,236,54,184,155,59,236, +6,45,107,131,223,215,24,59,20,246,80,195,204,22,123,120,106,216,195,139,194,30,50,246,156,176,135,167,135,61,28,223,199,30,90,140,219,121,40,246,80,222,92,24,94,205,183,69,165,213,181,20,166,158,194,240, +6,114,135,178,183,170,104,233,99,13,193,104,75,195,161,178,135,246,193,102,139,61,60,56,236,225,121,97,15,207,14,123,120,70,216,195,11,195,30,190,34,236,225,201,125,236,161,36,164,246,163,5,27,189,90, +43,30,83,150,5,189,212,144,59,75,51,77,51,26,198,216,172,49,92,24,109,119,69,75,134,51,88,52,30,10,123,72,76,46,11,156,35,236,225,169,97,15,47,8,123,248,234,176,135,23,133,61,60,49,236,225,161,3,234,30, +58,5,240,136,178,85,127,152,177,133,225,113,103,243,175,30,174,210,218,126,118,96,69,75,241,192,244,66,63,109,158,173,64,53,51,246,208,122,56,27,126,115,134,61,60,42,236,225,165,217,12,56,35,236,225,113, +97,15,143,9,142,119,68,216,195,253,7,97,15,237,48,74,59,245,168,21,142,156,90,62,92,181,14,37,19,92,218,24,150,112,88,61,113,91,189,169,135,115,229,106,91,112,193,5,103,137,61,148,140,216,247,202,28,60, +231,234,30,142,15,123,120,124,216,67,198,30,25,246,240,240,176,135,7,134,61,220,237,121,216,67,70,161,73,165,143,230,76,27,130,117,131,131,175,85,9,79,189,204,104,49,33,204,96,127,129,71,9,197,60,171, +123,184,107,216,195,99,194,30,30,25,246,240,240,176,135,135,132,61,60,48,56,222,94,97,15,119,158,1,123,136,101,176,239,4,204,2,104,185,130,66,128,147,61,105,140,170,102,41,169,224,146,221,236,33,87,246, +187,22,249,246,180,172,146,186,43,90,22,229,102,236,14,91,221,195,61,194,30,30,30,56,235,144,176,135,140,221,47,236,225,62,193,241,14,10,123,184,199,243,176,135,222,148,109,25,236,161,199,199,184,65,6, +204,136,61,100,100,213,42,101,172,222,46,131,203,88,127,131,177,105,216,95,229,239,170,181,250,104,60,226,145,96,240,151,245,145,165,10,217,40,164,177,104,127,109,153,25,73,13,211,226,107,37,8,220,152, +4,96,114,246,173,30,113,197,241,230,155,143,121,122,223,176,135,7,134,61,220,47,236,33,99,15,14,123,184,127,216,195,29,194,30,142,13,123,184,199,32,236,161,55,86,144,101,37,255,221,236,161,60,120,196, +214,61,220,124,135,141,255,176,79,216,195,125,194,30,30,16,246,240,192,176,135,59,133,61,220,62,236,225,54,97,15,55,15,123,184,105,216,195,93,6,176,135,18,125,137,189,49,89,207,236,178,135,249,123,127, +204,162,226,187,153,186,58,53,212,210,136,159,72,111,30,151,199,37,7,78,28,148,40,234,239,221,153,106,60,50,166,150,76,239,28,153,233,230,14,151,87,231,252,118,98,92,107,218,70,219,172,255,135,125,195, +30,42,235,185,115,216,195,29,194,30,142,11,123,184,85,216,195,45,130,227,109,26,12,239,101,97,15,215,11,123,184,110,216,195,45,251,216,67,75,188,97,98,15,191,61,87,234,30,238,30,246,112,135,176,135,219, +132,61,28,27,246,144,177,99,194,30,110,20,246,16,112,185,65,112,188,151,134,61,92,57,236,225,114,97,15,151,221,125,153,182,204,86,203,180,81,155,143,106,43,172,247,191,99,82,48,171,85,143,177,106,92,251, +218,192,49,43,248,245,77,63,127,208,179,138,60,6,198,254,65,126,238,238,244,36,34,124,175,60,91,229,89,167,79,100,254,156,226,83,51,213,75,83,164,199,85,70,187,150,60,61,116,119,86,48,223,77,254,60,153, +204,32,9,194,207,119,8,123,56,46,236,225,230,97,15,55,13,123,184,97,216,195,13,194,30,110,24,99,215,11,123,184,86,216,195,53,195,30,174,22,246,112,197,176,135,203,28,17,104,43,236,225,178,179,192,30,86, +221,67,115,124,214,185,2,212,183,226,198,157,138,150,125,198,94,151,247,121,64,158,113,121,214,207,179,28,53,253,96,241,105,166,6,119,252,62,0,135,59,216,243,92,148,8,123,103,48,249,199,104,42,242,70, +30,142,43,61,169,238,225,246,97,15,55,11,123,184,65,216,195,117,195,30,174,31,246,112,157,176,135,163,195,30,190,52,236,225,106,97,15,87,238,176,135,203,183,101,46,12,123,184,215,208,217,195,1,117,15, +31,77,244,30,57,117,15,119,12,123,184,121,216,195,209,97,15,87,11,123,184,90,216,195,213,194,30,174,214,197,30,46,119,253,18,109,181,25,176,135,54,214,69,116,57,116,87,221,195,98,15,39,142,232,186,135, +59,133,61,92,39,236,225,50,93,236,225,50,97,15,151,10,123,184,106,216,67,115,104,213,61,228,174,238,3,177,188,243,116,213,61,156,255,217,195,113,87,108,211,246,61,111,223,206,81,232,12,234,30,246,179, +135,46,33,81,19,220,85,21,153,53,62,223,151,84,168,175,102,234,169,10,121,198,172,10,125,51,173,165,54,164,49,60,72,93,180,133,242,199,233,160,224,55,59,101,55,241,202,68,217,187,227,134,211,156,188,103, +11,247,27,57,206,156,234,186,84,167,120,89,159,78,205,216,127,34,1,231,135,89,219,62,153,125,167,31,101,94,254,81,162,236,147,110,54,179,225,150,108,105,106,158,9,233,241,7,93,28,148,94,158,238,122,25, +55,174,40,128,222,119,47,7,67,171,28,96,175,238,225,80,0,149,23,212,195,131,20,130,83,181,142,142,66,185,62,45,191,239,194,11,47,124,157,139,112,157,207,102,33,48,37,61,60,37,189,58,41,17,118,98,198,231, +196,40,233,38,102,220,78,116,103,157,173,212,76,125,147,243,243,15,229,185,189,239,74,168,67,243,119,118,204,227,46,29,37,1,221,184,162,186,158,220,184,83,14,112,40,6,206,114,193,229,161,254,81,83,87, +159,155,51,188,199,30,166,17,122,117,15,251,60,129,55,244,216,195,161,14,165,89,253,185,217,14,90,179,250,31,206,235,159,159,43,6,247,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,61,246,176, +199,30,206,116,95,218,15,244,216,195,30,123,120,79,231,140,151,228,168,192,14,130,53,218,15,240,21,133,0,248,130,100,209,149,143,47,106,246,144,129,212,61,142,67,75,172,82,21,64,28,154,87,41,64,128,23, +133,31,89,63,89,227,124,199,30,210,124,232,101,74,59,58,44,79,73,147,74,184,226,251,202,38,160,210,144,103,101,240,124,91,247,144,178,142,161,117,201,61,119,47,161,25,88,139,202,206,193,56,78,162,138, +191,241,6,232,29,25,20,239,208,227,46,242,213,72,46,203,182,87,93,180,26,128,203,137,4,118,201,222,182,19,144,124,111,66,84,4,211,114,252,242,5,187,169,121,220,41,253,172,243,165,231,204,85,17,164,44, +146,231,164,232,39,31,136,164,240,129,168,230,166,196,37,127,107,147,156,6,131,52,161,198,44,44,71,47,145,50,248,126,177,135,40,150,98,15,11,182,36,111,32,48,243,48,188,144,60,122,15,63,203,56,174,204, +229,75,6,229,111,142,120,246,176,128,44,130,21,134,23,82,235,227,238,146,128,165,156,37,82,163,150,165,158,213,219,52,33,100,195,26,114,190,96,15,25,202,24,250,141,110,28,175,234,18,23,157,70,49,139,115, +162,219,162,145,198,32,18,133,83,252,80,0,17,178,81,246,204,35,246,240,236,206,88,244,166,201,142,72,252,69,93,227,202,88,43,246,144,216,140,139,22,190,51,176,102,90,161,124,220,91,163,248,89,6,51,150, +18,158,145,228,197,100,138,152,7,255,79,137,211,28,174,13,123,221,195,139,175,62,166,221,60,101,207,246,238,7,142,109,111,14,167,244,246,191,62,179,221,112,243,229,237,234,155,83,66,247,21,71,61,195,30, +190,225,218,142,250,149,177,222,60,254,208,248,36,15,102,88,119,47,251,185,194,241,24,76,7,13,3,96,48,153,63,85,110,149,41,34,89,4,124,80,241,9,92,100,193,195,94,247,240,152,243,182,107,159,250,217,78, +237,179,127,218,178,253,117,219,178,125,234,233,173,218,39,255,56,166,125,224,231,155,181,119,255,203,152,246,238,111,239,211,49,150,17,36,193,20,118,198,97,213,76,19,156,186,73,83,63,171,1,184,125,55, +127,136,80,131,5,0,59,138,48,45,44,207,171,70,161,202,99,48,157,244,176,213,61,60,235,138,3,219,39,30,63,167,125,248,123,7,183,79,252,102,155,246,233,16,106,159,12,161,246,137,16,106,31,249,253,38,237, +234,107,159,41,136,174,71,245,82,221,238,175,151,245,96,21,138,35,34,45,158,88,80,99,176,49,140,99,32,39,102,108,209,165,122,85,239,50,180,64,17,231,196,4,166,12,86,98,72,230,230,190,128,57,202,30,170, +123,120,211,157,39,180,143,76,79,249,161,175,158,209,110,249,250,65,237,35,79,109,222,49,246,99,193,241,222,113,207,51,151,26,84,245,28,238,140,58,17,128,68,93,1,137,8,156,107,51,216,120,230,9,122,88, +64,163,200,163,187,36,73,228,202,122,182,200,23,162,212,42,242,200,112,243,178,131,114,6,22,205,34,85,53,7,107,128,57,194,30,38,24,61,125,251,223,159,223,62,245,248,165,237,163,211,47,110,239,155,116, +118,123,203,196,163,218,235,31,220,178,189,247,191,55,104,55,254,213,41,253,236,161,185,89,79,121,243,94,25,205,24,110,46,48,85,213,29,65,79,15,107,4,174,143,86,17,168,24,139,135,168,186,77,112,129,238, +146,158,60,64,114,97,28,19,169,17,182,85,210,81,149,6,184,124,213,76,75,48,253,173,35,218,100,115,223,114,144,151,228,227,192,190,131,184,165,250,19,143,40,93,119,139,91,125,37,238,244,104,210,192,239, +28,17,246,240,115,63,58,175,125,241,111,175,110,119,255,243,13,237,43,63,190,190,125,248,135,151,182,147,207,57,182,157,127,235,184,118,213,155,94,209,73,23,25,171,183,188,113,83,138,104,107,46,101,120, +161,120,37,38,53,158,235,126,0,18,98,56,0,56,171,74,141,13,132,45,53,0,214,169,202,3,154,159,169,240,60,140,155,163,236,225,9,97,15,63,250,189,83,219,123,39,159,213,222,251,72,158,71,207,106,55,77,59, +171,51,118,14,63,252,176,244,238,229,157,55,79,30,236,77,155,70,144,100,48,0,198,87,233,62,134,235,109,129,76,36,231,210,92,92,239,251,57,110,140,55,68,198,120,208,47,5,91,26,195,92,154,12,217,216,246, +183,103,196,30,114,107,58,48,65,45,41,234,95,28,190,39,47,159,234,136,54,189,171,132,152,227,214,21,250,123,56,111,234,130,76,1,119,103,210,159,152,85,204,143,78,15,123,248,193,176,135,239,9,123,248,238, +41,167,183,91,166,156,210,174,185,231,196,126,29,134,20,144,139,122,51,244,209,30,111,30,185,98,42,41,20,143,81,133,209,49,146,123,11,96,122,139,219,98,15,81,49,133,207,250,90,125,172,103,25,90,136,159, +191,69,162,56,35,246,80,175,211,138,72,83,41,13,162,214,159,236,60,58,134,222,148,199,141,169,171,244,27,28,240,226,242,232,155,239,137,75,62,156,21,204,143,207,14,123,248,190,176,135,183,132,61,188,37, +236,225,77,193,241,174,252,226,113,29,131,37,249,20,235,222,56,131,245,2,247,243,102,189,22,221,237,13,87,239,107,4,73,133,113,206,104,189,199,208,26,175,245,59,85,217,146,199,24,219,140,45,186,212,92, +205,224,97,97,15,207,10,123,120,107,216,195,155,195,30,50,246,45,97,15,95,211,199,30,50,216,122,150,193,12,44,55,172,34,113,12,169,167,92,213,231,92,215,171,113,105,142,198,28,235,181,238,26,137,26,134, +176,220,156,92,180,170,84,83,99,241,20,192,244,176,176,135,39,135,61,124,119,216,195,183,133,61,124,107,216,195,27,195,30,94,49,128,61,132,218,48,162,234,165,85,93,67,70,49,20,225,82,176,22,142,201,227, +231,69,103,193,206,88,22,208,204,223,198,186,96,39,144,21,104,41,8,186,1,66,207,74,78,48,137,36,138,165,165,158,163,117,15,143,10,123,120,75,216,195,55,135,61,188,49,236,225,141,97,15,175,26,192,30,234, +101,6,116,87,194,3,106,253,191,255,247,255,58,15,90,173,26,129,241,162,176,222,51,103,23,49,238,181,128,75,121,186,200,110,62,55,198,53,130,7,28,194,27,124,143,136,92,15,23,243,63,199,234,30,30,148,186, +135,239,11,123,248,129,176,135,183,133,61,252,96,216,195,183,132,61,60,123,64,221,67,89,17,195,138,72,43,131,187,9,53,30,96,140,26,151,122,74,82,162,119,37,46,134,69,21,84,167,146,151,165,73,81,5,56,9, +12,35,121,128,93,148,66,241,84,244,25,22,246,240,230,176,135,111,11,123,120,125,216,195,171,194,30,94,17,246,240,152,1,236,33,202,84,79,139,210,213,179,221,52,41,20,79,96,18,220,68,110,238,44,143,150, +128,24,18,5,99,21,108,233,123,85,209,210,92,109,189,44,21,141,26,168,223,96,189,58,144,61,164,188,157,109,246,240,213,97,15,223,16,246,240,245,97,15,175,12,123,248,170,176,135,103,14,96,15,5,48,59,21, +150,113,221,132,105,247,116,83,183,52,24,139,122,203,214,142,149,84,55,134,167,183,107,131,0,107,40,15,47,194,212,78,75,100,80,253,72,15,131,101,94,210,77,99,218,231,230,231,170,123,152,132,228,133,213, +61,60,38,236,225,181,97,15,95,27,246,240,138,176,135,151,133,61,60,59,236,225,81,39,31,214,217,122,177,225,230,21,107,100,103,178,234,28,86,68,54,77,153,154,170,34,158,177,200,85,245,98,185,116,85,182, +172,93,77,134,215,54,144,177,205,205,25,47,64,21,142,199,157,245,176,94,101,108,25,172,1,52,126,190,247,75,138,190,44,58,38,209,125,101,254,221,161,79,63,182,220,179,246,180,178,89,118,118,162,230,3,25, +59,143,38,57,255,225,118,59,108,215,94,31,246,240,138,176,135,151,133,61,188,52,56,222,185,97,15,143,236,99,15,253,241,98,15,101,86,2,83,85,195,51,102,245,44,99,107,74,17,140,10,180,172,186,165,181,155, +201,224,110,208,178,240,218,218,42,154,107,236,225,57,97,15,95,29,246,144,177,23,135,61,60,55,236,225,201,97,15,207,58,247,140,206,246,170,29,15,201,136,181,238,96,24,158,168,44,249,71,165,89,215,74,49, +171,252,95,221,5,34,107,179,51,233,213,208,40,178,148,209,254,238,92,101,15,15,15,123,248,138,176,135,23,133,61,60,63,236,225,101,97,15,47,15,123,120,90,87,221,67,235,83,151,2,73,38,244,106,229,191,122, +87,160,42,131,77,59,198,111,173,158,106,12,151,193,221,213,44,107,217,105,172,206,85,246,112,207,67,119,248,203,185,97,15,95,25,246,240,245,97,15,95,21,246,240,140,176,135,71,133,61,60,234,196,195,59, +121,171,113,92,236,161,53,175,148,208,20,196,88,137,131,116,178,238,242,16,121,5,37,139,8,61,89,198,22,104,105,131,158,225,92,221,88,157,21,246,112,142,213,61,60,46,236,225,107,194,30,158,31,246,240,212, +176,135,39,5,199,59,46,236,225,161,97,15,199,159,118,68,255,133,94,18,119,193,196,22,107,221,130,198,192,186,59,203,20,35,242,214,77,76,230,96,134,49,150,118,90,16,178,48,176,87,86,229,59,135,82,247,208, +239,104,156,57,202,30,158,26,246,240,244,176,135,140,61,62,236,225,177,97,15,95,30,246,112,239,1,236,33,131,101,65,200,50,70,136,156,110,73,114,102,212,189,11,194,19,140,209,186,254,81,6,101,234,233,102, +15,125,109,102,236,33,92,160,171,238,225,55,179,151,61,105,142,212,61,220,45,236,225,201,97,15,143,15,123,120,108,216,195,163,194,30,30,30,28,239,128,176,135,123,204,128,61,244,70,138,61,68,166,232,109, +219,62,198,176,40,109,121,201,173,157,88,20,177,86,209,24,206,99,42,26,10,123,200,179,146,116,252,52,13,61,41,187,29,4,229,159,207,52,68,76,78,118,76,114,188,244,243,162,120,121,163,139,101,3,252,152, +100,80,147,242,230,166,229,40,101,82,222,248,207,247,14,123,120,92,224,172,163,194,30,50,246,208,176,135,7,7,199,59,50,236,225,190,97,15,143,27,164,238,33,224,82,66,80,220,33,195,101,68,86,61,230,79,24, +94,97,121,140,245,177,29,13,193,234,249,216,67,63,51,144,61,76,240,156,58,199,217,195,131,194,30,30,25,246,240,208,176,135,29,99,195,30,30,22,246,112,247,176,135,219,133,61,220,123,0,123,88,197,30,107, +167,98,102,236,97,45,226,25,107,58,98,88,141,109,191,91,91,60,246,182,252,108,118,54,254,144,143,159,128,246,100,56,77,14,106,244,158,174,222,93,167,79,76,222,207,66,204,80,107,153,31,92,48,189,51,46, +61,253,225,100,69,211,147,73,77,78,143,76,219,34,236,225,65,97,15,15,9,123,120,120,216,195,151,135,61,220,51,236,225,110,97,15,119,10,123,184,77,216,195,177,97,15,119,11,123,120,92,87,221,67,236,97,237, +58,206,41,246,48,198,22,123,56,101,88,217,195,77,194,30,30,20,246,240,229,113,239,189,195,30,238,30,246,112,231,176,135,59,132,61,220,54,56,222,86,193,240,198,132,61,220,56,236,225,134,97,15,199,30,176, +121,219,126,231,57,87,247,208,238,37,208,114,174,215,61,220,51,236,225,30,97,15,119,14,123,184,67,216,67,198,110,29,246,112,139,176,135,91,196,232,205,130,227,173,31,246,112,141,139,71,181,21,143,26,213, +150,223,109,153,182,108,216,195,101,102,145,61,172,186,135,98,129,89,32,198,118,179,135,223,159,171,236,225,78,97,15,119,14,123,184,93,216,195,173,195,30,110,17,246,112,179,176,135,140,221,36,236,225, +6,97,15,215,187,118,197,54,250,85,43,180,213,78,95,174,173,152,186,135,203,132,61,92,110,220,172,215,61,28,49,236,225,102,97,15,119,14,123,56,46,236,225,230,97,15,55,9,123,184,105,216,195,141,194,30,190, +44,236,225,250,97,15,215,186,122,165,182,230,171,87,108,171,166,238,225,242,169,123,184,210,11,175,123,56,114,216,195,109,247,219,234,207,187,134,61,220,38,236,225,134,97,15,215,13,123,184,78,216,195, +181,195,30,174,29,246,112,205,212,61,92,45,117,15,87,76,221,195,53,198,15,94,247,176,216,67,216,172,28,221,85,21,50,168,76,101,143,103,158,29,217,236,225,110,97,15,55,10,123,184,90,216,195,21,83,247,112, +133,212,61,92,62,236,225,168,247,46,218,86,187,232,185,117,15,7,178,135,201,214,254,51,115,45,246,240,107,50,168,36,21,243,79,221,195,3,78,217,255,207,123,93,180,103,219,249,85,59,183,110,246,208,217, +175,251,175,92,9,101,167,34,57,241,47,51,255,98,15,31,82,237,189,199,30,246,216,195,94,221,195,94,221,195,103,193,161,115,26,156,234,131,46,23,207,171,82,126,202,250,65,237,44,209,122,236,97,143,61,140, +32,125,78,123,220,176,241,195,195,253,70,231,212,223,31,246,22,245,70,123,236,97,143,61,236,177,135,61,246,176,199,30,246,216,195,161,205,225,67,158,150,34,79,90,33,210,133,241,185,130,245,182,95,255, +250,215,15,69,183,113,191,74,91,57,65,248,71,76,132,195,52,172,2,9,132,179,94,231,197,78,22,156,29,213,161,119,221,50,92,39,251,164,18,74,131,193,121,208,45,78,32,188,210,120,96,158,156,49,81,210,218, +203,202,14,200,111,179,243,241,79,14,5,220,209,103,235,216,77,110,217,185,60,207,125,95,3,97,142,25,205,219,67,50,184,207,216,83,98,228,167,127,243,155,223,76,143,26,231,190,28,154,79,82,86,204,49,169, +157,10,134,58,9,100,156,99,80,151,102,123,227,206,128,73,140,29,169,84,205,52,26,14,39,251,106,42,85,45,52,85,118,24,236,188,137,58,192,169,100,41,12,156,65,231,94,158,206,129,153,19,16,23,18,218,39,119, +109,93,182,128,238,114,185,153,251,190,98,244,160,151,134,205,210,226,161,199,30,246,216,195,30,123,216,145,63,32,94,4,49,101,254,140,95,1,107,96,221,195,98,15,109,228,41,3,56,223,214,61,164,154,171,186, +135,133,227,137,220,117,143,116,21,122,20,176,138,61,236,174,123,88,4,106,5,45,193,76,68,215,144,130,87,1,92,16,0,179,131,219,23,93,72,152,191,53,61,199,172,143,70,170,116,110,2,152,251,125,22,27,210, +242,48,162,148,53,34,239,253,96,20,117,15,68,206,123,191,169,199,127,38,114,122,211,133,227,21,195,64,129,227,205,139,166,30,42,59,234,155,98,34,138,63,44,153,33,4,160,46,187,23,173,233,177,24,84,236, +33,221,215,161,135,30,58,255,176,135,133,235,84,221,180,42,111,80,56,158,211,127,83,15,195,25,76,217,99,110,214,179,140,5,117,84,237,195,185,207,30,94,249,154,159,94,245,193,131,218,231,238,252,88,123, +231,173,111,234,136,65,11,142,190,228,146,75,58,162,79,201,129,241,216,77,173,48,132,30,171,74,136,73,66,10,199,43,99,75,98,72,66,76,176,166,151,9,221,36,28,198,254,60,97,15,95,245,198,163,218,103,254, +105,207,246,197,223,110,211,238,249,229,81,237,75,255,124,102,251,192,189,231,181,235,223,117,126,59,246,244,103,130,211,153,103,158,209,143,233,112,79,170,29,198,82,209,209,79,114,241,226,150,74,97,71, +65,171,81,8,213,36,40,52,92,197,32,150,118,218,80,153,235,236,225,185,175,62,164,125,246,241,211,219,231,255,123,151,246,165,54,182,221,25,66,237,243,127,222,188,125,246,233,205,218,123,255,126,243,246, +174,199,183,107,215,93,255,134,142,81,12,40,160,131,193,85,18,176,187,151,171,78,177,134,240,51,228,194,244,151,116,92,212,122,52,93,210,82,74,121,130,54,146,38,25,150,195,181,97,103,15,33,111,111,251, +228,137,237,51,225,150,62,254,245,83,218,95,253,219,174,237,142,24,123,71,8,181,219,67,168,125,246,79,155,182,55,92,127,109,127,85,29,61,68,139,85,56,30,197,142,158,236,134,46,187,11,210,48,216,248,45, +200,139,18,190,228,254,72,53,178,69,120,128,247,49,87,216,195,157,119,222,177,221,254,205,243,219,167,31,185,184,125,106,234,165,237,195,147,207,108,31,251,201,14,29,99,255,58,132,218,59,255,234,127,177, +119,129,136,22,154,209,85,36,142,106,182,251,242,251,170,129,88,252,33,149,108,85,184,44,36,15,10,68,197,7,238,0,136,80,245,97,161,232,67,80,104,195,90,247,240,220,176,135,183,63,113,126,251,196,148,139, +219,39,31,189,184,125,116,234,133,237,29,83,198,183,27,30,26,219,62,246,171,141,219,213,215,60,83,78,91,175,113,85,50,253,194,241,8,73,185,171,49,45,26,235,233,42,181,205,96,95,19,153,185,51,185,63,163, +244,110,119,73,79,154,77,64,8,205,166,225,81,98,24,17,124,88,216,195,155,195,30,126,250,177,243,218,199,31,185,176,125,252,209,11,219,109,211,206,111,111,248,202,9,109,255,131,247,106,111,184,99,207,103, +177,135,122,178,234,164,21,149,70,194,175,7,25,45,130,23,74,95,208,180,232,108,85,101,220,86,207,226,148,170,126,105,25,204,104,211,85,169,128,188,14,11,123,248,133,176,135,159,13,123,248,201,140,225, +219,166,158,215,222,255,205,51,219,41,175,59,184,51,13,93,112,201,217,157,222,213,139,244,208,222,176,135,152,84,111,233,109,165,58,69,95,146,67,227,181,34,53,227,53,16,12,94,160,130,235,224,134,139,129, +194,52,209,91,51,216,163,215,93,172,79,212,226,33,106,27,22,246,240,139,97,15,191,28,246,240,190,176,135,247,134,61,252,212,147,151,181,179,46,60,173,147,24,212,194,222,155,241,70,193,30,198,92,25,15, +193,33,48,229,174,221,238,205,157,101,96,92,212,120,215,72,126,15,51,81,176,101,85,181,164,168,103,184,30,175,10,120,64,75,250,202,57,206,30,158,24,246,240,147,97,15,63,24,246,240,3,97,15,63,24,246,240, +157,97,15,165,151,220,171,16,249,170,57,90,156,160,55,46,224,144,14,51,222,212,162,183,139,117,40,128,90,116,134,4,8,80,12,132,13,12,132,45,171,148,167,94,214,40,54,25,24,75,174,200,173,105,49,73,26,245, +186,40,62,91,236,225,153,97,15,63,26,246,240,125,97,15,223,23,246,240,214,176,135,215,13,96,15,141,201,98,125,189,86,205,209,42,165,171,231,77,45,188,64,143,235,109,134,114,109,176,52,175,96,164,223,43, +106,77,21,31,159,23,210,199,88,141,168,97,77,81,221,236,33,213,174,6,240,53,114,227,217,98,15,207,13,123,248,225,176,135,183,134,61,124,79,216,195,91,130,227,189,126,0,123,104,154,41,50,13,155,84,85,120, +10,195,243,230,97,122,26,131,113,122,94,175,219,226,241,113,17,108,5,133,84,41,193,114,101,134,106,52,198,234,97,99,157,160,116,48,246,80,47,23,63,108,63,204,149,206,217,122,234,92,252,155,85,211,173, +121,212,76,91,173,127,79,43,17,243,242,180,224,189,137,152,15,103,57,22,216,114,223,246,254,176,135,239,10,123,200,216,155,194,30,94,57,128,61,52,29,49,8,205,226,129,218,121,197,42,121,234,107,133,225, +21,218,195,88,115,48,3,10,199,213,32,240,1,81,90,0,243,245,42,32,233,115,174,47,32,206,136,61,164,208,133,212,218,240,147,145,185,191,58,121,126,231,150,227,24,74,112,58,182,115,60,91,235,197,204,137, +23,101,188,5,255,187,119,114,132,221,63,58,45,236,225,251,194,30,222,28,246,240,166,176,135,111,13,123,248,218,1,236,161,113,172,119,24,84,36,90,193,90,62,199,49,85,25,192,66,124,24,37,58,11,92,34,181, +177,109,90,226,242,26,160,50,44,49,192,231,85,87,28,124,41,8,146,28,15,11,123,120,116,216,195,247,134,61,124,123,216,195,183,134,61,124,107,216,195,107,7,176,135,214,192,82,73,70,253,207,255,252,79,63, +153,86,31,87,25,192,226,131,185,168,60,153,80,220,112,168,66,143,230,106,200,157,139,19,10,184,172,11,76,4,189,130,47,97,124,165,175,30,200,30,234,121,153,24,45,166,29,20,55,147,39,184,78,117,127,117, +122,22,48,253,236,30,78,230,179,71,114,218,123,243,31,77,79,238,250,61,236,225,135,194,30,222,22,246,240,99,97,15,63,18,246,240,109,93,236,161,229,27,140,199,99,89,167,7,203,208,66,241,170,80,156,113, +206,101,185,164,197,5,119,46,131,45,21,77,81,178,46,61,175,199,165,168,140,55,71,23,109,234,99,99,159,128,124,216,216,195,247,132,61,124,71,216,195,55,133,61,124,67,216,195,43,195,30,30,219,199,30,214, +149,80,2,132,237,25,129,169,104,210,238,138,120,162,173,192,195,37,185,174,60,91,154,201,165,171,234,29,163,139,64,211,251,34,184,44,77,22,38,121,177,146,178,140,148,108,112,103,226,240,25,177,135,198, +241,11,174,123,248,154,176,135,55,134,61,188,54,236,225,213,97,15,95,19,246,240,236,62,246,80,46,235,177,45,99,141,203,125,81,105,197,241,155,90,42,58,155,154,164,157,222,184,149,148,30,237,222,254,209, +219,88,68,27,2,117,42,193,64,141,195,120,192,72,246,169,250,145,30,74,249,193,216,67,217,152,13,137,23,204,30,142,15,123,120,67,216,195,215,135,61,188,50,236,225,21,97,15,207,235,98,15,25,107,119,194, +252,106,10,98,176,232,92,204,161,104,204,88,107,91,73,70,213,32,182,49,80,128,135,140,205,62,153,6,40,247,182,172,100,120,221,200,196,216,162,93,244,240,176,178,135,215,132,61,188,50,236,225,21,97,15, +95,21,28,239,130,176,135,71,119,213,61,148,102,66,116,24,103,172,122,184,113,17,165,86,64,149,87,235,49,198,20,119,88,8,79,189,218,225,172,155,92,106,251,199,43,110,184,104,23,220,131,169,71,166,85,160, +165,87,65,203,215,236,129,205,86,221,195,243,195,30,190,38,236,225,101,49,246,21,97,15,47,12,123,120,106,23,123,104,119,209,217,146,236,137,145,104,82,99,214,58,214,184,21,101,121,128,222,181,208,96,64, +25,220,93,194,179,106,28,50,218,16,241,51,92,223,74,139,33,101,176,157,15,238,108,28,151,193,32,16,159,219,182,157,237,186,135,71,132,61,124,117,216,195,75,195,30,94,28,246,240,242,176,135,87,134,61,60, +189,139,61,172,186,135,92,178,42,68,119,99,120,162,110,97,180,248,68,99,182,42,225,21,138,87,133,29,171,112,43,23,183,208,64,183,204,42,123,152,156,250,171,138,98,44,181,212,82,119,100,58,82,58,193,149, +22,171,58,108,123,206,233,97,162,239,177,9,32,15,103,110,84,131,108,58,246,240,130,176,135,87,132,61,188,54,236,225,21,97,15,207,14,123,120,204,32,236,161,214,229,146,210,199,90,27,51,214,84,84,24,94, +221,227,193,141,7,22,120,180,65,175,1,170,242,60,215,157,39,236,225,9,97,15,175,10,123,120,113,216,195,51,195,30,158,22,28,239,196,176,135,135,15,194,30,114,55,83,150,158,49,69,8,106,230,87,139,125,227, +87,15,91,15,115,221,234,93,219,189,78,23,128,150,92,27,187,88,110,60,79,216,195,157,247,222,238,233,51,194,30,158,29,246,240,212,24,123,82,216,195,227,195,30,30,21,246,112,191,65,216,67,73,188,165,154, +233,195,182,12,67,141,95,167,13,85,235,176,80,90,70,98,12,69,97,129,199,158,21,12,175,42,209,206,51,246,112,247,176,135,103,132,61,60,57,236,225,9,97,15,143,13,123,120,84,112,188,131,195,30,238,29,246, +240,252,203,206,234,96,241,18,247,186,238,201,107,109,199,84,16,98,112,237,109,113,93,65,72,229,232,186,193,225,133,178,135,89,69,205,121,246,112,223,176,135,39,5,206,26,31,246,144,177,71,132,61,60,44, +56,222,49,97,15,15,24,192,30,218,161,208,59,197,25,66,232,172,91,45,239,188,98,145,92,88,208,93,220,177,122,21,175,248,66,216,195,97,169,123,120,72,216,195,99,195,30,190,60,236,97,199,216,176,135,71,132, +61,220,59,236,225,142,97,15,247,29,192,30,114,111,219,50,166,14,137,255,96,236,33,67,151,89,102,153,78,99,72,42,4,171,17,197,30,30,18,246,240,136,176,135,71,135,61,60,58,236,225,190,97,15,247,10,123,184, +107,216,195,237,194,30,110,29,246,112,119,236,225,169,199,118,78,1,189,249,225,96,15,187,234,30,14,63,123,120,72,216,195,163,227,222,251,133,61,220,43,236,225,110,97,15,119,14,123,184,99,112,188,113,193, +240,54,15,123,184,73,216,195,141,195,30,110,245,98,97,15,247,14,123,184,111,216,195,221,195,30,238,28,246,144,177,219,134,61,220,58,236,33,224,114,108,112,188,13,194,30,142,14,123,184,74,216,195,21,194, +30,46,23,246,112,217,89,100,15,171,86,233,136,97,15,247,8,123,184,83,216,195,237,194,30,110,29,246,112,108,216,67,198,110,30,246,112,147,176,135,27,134,61,92,39,117,15,215,72,221,195,149,194,30,174,24, +246,112,133,89,168,123,40,240,161,205,71,20,123,184,91,216,195,29,194,30,110,21,246,112,243,176,135,91,132,61,220,52,236,225,198,97,15,55,12,123,184,94,234,30,174,149,186,135,107,134,61,92,37,236,225, +42,93,236,161,249,215,238,99,81,164,130,152,220,216,114,207,206,70,95,12,248,61,236,93,21,218,17,83,247,16,123,184,123,216,195,237,194,30,110,26,246,112,131,176,135,47,11,123,184,126,216,195,245,194,30, +174,29,246,112,116,216,195,213,195,30,174,21,246,80,175,217,150,49,13,97,14,185,236,124,205,30,238,17,246,112,76,216,195,209,97,15,87,11,123,184,106,216,195,149,195,30,174,28,246,112,205,176,135,207,87, +247,208,21,206,131,176,135,83,48,254,125,216,187,42,180,42,228,169,85,170,124,167,74,180,106,183,45,244,124,184,192,144,164,135,131,20,133,83,164,109,44,181,140,203,171,163,164,153,158,109,158,71,147, +67,63,154,143,191,22,183,123,48,207,119,211,123,63,203,116,244,148,123,38,15,12,123,184,119,216,195,93,195,30,110,55,180,186,135,61,246,48,141,220,171,123,56,84,21,237,76,75,106,15,21,155,241,31,246,141, +157,94,221,195,52,132,219,66,109,128,187,27,246,252,190,13,113,151,106,58,235,113,252,225,99,155,228,190,199,93,93,100,239,178,47,117,73,221,178,98,167,2,194,71,15,189,114,158,78,129,199,60,51,173,81, +58,91,122,233,161,246,118,213,42,206,27,234,177,135,105,132,101,242,112,123,165,56,87,203,3,194,172,167,87,247,112,86,188,106,86,126,118,150,231,225,89,249,227,35,241,103,231,138,193,61,246,176,199,30, +246,216,195,30,123,216,99,15,123,236,97,143,61,236,213,61,236,213,61,28,152,10,70,171,177,72,196,41,251,64,104,81,165,17,169,220,23,173,228,180,156,248,253,222,229,94,20,54,78,235,235,22,112,135,100,245, +208,112,144,30,57,250,116,96,78,223,92,104,14,129,42,229,15,114,13,231,20,213,77,231,123,110,58,37,28,47,66,173,238,174,246,125,63,235,213,49,43,249,114,78,29,158,206,41,227,180,80,48,19,115,4,251,221, +28,231,220,153,197,200,73,125,11,148,103,213,73,27,50,93,26,149,235,166,145,22,222,132,23,134,208,70,89,163,254,201,239,209,96,78,10,41,114,136,197,134,90,247,208,89,241,139,186,238,161,94,169,186,135, +142,70,157,248,215,45,195,85,247,176,64,233,17,199,30,190,238,170,87,255,130,94,10,216,92,50,35,61,235,52,159,90,142,88,165,180,30,221,236,97,149,3,244,59,116,28,78,251,61,101,176,191,71,49,208,205,30, +98,14,53,212,60,101,15,111,248,200,222,237,203,255,184,95,187,233,195,103,183,235,223,126,105,199,141,103,198,30,50,214,88,246,218,77,136,59,28,167,213,34,127,48,102,253,29,180,56,3,185,125,213,61,52, +134,231,73,221,195,139,47,61,247,233,207,76,62,161,61,240,171,29,218,195,127,217,166,125,249,167,123,181,79,125,243,176,246,214,91,67,140,94,117,198,115,234,30,86,49,56,18,67,172,3,233,17,195,233,55,136, +89,170,236,24,67,41,2,72,33,232,40,97,63,12,103,176,225,192,83,230,62,123,248,218,215,254,228,170,183,156,212,166,60,121,125,187,235,219,23,181,175,254,102,199,246,96,8,181,175,254,121,139,246,213,182, +121,123,255,55,182,110,215,223,177,109,187,228,85,231,116,122,138,49,148,58,164,131,212,239,122,113,32,142,87,133,166,52,136,30,214,32,12,166,179,164,228,169,66,143,162,177,0,41,58,115,123,192,22,244, +143,230,210,169,5,185,4,84,207,207,251,122,206,167,254,53,7,234,15,56,20,136,186,224,238,68,108,146,37,219,74,253,81,251,57,217,72,116,86,71,68,77,119,127,166,162,9,81,222,76,57,251,220,19,255,114,219, +93,103,181,123,159,120,125,123,244,159,111,110,247,253,228,132,118,255,239,183,234,24,123,95,8,181,123,212,80,123,252,208,24,251,134,142,97,4,44,133,239,248,184,110,11,239,198,241,184,56,33,27,215,102, +44,153,33,99,201,136,41,126,76,81,140,165,229,156,235,236,225,121,97,15,239,120,244,162,246,185,71,94,217,238,152,246,170,118,223,247,175,109,247,252,215,113,253,198,126,252,235,199,116,198,51,35,244, +44,102,137,196,144,76,73,47,23,153,166,49,10,227,169,30,214,8,37,29,246,59,232,23,10,90,218,46,250,105,250,76,42,159,210,86,206,21,246,240,29,97,15,63,255,216,37,237,115,143,94,214,110,159,254,202,246, +153,71,47,109,239,157,114,106,123,215,164,237,218,151,158,222,164,83,247,176,155,71,146,140,192,115,244,84,113,193,85,230,160,212,59,101,176,241,203,96,63,199,96,191,75,151,105,110,39,108,35,91,196,64, +49,212,177,41,85,80,233,185,34,237,239,200,40,124,205,41,164,135,91,107,28,103,91,193,123,191,177,218,106,171,169,166,181,111,223,238,232,226,207,73,45,35,4,61,61,217,212,87,162,151,124,56,111,234,123, +216,195,47,132,61,252,235,176,135,127,253,232,43,218,103,167,93,218,62,50,249,162,118,193,245,71,183,67,143,218,179,221,250,240,254,29,99,75,20,106,252,122,179,133,227,149,220,208,148,197,48,99,188,176, +189,226,15,185,189,4,198,207,234,89,83,28,65,42,158,169,234,48,17,135,211,124,13,59,123,120,94,216,195,47,132,61,252,171,176,135,127,21,246,240,211,211,46,10,206,115,78,59,236,216,3,159,17,148,134,61, +100,128,55,204,133,41,222,245,10,33,184,55,79,221,206,144,162,76,171,210,165,223,97,124,245,46,77,180,70,226,194,164,255,164,139,85,81,139,118,19,7,33,184,57,59,38,133,26,54,246,240,221,97,15,63,27,246, +240,83,97,15,63,21,246,240,99,97,15,111,184,251,196,78,64,41,97,56,55,45,26,148,122,182,112,60,156,2,21,173,0,86,178,225,42,235,233,119,140,105,61,47,80,25,183,60,67,131,233,85,181,75,169,113,97,3,197, +44,97,37,200,159,72,155,168,252,134,133,61,252,114,216,195,207,133,61,252,43,252,112,216,195,15,135,61,60,53,236,161,133,131,92,218,162,193,27,38,25,6,84,145,15,23,155,196,45,25,93,37,75,120,0,3,43,17, +49,37,21,59,204,88,63,95,134,194,119,252,29,127,143,193,168,55,61,109,122,34,106,83,70,161,155,61,52,126,103,187,238,225,145,169,123,248,149,176,135,247,132,61,252,90,216,195,7,194,30,254,85,23,123,40, +129,240,232,137,42,187,89,68,154,55,234,205,23,138,199,104,80,180,196,130,91,23,52,13,194,20,164,186,97,75,141,87,192,150,191,91,141,105,250,162,3,41,246,80,16,155,163,117,15,79,14,123,248,217,176,135, +183,133,61,188,45,236,225,109,97,15,223,61,128,61,52,21,225,6,113,14,148,240,164,255,133,214,21,239,192,112,6,233,69,34,113,227,86,112,211,219,26,1,30,64,80,238,231,171,224,99,85,181,44,28,79,3,90,70, +18,132,235,97,134,27,207,122,213,231,196,47,179,93,247,240,236,176,135,159,12,123,248,161,176,135,31,12,123,248,254,176,135,55,12,96,15,189,113,6,98,29,170,54,26,82,13,255,128,85,242,49,216,3,70,167,218, +157,113,40,136,25,195,220,89,48,210,131,12,173,223,169,6,171,98,143,85,30,80,3,209,102,50,150,225,130,151,94,166,252,153,35,236,225,249,97,15,63,22,246,240,253,97,15,223,31,246,240,214,224,120,215,12, +194,30,234,93,156,82,61,232,22,28,34,216,3,177,86,13,193,16,174,202,120,81,153,187,107,16,63,235,111,104,24,79,53,82,119,253,196,42,34,41,0,146,51,13,11,123,120,110,216,195,15,135,61,188,53,236,225,123, +98,236,45,97,15,95,63,128,61,180,2,98,192,64,42,205,231,133,226,105,136,238,130,113,12,23,201,69,110,129,168,130,18,55,46,146,180,140,45,67,171,248,178,70,98,240,96,117,15,103,155,61,60,35,236,225,135, +194,30,190,43,236,225,45,97,15,111,10,123,248,250,46,246,80,148,198,243,218,194,145,13,253,234,87,191,234,60,140,237,70,241,184,59,200,210,171,113,14,235,177,80,16,184,68,120,232,29,67,124,189,202,118, +214,52,103,108,139,214,2,163,198,49,222,169,114,135,133,61,60,54,236,225,7,195,30,222,28,246,240,166,176,135,55,133,61,188,190,143,61,180,110,181,83,1,199,179,128,55,197,112,223,110,67,187,221,153,171, +154,106,4,48,9,134,136,43,224,73,62,76,87,82,74,25,150,164,165,230,97,141,80,9,72,213,19,151,110,206,136,61,212,243,179,197,30,30,28,246,240,99,97,15,63,22,246,240,83,97,15,63,30,246,240,230,25,176,135, +50,36,24,94,5,175,2,182,140,71,174,90,40,158,133,5,3,53,80,247,125,30,86,74,22,14,190,47,154,215,125,30,18,17,129,174,74,122,26,6,195,202,30,190,63,236,225,187,194,30,190,53,236,225,13,97,15,175,10,123, +120,220,128,186,135,214,187,2,148,113,234,85,180,229,186,122,85,144,226,166,162,49,183,151,106,74,51,25,43,105,169,251,239,68,224,42,177,45,235,146,161,153,187,187,169,82,59,160,50,60,238,44,42,15,11, +123,248,250,176,135,111,9,123,120,125,216,195,55,132,61,124,93,216,195,243,6,212,61,180,146,49,181,48,182,40,113,134,10,52,198,30,99,139,59,212,67,86,78,166,165,186,114,202,212,166,199,53,4,244,78,50, +82,247,242,112,127,189,46,57,17,217,11,233,25,54,246,240,248,176,135,111,9,123,120,109,216,195,171,194,30,94,25,246,240,130,176,135,71,15,168,123,8,162,172,59,0,68,88,209,181,10,48,51,182,50,45,115,175, +69,0,35,173,176,138,76,147,99,243,20,70,235,233,90,46,74,76,24,138,116,161,189,44,96,107,88,217,195,235,195,30,94,29,246,240,202,176,135,87,40,5,24,246,240,216,1,236,161,125,39,81,214,88,45,12,79,128, +178,242,225,138,221,59,32,149,90,214,166,94,93,29,167,215,25,205,3,10,180,180,129,0,239,89,112,193,5,251,81,60,202,219,97,101,15,47,10,123,120,85,216,67,198,190,58,236,225,37,97,15,207,24,164,238,161, +49,137,213,103,120,97,120,181,98,178,25,192,8,105,165,85,18,204,174,122,215,107,221,123,105,76,219,205,52,166,229,221,62,70,150,6,169,27,50,123,104,99,32,139,139,9,217,240,159,30,98,102,66,22,255,135, +246,137,220,214,202,235,146,207,218,211,202,23,22,202,126,241,135,242,6,31,206,27,155,16,180,238,63,142,12,123,248,218,176,135,175,10,123,248,138,176,135,87,134,61,188,42,236,225,153,97,15,199,143,63, +182,115,175,135,181,177,187,234,184,166,164,194,152,51,191,234,93,129,202,216,53,62,171,119,187,221,185,152,67,95,171,64,86,59,153,182,135,104,168,139,101,50,245,16,139,155,126,140,103,83,148,121,25,34, +32,159,22,212,178,116,252,79,21,64,102,139,61,188,36,236,225,149,97,15,175,15,123,248,186,176,135,231,135,61,60,46,236,225,209,3,234,30,98,15,109,168,91,197,216,81,20,124,140,65,83,17,131,245,88,119,239, +118,215,60,172,82,158,122,217,195,19,208,162,243,132,61,60,41,236,225,27,194,30,190,34,236,225,57,97,15,207,12,142,119,106,216,195,35,195,30,30,55,160,238,161,93,70,198,74,236,29,142,137,186,2,145,100, +3,125,42,96,113,227,110,99,157,68,56,130,169,19,13,223,155,21,246,16,186,39,144,165,231,255,43,191,167,72,235,228,184,243,93,241,88,26,79,154,77,90,205,37,6,61,46,205,70,216,162,9,66,103,209,84,100,204, +77,141,107,76,199,30,158,19,246,240,252,176,135,140,61,45,236,225,201,97,15,143,13,123,120,64,216,195,147,79,59,161,179,185,230,202,26,243,35,131,237,74,216,102,173,122,194,5,89,214,41,4,163,236,90,112, +69,81,88,35,216,161,52,60,184,112,69,228,153,177,135,86,75,93,117,15,31,159,99,117,15,247,8,123,120,78,216,195,211,195,30,158,28,246,240,132,176,135,199,6,199,59,60,236,225,190,93,236,161,55,172,119,107, +211,77,84,245,53,81,185,118,45,185,181,148,20,141,182,228,146,75,118,216,67,235,219,50,148,27,207,74,221,67,155,242,195,194,30,238,23,246,240,244,192,89,39,134,61,100,236,209,97,15,143,12,142,119,92,216, +195,131,6,176,135,130,24,35,236,65,161,86,4,22,107,89,31,123,4,27,215,83,64,243,42,40,205,10,123,168,103,7,214,61,28,22,246,240,240,176,135,39,134,61,60,58,236,33,99,143,15,123,120,76,216,195,253,194, +30,238,28,246,112,255,62,246,80,6,198,101,139,61,100,240,64,246,80,47,234,77,61,45,2,243,138,17,201,30,190,60,236,225,49,97,15,199,135,61,28,31,246,240,128,176,135,251,134,61,220,51,236,225,142,97,15, +199,117,216,195,113,109,124,31,123,40,106,207,136,61,116,75,82,93,11,101,252,247,221,33,221,201,151,121,65,247,83,30,160,113,170,20,96,54,219,191,155,223,25,126,246,240,240,176,135,199,199,189,15,14,123, +184,111,216,195,189,194,30,238,30,246,112,151,224,120,59,192,240,194,30,110,22,246,112,211,211,70,183,173,135,129,61,76,52,158,251,117,15,247,9,123,120,96,216,195,189,195,30,238,30,246,144,177,59,134, +61,220,54,236,225,182,49,122,155,224,120,27,135,61,92,231,146,81,109,181,176,135,43,134,61,92,190,143,61,92,113,189,21,250,123,207,30,149,253,42,15,55,95,117,213,85,59,251,86,213,187,35,170,238,225,46, +169,123,184,119,216,195,221,194,30,238,24,246,112,219,176,135,219,132,61,100,236,216,176,135,155,133,61,220,36,236,225,203,194,30,142,14,123,184,74,216,195,21,194,30,174,24,246,144,81,113,201,126,99,171, +120,171,64,86,25,148,64,247,60,236,225,183,251,138,60,94,151,121,246,128,60,227,242,128,182,150,203,51,232,245,233,67,210,75,59,95,117,7,123,158,139,168,101,178,173,243,88,78,30,30,113,197,113,34,237, +147,234,30,238,17,246,112,231,176,135,219,134,61,220,42,236,225,86,97,15,55,15,123,56,38,236,225,166,97,15,55,8,123,184,94,216,195,209,97,15,87,187,112,241,182,234,32,117,15,139,63,156,111,216,195,237, +195,30,238,25,246,112,167,176,135,91,134,61,220,36,236,225,198,97,15,55,10,123,184,97,216,195,245,194,30,174,19,246,112,77,236,225,177,207,174,123,40,193,152,239,217,195,189,194,30,110,25,246,112,221, +176,135,163,195,30,174,25,246,112,141,176,135,171,222,186,104,27,125,225,51,236,97,101,102,150,124,18,20,215,220,120,102,192,30,206,63,117,15,15,10,123,184,111,216,195,221,195,30,238,16,246,112,255,243, +246,237,228,218,125,215,165,63,171,238,97,82,197,94,221,195,108,4,92,149,88,210,99,15,187,5,43,67,161,104,134,20,165,159,151,199,237,177,135,29,153,16,226,108,189,60,61,246,48,141,0,160,116,169,230,216, +174,199,231,190,190,105,158,141,243,188,44,143,61,40,87,66,45,107,241,62,163,68,98,40,110,60,100,53,237,172,254,177,231,212,84,120,198,221,129,151,75,229,233,177,135,179,219,160,47,228,247,103,59,104, +189,144,255,116,94,254,206,92,49,184,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,61,246,176,199,30,246,216,195,65,216,195,235,222,113,250,159,15,63,122,239,232,165,207,153,101,246, +144,34,150,98,0,142,83,64,37,48,75,217,48,172,82,237,113,193,114,124,205,241,43,141,180,171,34,157,83,81,11,216,3,115,188,10,239,201,46,231,211,57,151,2,92,78,182,117,156,45,227,79,102,85,182,87,30,119, +246,12,122,145,216,12,115,233,136,178,87,139,34,231,181,209,74,222,171,48,171,90,165,151,191,246,146,223,127,114,242,94,237,193,255,220,173,189,243,163,41,27,246,214,87,118,100,13,116,85,228,14,100,11, +206,132,187,235,30,22,123,232,176,219,25,176,131,111,231,192,128,172,42,210,58,98,235,30,158,114,214,190,237,254,191,57,167,61,242,135,113,109,106,8,181,59,255,126,191,246,190,207,159,217,238,123,240, +11,207,203,30,86,85,60,135,224,78,251,203,88,6,15,100,15,109,209,142,8,246,240,228,211,15,109,95,126,228,146,118,79,216,165,187,127,112,124,155,252,231,173,218,228,16,106,19,254,184,101,251,212,183,246, +104,111,249,228,225,207,169,123,232,180,191,74,2,146,59,208,86,150,209,12,39,94,241,32,99,136,85,187,217,195,121,90,247,16,123,248,233,187,207,105,247,126,227,178,246,229,169,87,180,187,190,121,113,251, +218,255,219,165,61,28,28,239,225,16,106,15,133,80,251,242,255,108,218,222,123,247,203,219,27,174,123,166,200,99,119,17,56,26,15,146,135,114,123,238,205,253,171,156,96,17,106,126,134,66,175,174,97,199, +30,26,247,133,225,25,183,30,74,30,71,176,125,117,137,59,95,203,177,235,83,57,70,157,234,8,200,29,125,81,22,92,153,113,188,142,237,161,231,221,226,137,176,108,165,72,238,63,30,97,247,3,81,211,221,155,55, +246,147,107,194,30,78,127,242,134,118,255,55,175,110,95,158,118,69,251,210,215,47,111,95,252,206,153,237,193,63,62,99,236,215,130,227,125,240,43,167,247,211,225,116,86,180,89,84,60,52,30,112,60,242,66, +61,220,93,14,144,230,146,177,122,153,177,197,32,146,43,21,142,71,73,32,136,205,85,246,240,19,97,15,191,26,246,240,27,63,190,165,77,253,167,183,181,187,30,191,162,125,100,202,249,237,205,159,223,190,221, +247,244,198,237,67,247,158,214,233,173,98,10,75,106,72,174,228,97,64,65,151,221,6,87,13,68,114,68,10,188,186,120,219,199,37,55,36,133,210,163,34,54,225,140,66,26,122,86,15,211,101,33,108,124,174,151,115, +48,238,204,120,138,219,23,243,241,180,69,23,93,244,178,244,48,5,207,146,51,188,19,47,189,122,107,132,162,247,71,144,125,95,92,239,223,47,8,123,120,103,216,195,47,132,61,252,98,198,239,131,63,188,174,61, +242,111,55,183,183,124,250,194,118,88,166,167,47,252,199,216,212,61,124,134,61,172,241,74,140,70,3,77,163,69,55,233,209,123,122,179,74,150,84,227,84,153,3,158,64,106,72,230,132,139,16,237,233,180,74,6, +229,12,106,174,176,135,183,132,61,252,82,216,195,47,132,61,252,66,216,195,219,195,30,190,239,225,243,219,137,39,159,208,129,155,141,89,189,86,37,62,25,70,133,71,9,75,10,236,50,124,61,231,33,76,99,160, +159,173,6,18,204,124,157,193,20,242,116,153,64,203,170,161,200,91,204,221,115,141,61,252,114,216,195,207,133,61,188,35,236,225,231,194,30,126,60,236,225,133,97,15,129,141,90,188,2,20,125,37,69,59,233, +97,225,120,84,182,42,0,232,53,227,184,180,150,85,199,212,48,168,146,158,165,151,230,25,4,231,228,139,180,154,148,242,26,110,174,212,61,188,32,236,225,93,97,15,255,58,236,225,237,97,15,63,27,246,240,253, +97,15,15,15,123,40,168,212,27,247,230,176,69,52,210,112,157,2,180,244,180,158,34,3,118,41,190,224,84,240,116,33,0,85,255,144,39,148,42,190,20,241,24,7,13,72,149,235,247,134,157,61,124,95,216,195,207,135, +61,252,108,216,195,207,132,61,252,100,216,195,55,13,96,15,245,18,178,165,106,20,210,74,3,50,202,104,146,254,18,152,114,107,238,92,72,60,119,246,181,170,110,89,245,150,72,255,121,140,198,35,67,246,248, +59,16,188,97,101,15,239,13,123,248,197,176,135,183,135,61,252,84,216,195,143,134,61,60,125,0,123,40,192,20,149,86,101,252,74,250,15,216,168,170,120,85,10,80,143,214,248,229,226,120,7,110,207,141,241,13, +133,209,22,93,90,229,5,53,128,44,140,168,13,142,55,199,217,195,163,194,30,222,31,246,240,254,176,135,19,194,30,62,20,246,240,246,176,135,103,119,213,61,36,39,68,171,144,254,151,252,31,235,128,77,42,101, +60,226,148,107,10,62,230,102,65,173,166,48,243,181,32,197,88,176,165,159,165,185,134,238,120,252,109,6,243,30,236,4,68,151,216,165,187,238,33,153,4,173,23,221,22,45,24,33,92,130,233,31,211,40,79,132,186, +121,44,175,83,50,45,185,40,212,133,160,203,244,47,30,18,96,142,143,184,251,43,121,38,39,237,251,251,83,194,30,222,17,246,240,227,97,15,63,22,246,240,227,97,15,223,59,128,61,164,153,4,117,160,207,170,16, +92,213,91,242,90,134,23,14,192,101,141,101,145,154,59,235,93,198,18,149,227,35,168,233,11,174,44,208,210,16,241,53,143,249,89,15,147,44,10,98,197,30,50,122,182,217,195,115,195,30,126,38,236,225,71,194, +30,126,36,236,225,135,194,30,190,105,0,123,104,60,234,89,68,203,192,226,112,160,143,194,240,52,138,158,50,22,173,172,170,200,133,224,100,156,10,120,134,5,222,176,30,30,226,49,60,24,205,59,72,156,244,174, +94,38,101,154,163,117,15,47,12,123,248,169,176,135,31,10,123,248,161,176,135,31,8,142,247,134,46,246,176,150,120,198,35,163,139,74,203,189,61,29,96,11,130,199,96,141,225,99,92,83,241,135,92,83,4,231,254, +26,166,187,94,98,33,64,5,91,86,197,76,141,75,191,69,179,89,148,41,23,238,190,48,127,182,234,30,158,31,246,240,227,97,15,63,16,246,240,253,49,246,214,176,135,215,244,177,135,230,223,90,226,121,229,170, +3,81,188,226,15,65,91,221,70,51,132,177,230,104,110,234,243,170,102,137,140,41,186,180,187,135,253,28,239,16,161,245,50,151,38,115,98,96,53,64,177,135,148,65,47,168,238,225,89,97,15,63,26,246,240,189, +97,15,223,19,246,240,93,97,15,175,238,99,15,165,125,197,30,42,5,104,10,210,139,229,214,85,21,207,184,102,112,245,160,49,42,18,87,198,101,142,246,187,166,177,2,45,185,62,195,245,44,67,187,171,91,138,250, +51,170,123,72,112,106,92,75,65,237,156,196,221,159,204,162,99,82,242,236,137,9,86,110,57,118,0,255,191,133,30,51,31,158,152,72,122,111,198,213,35,217,130,249,135,227,194,30,126,52,236,225,187,195,30,222, +18,246,240,150,176,135,55,118,213,61,196,30,90,192,227,146,24,202,125,25,87,112,101,81,106,220,214,27,23,129,141,89,99,177,42,106,9,66,230,104,212,90,25,46,120,9,114,12,47,216,178,128,75,145,92,239,194, +241,6,171,123,72,140,78,141,111,101,53,203,117,15,15,9,123,248,169,176,135,159,10,123,248,153,176,135,159,14,123,248,174,46,246,208,78,133,173,25,83,7,35,245,102,69,230,154,151,25,234,205,50,86,195,88, +76,20,153,38,75,19,169,225,61,230,97,217,154,222,215,139,126,222,107,149,244,20,216,124,205,20,54,51,246,16,241,146,21,213,159,243,250,68,128,147,175,103,24,184,203,195,180,68,86,177,122,255,180,148,185, +241,165,89,198,221,151,150,254,70,122,239,177,40,225,158,190,45,236,225,173,97,15,223,17,246,240,205,97,15,175,11,123,120,252,0,246,80,166,196,64,198,26,139,220,145,27,86,13,82,61,167,103,185,175,235, +47,164,136,182,124,76,105,62,150,99,155,170,36,38,34,184,241,45,149,172,148,178,104,83,141,97,67,96,88,235,30,94,19,246,240,29,97,15,223,20,246,240,141,97,15,175,14,123,120,193,0,246,208,120,145,90,86, +69,89,189,234,115,204,161,132,67,242,47,64,21,187,164,87,37,44,30,145,183,184,67,70,219,48,176,120,16,4,11,175,173,87,127,99,216,217,195,19,195,30,222,20,246,240,250,176,135,111,8,123,120,117,216,195, +75,6,97,15,185,100,85,146,53,6,185,32,99,229,191,12,144,126,50,200,38,128,164,163,170,105,169,121,88,23,152,112,109,235,102,110,111,121,104,121,89,165,60,125,108,139,118,40,236,33,44,48,227,248,151,137, +214,112,158,73,33,219,110,143,43,187,134,157,58,104,185,103,109,211,230,143,158,157,29,138,7,50,86,30,205,106,232,135,219,237,176,93,123,115,216,195,55,132,61,188,58,236,225,235,148,2,12,123,56,126,0, +123,104,243,141,129,50,38,46,232,99,129,168,202,255,201,168,184,190,222,237,46,240,88,247,107,249,122,109,239,88,38,214,69,68,134,129,134,176,107,82,32,200,176,179,135,151,134,61,188,54,236,225,149,49, +246,53,97,15,95,25,246,240,172,176,135,103,159,123,70,39,26,214,134,155,205,55,227,206,155,20,128,184,165,117,172,168,92,84,90,141,95,61,91,143,223,211,227,92,187,56,98,155,1,26,201,114,48,189,210,9,84, +12,166,150,159,89,221,195,217,102,15,143,14,123,120,85,216,195,43,194,30,190,42,236,225,85,97,15,175,13,123,120,246,0,246,208,134,0,201,175,109,25,155,239,117,15,143,64,85,213,44,235,126,188,238,2,143, +101,176,32,102,126,22,197,25,236,115,84,41,174,137,177,178,44,48,200,140,216,67,43,168,57,194,30,238,157,186,135,151,133,61,188,58,236,225,155,194,30,94,29,246,240,162,176,135,39,14,96,15,109,182,121, +236,65,153,252,185,38,99,189,234,57,110,91,197,29,171,222,161,113,89,204,97,85,170,45,186,84,35,49,182,2,149,140,138,177,122,216,199,248,136,42,71,38,251,178,90,202,247,255,156,105,104,122,18,142,41,153, +150,166,100,252,190,38,30,178,125,223,74,137,162,111,161,231,28,181,228,156,102,213,100,81,159,205,134,218,148,172,154,38,100,247,239,223,78,9,123,248,198,176,135,175,14,123,120,65,216,195,115,130,227, +157,17,246,240,232,46,246,208,86,170,157,195,186,225,172,198,158,105,135,17,130,147,30,238,54,214,177,139,167,144,218,90,39,123,149,88,20,169,102,193,192,88,187,147,54,1,186,209,30,64,200,176,176,135, +23,132,61,188,56,236,33,99,207,12,123,120,90,216,195,19,194,30,30,220,197,30,82,180,23,104,41,207,181,192,48,54,43,58,219,124,55,118,93,133,97,27,214,214,171,59,240,52,66,245,190,67,181,89,97,15,53,6, +192,43,11,137,223,199,173,177,135,147,147,101,77,237,211,87,171,214,67,224,170,40,70,7,250,24,244,48,45,61,181,78,118,10,63,149,241,244,72,222,220,164,44,176,255,105,207,176,135,23,132,61,60,59,236,225, +233,97,15,79,14,123,120,66,112,188,35,195,30,30,48,72,221,195,170,163,36,170,50,142,241,140,50,255,194,114,184,234,168,81,163,58,65,207,92,238,77,143,56,246,112,255,176,135,103,7,206,58,37,236,33,99,143, +11,123,120,76,112,188,19,195,30,30,58,4,246,144,161,122,196,24,172,85,143,113,40,10,215,88,85,7,113,40,117,15,231,26,123,120,68,216,195,83,195,30,142,15,123,200,216,147,194,30,30,23,246,240,160,176,135, +187,133,61,60,96,16,246,208,184,235,102,15,141,59,79,25,139,73,28,209,236,225,81,97,15,143,15,123,120,66,216,195,19,195,30,30,18,246,240,128,176,135,251,132,61,220,37,236,225,246,97,15,247,84,247,240, +148,99,58,231,66,131,177,135,85,19,205,34,190,110,109,24,209,236,225,17,97,15,79,142,123,31,22,246,240,192,176,135,251,134,61,220,43,236,225,238,193,241,118,14,134,55,46,236,225,150,175,90,181,109,22, +246,112,155,176,135,59,236,188,93,103,193,206,192,218,108,51,175,214,77,103,246,164,236,77,233,245,238,66,202,21,145,121,136,199,56,247,179,138,60,102,106,250,94,162,249,148,172,207,255,38,203,198,47, +36,48,93,148,71,160,218,172,179,246,93,96,129,151,60,71,195,61,51,41,111,92,111,197,252,225,243,50,221,220,149,19,132,31,186,207,153,204,96,221,117,215,254,221,126,97,15,15,13,123,184,127,216,195,189, +194,30,50,118,151,176,135,59,134,61,4,92,110,31,28,111,179,176,135,235,165,238,225,154,97,15,87,14,123,184,194,214,225,15,83,247,112,165,89,100,15,141,253,25,212,61,252,65,31,142,135,122,33,119,80,67, +109,157,60,163,242,60,231,158,233,153,202,135,77,214,9,42,163,211,178,175,72,143,220,237,242,106,154,138,52,196,212,4,142,159,99,15,247,15,123,184,87,216,195,93,195,30,238,24,246,112,251,176,135,140,29, +23,246,112,108,216,195,205,194,30,110,20,246,112,237,176,135,171,135,61,92,45,236,225,202,179,88,247,80,175,142,168,186,135,123,133,61,220,35,236,225,142,97,15,199,133,61,220,54,236,225,86,97,15,183,12, +123,184,121,216,195,77,174,94,169,109,16,246,112,157,176,135,107,133,61,92,99,144,186,135,207,199,30,198,245,213,61,252,201,136,170,123,136,61,220,43,236,225,110,97,15,183,9,123,184,69,216,195,205,194, +30,110,26,246,112,147,176,135,27,134,61,124,89,216,195,245,194,30,174,55,8,123,104,177,48,163,186,135,137,244,223,204,120,157,8,123,79,112,155,20,175,251,68,223,152,229,198,168,82,27,237,18,12,64,200, +12,43,110,205,212,165,7,148,0,84,190,11,166,179,87,146,134,91,178,230,124,52,251,95,211,200,12,220,250,155,185,117,74,198,217,79,183,221,126,219,118,200,97,135,180,125,194,30,110,29,246,112,195,176,135, +235,133,61,92,39,236,225,90,97,15,215,9,123,184,94,216,67,81,185,248,195,33,176,135,19,179,64,153,127,216,195,131,195,30,238,31,246,112,175,176,135,59,133,61,60,160,143,61,204,169,254,95,178,247,244,231, +164,148,191,207,244,245,187,52,220,47,123,236,97,46,33,233,177,135,207,148,238,124,201,96,83,207,243,162,131,51,155,135,103,246,125,255,97,95,160,232,213,61,236,91,154,141,205,107,175,238,97,26,65,67, +212,211,99,15,211,24,75,230,89,68,166,55,179,97,53,43,223,159,165,121,120,86,254,240,72,253,217,158,193,195,209,51,61,246,176,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,236,177,135,179,197, +30,94,247,166,115,255,112,210,25,187,118,212,234,78,0,29,146,57,59,114,194,79,30,236,140,151,228,193,49,168,51,96,71,163,206,151,28,164,57,96,115,124,90,215,174,83,3,121,156,49,57,90,85,79,141,22,140, +122,150,132,1,165,230,12,10,223,224,20,49,122,172,223,102,239,122,90,126,102,162,173,99,187,169,46,55,91,104,161,133,214,76,238,189,232,11,94,15,207,168,238,225,229,151,95,252,199,59,38,239,223,190,249, +203,125,218,173,31,61,191,93,125,237,171,59,2,149,23,101,221,67,198,190,251,125,39,182,73,79,92,216,158,8,161,246,196,159,182,105,159,121,248,200,118,195,155,94,23,89,240,51,204,146,158,212,43,8,20,250, +15,61,67,65,143,65,170,186,135,60,67,47,142,104,246,48,84,217,211,55,188,249,152,54,241,27,175,108,247,135,114,153,252,163,35,219,183,219,214,237,27,127,220,186,77,248,143,157,218,155,223,125,214,243, +178,135,220,190,27,199,35,95,228,214,35,150,61,60,45,236,225,196,199,94,209,30,152,250,234,118,255,163,87,180,9,223,63,179,125,253,183,219,181,199,219,150,237,27,33,212,238,253,233,230,237,230,47,102, +71,50,61,74,224,89,87,39,215,185,176,177,236,180,191,106,30,170,19,161,116,66,119,221,195,17,195,30,158,26,246,240,171,97,15,31,156,22,99,131,227,125,117,250,21,237,190,16,106,15,255,251,254,29,99,191, +30,66,109,90,8,181,135,254,223,216,118,253,27,159,113,237,146,48,128,59,200,146,170,178,150,6,40,53,174,32,230,115,198,19,195,84,221,195,121,202,30,94,26,246,240,115,97,15,39,132,61,236,54,246,174,175, +95,214,62,249,216,177,237,254,255,216,172,99,236,251,62,253,202,254,130,113,52,29,4,45,136,150,82,225,213,149,203,26,131,123,139,238,130,157,159,173,200,77,2,97,172,147,79,240,148,121,82,247,240,250,176, +135,223,14,123,248,112,216,195,251,195,30,234,217,123,190,249,202,246,193,7,206,107,47,63,246,160,118,251,247,182,104,159,156,112,220,179,32,172,42,250,134,89,42,233,18,192,131,86,171,155,78,51,109,97, +32,24,93,208,37,227,13,9,50,40,66,153,110,224,114,216,235,30,158,147,186,135,159,13,123,56,41,236,225,119,194,30,126,51,236,225,87,195,30,126,98,210,197,237,229,199,28,212,1,182,94,241,154,147,251,85, +58,69,168,81,207,145,12,210,79,22,142,135,98,25,136,227,85,41,95,70,82,251,80,253,96,21,253,142,241,76,10,197,104,175,115,133,61,188,56,236,225,253,97,15,239,78,84,198,14,79,9,123,248,245,176,135,111, +15,123,200,88,173,95,61,84,55,247,27,171,212,120,164,254,212,120,122,217,247,74,126,88,23,107,87,109,83,141,36,17,241,123,101,172,225,192,165,201,160,74,251,53,87,216,195,247,133,61,188,63,236,225,221, +97,15,239,14,123,248,165,176,135,31,238,98,15,189,121,46,202,133,73,134,73,245,11,199,43,50,141,206,185,4,106,85,216,130,145,220,185,123,12,83,225,1,46,121,7,201,162,30,238,190,130,221,25,177,168,110, +158,31,182,186,135,95,13,123,248,229,176,135,119,133,61,252,114,216,195,207,132,61,188,100,16,246,144,138,157,140,159,138,221,199,116,210,52,206,48,29,50,68,42,89,145,154,219,26,199,213,187,26,75,239, +114,119,141,194,27,168,115,253,14,13,181,169,76,195,204,149,186,135,151,132,61,252,106,216,195,59,195,30,126,41,236,225,23,195,30,126,164,139,61,172,55,205,48,140,2,228,198,43,129,56,9,177,158,166,170, +53,150,69,107,130,81,198,85,224,210,187,62,22,189,75,80,106,204,211,70,107,40,242,97,94,226,85,195,0,59,134,181,238,225,71,194,30,222,29,246,240,139,97,15,191,16,246,240,246,176,135,111,31,192,30,138, +174,140,164,136,71,168,84,129,183,34,81,112,10,10,63,214,88,174,210,188,149,119,23,93,202,141,53,10,173,52,3,33,3,148,241,245,104,132,97,103,15,31,14,123,120,79,216,195,47,133,61,252,92,216,195,79,135, +61,60,115,0,123,232,77,50,182,32,15,4,75,213,61,227,226,165,140,215,99,85,218,83,35,113,211,154,134,140,91,238,91,60,19,21,60,205,181,223,245,224,14,25,110,78,70,166,41,149,48,199,217,195,99,194,30,78, +10,123,248,112,216,195,169,97,15,31,9,123,120,231,32,236,33,247,5,97,117,23,137,195,62,20,128,133,129,32,28,71,140,114,109,211,77,149,48,169,138,90,140,45,216,82,49,41,6,18,154,27,22,32,17,152,15,200, +195,184,38,99,98,52,185,211,28,173,123,120,122,216,195,187,195,30,126,38,236,225,103,194,30,126,38,236,225,135,186,216,67,57,177,53,46,23,45,94,201,107,1,90,104,53,189,206,112,40,143,55,141,52,229,17, +122,214,84,230,119,25,91,84,169,134,241,115,152,9,134,122,21,249,5,66,31,27,30,36,135,148,123,115,156,61,188,32,236,225,157,97,15,63,29,246,240,211,97,15,63,17,246,240,237,125,236,97,45,250,221,197,97, +245,195,5,145,105,48,188,66,242,24,95,84,26,15,208,235,5,106,153,107,141,97,234,121,141,192,200,130,178,10,178,172,207,171,156,167,207,245,186,234,0,196,107,85,247,144,242,103,142,212,61,188,52,236,225, +29,97,15,63,17,246,240,19,97,15,63,22,28,239,198,62,246,208,58,183,216,67,70,155,130,24,88,56,94,25,93,204,161,239,193,241,52,0,195,69,110,198,50,166,8,84,40,144,177,95,129,175,202,130,118,211,165,40, +56,106,188,50,120,142,178,135,151,132,61,188,61,236,225,199,194,30,126,52,198,126,56,236,225,245,93,117,15,173,118,44,243,140,43,6,213,24,46,227,138,55,44,182,184,220,91,47,139,216,88,38,198,170,128,89, +110,175,49,138,61,20,237,187,107,161,154,210,40,110,169,112,9,83,177,134,131,177,135,212,64,47,136,61,60,55,236,225,103,195,30,222,22,246,240,67,97,15,223,31,246,240,250,174,186,135,48,60,130,111,17,186, +80,188,170,111,232,213,215,139,37,230,166,48,31,129,199,244,98,223,75,162,193,104,216,143,105,77,207,154,199,141,247,238,50,158,197,32,26,243,75,47,189,116,7,197,35,49,198,56,208,106,10,98,112,0,110,61, +91,236,225,9,97,15,63,27,246,240,131,97,15,223,31,246,240,125,97,15,223,214,197,30,90,191,114,103,111,142,129,158,154,142,188,233,170,84,137,33,148,121,49,14,195,36,155,170,92,90,86,101,142,54,245,104, +16,189,239,85,207,106,164,2,48,235,66,5,85,119,138,115,152,227,236,225,97,97,15,191,16,246,240,115,97,15,191,16,246,240,142,176,135,239,15,123,120,206,197,167,117,114,220,98,15,77,29,53,254,188,10,46, +85,122,179,200,112,99,86,207,226,32,164,150,117,67,139,149,145,185,217,238,166,121,215,207,123,48,135,101,188,6,16,169,5,54,67,97,88,217,195,191,10,123,120,91,216,195,91,195,30,222,28,246,240,205,97,15, +79,236,99,15,141,19,213,179,76,45,85,127,180,140,53,189,8,100,230,94,198,200,158,220,228,96,53,84,219,62,82,69,11,9,61,94,247,0,200,174,106,14,182,8,49,21,21,112,41,77,165,189,126,62,246,16,95,108,129, +145,21,220,239,163,170,159,154,229,228,227,105,160,201,217,186,117,183,188,251,171,87,125,214,238,124,18,129,59,147,209,76,75,194,62,57,154,198,223,221,24,246,240,189,97,15,223,17,246,240,109,97,15,111, +12,123,120,233,0,246,208,237,103,198,166,177,88,24,158,233,195,84,165,102,97,221,214,34,87,150,70,50,216,130,192,171,4,164,86,72,22,12,197,28,154,111,101,86,254,142,198,227,242,210,205,97,103,15,79,13, +123,120,107,216,195,183,134,61,124,115,216,195,27,194,30,190,42,236,225,49,93,117,15,237,65,113,75,111,74,47,112,77,137,68,119,249,63,174,172,55,5,158,218,208,43,238,144,91,87,129,71,17,191,8,83,243,179, +113,47,243,242,177,223,171,106,60,207,87,247,112,182,217,195,91,194,30,190,57,236,225,27,195,30,94,23,28,239,138,176,135,199,15,82,247,80,15,90,245,120,195,140,21,160,170,252,95,213,75,43,50,173,118,47, +11,193,179,49,224,247,221,214,162,167,171,98,60,131,165,156,190,54,215,216,195,43,194,30,190,57,236,225,27,98,236,53,97,15,95,27,246,240,252,1,236,161,77,118,155,110,112,29,199,37,133,225,137,194,92,150, +235,14,164,74,25,173,151,125,93,239,51,184,140,54,166,53,152,225,192,120,199,43,67,97,15,237,140,204,54,123,120,92,216,195,55,134,61,188,58,236,225,235,194,30,222,16,246,240,198,176,135,231,117,177,135, +64,102,220,159,77,55,134,11,80,85,13,79,160,234,118,229,238,2,143,122,216,211,77,151,86,81,57,151,145,48,178,8,53,249,243,92,99,15,175,12,123,248,198,176,135,55,133,61,124,99,216,195,87,133,61,60,173, +139,61,100,176,155,205,108,180,217,91,46,87,102,108,237,112,148,27,119,163,120,122,184,162,118,119,25,79,199,52,137,168,207,98,15,171,58,222,140,216,67,13,51,199,216,195,51,194,30,190,35,236,225,235,194, +30,190,50,236,225,197,193,241,206,15,123,120,124,216,195,227,251,234,30,218,204,147,214,121,156,25,113,83,99,183,118,55,244,228,64,238,208,194,67,182,86,59,39,117,115,154,121,190,202,119,234,101,105,228, +80,216,195,120,197,156,171,123,248,202,176,135,87,132,61,100,236,5,97,15,207,13,123,120,122,216,195,195,7,212,61,20,65,43,11,178,225,86,155,116,12,99,176,185,180,152,67,203,75,189,108,51,192,88,246,51, +14,223,186,145,60,153,21,99,141,207,129,117,212,234,210,146,174,186,135,223,156,99,117,15,247,14,123,120,89,216,195,139,195,30,158,27,246,240,172,176,135,167,195,241,194,30,30,26,246,240,130,203,206,234, +220,237,33,33,49,249,23,123,232,85,32,145,123,27,151,85,250,143,1,53,158,165,169,26,169,230,217,17,83,247,240,224,176,135,23,7,206,58,59,236,33,99,79,13,123,120,82,112,188,51,194,30,30,25,246,240,248, +211,142,110,103,158,117,102,39,82,27,211,56,163,238,186,135,104,180,110,246,176,27,199,155,85,246,80,239,206,149,186,135,227,195,30,158,23,246,240,212,176,135,140,61,51,236,225,169,97,15,143,12,123,184, +79,216,195,131,195,30,158,121,206,25,157,158,174,186,135,221,204,175,29,11,171,155,154,87,43,55,30,177,236,225,216,29,54,254,195,241,97,15,207,8,123,120,122,216,195,51,194,30,30,21,246,240,240,176,135, +7,135,61,220,43,236,225,46,97,15,247,193,30,14,82,247,80,0,242,136,186,150,115,115,136,61,156,156,153,98,90,31,218,115,92,34,252,118,121,220,234,0,19,120,150,4,226,121,213,180,89,119,46,25,183,57,50,103, +59,119,228,90,138,239,208,84,132,198,158,54,102,155,245,255,112,108,216,67,104,237,177,97,15,95,30,246,240,144,176,135,7,134,61,220,47,56,222,94,193,240,118,12,123,184,77,216,195,177,3,216,67,99,117,118, +217,195,42,242,216,197,30,126,123,174,176,135,7,134,61,60,38,236,225,225,97,15,15,12,123,200,216,189,195,30,238,17,246,112,247,24,189,91,112,188,173,175,90,190,109,146,186,135,107,135,61,92,45,236,225, +202,169,123,184,98,216,195,149,231,28,123,248,253,185,202,30,238,22,246,240,176,176,135,7,135,61,220,55,236,225,30,97,15,119,13,123,200,216,157,195,30,110,23,246,112,235,176,135,155,133,61,220,32,236, +225,232,176,135,107,134,61,92,117,220,172,213,61,28,81,236,225,22,169,123,184,95,216,195,253,194,30,238,25,246,112,151,176,135,187,134,61,220,33,236,225,118,97,15,199,133,61,28,155,186,135,99,194,30,110, +16,246,112,253,139,22,111,163,195,30,86,4,183,207,44,122,15,198,30,114,127,83,216,136,101,15,247,11,123,184,79,216,195,157,195,30,110,31,246,112,92,216,195,173,194,30,142,13,123,184,89,216,195,49,97,15, +55,126,227,18,109,131,241,171,116,10,37,215,124,45,136,21,123,168,1,164,144,125,199,165,127,78,112,251,175,17,205,30,110,223,199,30,30,24,246,112,199,176,135,91,134,61,28,19,246,112,147,176,135,27,133, +61,220,232,189,139,182,141,46,122,166,238,161,135,113,82,82,211,216,243,212,61,156,191,216,195,67,194,30,30,24,246,112,191,176,135,187,135,61,60,120,6,236,161,139,131,122,236,97,143,61,236,32,239,61,246, +112,40,68,206,28,227,150,250,160,75,52,89,175,238,97,26,97,221,60,144,117,247,226,244,234,30,166,17,86,239,108,146,47,176,192,138,121,150,203,227,74,138,30,123,56,148,49,58,179,159,153,99,99,120,102,255, +209,72,249,254,92,49,184,199,30,246,216,195,30,123,216,99,15,123,236,97,143,61,156,139,236,225,149,111,56,245,15,84,235,142,81,156,34,56,82,113,40,78,173,227,40,165,142,70,235,164,193,1,185,83,66,178, +39,218,171,42,37,70,241,14,235,113,250,72,11,230,176,221,169,100,95,93,165,223,186,125,49,39,148,147,242,247,30,201,137,227,116,187,169,46,55,115,223,151,92,126,40,115,253,144,230,225,168,106,86,136,50, +231,148,104,174,62,253,155,223,252,102,122,180,84,247,169,161,150,43,27,127,126,245,91,247,107,19,159,220,183,189,243,131,39,71,149,247,202,142,113,14,206,156,237,122,227,206,141,156,25,185,222,177,184, +37,186,14,106,60,90,47,6,59,162,33,146,97,176,131,53,199,167,212,126,206,153,156,232,59,168,115,146,225,220,42,219,61,63,207,134,222,180,252,206,100,91,199,110,114,115,185,89,80,60,75,198,206,221,149, +47,24,197,243,139,145,31,45,29,99,199,51,246,169,167,158,122,60,98,209,251,162,126,157,10,218,58,251,220,3,219,132,160,61,223,252,213,14,237,27,191,221,182,221,244,193,211,250,209,157,23,29,123,248,142, +119,158,216,254,246,159,110,108,147,31,187,162,61,242,163,163,59,132,218,164,255,218,177,125,48,242,196,107,175,123,125,199,157,73,31,112,73,206,143,237,87,149,82,64,239,81,0,25,2,122,79,169,63,223,115, +38,229,200,180,74,4,234,221,42,5,232,103,253,28,111,225,230,113,239,167,29,10,184,163,207,181,117,17,170,221,153,30,62,169,111,121,58,67,247,126,222,238,143,232,108,211,136,205,110,138,104,244,33,110, +172,103,177,135,183,134,61,156,26,28,239,155,223,189,161,125,255,71,239,108,147,255,254,148,246,141,167,199,117,8,181,233,127,216,188,189,253,227,97,12,199,31,250,188,236,225,124,81,247,144,27,223,24, +246,144,177,95,155,242,234,246,96,112,188,191,249,199,155,218,183,254,241,45,237,177,63,132,65,236,35,212,30,250,159,77,218,59,239,26,219,145,63,116,215,61,172,49,12,198,18,176,138,61,116,142,236,240, +173,26,1,144,169,119,5,173,242,140,26,235,85,90,204,17,172,64,153,51,227,167,92,72,232,214,182,120,195,84,55,185,165,151,199,246,45,47,159,115,85,220,160,61,156,113,186,72,158,131,35,252,188,63,183,251, +63,20,53,205,3,2,212,25,97,15,31,9,123,248,80,216,67,198,62,24,28,239,107,129,182,190,249,47,55,182,7,254,245,176,126,28,239,145,63,109,218,190,248,253,125,218,53,215,93,217,25,211,221,236,33,163,69,113, +178,197,17,205,30,158,22,246,80,128,154,24,246,240,107,97,15,203,88,56,222,109,15,94,208,110,185,253,240,54,225,87,155,182,187,254,110,159,126,104,139,177,165,210,33,243,167,136,21,204,104,63,140,85,18, +228,42,244,168,135,11,175,117,3,241,60,103,15,239,12,123,56,57,236,97,25,251,0,28,47,198,126,240,171,231,182,125,247,127,70,189,243,249,199,15,109,215,134,33,38,115,16,92,4,174,34,90,8,93,170,36,160,105, +167,36,14,230,93,70,151,74,158,171,11,78,243,148,61,124,99,216,195,239,133,61,156,28,246,240,107,97,15,25,123,127,216,195,219,194,30,30,17,246,80,212,188,240,162,115,35,96,185,174,99,100,245,44,166,129, +222,138,238,74,239,122,200,134,75,183,229,103,205,211,133,227,209,95,250,30,153,147,222,46,246,80,3,204,181,186,135,216,195,207,133,61,156,26,246,240,7,97,15,159,8,123,248,96,216,195,79,119,177,135,18, +6,106,29,111,20,161,38,169,240,198,169,242,232,45,169,223,233,182,100,88,84,119,131,25,172,145,252,141,34,77,73,18,77,83,117,35,249,92,171,123,120,105,216,195,7,195,30,34,194,191,26,246,240,209,176,135, +143,135,61,124,199,32,236,33,137,96,149,252,170,74,28,133,227,129,57,184,116,85,4,224,210,140,212,195,158,50,152,94,171,36,79,50,178,42,236,8,201,99,52,247,55,222,245,186,11,248,157,46,58,74,245,234,240, +205,189,154,137,222,95,75,148,127,36,119,232,222,209,167,4,176,117,220,153,155,159,21,165,35,16,93,35,138,216,47,37,58,79,201,27,124,136,82,246,131,97,15,31,12,123,120,95,216,195,251,194,30,126,37,236, +225,71,6,97,15,9,76,9,185,171,32,20,217,47,9,49,73,176,94,38,71,4,99,113,233,226,15,203,165,171,186,158,113,44,160,241,2,198,66,126,36,38,14,219,234,42,246,97,103,15,39,132,61,188,55,236,225,61,97,15, +239,14,123,120,123,216,195,75,7,176,135,222,40,205,52,37,60,131,171,94,11,237,51,117,45,213,59,205,116,241,135,85,199,180,91,59,205,157,187,229,196,26,71,46,110,28,147,73,144,29,234,73,68,43,87,151,121, +249,220,145,43,46,209,171,159,209,64,153,155,191,155,108,110,106,26,105,202,194,11,47,124,93,122,119,61,91,191,207,233,225,172,112,222,149,55,125,127,220,241,129,76,244,191,184,52,236,225,67,97,15,239, +10,123,248,149,176,135,95,14,123,248,241,176,135,47,239,171,123,88,10,58,250,102,124,3,160,131,209,30,50,126,61,78,243,92,114,226,42,97,98,156,86,85,0,189,107,236,87,185,3,227,188,42,92,10,118,122,89, +239,50,202,85,234,206,145,25,43,61,37,138,241,48,150,238,67,195,72,88,242,181,159,197,173,31,146,136,164,244,193,231,250,14,0,236,121,47,252,44,151,142,251,125,62,50,254,71,226,206,19,18,21,127,247,241, +176,135,247,133,61,252,114,216,195,47,135,61,252,124,216,195,155,7,97,15,25,136,77,242,160,87,10,9,96,52,85,59,215,214,203,198,184,249,184,132,226,133,226,234,89,174,172,158,139,158,53,222,77,103,21,244, +172,188,124,13,216,81,117,15,25,109,12,59,80,215,211,165,254,147,183,103,60,63,149,134,153,144,196,230,155,41,216,250,112,95,230,229,130,237,197,251,13,182,149,26,201,254,61,89,29,77,207,27,154,22,215, +120,250,145,176,135,247,135,61,252,74,216,195,47,134,61,188,61,236,225,217,125,236,161,249,210,82,80,79,193,111,186,139,196,21,159,4,209,1,123,80,181,243,2,99,153,65,34,112,21,107,173,11,17,52,132,185, +154,235,87,57,79,172,4,205,180,7,128,45,104,253,127,246,206,59,78,171,234,218,223,216,99,44,49,154,168,41,38,154,106,137,198,222,187,162,162,162,34,189,40,69,122,239,130,138,138,84,123,195,142,5,236,20, +1,169,34,12,48,67,19,123,139,137,49,49,253,222,148,155,123,127,55,49,154,122,126,207,115,120,215,228,240,242,14,51,195,20,6,239,251,199,249,12,12,3,188,235,236,181,215,94,123,175,239,179,151,234,0,117, +95,202,17,53,216,17,119,132,227,38,114,131,27,110,255,23,126,102,21,137,205,107,8,222,108,3,232,189,154,150,123,118,41,55,24,137,253,169,4,173,185,68,217,213,164,127,111,201,30,174,130,61,44,133,61,92, +11,123,184,22,246,112,110,134,61,12,237,164,251,92,131,76,192,89,241,53,144,158,160,78,133,65,12,96,162,120,26,236,232,26,157,3,1,136,81,213,48,241,1,167,129,47,201,41,17,72,128,49,32,174,78,175,117,246, +176,11,236,225,11,176,135,211,96,15,167,193,30,78,131,61,124,56,195,30,154,15,135,56,212,200,43,115,40,138,23,143,134,71,87,60,141,55,144,105,180,91,70,221,55,48,120,221,88,247,21,6,81,234,175,113,78, +1,151,53,177,2,163,125,112,15,190,136,66,236,161,180,105,141,251,30,246,133,61,156,11,123,248,12,236,225,211,176,135,79,194,30,222,150,233,123,168,177,238,122,92,55,117,91,73,180,236,40,251,107,191,103, +107,177,248,170,209,210,42,186,181,6,43,249,215,205,53,206,151,161,113,130,34,206,123,191,198,239,69,121,252,181,17,63,159,61,244,5,212,10,123,56,24,246,112,22,236,225,147,176,135,79,192,30,78,5,199,155, +144,233,123,168,177,186,101,244,60,212,48,131,86,32,120,126,13,222,48,48,61,191,58,175,29,57,141,205,98,244,1,103,185,172,101,187,225,153,200,24,237,125,124,49,6,45,133,168,206,221,124,246,208,223,59, +135,77,86,136,218,31,146,143,47,71,78,188,156,185,59,137,199,235,96,247,45,159,195,188,245,97,204,151,5,68,211,101,164,138,191,24,8,123,56,19,246,112,42,236,225,20,140,125,4,246,112,108,134,61,52,104, +57,74,6,172,104,234,40,67,24,172,97,252,218,175,210,107,82,107,26,165,145,46,59,174,209,26,239,207,251,103,249,176,165,222,160,241,26,28,192,165,127,71,17,170,130,212,138,250,30,110,54,123,216,19,246, +112,6,236,225,163,176,135,143,192,30,62,4,123,56,174,0,123,168,17,6,166,0,38,53,46,80,188,184,15,64,170,204,224,99,212,53,18,27,172,92,95,53,64,220,78,131,157,22,97,120,16,166,113,175,64,96,184,174,197, +234,173,85,226,186,254,214,42,123,216,1,246,112,58,236,225,100,216,195,7,97,15,31,132,61,188,53,143,61,116,148,253,192,209,111,212,15,29,8,157,192,179,163,25,56,187,107,169,27,11,231,188,201,134,137,70, +52,122,116,142,6,84,25,73,75,144,165,142,178,255,166,238,106,255,165,202,216,67,93,218,219,155,170,221,247,240,98,216,195,231,97,15,103,194,30,206,129,61,124,14,246,240,193,12,123,232,14,201,127,216,121, +229,7,114,142,249,213,209,116,142,26,105,165,203,92,102,130,78,211,88,179,42,13,54,29,245,202,26,137,51,97,172,104,193,235,191,161,59,231,195,150,199,30,123,108,178,211,78,59,165,163,107,23,31,143,108, +125,9,210,46,246,91,242,171,1,172,70,125,15,159,133,61,124,12,246,240,62,216,195,59,97,15,111,130,61,188,44,175,239,161,75,146,17,212,40,27,203,135,107,168,134,26,129,77,15,221,26,186,86,7,206,163,75, +71,118,229,186,236,146,36,167,168,71,248,111,68,87,75,141,247,215,122,128,75,150,107,176,1,203,214,38,142,164,75,145,98,115,31,177,218,26,179,135,19,97,15,239,135,61,188,3,246,240,54,216,195,137,176,135, +131,243,216,67,183,106,126,88,63,80,96,120,110,9,29,85,115,231,48,214,116,210,168,110,162,18,77,30,93,143,205,176,204,174,194,104,189,195,249,238,210,164,183,4,211,232,26,92,21,246,208,45,162,221,4,200, +187,75,200,183,215,145,75,47,37,58,159,200,115,112,170,33,201,158,210,243,65,238,33,127,45,33,251,89,78,78,250,199,206,176,135,15,192,30,222,10,123,120,19,236,225,4,216,195,225,25,246,208,83,198,56,59, +246,132,194,108,201,196,66,116,86,99,61,225,112,255,27,29,181,162,10,17,68,154,25,151,35,239,220,246,239,232,21,190,52,95,160,70,199,136,59,109,60,13,169,140,61,148,177,168,49,123,56,9,246,240,102,216, +195,9,176,135,99,193,241,70,194,30,182,207,176,135,66,85,30,186,153,204,91,26,113,131,224,109,43,174,179,26,163,177,110,253,162,223,97,0,91,26,239,168,251,66,140,216,186,118,52,119,212,91,140,232,26,173, +177,230,214,149,177,135,74,143,165,102,52,152,104,254,46,159,167,148,28,123,25,55,33,142,101,100,69,2,190,149,170,131,178,35,204,129,218,126,36,245,243,25,229,181,108,254,75,207,56,227,180,100,36,236, +225,205,176,135,26,59,26,246,240,106,216,195,190,25,246,208,147,7,141,245,208,205,5,223,101,71,55,214,8,243,100,55,23,26,235,185,85,20,213,204,195,253,117,220,176,228,150,208,0,230,124,215,232,200,167, +117,115,13,119,79,92,21,246,208,205,68,141,217,195,118,176,135,19,97,15,71,195,30,94,11,123,56,1,246,112,34,236,97,239,28,123,168,220,215,45,153,27,115,171,128,142,108,28,197,58,186,186,162,243,54,139, +226,197,29,152,238,152,60,253,112,148,253,59,38,36,122,136,203,149,209,91,55,215,131,162,133,103,189,176,135,103,211,247,112,20,236,225,68,216,195,59,96,15,39,194,30,94,9,123,120,5,236,97,203,246,23,167, +27,113,221,200,42,128,111,216,195,245,64,107,227,178,48,13,140,82,169,248,93,180,253,115,212,117,247,108,27,79,221,220,155,28,220,2,122,26,26,208,86,101,236,97,173,246,61,236,10,123,120,39,236,225,181, +176,135,67,97,15,7,129,227,245,131,61,236,144,97,15,117,109,211,58,5,223,150,72,140,200,186,172,115,213,17,206,114,135,26,29,148,184,238,238,40,123,210,169,225,28,188,165,29,45,179,236,97,236,127,235, +173,239,225,201,103,29,251,201,112,216,195,145,176,135,3,49,182,63,236,97,31,216,195,174,176,135,151,110,130,61,180,66,24,181,97,247,175,166,131,158,58,70,71,203,184,218,213,151,19,13,33,233,201,82,206, +30,234,202,49,178,21,177,135,6,171,58,99,15,135,195,30,14,132,61,236,3,123,216,3,246,176,43,56,94,123,216,195,139,97,15,251,20,96,15,253,176,158,67,105,168,31,204,132,193,165,35,84,1,26,236,60,182,80, +230,11,201,178,135,254,90,6,194,11,134,204,178,220,52,100,59,90,6,104,233,94,88,175,34,233,248,53,199,60,43,136,37,101,240,86,51,136,200,94,116,112,84,238,164,99,215,8,206,5,139,105,188,177,29,121,163, +45,201,149,87,144,73,173,81,102,96,229,253,66,216,195,193,192,89,189,96,15,53,182,11,236,97,71,112,188,110,176,135,45,50,236,161,199,187,89,246,208,179,40,31,247,173,166,127,209,217,125,171,96,15,219, +193,30,246,133,61,188,2,246,80,99,187,195,30,118,129,61,108,9,123,120,46,236,97,211,2,236,161,41,95,32,58,230,188,142,94,52,119,244,107,131,238,123,40,123,216,1,246,176,59,236,97,119,216,195,110,176,135, +173,96,15,155,195,30,94,12,123,216,24,246,240,52,216,195,198,176,135,109,11,176,135,113,205,91,45,179,135,101,117,206,30,182,133,61,236,133,123,183,131,61,108,14,123,120,9,236,97,83,216,195,243,193,241, +26,131,225,157,12,123,120,44,236,225,145,176,135,199,208,247,240,132,147,143,77,247,175,181,209,247,176,0,123,88,63,125,15,207,135,61,108,11,123,216,2,246,176,41,236,161,198,158,11,123,120,22,236,225, +89,24,125,6,56,222,177,244,61,252,30,236,225,1,45,232,125,120,218,238,201,62,244,61,252,34,236,225,222,91,43,123,120,58,236,225,165,176,135,23,195,30,158,7,123,120,22,236,225,25,176,135,26,123,42,236, +225,137,176,135,199,92,191,87,114,248,176,61,147,3,175,216,35,217,191,249,174,201,215,154,239,144,124,169,154,236,161,75,79,131,233,123,40,123,120,30,236,225,249,176,135,141,97,15,207,128,61,60,29,246, +240,36,216,195,19,96,15,143,135,61,60,10,246,240,48,216,195,3,123,239,153,124,167,223,78,201,215,207,222,52,123,104,68,119,201,105,208,236,225,9,244,61,60,15,246,240,92,216,195,211,97,15,79,130,61,60, +30,246,240,88,216,195,163,97,15,15,135,61,60,12,246,240,123,227,62,147,28,88,1,123,104,48,179,186,224,6,223,28,157,229,113,235,97,15,47,128,61,60,5,246,240,104,216,195,195,97,15,15,133,61,60,4,246,240, +123,176,135,7,103,216,67,141,51,193,80,177,227,22,211,39,167,188,251,45,75,218,26,114,128,23,61,110,221,170,250,30,54,133,61,188,0,246,240,60,216,195,51,97,15,47,172,2,123,72,84,127,193,6,232,108,34,210, +54,217,102,80,236,111,7,231,178,40,247,184,118,161,221,159,103,15,158,29,121,42,236,104,185,201,76,171,82,189,162,221,214,215,99,54,226,55,39,114,154,56,146,115,165,121,28,172,173,177,242,206,54,241,101, +235,179,150,44,173,226,89,216,34,211,122,157,3,182,247,216,156,127,224,33,57,115,243,67,82,193,15,60,93,228,251,175,123,255,149,199,50,164,137,75,220,188,163,213,90,203,40,175,176,219,59,134,22,251,30, +242,162,139,236,97,101,158,89,165,78,30,85,249,71,210,127,104,125,195,199,34,123,200,75,176,242,94,100,15,115,47,194,151,225,83,100,15,171,58,149,170,251,115,85,66,0,170,251,143,54,228,159,175,23,131, +139,236,97,145,61,44,178,135,69,246,176,200,30,110,121,246,240,202,95,79,188,29,174,104,244,169,105,189,73,45,150,76,131,242,38,31,91,13,197,175,67,55,45,211,148,197,240,84,201,90,129,180,38,229,158,216, +3,118,142,117,254,193,46,236,55,236,135,215,242,243,233,57,57,165,155,82,14,6,30,242,114,51,206,182,21,141,86,185,41,115,149,151,165,28,142,215,26,153,210,100,57,38,228,70,139,164,93,248,112,63,177,31, +211,168,81,205,147,149,239,158,151,188,241,251,19,147,97,195,251,167,250,200,79,37,123,216,25,218,229,121,0,144,85,47,13,72,86,191,213,41,121,255,159,71,36,75,126,112,118,242,244,115,55,125,250,216,195, +30,176,135,165,160,61,107,160,93,150,148,210,154,232,205,43,146,31,252,245,232,228,71,16,106,75,126,120,22,242,223,25,229,133,240,173,190,239,225,237,176,135,63,129,61,92,179,238,202,100,25,28,211,50, +104,151,229,175,246,75,222,254,232,248,228,61,8,181,183,254,113,8,125,94,58,39,253,6,118,220,250,217,195,123,97,15,95,2,199,123,3,246,240,71,176,135,203,33,212,74,64,123,150,224,214,175,254,207,73,201, +187,52,140,123,155,30,106,47,253,249,160,228,142,103,142,75,213,1,249,125,15,183,26,246,112,2,236,161,198,46,135,61,92,14,142,247,46,236,225,91,176,135,75,224,152,158,46,229,242,252,87,78,79,141,125,43, +57,48,121,229,175,7,37,139,63,36,136,93,221,145,130,248,224,114,126,56,216,195,136,208,209,198,211,232,174,132,162,193,176,135,93,97,15,215,194,30,174,128,61,212,88,71,118,25,35,251,198,207,110,76,102, +172,189,50,237,161,118,211,163,178,196,7,37,143,206,190,2,125,199,122,66,45,138,226,1,77,171,6,8,163,37,211,132,176,212,123,133,193,46,73,122,64,0,211,170,254,148,57,10,90,198,181,206,33,177,240,43,37, +216,63,176,68,45,227,223,90,203,82,182,26,109,86,143,220,30,123,199,252,157,91,193,101,9,217,223,151,209,62,62,128,74,118,49,42,184,69,46,61,70,99,3,212,74,216,67,231,108,24,187,0,28,239,17,216,195,1, +67,123,164,68,73,231,158,77,146,49,227,254,205,36,41,109,112,93,85,221,163,118,75,77,150,162,112,37,77,170,248,84,249,104,176,235,111,232,190,26,4,123,232,210,99,52,14,99,157,179,47,8,90,102,216,67,71, +194,254,165,89,246,208,10,191,137,134,90,43,165,73,38,36,202,153,20,151,134,164,73,25,68,32,240,142,184,6,111,81,246,112,2,236,225,143,96,15,87,195,30,26,141,211,0,197,156,125,36,195,30,58,31,227,242, +108,229,71,18,41,138,90,20,172,120,177,189,18,36,37,77,161,206,203,26,172,203,43,116,137,166,83,190,36,221,121,139,176,135,61,96,15,103,193,30,174,131,61,124,31,246,240,29,216,195,229,176,135,79,87,192, +30,170,179,82,89,107,247,141,192,241,212,73,58,194,254,153,196,89,244,124,136,17,14,224,82,195,213,117,249,40,95,210,205,235,157,61,28,12,123,184,28,246,112,9,236,225,82,216,195,117,176,135,111,192,30, +222,150,97,15,253,224,42,113,52,42,100,191,202,248,21,134,70,163,56,71,92,28,207,249,171,68,41,250,62,4,127,24,2,23,21,183,122,138,243,222,159,81,9,20,40,94,189,244,61,124,24,246,112,57,236,225,139,176, +135,47,194,30,46,132,61,124,172,2,246,208,214,65,34,1,138,189,213,60,59,210,89,221,180,35,108,208,82,162,148,207,31,134,240,212,23,167,130,79,151,55,168,249,114,84,227,9,98,213,75,223,195,50,216,195,197, +176,135,47,192,30,46,130,61,156,1,123,56,168,0,123,168,130,61,186,242,168,106,151,97,208,104,133,223,142,178,110,173,164,56,203,31,58,154,129,204,71,39,219,104,28,167,161,74,18,157,2,238,180,148,75,40, +117,80,24,174,74,168,78,216,195,193,176,135,165,176,135,11,96,15,23,194,30,206,135,61,156,154,97,15,67,52,170,46,82,26,77,216,67,186,197,95,107,176,35,174,132,95,12,64,133,172,130,113,13,214,8,141,245, +9,148,214,121,171,177,206,93,163,120,0,214,70,117,183,137,242,14,142,176,186,47,179,54,229,202,181,206,30,62,1,123,184,4,246,112,62,236,225,124,216,195,217,176,135,119,228,216,195,104,48,229,58,235,7, +207,54,138,19,223,137,6,83,142,182,170,118,93,91,225,184,50,97,213,179,26,232,242,21,77,214,53,54,92,88,99,117,125,101,200,62,106,46,21,169,105,160,95,29,109,141,174,117,246,112,45,236,225,82,216,195, +133,176,135,207,195,30,206,128,61,236,158,99,15,205,150,52,54,174,162,49,72,101,65,45,95,128,164,75,208,46,34,2,162,1,170,223,29,225,208,97,250,178,194,141,253,126,96,180,33,37,54,16,186,164,121,56,96, +209,60,216,195,58,233,123,248,50,236,225,26,216,195,87,96,15,95,129,61,92,0,123,216,189,79,167,52,49,8,193,168,46,105,214,164,27,103,81,60,127,29,253,16,101,147,12,100,182,41,82,49,175,150,58,12,214,216, +112,97,71,53,228,195,209,149,71,205,180,250,105,255,158,184,128,242,67,213,124,181,206,30,94,1,123,88,2,123,248,28,236,225,115,176,135,207,193,30,62,150,97,15,163,137,170,129,201,145,117,254,70,103,60, +57,68,191,231,239,131,86,51,160,233,218,202,251,205,184,140,198,142,174,209,90,67,163,245,144,198,137,222,250,8,103,202,34,58,255,253,181,157,47,235,172,239,97,127,216,195,69,176,135,51,96,15,167,195, +30,62,11,123,120,71,134,61,52,51,242,67,71,147,184,96,135,3,193,139,166,143,2,151,209,41,207,145,118,169,210,93,157,187,70,97,131,152,115,91,119,151,119,16,233,9,216,82,4,64,86,209,160,231,247,253,57, +69,166,217,54,128,181,214,247,112,40,236,225,60,216,195,103,97,15,159,129,61,124,10,28,239,166,60,246,208,192,99,52,214,157,53,44,8,53,71,83,227,252,126,116,200,11,160,90,252,78,60,199,105,160,129,129, +255,196,101,9,210,44,65,180,4,128,233,239,197,123,124,41,202,153,42,98,15,117,243,205,102,15,7,195,30,62,15,123,248,20,236,225,147,24,59,21,246,112,66,30,123,232,252,213,165,69,232,52,36,218,247,101,73, +53,215,103,13,52,168,153,110,234,162,206,89,13,244,239,248,146,252,25,95,92,208,104,254,108,164,167,50,75,254,172,89,155,47,200,160,85,39,236,97,31,216,195,57,176,135,143,195,30,78,133,61,124,20,246,112, +98,30,123,168,148,63,110,118,48,40,249,248,1,125,76,56,130,253,13,119,52,226,154,71,251,162,116,101,95,64,100,103,1,100,6,138,231,191,101,154,26,208,86,208,165,6,45,71,56,159,61,212,213,107,212,247,240, +114,216,195,217,176,135,143,193,30,62,2,123,248,8,236,225,29,121,236,161,231,206,194,84,26,231,135,247,171,145,56,240,27,81,60,51,44,35,174,59,40,141,141,238,210,174,197,18,43,142,156,204,162,6,102,187, +90,234,57,126,47,48,63,13,54,82,43,53,118,132,107,189,239,161,236,225,34,216,195,57,176,135,243,97,15,159,135,61,124,4,246,176,71,174,239,161,247,105,120,52,163,81,6,150,232,19,172,203,106,100,52,77,55, +64,105,108,52,104,141,91,29,204,167,93,147,117,83,231,168,200,172,79,126,87,75,71,89,96,203,100,195,206,150,209,206,179,78,216,195,89,176,135,79,192,30,62,4,123,120,15,236,225,109,176,135,151,231,177, +135,30,191,154,236,199,210,161,177,38,10,26,26,116,154,1,202,205,64,52,147,138,229,200,253,177,105,105,24,173,183,132,43,71,151,90,95,130,255,30,183,53,148,27,108,148,174,19,246,240,86,216,195,135,97, +15,39,193,30,222,5,123,120,11,236,225,208,60,246,208,99,25,15,221,188,208,79,215,141,203,134,178,176,150,96,165,17,61,206,182,2,234,48,1,113,148,93,115,221,96,24,137,29,77,141,140,185,27,176,165,68,105, +48,17,46,69,230,215,166,153,130,150,178,20,174,207,138,81,107,196,30,94,1,123,248,8,236,225,157,176,135,183,193,30,222,12,123,56,50,175,239,97,176,135,30,209,56,170,129,225,185,198,154,27,7,100,25,219, +63,19,150,184,99,203,145,247,172,203,23,165,103,56,247,93,131,227,14,128,64,108,157,50,30,253,4,157,86,81,223,195,26,179,135,199,31,127,108,242,0,236,225,29,176,135,55,195,30,78,4,199,27,5,123,216,33, +199,30,58,178,193,30,106,152,31,222,44,202,128,228,210,99,218,24,215,87,152,138,6,161,166,241,186,184,185,179,27,133,232,106,25,201,135,163,237,72,199,26,237,17,81,85,217,67,153,41,162,245,230,179,135, +163,96,15,239,128,61,212,216,113,176,135,215,193,30,14,200,235,123,232,129,155,68,90,160,179,113,35,90,214,141,99,163,17,110,173,155,27,200,124,57,46,81,78,5,183,143,26,109,244,54,187,138,254,167,30,228, +87,198,30,186,62,215,74,223,195,14,176,135,183,194,30,142,135,61,188,1,246,240,102,216,195,155,97,15,251,102,250,30,58,111,60,112,115,203,152,197,240,220,254,133,161,129,227,197,238,202,145,151,68,211, +96,71,217,109,163,193,201,205,130,115,90,23,55,127,246,96,94,99,101,255,43,99,15,125,49,252,204,111,201,184,22,43,76,133,110,243,122,169,19,120,214,55,106,229,162,207,141,206,165,57,35,110,197,219,95, +198,82,178,154,125,232,218,198,176,135,215,195,30,222,2,123,56,9,246,240,22,216,195,171,97,15,187,87,192,30,186,141,11,244,93,215,205,231,14,3,193,11,208,50,58,90,186,129,136,142,150,186,176,148,169,241, +161,58,236,33,91,198,127,114,32,191,86,201,177,42,92,14,228,175,196,200,227,120,236,64,240,57,235,200,27,25,204,156,220,135,235,23,159,102,43,86,198,205,132,37,22,163,187,195,30,222,11,123,120,3,236,225, +8,216,195,97,224,120,131,96,15,59,22,96,15,93,46,60,144,247,80,78,151,214,96,207,157,189,229,208,37,204,236,44,16,188,184,63,203,104,237,225,158,167,25,46,57,22,202,117,207,112,227,122,103,15,79,129,61, +188,10,246,240,90,216,195,161,24,59,24,246,112,0,236,97,79,216,195,150,21,176,135,178,10,2,152,66,204,126,96,127,239,217,148,7,7,206,99,221,221,199,72,110,68,119,74,112,247,85,146,101,15,109,157,93,25, +123,232,114,228,241,15,255,254,95,209,100,191,138,82,32,21,147,243,239,92,195,136,158,196,99,111,137,47,234,206,21,170,105,169,215,236,207,50,243,56,145,118,165,50,3,111,253,109,76,223,195,171,97,15,135, +193,30,14,128,61,236,3,123,216,211,86,128,176,135,151,194,30,246,45,192,30,198,153,147,203,133,185,174,35,23,251,232,56,127,118,148,141,222,54,142,203,178,135,142,174,115,118,139,178,135,23,193,30,14, +7,206,234,7,123,168,177,221,97,15,187,130,227,245,132,61,108,13,123,216,46,175,239,161,137,129,110,26,253,15,3,144,220,20,123,104,158,44,63,108,98,225,21,82,158,73,251,178,188,186,34,96,203,184,113,73, +196,207,41,196,255,241,191,108,27,141,57,171,241,136,149,57,76,192,209,21,17,216,155,167,188,51,94,133,26,15,146,243,175,49,143,198,41,32,241,62,103,175,56,62,244,208,67,62,233,0,123,56,8,246,176,7,236, +161,198,246,129,61,236,1,123,216,22,246,176,9,236,225,197,25,246,208,163,84,13,246,3,251,33,77,252,227,226,145,173,138,61,236,8,123,216,7,246,176,55,236,97,47,216,195,118,176,135,173,97,15,155,195,30, +54,129,61,60,19,246,240,156,122,96,15,137,196,127,199,27,222,38,176,214,61,123,120,25,236,97,127,220,251,114,216,195,214,176,135,45,96,15,155,193,30,94,4,142,215,4,12,239,116,216,195,19,96,15,143,134, +61,60,22,246,240,248,147,142,77,15,222,106,171,239,33,241,225,239,153,190,135,245,195,30,94,8,123,120,57,236,97,27,216,195,102,176,135,26,123,1,236,225,185,176,135,231,98,116,99,112,188,19,97,15,15,235, +183,91,242,77,250,30,126,149,190,135,251,194,30,238,189,53,179,135,103,192,30,182,134,61,108,1,123,216,20,246,240,92,216,195,198,176,135,26,123,38,236,225,169,176,135,39,208,247,240,104,250,30,30,66,223, +195,111,210,247,112,127,216,195,47,87,147,61,172,160,239,225,27,185,38,143,94,229,120,30,207,209,60,223,228,217,35,150,161,42,41,0,54,250,33,0,14,239,96,231,233,235,77,221,44,47,235,188,207,89,153,1,41, +223,7,178,135,23,192,30,94,12,123,120,62,236,97,99,216,195,179,97,15,79,131,61,60,5,246,240,100,216,195,227,96,15,143,132,61,252,30,236,225,193,176,135,7,84,194,30,26,232,182,10,246,240,124,216,195,11, +96,15,27,195,30,158,14,123,120,10,236,225,137,176,135,199,195,30,30,13,123,120,36,236,225,17,244,61,60,164,77,225,190,135,193,30,186,28,109,117,236,97,83,216,195,51,96,15,79,132,61,60,22,246,240,40,216, +195,35,96,15,143,128,61,60,44,143,61,140,190,135,193,30,154,121,113,217,193,214,205,30,54,133,61,60,31,246,176,49,236,225,69,5,216,67,18,141,143,139,125,15,139,236,97,57,81,90,100,15,171,130,15,85,89, +47,93,217,63,86,100,15,215,183,242,83,173,94,100,15,121,9,251,22,217,195,74,186,232,84,54,165,170,250,231,181,54,135,171,250,31,110,233,159,171,23,131,139,236,97,145,61,44,178,135,69,246,176,65,179,135, +244,119,73,174,153,120,76,210,189,239,9,105,189,86,165,188,205,164,226,137,110,30,86,36,84,18,136,0,88,103,182,54,228,177,171,119,224,121,33,39,135,234,255,201,247,214,90,1,225,239,172,242,156,220,107, +235,60,77,229,52,244,104,14,234,119,174,110,212,175,86,148,206,53,140,59,219,182,98,8,209,22,216,124,74,38,130,74,127,25,213,132,95,41,38,31,138,190,122,198,140,110,201,143,254,251,180,100,237,143,207, +72,250,15,232,157,150,89,62,149,236,225,243,40,231,87,35,38,95,187,174,95,242,147,63,55,73,126,250,175,195,146,91,239,107,153,18,44,217,162,218,86,221,247,80,218,101,30,0,200,75,64,90,171,86,13,78,202, +80,206,151,162,171,126,255,127,154,37,63,129,80,91,249,179,227,146,225,87,119,78,13,222,234,251,30,202,30,174,4,237,121,25,218,165,20,246,112,229,42,30,48,129,82,148,243,63,248,159,179,147,31,67,168,189, +247,143,131,146,167,75,78,77,6,13,189,34,101,143,172,47,169,22,80,92,170,140,33,212,64,1,107,89,76,247,231,212,67,91,27,182,100,170,202,192,150,98,198,3,203,47,156,73,255,5,93,199,26,126,102,57,69,248, +247,168,65,205,243,128,145,18,203,87,178,101,149,66,243,123,147,115,152,57,187,61,66,177,179,69,104,237,104,105,147,71,74,155,107,108,5,40,123,248,83,216,195,117,176,135,171,224,152,86,67,187,172,90,59, +52,41,91,59,56,41,89,211,47,89,251,203,243,128,46,15,74,126,8,161,246,198,39,223,78,174,185,237,232,244,3,171,22,216,234,250,30,202,30,190,12,142,247,54,236,225,135,176,135,107,32,212,86,129,246,56,178, +50,17,83,151,116,79,158,92,118,106,106,236,15,146,239,36,239,36,223,74,86,252,246,91,105,20,118,196,140,200,91,21,123,168,177,101,176,135,171,193,241,62,128,61,252,17,236,97,25,28,211,76,208,158,209,119, +183,79,206,61,175,113,114,207,180,99,146,215,63,58,48,121,114,81,187,228,150,123,250,36,55,140,27,64,169,116,88,202,39,21,98,15,165,87,26,92,223,67,217,195,117,176,135,171,96,15,53,214,145,93,205,200, +190,7,123,248,60,236,97,51,73,198,87,233,0,0,255,244,73,68,65,84,216,67,71,209,243,228,235,110,106,1,146,119,101,57,123,104,33,60,148,60,126,85,13,224,92,85,12,227,252,213,96,231,173,199,180,170,131,26, +4,123,104,128,90,3,123,232,156,13,99,151,128,227,61,145,97,15,149,59,68,31,37,117,28,22,192,195,80,69,104,138,87,84,232,41,111,82,182,164,4,209,226,184,134,7,123,24,65,202,185,238,203,240,229,248,34,73, +68,210,71,192,82,73,68,96,0,214,146,173,128,240,103,37,16,47,107,40,191,204,36,120,121,17,190,186,142,13,250,152,110,20,180,80,193,109,207,211,1,89,239,98,228,189,139,77,42,100,252,93,122,140,198,97,172, +115,118,25,198,78,129,61,60,39,215,247,208,140,42,140,21,222,82,149,19,173,14,52,62,26,69,41,229,87,211,161,177,202,151,252,89,95,140,35,107,79,165,45,206,30,78,132,61,252,0,246,240,21,216,195,52,26,99, +172,115,246,113,216,195,75,115,125,15,149,44,249,193,29,45,21,57,170,100,149,17,171,174,83,135,169,28,73,101,142,82,127,101,74,26,172,252,223,229,201,191,227,11,209,173,21,150,197,146,180,197,216,67,51, +168,215,97,15,127,14,123,248,62,236,225,26,216,67,3,84,204,217,232,123,24,141,29,21,122,43,242,86,32,26,12,98,182,59,158,6,235,206,230,212,202,137,21,183,100,27,51,251,2,252,183,52,92,84,199,50,76,189, +245,61,52,55,54,93,52,131,50,169,120,19,246,240,7,176,135,119,22,96,15,29,65,81,60,85,238,234,157,163,81,156,138,58,71,89,73,177,35,172,138,214,4,67,151,142,86,38,74,153,2,174,14,133,143,163,111,16,179, +176,166,190,178,94,216,195,169,176,135,107,97,15,75,97,15,93,103,75,88,103,159,132,61,236,112,89,187,242,187,224,253,128,6,162,44,231,160,164,223,71,50,77,101,188,58,106,21,118,26,172,38,83,99,29,97,71, +51,232,210,48,218,127,47,58,231,169,201,52,203,170,55,246,112,29,236,225,10,216,195,229,176,135,203,200,145,159,135,61,28,146,99,15,21,153,57,247,28,25,69,224,209,92,74,28,79,227,53,88,193,119,64,151, +94,102,98,75,131,48,216,20,51,230,175,198,102,129,75,255,204,128,166,170,79,105,147,151,241,218,120,166,78,251,30,14,135,61,124,25,246,112,41,236,97,9,236,225,18,216,195,103,96,15,155,229,250,30,170,110, +143,46,180,126,40,121,165,44,146,39,196,225,163,123,139,6,232,214,186,189,65,77,181,173,17,221,39,140,205,98,121,234,48,125,252,57,133,107,46,79,42,130,148,66,213,89,223,195,233,176,135,43,97,15,151,192, +30,46,129,61,92,0,123,120,79,166,239,97,116,231,112,148,13,68,1,104,101,59,227,57,210,178,12,6,47,97,15,21,240,129,4,132,129,142,172,110,236,124,118,100,29,85,181,212,74,18,125,156,239,146,165,10,221, +52,218,167,78,250,30,190,5,123,184,18,246,176,4,246,240,5,216,195,185,176,135,189,114,236,161,167,23,225,202,74,125,117,103,71,55,139,227,249,251,96,151,116,109,133,222,194,86,186,180,70,104,168,70,107, +172,209,90,67,253,190,178,226,0,46,125,57,242,136,202,23,21,184,133,170,207,93,147,9,136,138,1,245,31,53,238,123,216,138,190,135,239,192,30,190,10,123,248,54,236,225,219,176,135,75,242,216,67,51,40,151, +31,49,188,232,124,23,163,172,225,142,116,116,197,115,164,85,184,11,133,24,224,52,46,150,35,71,85,247,85,89,107,82,162,238,218,159,49,51,139,32,167,158,82,233,191,221,4,234,132,61,236,1,123,184,26,246, +112,62,236,225,124,216,195,249,176,135,79,229,177,135,186,178,129,73,42,77,163,165,208,2,176,244,5,104,124,24,236,239,117,109,149,238,26,17,73,138,115,56,168,82,133,226,1,91,26,220,20,140,43,37,246,171, +41,169,238,157,101,15,213,98,74,170,57,234,53,238,123,56,24,246,112,5,236,225,92,216,195,231,97,15,103,195,30,222,147,199,30,234,142,6,36,215,93,141,117,13,142,78,119,254,222,23,225,163,91,71,4,151,81, +210,8,163,179,163,236,113,143,35,41,247,224,247,67,32,238,154,109,84,55,208,41,22,119,42,24,240,84,190,7,123,232,82,85,107,236,225,72,216,195,165,176,135,179,97,15,103,193,30,206,4,199,187,173,0,123,24, +77,226,2,165,243,5,4,138,23,148,184,9,136,47,194,151,224,40,139,234,152,86,26,192,52,72,226,52,58,105,153,164,248,24,224,100,31,162,149,167,168,143,63,175,156,169,78,216,195,43,97,15,95,132,61,156,9,123, +56,3,99,159,133,61,188,37,143,61,116,132,205,151,3,178,10,190,208,239,5,169,38,161,226,146,36,162,227,135,247,67,155,76,152,144,200,44,250,184,78,251,18,68,118,252,123,209,213,210,32,39,232,225,227,223, +117,164,43,99,15,221,57,153,145,121,127,53,219,212,229,28,247,46,103,199,116,55,207,225,105,137,54,206,125,112,173,190,188,109,60,103,65,41,50,254,15,251,195,30,46,134,61,156,6,123,248,44,236,225,83,176, +135,183,230,177,135,110,230,131,62,17,178,242,9,56,195,81,138,30,106,145,82,186,254,58,178,190,40,231,165,70,58,29,228,13,163,247,97,244,74,140,14,123,190,48,95,130,47,204,124,92,70,169,34,246,80,49,186, +231,218,98,8,94,214,205,210,181,130,60,92,131,111,217,200,96,214,189,246,188,253,5,204,155,149,236,41,127,220,25,246,112,49,236,225,211,176,135,79,194,30,62,9,123,120,79,30,123,232,129,156,111,93,183, +12,55,148,74,113,190,57,23,157,151,206,79,35,174,75,77,68,102,131,157,1,74,55,214,192,200,200,52,90,227,163,13,96,116,197,211,3,28,117,35,188,176,71,62,123,104,207,23,71,222,245,217,188,219,131,253,106, +247,61,188,4,246,112,5,236,225,34,216,195,37,176,135,47,192,30,62,153,199,30,250,15,251,184,121,23,132,212,80,3,143,70,10,108,104,148,107,104,180,0,140,75,14,92,115,61,0,240,101,233,174,129,223,57,191, +163,171,101,214,104,13,118,73,51,114,135,128,188,78,216,195,69,176,135,211,97,15,167,194,30,78,134,61,188,7,246,176,83,142,61,212,109,156,43,94,31,227,201,132,70,250,129,92,114,116,93,215,211,56,209,112, +215,147,189,144,200,145,118,137,241,128,192,128,21,4,90,236,176,178,93,45,163,89,171,83,193,173,162,238,108,224,170,19,246,112,18,236,225,147,176,135,15,193,30,62,0,123,120,55,236,225,200,28,123,168,145, +62,30,203,184,113,55,123,18,195,139,235,163,204,129,221,13,69,27,49,221,216,68,69,195,53,216,63,183,109,160,94,97,64,10,44,215,96,150,189,222,70,183,54,16,9,128,212,121,223,195,30,176,135,79,195,30,222, +15,123,120,15,236,225,93,176,135,215,193,30,182,186,236,162,244,184,53,46,248,50,137,112,158,58,170,174,171,186,112,28,221,104,96,108,251,60,198,241,247,70,105,55,4,190,28,231,185,193,200,72,238,19,189, +79,163,53,168,35,108,91,177,160,93,116,233,77,177,135,158,152,40,95,180,155,0,12,196,10,216,165,103,9,88,199,243,28,152,202,138,179,167,243,28,150,117,99,206,45,102,254,173,230,98,144,247,100,15,167,194, +30,222,11,123,120,23,236,225,237,224,120,55,192,30,118,204,244,61,244,252,201,211,8,221,87,67,3,195,11,230,48,122,166,197,65,158,198,7,119,24,93,45,141,226,238,151,125,28,105,35,115,184,185,191,214,192, +96,15,229,38,60,1,113,35,97,196,142,39,250,30,214,152,61,28,3,123,120,31,236,161,198,222,2,123,56,1,246,112,104,1,246,208,99,30,71,77,99,116,227,216,58,6,96,25,173,255,220,112,68,131,71,95,146,41,163, +163,108,86,229,124,54,225,112,169,139,71,119,247,106,56,13,246,49,10,235,226,206,227,48,86,218,165,214,216,195,78,176,135,247,192,30,222,10,123,120,35,236,225,93,176,135,119,193,30,246,207,99,15,189,171, +206,61,107,180,237,140,35,218,104,238,24,173,255,52,216,32,22,160,165,110,237,105,102,22,180,140,172,203,17,247,92,171,94,217,195,115,96,15,39,194,30,78,130,61,124,8,246,240,110,216,195,209,176,135,125, +96,15,91,21,232,123,232,7,116,217,201,231,14,131,72,11,36,94,215,119,190,235,214,6,47,35,118,172,223,65,155,91,76,139,64,85,149,190,135,181,198,30,246,134,61,124,4,246,240,70,216,195,235,96,15,175,1,199, +27,1,123,120,5,236,97,187,78,205,210,229,41,250,30,186,92,88,48,243,40,198,228,222,125,171,25,89,84,30,226,128,206,51,173,0,45,61,178,117,205,214,112,111,99,113,212,163,125,167,163,187,69,216,195,209, +176,135,227,97,15,175,198,216,145,176,135,195,96,15,251,195,30,182,131,61,188,188,83,187,84,214,96,240,138,132,192,173,155,123,88,143,100,124,33,186,116,182,185,99,156,106,184,116,153,41,201,248,59,154, +202,32,98,190,26,160,170,194,30,102,250,30,214,30,123,120,46,236,225,24,216,195,107,96,15,135,195,30,14,134,61,28,0,142,215,13,246,176,117,1,246,208,35,25,247,168,113,183,134,217,88,172,195,46,99,206, +99,55,253,142,184,157,163,227,6,135,136,198,162,119,91,156,61,188,4,246,240,58,224,172,161,176,135,26,219,15,246,176,55,56,222,64,216,195,14,121,236,161,71,46,230,182,146,41,70,208,224,5,221,192,251,24, +97,101,12,221,219,134,145,126,245,247,254,189,6,195,30,118,134,61,28,9,123,216,31,246,80,99,7,193,30,246,131,61,236,4,123,120,49,236,225,165,176,135,93,187,119,73,221,216,131,54,13,119,14,110,138,61,212, +200,128,41,157,18,174,179,206,125,167,132,127,207,101,199,159,241,137,23,231,178,228,191,205,209,237,223,248,245,235,252,124,41,241,163,20,37,128,91,193,232,106,185,63,191,222,149,167,188,15,83,133,10, +0,127,72,105,144,55,117,227,126,107,57,180,43,85,102,112,36,125,15,187,193,30,14,133,61,28,4,123,56,16,246,176,51,236,225,229,176,135,109,97,15,47,134,61,60,23,246,176,9,236,97,123,250,30,90,77,244,195, +203,15,235,222,91,101,223,195,67,143,250,230,223,186,192,30,94,137,123,119,135,61,188,28,246,176,61,236,97,27,216,195,150,224,120,23,131,225,157,3,123,120,218,208,125,146,19,58,239,151,28,223,100,125, +223,195,173,158,61,188,24,246,176,59,236,97,103,216,195,54,176,135,26,123,41,236,225,69,176,135,23,97,244,133,224,120,167,195,30,30,67,223,195,131,232,123,248,117,250,30,126,25,246,112,223,195,118,75, +246,253,230,191,121,96,231,115,116,123,215,181,141,218,126,47,120,97,231,188,169,163,135,117,46,123,108,244,255,198,207,191,197,178,87,74,178,243,110,14,199,147,8,63,147,231,8,30,93,89,69,254,6,181,225, +42,245,91,226,47,109,75,194,190,31,1,101,160,106,25,150,147,183,41,88,151,242,161,86,121,235,239,89,176,135,151,195,30,118,128,61,108,1,123,120,17,236,225,133,176,135,26,219,4,246,176,49,236,225,233,244, +61,60,145,190,135,135,211,247,240,64,250,30,126,187,197,14,201,87,171,201,30,22,232,123,88,74,146,179,101,216,195,195,97,15,47,134,61,108,5,123,120,41,236,97,83,216,195,11,96,15,207,129,61,60,27,246,240, +76,216,195,83,97,15,79,24,14,127,8,123,120,56,236,225,183,63,13,125,15,79,162,239,225,69,176,135,205,96,15,155,194,30,158,7,123,120,54,236,225,25,176,135,167,193,30,158,4,123,120,194,85,112,136,244,61, +60,172,205,62,229,5,178,40,159,152,164,108,181,125,15,47,186,232,194,164,25,236,97,19,216,195,179,96,15,79,131,61,60,25,246,240,68,216,195,19,96,15,143,42,208,247,208,101,44,219,247,112,171,102,15,47, +166,239,225,197,176,135,77,97,15,155,192,30,94,82,100,15,139,125,15,75,188,75,39,119,189,76,19,86,11,175,169,176,39,120,116,179,44,178,135,85,17,139,87,75,32,190,169,127,208,69,158,167,216,247,48,173, +231,20,251,30,22,217,195,90,155,90,149,205,227,122,251,143,42,251,32,245,245,231,245,98,112,145,61,44,178,135,69,246,112,235,101,15,123,244,236,240,201,200,107,207,250,251,197,151,156,145,170,216,61,223, +242,86,127,31,127,77,181,224,95,124,255,239,28,188,127,194,247,62,230,249,163,133,60,84,8,165,84,48,74,188,125,209,11,9,27,52,123,104,227,137,147,78,58,129,131,247,38,201,220,121,173,146,15,126,119,82, +50,125,222,37,41,167,164,130,239,83,201,30,254,248,199,35,208,101,244,74,214,190,220,45,249,205,63,190,151,188,242,211,147,146,65,67,58,167,96,199,167,166,239,97,176,135,235,214,13,64,168,114,83,178,18, +201,241,218,55,46,75,126,249,215,195,146,159,253,245,144,228,142,7,155,166,183,20,127,170,216,195,149,40,231,87,35,38,255,225,251,99,147,55,222,189,38,89,247,110,219,228,103,159,28,154,252,10,104,107, +245,79,142,72,186,117,239,156,150,74,125,52,190,87,175,94,169,155,91,83,178,62,101,153,213,50,76,52,156,82,105,224,217,182,229,88,15,233,57,219,254,131,23,18,122,78,78,17,238,45,230,255,243,30,48,122, +223,23,57,123,122,119,229,38,55,57,149,253,64,14,161,109,141,56,244,137,143,62,250,232,85,113,60,130,200,42,42,130,159,228,179,135,171,96,15,215,128,9,172,70,57,255,202,27,35,146,31,126,56,54,41,123,187, +93,242,139,127,126,55,249,5,132,218,207,32,212,174,26,115,94,90,44,223,234,217,195,53,208,46,107,97,15,87,195,30,174,0,19,152,143,114,126,213,79,174,79,230,189,209,180,220,216,159,38,223,64,228,118,96, +42,233,119,4,61,195,114,244,44,181,218,123,69,101,144,106,157,32,212,226,238,106,255,220,159,245,171,5,117,35,60,103,211,159,112,134,189,134,35,227,229,30,29,123,147,27,35,220,129,103,207,66,231,209,49, +176,155,28,126,52,83,7,11,71,219,171,20,13,85,58,178,130,150,249,236,225,90,8,181,151,64,123,28,217,23,100,34,96,15,135,129,9,92,209,163,93,242,224,51,167,37,31,252,253,155,137,198,190,254,95,7,39,171, +126,126,88,210,181,247,121,169,40,198,130,183,154,140,184,163,90,131,85,17,104,156,223,179,252,170,145,190,32,95,136,192,150,127,174,4,66,173,52,7,243,159,32,120,209,232,82,175,173,67,180,54,53,119,24, +111,61,169,96,3,215,10,13,70,44,182,47,122,169,17,146,224,54,102,69,232,178,66,55,182,239,97,150,61,252,9,236,225,79,96,15,87,195,49,205,2,237,185,33,199,30,90,16,247,131,223,250,192,249,201,20,68,169, +35,175,26,145,214,136,253,208,91,45,123,24,35,251,62,236,225,188,60,246,208,234,97,244,82,138,70,54,42,1,196,227,3,156,22,147,55,96,101,217,67,71,189,193,244,61,204,178,135,97,172,56,222,83,176,135,3, +115,125,15,243,217,67,57,6,19,141,104,242,168,177,170,118,148,56,248,184,68,169,234,49,98,59,175,195,197,117,101,141,111,16,236,97,24,91,134,177,143,231,177,135,26,168,248,91,97,139,250,43,69,161,106, +173,162,229,144,106,189,252,30,136,190,144,160,212,52,90,237,151,211,65,74,213,185,174,158,211,236,205,121,235,147,75,73,211,58,178,50,38,191,71,16,251,136,58,241,42,175,159,228,247,107,119,222,121,231, +145,185,162,218,103,178,43,209,70,115,24,37,220,23,80,193,61,134,146,125,49,90,169,5,222,222,144,101,15,141,198,105,128,98,206,62,153,199,30,106,164,6,107,84,104,168,149,17,170,159,86,236,173,210,214, +151,160,38,83,58,45,58,228,57,194,209,63,77,119,214,216,16,198,104,140,163,29,70,27,27,164,74,85,8,104,172,249,185,63,239,247,169,48,254,146,181,122,49,82,200,213,84,23,231,97,176,215,165,111,16,181,55, +50,24,37,92,51,228,188,139,144,243,151,160,202,43,243,170,138,96,15,127,1,123,248,83,216,195,151,97,15,13,80,249,236,161,31,90,21,78,160,0,138,68,149,252,107,188,218,43,229,191,26,172,46,75,109,166,66, +54,19,144,232,3,225,156,55,160,197,8,59,186,91,140,61,52,131,50,169,120,23,246,240,125,216,195,187,115,236,161,194,82,101,134,102,72,202,142,164,87,130,115,8,57,112,22,199,83,139,21,26,106,5,166,234,181, +2,184,204,106,50,253,247,124,129,34,182,245,206,30,174,131,61,52,93,116,157,53,169,120,38,143,61,244,195,249,168,202,137,102,82,82,46,129,227,57,210,138,68,163,29,160,6,71,59,64,231,110,188,48,13,14,77, +166,255,158,25,153,47,67,247,174,55,246,240,21,216,195,149,176,135,110,4,202,96,15,205,160,76,42,156,51,46,61,193,30,250,161,29,173,160,210,194,112,85,238,142,180,60,132,186,73,53,149,225,210,102,85,106, +51,179,56,109,244,129,8,197,94,136,84,243,217,67,147,17,101,81,126,95,241,139,95,149,57,185,74,128,246,188,77,240,91,133,103,148,33,59,246,162,222,111,168,8,216,72,1,64,80,185,19,9,254,34,70,98,49,73, +253,127,185,159,117,139,183,2,246,176,20,246,112,57,236,225,244,60,246,208,121,231,92,212,88,3,148,6,7,157,38,183,20,157,241,28,101,231,177,129,203,40,45,113,166,193,106,182,178,6,7,112,105,164,119,110, +43,84,245,165,184,177,176,118,92,167,236,225,44,216,195,53,176,135,203,96,15,151,193,30,46,134,61,188,47,195,30,58,186,126,96,153,5,141,211,141,253,26,6,107,124,180,23,115,164,149,6,27,184,52,88,141,165, +106,60,255,141,208,84,199,175,253,189,155,139,104,249,169,219,107,188,154,47,239,133,119,36,235,132,61,252,1,236,225,26,216,195,21,176,135,75,96,15,23,230,177,135,206,57,151,32,71,49,58,224,105,116,182, +255,161,191,15,106,77,183,22,6,49,146,71,194,17,160,165,198,234,190,209,221,50,180,152,106,176,227,192,192,165,72,205,151,29,3,178,236,161,238,92,99,246,176,13,236,225,143,96,15,223,132,61,124,15,246, +240,7,176,135,203,97,15,123,100,250,30,26,96,20,114,107,176,145,217,32,37,140,21,44,98,180,2,12,163,93,174,212,65,43,21,118,26,24,144,124,105,209,145,214,17,55,240,105,164,90,106,189,32,154,52,155,129, +5,123,232,215,90,239,123,216,19,246,240,101,216,195,69,176,135,139,96,15,23,193,30,62,91,160,239,161,243,86,151,150,60,211,32,3,84,24,46,119,232,200,71,43,64,127,175,180,95,196,71,195,130,29,14,170,52, +228,196,26,233,28,23,43,112,169,83,68,110,178,161,148,73,214,80,131,213,133,212,42,123,56,20,246,112,21,236,225,2,216,195,249,176,135,115,97,15,239,43,208,247,80,3,52,218,160,20,52,138,201,70,192,87,130, +88,206,223,128,46,253,181,170,119,93,215,249,239,252,116,36,67,62,44,108,105,20,247,107,116,232,241,171,217,88,232,181,212,104,26,192,106,149,61,188,10,246,112,5,236,225,92,216,195,185,176,135,179,193, +241,238,204,99,15,93,58,130,70,49,125,20,208,8,94,33,218,247,69,59,63,217,36,153,164,232,122,103,228,117,254,187,145,16,207,179,229,80,116,180,244,171,25,153,73,138,203,88,180,242,116,253,86,168,90,39, +236,225,72,216,195,101,176,135,115,96,15,53,118,6,236,225,109,121,236,161,115,56,104,20,57,65,113,185,232,74,25,95,29,77,151,34,201,21,13,208,72,71,75,111,208,248,104,2,231,139,138,46,150,129,241,137, +242,69,14,238,11,145,46,213,157,235,164,239,225,64,216,195,18,216,195,231,96,15,103,192,30,62,11,123,120,123,134,61,116,31,171,6,218,99,87,93,80,64,195,39,58,226,57,42,6,39,63,164,243,208,121,105,180, +213,141,13,82,254,172,115,223,128,23,68,170,222,16,77,29,13,110,89,72,83,227,165,223,42,98,15,157,219,53,234,123,120,5,236,97,9,236,225,52,216,195,103,96,15,159,129,61,188,63,199,30,186,79,141,203,191, +60,109,116,143,171,129,209,13,222,249,167,145,206,75,105,111,131,145,115,54,182,142,186,179,47,195,8,111,160,115,164,253,26,49,32,154,196,5,192,169,241,102,105,6,187,77,245,61,244,22,8,181,152,238,161, +171,205,30,54,131,61,92,13,123,184,4,246,112,25,236,225,18,216,195,167,43,96,15,205,138,156,95,26,106,68,213,72,153,67,151,22,51,48,13,12,222,63,26,196,249,243,26,161,75,7,112,169,225,206,115,127,239, +154,29,236,146,116,169,163,237,191,93,167,236,225,82,216,195,89,176,135,79,193,30,62,10,123,120,63,236,97,151,188,190,135,186,180,134,186,221,115,143,171,235,6,176,165,161,174,181,209,59,205,228,194,223, +27,153,157,203,206,107,47,53,113,68,53,82,131,141,240,186,184,59,172,108,27,79,231,181,155,136,58,101,15,239,135,61,124,22,246,240,81,216,195,201,176,135,247,194,30,94,157,215,247,80,216,82,35,221,204, +235,186,38,20,113,217,72,246,218,25,3,156,81,221,20,209,109,161,47,200,105,96,80,114,4,125,194,216,48,56,112,60,163,191,177,161,50,246,208,11,17,106,212,247,176,23,236,225,116,216,195,135,96,15,31,128, +61,188,7,246,112,116,134,61,140,99,86,13,209,125,77,38,28,189,48,52,118,82,177,3,210,173,141,208,6,47,189,193,20,211,81,22,169,117,158,234,222,142,118,0,151,254,218,160,167,220,223,249,41,19,225,28,174, +83,246,240,41,216,195,7,97,15,239,133,61,188,203,86,128,176,135,157,11,176,135,142,106,62,134,23,134,58,186,177,185,15,238,208,57,238,81,79,208,165,206,231,232,108,235,200,198,232,106,236,54,219,108,83, +127,125,15,199,195,30,78,134,61,212,216,59,96,15,111,130,61,28,94,128,61,116,111,172,49,113,153,80,182,177,99,180,13,203,130,150,30,234,9,85,155,116,184,131,18,187,115,148,61,244,11,23,247,171,234,120, +36,136,229,6,87,198,30,122,6,198,6,99,25,39,37,107,185,202,181,132,125,112,211,156,100,241,107,169,112,110,131,19,61,78,235,9,66,15,50,191,150,89,140,246,110,216,206,176,135,15,194,30,222,1,123,120,11, +236,225,61,176,135,247,192,30,14,44,192,30,122,220,19,27,130,44,115,24,6,235,226,122,130,46,237,20,48,87,214,101,157,159,26,29,29,45,13,100,62,142,186,39,151,129,249,184,23,118,151,164,123,59,159,117, +111,49,1,73,23,231,111,173,244,61,60,23,246,240,102,216,195,251,96,15,31,129,61,188,23,246,112,28,236,97,255,10,216,67,203,35,94,164,235,105,162,201,137,8,158,235,116,28,202,7,59,108,128,19,185,211,173, +29,101,231,114,112,196,209,51,92,142,113,139,244,61,236,11,123,56,21,246,240,22,216,195,27,96,15,175,3,199,187,26,246,176,123,1,246,208,93,141,110,103,98,111,18,144,53,88,119,15,178,84,151,118,71,164, +91,11,90,154,63,155,88,104,180,47,193,242,232,230,244,61,228,124,90,80,186,20,119,126,30,23,86,133,171,2,119,63,158,244,124,122,163,99,90,220,98,7,142,71,187,170,169,240,138,99,254,227,181,246,61,28,7, +123,120,51,236,161,198,94,3,123,56,18,246,112,16,236,97,135,60,246,80,35,53,216,173,155,27,118,71,215,40,238,99,210,97,106,233,178,164,193,6,53,207,165,60,189,208,181,205,204,116,255,234,178,135,158,105, +241,130,255,202,220,173,93,246,112,2,236,225,245,176,135,35,97,15,135,195,30,14,1,199,235,5,123,216,22,246,176,95,174,239,161,85,191,56,97,140,22,128,206,59,219,111,199,45,104,102,95,206,99,145,29,42, +4,41,123,232,29,28,217,190,135,213,97,15,125,201,28,253,252,6,222,113,5,149,197,50,70,119,6,35,26,116,218,1,252,122,215,77,150,75,57,50,217,145,57,216,210,203,171,25,229,53,40,108,86,88,121,191,20,246, +112,44,112,214,72,216,67,141,29,8,123,216,31,28,111,8,236,97,199,60,246,208,146,102,244,59,12,246,48,2,140,59,30,55,1,222,201,145,207,30,218,205,114,51,217,195,53,117,210,247,176,43,236,225,181,176,135, +131,96,15,53,118,24,236,225,32,216,195,43,96,15,155,193,30,182,200,177,135,214,130,178,236,161,198,230,247,61,116,20,29,85,187,71,71,75,206,170,176,135,254,108,189,178,135,189,96,15,71,192,30,14,131,61, +28,2,123,216,21,246,176,51,236,225,101,176,135,151,194,30,158,15,123,120,126,142,61,244,252,120,83,236,161,7,112,145,57,233,154,57,29,71,122,148,19,100,90,124,117,110,235,1,26,43,174,91,111,125,15,101, +15,187,194,30,94,131,123,247,130,61,236,2,123,120,57,236,97,123,216,195,54,224,120,205,193,240,154,192,30,158,9,123,120,34,236,225,9,57,246,208,64,38,116,233,227,33,156,191,143,211,70,131,151,83,64,23, +207,94,102,144,223,190,83,163,53,150,57,95,255,125,15,47,129,61,236,13,123,216,21,246,176,61,236,161,198,182,132,61,188,20,246,176,25,70,95,12,142,119,22,236,225,241,176,135,135,192,30,30,0,123,248,85, +216,195,47,193,30,238,243,141,154,177,135,118,180,36,56,150,177,247,253,65,189,178,135,103,195,30,118,129,61,236,4,123,216,6,246,240,82,216,195,139,97,15,47,193,216,11,97,15,207,131,61,60,11,246,240,100, +216,195,163,96,15,15,130,61,252,46,236,225,126,213,100,15,245,0,215,120,220,216,198,172,175,217,190,147,196,228,205,45,210,247,80,246,176,25,236,97,59,216,195,86,176,135,205,96,15,47,129,61,60,31,246, +240,92,216,195,115,96,15,207,132,61,60,25,246,240,104,216,195,163,50,236,161,243,209,40,110,228,246,49,32,233,182,206,225,252,190,135,172,179,191,178,11,173,112,52,41,231,26,162,188,183,12,75,149,218, +228,241,88,30,59,73,139,247,236,88,145,28,171,202,2,113,69,95,185,59,216,59,168,150,33,133,92,197,49,207,90,175,56,230,67,174,178,24,45,123,120,9,236,97,75,216,195,75,97,15,47,132,61,60,15,246,240,108, +216,195,51,97,15,79,133,61,60,25,246,240,100,216,195,195,115,236,161,235,175,185,113,220,89,153,223,247,144,250,240,63,89,18,127,135,177,175,224,194,203,217,239,174,34,184,173,224,228,99,10,159,169,111, +78,181,99,71,75,141,181,177,242,103,120,202,137,240,205,234,108,89,190,104,211,199,55,87,81,63,147,165,228,14,50,169,213,222,231,172,204,192,202,59,243,170,140,192,243,235,227,142,179,138,119,97,210,2, +246,240,66,216,195,243,96,15,207,134,61,60,3,246,240,84,216,195,83,97,15,143,173,132,61,220,234,251,30,94,2,123,216,12,246,240,98,216,195,11,96,15,155,21,217,195,34,123,88,100,15,137,31,110,4,236,9,174, +180,176,188,47,120,101,2,217,77,202,150,170,243,151,243,78,75,138,236,33,163,80,236,123,152,115,201,98,223,195,205,157,74,213,253,123,85,206,180,170,251,15,55,212,159,175,23,131,139,236,97,145,61,44,178, +135,91,47,123,136,206,249,99,244,143,159,168,251,26,113,213,153,201,204,5,199,37,221,122,156,249,233,101,15,149,47,190,253,246,21,84,244,59,39,63,248,97,171,228,103,255,239,251,201,156,69,87,164,117,98, +251,165,125,106,250,30,6,123,184,14,173,102,89,89,15,170,131,221,147,117,111,181,72,126,7,161,86,246,198,197,201,216,113,163,210,218,147,93,124,212,139,40,30,21,227,177,192,174,30,68,101,188,149,11,100, +254,255,96,175,253,27,14,26,214,130,234,164,231,228,84,38,75,189,201,141,195,247,75,169,46,154,205,21,68,118,170,221,36,46,251,23,16,156,236,137,36,161,181,13,227,228,152,68,123,208,80,45,230,195,253, +196,126,76,163,70,53,167,40,182,190,239,97,176,135,171,145,28,175,68,152,186,114,101,175,164,116,101,143,228,7,191,60,43,249,79,123,168,253,231,177,201,196,91,250,165,42,32,81,188,172,209,26,111,205,73, +195,149,27,10,101,229,216,134,191,112,58,242,83,139,2,148,99,86,122,109,29,165,209,233,72,253,123,122,223,23,70,111,116,89,216,102,27,156,51,246,114,113,60,187,227,9,109,201,49,241,166,255,144,223,247, +48,216,195,247,97,15,223,133,61,92,141,10,183,12,97,234,242,85,221,146,159,253,249,240,228,55,224,120,31,254,237,91,201,61,143,180,77,57,6,141,221,234,217,195,181,40,231,223,128,61,252,16,246,112,5,146, +227,165,168,112,95,120,189,117,242,225,199,7,3,93,126,35,249,101,114,64,50,99,233,169,73,135,203,215,19,43,202,140,182,186,190,135,193,30,174,133,61,92,5,38,176,4,229,252,203,176,135,83,94,232,148,244, +165,221,201,181,19,79,75,222,253,227,183,83,99,127,158,124,61,41,253,241,183,184,219,246,132,180,224,189,213,178,135,142,172,253,152,166,193,30,142,200,177,135,6,31,149,53,55,78,58,49,121,239,127,190, +147,44,88,119,58,68,204,153,104,191,190,159,12,26,121,106,42,69,146,98,241,217,170,216,195,117,112,76,243,64,123,198,231,177,135,146,162,189,122,117,79,174,189,110,80,57,123,40,142,39,137,22,193,42,80, +188,6,223,247,48,8,181,15,96,15,95,128,61,188,52,211,247,48,203,30,134,130,71,53,64,24,107,116,150,81,218,234,216,67,113,188,233,149,176,135,106,178,84,210,185,220,4,112,169,202,71,105,131,223,83,185, +167,241,177,20,233,222,193,24,55,40,246,112,53,198,62,147,199,30,70,151,29,147,7,47,198,86,123,21,154,43,169,22,69,167,106,49,67,4,110,95,37,53,91,42,2,164,92,36,78,21,198,56,183,13,104,26,110,173,121, +139,179,135,206,217,105,176,135,205,115,125,15,253,160,42,240,212,113,104,148,242,193,64,2,66,89,167,6,75,61,150,162,111,133,44,10,90,212,122,168,232,9,185,162,41,167,140,177,6,155,116,40,110,241,215, +91,148,61,124,21,246,208,0,21,115,86,55,141,102,111,210,40,217,214,67,161,135,214,232,104,35,166,46,75,89,191,47,38,110,17,87,146,168,119,40,126,81,176,170,100,194,114,139,173,59,173,26,214,123,223,195, +96,15,223,131,61,252,41,236,225,189,153,190,135,129,210,5,111,148,197,241,228,150,148,4,231,227,120,206,95,229,192,206,95,129,75,167,64,80,104,146,228,34,240,234,189,52,124,139,177,135,174,179,38,21,51, +243,216,67,71,37,224,72,13,200,199,241,84,190,43,13,118,46,171,182,139,118,128,42,241,84,244,40,74,13,65,106,232,51,67,189,231,75,112,46,215,59,123,232,70,96,13,236,161,25,148,73,69,176,135,33,54,83,17, +171,160,219,17,141,126,105,126,117,180,157,203,210,44,170,101,141,214,186,180,2,113,149,120,170,111,179,253,211,52,56,100,139,46,103,209,62,193,130,120,182,239,97,157,178,135,101,176,135,171,97,15,215, +192,30,206,129,61,188,52,211,247,208,209,53,16,57,111,197,240,108,21,22,252,33,27,141,212,120,57,166,152,203,202,10,53,88,81,185,58,107,131,148,234,188,232,110,153,237,81,28,132,169,115,219,37,43,159, +61,84,144,38,231,160,48,70,221,135,94,32,115,204,247,126,207,78,106,169,53,108,238,197,156,198,78,234,144,92,81,96,187,13,78,45,145,253,205,192,253,86,18,76,74,60,169,112,243,238,126,214,45,158,187,30, +55,2,147,11,176,135,6,164,232,139,22,80,86,24,237,87,191,103,243,56,93,91,114,69,151,54,66,43,42,143,200,30,6,59,194,241,235,80,238,133,187,135,238,171,206,216,195,247,97,15,95,133,61,92,11,123,232,22, +207,93,143,27,1,115,99,211,66,93,78,185,160,1,73,32,75,163,29,73,141,139,174,120,217,86,128,254,140,224,134,72,142,243,87,245,124,200,18,195,125,163,249,99,76,21,221,221,8,238,26,109,212,86,30,161,20, +162,214,251,30,122,6,245,33,236,225,15,97,15,127,10,123,248,19,216,195,213,121,236,161,163,225,136,57,194,142,94,16,42,209,16,46,12,247,171,115,89,58,77,142,193,132,68,4,64,35,2,182,54,194,59,162,202, +143,195,205,157,223,193,79,24,216,252,89,165,194,193,30,106,180,146,98,101,19,186,116,200,161,56,56,248,59,114,226,215,57,62,90,199,215,50,220,185,87,78,18,177,123,185,75,147,8,180,5,180,154,203,83,74, +190,251,126,111,216,195,119,96,15,151,193,30,46,131,61,92,6,123,56,43,143,61,212,96,3,149,70,24,144,76,54,164,81,2,216,240,5,196,252,117,196,125,228,26,156,243,102,87,206,77,221,55,88,97,95,128,235,120, +160,242,106,170,205,196,76,76,52,216,19,16,69,48,162,120,206,221,90,101,15,71,192,30,190,6,123,184,20,246,112,9,236,225,98,216,195,201,5,250,30,70,147,184,80,178,43,236,150,50,243,37,4,173,162,7,232,206, +209,181,214,159,209,168,64,222,29,73,51,46,231,116,16,165,26,106,158,45,253,98,46,110,174,173,54,51,148,62,26,238,136,214,90,223,195,107,97,15,215,193,30,46,134,61,92,12,123,184,16,28,239,158,12,123,168, +58,214,140,72,87,148,50,83,189,30,194,110,215,90,127,237,19,120,157,115,55,90,6,154,136,232,182,26,229,92,54,1,49,243,50,191,118,185,138,94,227,182,35,243,251,70,116,255,191,232,243,160,82,47,12,214,197, +149,58,25,208,84,245,41,95,52,162,227,226,31,146,146,46,39,83,91,142,59,79,226,57,140,103,223,114,151,198,197,134,241,161,23,32,212,94,198,9,226,47,174,129,61,92,11,123,184,8,246,80,99,231,194,30,222, +157,99,15,221,250,197,126,214,175,46,47,161,104,23,205,9,80,82,82,77,181,187,121,179,143,6,56,138,46,67,186,182,137,72,52,99,246,37,57,183,141,224,138,197,197,238,162,211,165,64,166,70,187,14,71,247,15, +151,40,13,212,96,95,128,16,181,107,245,102,247,61,28,6,123,184,6,246,112,30,236,225,92,216,195,217,176,135,147,114,236,161,108,67,176,135,70,107,221,81,180,206,71,163,92,114,124,28,189,232,161,102,250, +24,23,28,56,79,77,84,130,57,214,112,221,95,227,37,208,194,120,33,77,189,199,23,224,139,115,228,109,143,176,169,190,135,166,161,155,213,247,176,27,236,225,26,216,195,57,176,135,179,96,15,103,193,30,62, +146,233,123,232,113,170,220,161,75,134,243,204,141,128,143,243,206,121,232,227,198,32,123,49,137,238,111,128,50,8,9,117,68,163,71,93,220,40,111,192,211,237,117,127,183,146,49,45,52,218,165,76,47,41,196, +30,214,74,223,195,75,97,15,95,131,61,44,133,61,92,13,123,88,6,123,248,28,236,97,207,126,157,210,75,129,226,74,55,247,182,46,49,126,13,130,52,242,227,224,152,226,22,7,191,58,119,125,25,142,154,129,78,67, +117,239,232,108,105,128,147,68,243,207,12,136,142,186,134,251,130,252,247,43,98,15,149,21,235,222,186,61,87,90,252,147,175,175,227,137,47,113,88,191,34,183,44,57,135,191,84,62,135,201,102,190,202,104, +44,36,215,125,153,209,91,231,61,147,171,97,15,23,192,30,206,128,61,124,10,246,240,49,216,195,174,121,236,161,121,175,198,198,197,4,70,92,231,168,143,235,106,24,107,98,225,239,117,103,151,36,231,167,163, +24,45,255,226,86,23,147,24,191,103,148,119,201,139,54,158,26,108,194,163,59,171,195,172,168,239,161,105,38,181,172,191,34,101,92,69,44,122,149,23,84,138,161,226,0,135,242,236,179,65,106,201,186,56,139, +127,120,13,70,148,122,169,230,35,176,135,115,96,15,159,130,61,124,28,246,240,97,216,195,209,5,216,67,147,131,184,130,194,109,94,116,205,138,20,49,58,227,153,84,232,226,26,108,32,146,9,214,32,141,139,45, +100,32,181,186,119,192,150,142,178,47,168,42,236,161,135,6,236,159,63,198,224,18,70,122,29,185,244,82,12,61,145,231,224,52,159,206,150,35,248,96,247,240,65,74,88,35,151,179,37,251,99,63,216,195,185,176, +135,83,97,15,31,131,61,156,12,123,56,1,246,176,117,174,239,161,174,109,178,46,185,146,109,234,232,104,198,193,93,228,198,217,110,120,26,236,124,52,178,135,219,58,159,117,231,0,45,53,56,144,60,151,54,189, +35,154,197,21,98,15,117,103,151,38,15,10,106,212,247,112,22,236,225,84,216,195,201,176,135,15,216,10,16,246,240,138,2,236,97,118,19,144,101,14,221,253,152,18,250,2,204,139,163,155,180,7,0,206,99,231,167, +145,57,140,211,104,141,245,49,146,59,93,244,160,160,211,84,221,86,161,239,225,15,224,45,74,113,239,101,40,128,199,50,178,74,139,191,197,179,219,6,35,204,220,221,143,15,55,159,81,94,235,221,176,103,156, +113,90,114,11,236,225,19,176,135,26,123,31,236,225,157,176,135,215,20,96,15,163,27,94,92,32,228,220,246,9,140,86,163,77,29,227,234,10,151,47,215,235,104,172,28,243,53,12,247,171,155,4,62,100,57,123,40, +20,82,231,236,97,55,216,195,169,176,135,247,193,30,222,13,123,56,25,246,240,33,216,195,33,5,216,67,79,38,60,150,241,112,192,115,174,232,117,152,237,132,23,41,164,235,180,201,133,193,200,71,215,118,57, +202,130,150,242,76,114,77,1,110,153,59,87,198,30,146,140,252,150,103,49,135,127,43,236,19,193,11,243,18,177,245,1,11,205,247,70,42,30,246,193,173,88,58,150,121,235,47,1,96,237,121,176,135,119,195,30,62, +10,123,248,36,236,225,195,176,135,183,192,30,14,133,61,108,157,233,123,168,161,30,184,201,28,26,65,45,116,71,55,203,88,127,13,108,142,176,70,155,78,6,63,236,26,27,105,168,1,74,227,141,224,70,227,8,84, +38,28,26,235,8,59,95,253,189,169,166,127,110,246,229,110,169,214,250,30,14,132,61,156,14,123,120,55,236,225,141,176,135,227,193,241,110,128,61,236,3,123,216,62,215,247,208,163,84,81,86,13,246,67,89,251, +141,185,27,6,187,227,209,96,159,184,27,79,126,216,185,236,14,202,124,92,23,119,228,245,146,24,89,201,22,231,173,143,119,241,100,241,30,147,14,93,157,70,54,174,193,191,175,21,246,240,52,216,195,91,97,15, +239,130,61,212,216,49,176,135,215,195,30,142,132,61,236,156,99,15,61,55,118,73,208,88,115,92,223,184,243,218,57,237,154,236,86,80,131,227,34,4,75,45,122,128,233,162,105,163,160,165,145,219,159,15,67,221, +29,85,165,239,97,157,176,135,77,232,123,120,7,236,225,68,216,195,235,97,15,71,193,30,94,5,142,55,0,246,240,242,12,123,232,198,34,14,220,252,176,46,21,186,187,7,245,177,161,247,251,186,162,189,14,221,227, +154,180,120,224,222,224,216,195,150,176,135,183,0,103,93,15,123,168,177,87,194,30,14,3,199,27,9,123,120,5,236,97,251,78,92,207,218,245,138,52,121,215,128,124,246,48,182,114,126,117,222,5,123,104,186,24, +198,86,149,61,116,75,232,221,90,198,11,150,42,209,158,186,97,15,123,195,30,142,135,61,28,9,123,168,177,215,192,30,142,128,61,236,13,123,216,26,246,176,117,21,250,30,106,148,115,207,175,26,171,225,238, +111,117,205,170,176,135,190,176,96,15,49,246,111,156,115,189,145,235,123,88,86,39,125,15,251,195,30,94,15,123,120,13,236,225,85,176,135,125,96,15,123,194,30,118,133,61,108,3,123,120,49,236,97,211,188, +190,135,206,235,108,223,67,63,176,81,216,83,139,173,130,61,236,5,123,40,90,59,8,246,176,23,236,97,55,216,195,46,176,135,29,193,241,218,138,225,193,30,158,7,123,120,26,236,225,73,41,123,120,92,122,6,85, +27,236,161,49,98,139,176,135,205,97,15,135,192,30,246,133,61,236,2,123,168,177,29,96,15,219,192,30,182,193,232,86,224,120,231,195,30,158,58,96,183,228,112,216,195,111,195,30,126,13,246,240,171,176,135, +95,170,97,223,195,45,198,30,158,3,123,216,27,246,176,23,236,97,71,216,195,54,176,135,173,96,15,91,99,108,115,216,195,139,97,15,207,135,61,60,11,246,240,120,216,195,195,96,15,191,7,123,184,127,53,217,195, +2,125,15,183,44,123,216,10,246,176,51,236,225,229,176,135,109,97,15,91,193,30,54,131,61,188,8,246,176,41,236,97,19,216,195,179,96,15,79,130,61,60,177,255,78,201,193,185,190,135,193,30,6,127,24,236,161, +223,55,151,142,166,205,196,128,191,114,110,213,176,216,195,147,97,15,155,195,30,182,135,61,108,15,123,216,18,246,240,18,216,195,11,97,15,155,192,30,54,134,61,60,3,246,240,108,216,195,99,170,192,30,186, +225,39,115,251,39,243,181,156,61,20,123,111,176,236,97,107,216,195,22,176,135,205,96,15,47,130,61,60,31,246,240,92,216,195,38,176,135,167,108,130,61,116,159,189,213,179,135,205,96,15,91,192,30,54,135, +61,188,4,246,176,121,145,61,44,178,135,69,246,176,200,30,86,210,166,100,179,245,210,213,129,174,20,106,243,236,148,30,152,21,217,195,244,130,122,113,216,34,123,88,29,47,170,201,207,214,11,138,87,147,15, +88,219,127,183,94,12,46,178,135,69,246,176,200,30,126,58,216,67,165,80,170,131,198,141,107,154,220,113,87,227,228,185,5,71,37,173,218,166,253,86,62,61,125,15,179,236,161,186,175,55,145,66,189,247,163, +174,201,251,191,188,56,249,197,159,14,78,198,221,212,60,109,144,33,253,98,181,193,99,87,171,8,185,210,205,127,242,189,181,232,198,74,188,144,144,50,238,74,175,173,227,5,141,227,180,242,104,78,61,119,174, +110,20,175,86,148,206,53,140,59,219,182,98,118,218,66,119,181,20,77,198,34,196,43,101,118,237,177,145,205,208,161,23,82,65,232,134,126,99,125,223,195,44,123,88,138,200,109,57,186,175,215,222,236,147,124, +240,219,198,112,136,28,236,223,190,190,127,154,149,139,79,21,123,184,18,246,176,20,69,223,114,68,110,111,188,215,37,249,197,159,143,72,126,11,180,245,244,188,147,210,166,112,194,150,62,159,10,246,112, +21,194,212,149,176,135,43,86,118,73,74,80,244,189,245,97,115,186,93,126,35,249,15,8,181,87,126,254,221,84,69,32,196,177,213,246,61,204,178,135,43,145,28,175,64,133,187,224,165,142,92,191,126,89,50,117, +81,155,228,149,95,158,158,26,251,235,100,191,228,173,63,236,159,116,234,122,110,58,135,117,105,21,64,42,252,44,196,133,164,194,187,50,21,132,123,198,101,201,148,3,253,191,32,70,91,195,207,44,71,33,240, +30,231,221,243,168,56,244,205,221,247,181,201,43,107,54,57,135,153,179,219,35,221,63,91,132,86,170,212,38,143,212,118,215,216,10,240,246,219,219,35,55,26,199,28,189,146,50,231,112,234,185,235,251,30,102, +217,195,87,97,15,31,135,61,236,135,228,184,121,235,11,82,142,161,115,215,179,146,151,63,60,56,53,246,151,201,87,48,152,187,49,175,60,42,13,82,142,242,86,213,247,208,145,93,6,19,49,29,246,112,36,152,64, +87,250,30,6,123,168,177,182,6,186,102,116,147,100,245,143,14,71,217,119,90,50,119,213,9,201,91,255,189,95,114,221,173,135,165,197,55,21,126,91,77,223,67,57,166,5,160,61,19,10,176,135,202,20,149,63,68, +251,191,16,166,6,123,216,171,79,7,94,76,203,242,230,143,118,209,114,94,91,74,245,69,249,68,143,211,192,123,244,8,11,240,212,167,62,162,48,151,54,135,83,242,239,77,110,108,63,15,231,217,153,103,163,171, +226,10,186,52,174,187,61,207,5,104,33,23,185,244,72,130,11,71,119,237,218,24,23,30,136,11,211,178,115,181,46,188,190,97,220,79,96,15,23,23,96,15,67,252,157,149,48,5,151,164,177,170,4,66,209,231,232,198, +188,109,208,125,15,101,15,103,192,30,14,42,208,247,80,227,172,252,43,50,85,154,164,208,76,225,138,18,136,80,227,42,79,84,183,229,232,111,21,236,225,180,12,123,168,114,71,1,89,116,159,85,183,161,208,76, +61,165,114,66,53,88,138,71,149,9,43,66,213,208,232,159,166,234,86,237,135,50,167,96,15,141,202,13,166,239,161,115,118,70,30,123,24,56,158,174,108,223,22,209,30,193,15,49,128,232,214,227,40,43,92,81,133, +167,156,80,141,135,162,81,197,226,217,46,121,142,182,129,204,185,170,96,38,128,203,45,210,247,80,246,208,0,21,236,161,9,67,52,106,212,93,253,181,66,51,193,14,155,75,137,241,168,165,84,53,171,82,54,12, +14,125,181,198,42,101,10,97,170,127,95,205,166,186,47,165,80,6,39,5,51,254,63,190,8,213,60,242,136,126,79,47,240,247,254,12,133,117,239,171,45,35,77,93,205,175,215,236,176,195,14,131,9,92,222,0,81,158, +115,111,20,180,208,72,77,2,197,89,196,92,91,8,224,252,31,230,198,94,85,145,101,15,63,132,61,188,47,195,30,58,79,67,41,171,98,71,169,160,36,139,224,86,208,44,186,181,70,7,142,23,221,117,2,184,20,233,201, +2,151,6,186,184,107,62,164,80,142,178,65,206,205,134,247,6,216,4,210,2,187,5,114,191,106,188,247,106,98,252,139,76,133,149,180,234,85,152,118,32,79,121,119,203,13,12,70,12,246,101,116,202,179,137,206, +101,124,144,165,254,7,83,167,182,199,61,215,247,61,12,246,112,86,30,123,168,43,251,193,117,223,0,45,3,199,147,91,146,102,137,118,128,42,223,3,199,147,103,80,175,165,43,251,4,123,28,242,197,216,61,133, +20,74,195,20,188,185,172,249,50,194,88,107,199,62,254,188,242,9,150,170,37,172,2,47,83,52,87,43,221,152,231,203,30,29,111,116,71,60,65,166,51,65,102,46,194,206,101,4,158,119,108,109,31,125,15,179,236, +161,73,69,150,61,212,253,84,195,6,159,20,141,226,52,90,28,79,163,165,90,196,122,162,81,156,98,52,245,150,193,31,234,206,217,30,17,234,52,13,130,46,93,62,185,251,164,211,255,215,20,180,222,216,195,185, +25,246,48,216,64,217,4,93,214,17,214,104,231,108,126,59,64,3,151,70,251,98,84,220,169,192,83,126,104,164,86,37,239,19,173,78,140,212,26,156,213,106,186,70,7,123,24,184,188,170,159,104,242,88,39,236,161, +27,129,71,243,216,67,3,140,75,141,6,107,144,40,158,198,57,202,186,183,163,235,227,139,240,133,24,184,212,85,26,161,69,7,84,230,57,255,253,119,178,40,109,86,137,27,137,75,232,190,60,32,200,246,61,12,99, +85,10,25,232,112,245,143,120,57,37,120,198,43,4,174,101,185,204,43,117,235,242,57,236,81,42,48,197,124,62,208,90,130,199,26,175,132,202,178,135,110,241,220,245,184,17,200,178,135,186,164,145,55,104,52, +57,97,141,215,232,0,48,35,90,251,18,252,115,147,16,245,148,178,15,10,78,163,247,161,6,103,159,96,146,3,232,50,72,41,141,176,107,71,157,178,135,63,131,61,252,57,236,225,75,5,216,67,3,144,36,154,163,28, +42,118,191,70,87,60,215,98,71,55,122,33,138,238,184,70,171,171,12,50,220,17,212,168,0,46,93,218,162,119,169,174,110,48,19,31,240,110,128,80,243,57,154,117,194,30,122,44,227,73,69,25,236,225,156,12,123, +232,252,242,94,142,184,178,66,245,186,36,138,95,77,31,77,48,52,92,23,142,94,136,70,107,95,128,63,167,94,90,99,52,206,81,213,165,125,52,206,165,45,58,92,42,72,141,78,63,254,188,6,139,242,212,9,123,232, +129,155,103,80,30,203,120,82,241,104,142,61,116,29,84,44,234,37,36,70,82,131,79,116,176,147,49,50,165,12,253,179,198,235,1,166,149,206,111,221,220,23,97,176,138,246,157,70,103,93,219,199,3,0,151,168,232, +112,105,186,25,247,4,248,61,85,62,234,164,13,96,181,202,30,94,7,123,248,26,236,97,9,236,225,82,216,195,23,193,241,238,203,177,135,46,11,174,133,110,0,52,218,185,104,212,149,252,54,24,249,132,14,218,4, +195,239,251,34,20,125,43,0,55,1,49,201,208,0,51,172,232,219,98,138,25,143,200,158,47,197,24,97,38,166,209,242,14,142,176,26,205,48,184,214,216,195,235,96,15,95,134,61,124,17,246,112,49,198,46,132,61,188, +39,211,247,80,99,221,163,186,132,232,158,66,27,38,18,254,218,36,36,190,58,250,186,125,192,92,142,98,176,135,186,191,47,66,246,65,189,180,104,79,64,151,254,61,255,13,215,106,119,91,110,39,67,253,174,48, +53,196,165,249,236,161,105,166,30,200,232,127,72,196,94,78,130,178,156,232,124,119,121,164,142,115,93,92,167,47,187,24,6,102,65,41,35,248,225,149,176,135,47,195,30,46,130,61,92,0,123,56,15,246,240,222, +76,223,67,63,128,136,171,16,164,148,184,31,202,39,154,171,58,234,142,156,90,104,231,160,79,240,194,126,223,20,211,101,204,221,148,115,218,64,22,57,182,222,33,30,96,174,109,52,119,131,225,212,81,95,173, +242,214,17,86,152,170,118,83,117,188,56,128,47,192,121,189,217,236,97,119,216,195,151,97,15,231,195,30,206,133,61,156,11,123,56,37,195,30,154,253,120,146,225,232,233,114,241,68,154,232,72,106,100,36,20, +1,122,56,95,125,65,142,110,220,254,96,96,115,94,107,120,192,150,78,5,73,83,119,85,42,230,29,109,79,64,156,191,74,142,85,232,25,169,37,75,213,94,187,92,233,242,26,236,25,119,181,251,30,54,135,61,124,7, +246,112,53,236,225,58,216,195,53,176,135,115,50,236,161,57,173,231,79,17,92,194,80,231,166,70,186,140,4,138,23,203,142,35,236,134,95,151,55,219,138,189,114,96,120,26,45,213,34,228,33,97,234,227,168,107, +184,35,109,0,171,211,190,135,47,195,30,190,0,123,56,27,246,112,26,236,225,227,176,135,221,242,216,67,131,150,1,69,67,52,86,35,29,69,215,81,19,138,108,139,108,127,198,181,215,121,105,36,215,173,227,254, +0,215,109,95,128,155,11,141,214,3,116,115,71,220,121,238,40,123,158,229,60,14,37,188,155,9,221,217,71,215,246,251,126,111,179,217,195,169,176,135,243,97,15,159,133,61,124,26,246,240,49,216,195,49,5,216, +195,24,209,152,163,249,87,84,24,216,28,241,128,60,156,147,158,122,4,58,31,29,45,117,109,95,128,47,194,63,11,194,212,228,198,191,83,21,246,176,70,125,15,7,192,30,46,132,61,124,18,246,240,113,216,195,71, +97,15,111,202,99,15,157,87,142,178,70,71,182,20,233,161,134,134,241,142,190,123,94,231,186,31,222,57,26,112,150,167,33,142,110,124,245,56,40,90,2,198,13,77,65,187,24,176,234,148,61,156,11,123,248,36,236, +225,99,176,135,15,131,227,221,6,123,216,173,0,123,104,20,181,98,96,6,22,187,29,13,143,123,58,178,24,94,112,135,174,203,130,148,129,212,102,65,75,243,115,71,90,131,157,191,85,101,15,61,15,35,90,111,62, +123,120,59,236,225,211,176,135,147,49,246,65,216,195,73,176,135,215,22,96,15,61,119,114,142,121,134,156,189,75,199,249,28,153,148,201,132,240,164,6,187,238,234,170,102,100,129,205,106,120,128,150,209, +154,215,57,28,208,86,101,236,97,108,40,106,212,247,176,7,236,225,147,176,135,15,194,30,222,7,123,248,40,236,225,35,176,135,195,50,236,161,91,50,207,151,148,252,122,18,225,145,107,184,115,108,253,140,226, +186,115,220,150,102,54,102,224,50,10,71,23,218,24,85,3,150,91,65,217,67,215,219,192,104,43,99,15,125,225,53,102,15,155,192,30,222,11,123,248,56,236,225,179,176,135,143,193,30,222,14,123,56,60,195,30,186, +33,247,132,209,3,55,255,83,215,220,88,138,52,216,141,128,145,60,238,230,112,14,23,2,45,53,220,185,107,74,41,85,42,104,25,129,42,8,181,42,176,135,47,225,101,101,96,121,101,192,210,87,242,239,28,199,99, +227,154,207,241,108,187,209,33,30,149,186,125,72,40,158,38,83,42,179,242,238,69,184,131,97,15,103,193,30,222,7,123,120,43,236,225,77,224,120,227,96,15,251,231,216,67,79,18,117,233,232,121,232,136,235, +214,70,102,119,64,166,146,17,176,76,84,92,150,76,35,227,42,12,231,177,163,26,183,60,184,129,136,246,157,142,174,75,142,238,90,175,236,225,157,176,135,247,194,30,222,136,177,227,97,15,199,192,30,94,3,123, +216,53,175,239,161,17,52,46,251,50,167,117,254,122,94,165,193,62,238,178,34,37,117,83,17,160,165,72,173,110,238,207,7,123,232,87,215,88,13,245,228,50,191,143,90,108,28,234,132,61,188,0,246,112,18,236, +225,45,176,135,99,97,15,175,135,61,28,5,142,55,24,246,176,51,236,97,255,92,223,195,66,236,161,115,91,55,119,9,11,252,206,219,24,60,4,48,128,185,177,136,11,13,34,26,111,110,223,67,2,92,237,245,61,108,13, +123,120,39,112,214,24,216,67,141,189,26,246,112,4,56,222,40,216,195,238,85,96,15,77,240,189,59,39,216,67,71,47,238,229,168,46,123,232,191,17,25,23,243,187,238,216,195,190,176,135,55,195,30,94,3,123,168, +177,215,193,30,94,13,123,216,31,246,176,29,236,97,155,60,246,208,200,234,25,84,24,233,6,222,132,63,96,231,90,100,15,203,80,0,213,13,123,56,8,246,112,28,236,225,245,176,135,215,194,30,14,128,61,236,11, +123,216,3,246,176,61,236,97,51,216,195,139,101,15,59,181,74,139,224,6,156,96,15,29,101,31,163,174,219,185,173,134,61,236,11,123,56,17,247,30,6,123,216,23,246,176,23,236,97,55,216,195,43,192,241,46,3,195, +187,20,246,240,2,216,195,51,97,15,79,110,114,88,114,226,167,129,61,108,9,123,120,37,236,225,32,216,195,110,176,135,26,219,17,246,176,3,236,97,123,140,110,127,251,62,73,83,216,195,51,96,15,143,108,185, +91,242,93,216,195,175,231,216,195,47,215,128,61,36,224,253,109,139,177,135,231,194,30,246,131,61,236,7,123,120,5,236,225,101,176,135,237,96,15,219,193,30,182,134,61,108,49,241,11,201,69,176,135,231,192, +30,158,212,117,143,228,136,22,187,38,135,193,30,30,80,3,246,144,41,241,250,22,239,123,216,6,246,176,27,236,97,23,216,195,14,176,135,237,96,15,91,192,30,94,10,123,120,9,236,225,133,176,135,231,192,30,158, +218,7,195,97,15,15,105,252,249,52,202,122,82,81,89,223,195,92,12,144,61,252,117,131,234,123,120,10,236,97,75,216,195,142,176,135,29,97,15,219,193,30,182,128,61,188,24,246,176,41,236,97,19,216,195,198, +176,135,231,192,30,30,155,99,15,163,231,97,212,141,162,239,161,154,75,51,54,217,195,108,223,195,6,205,30,182,133,61,108,13,123,216,10,246,176,57,236,225,69,176,135,23,192,30,94,120,239,142,201,169,121, +236,161,217,148,59,45,5,45,62,230,230,184,237,111,241,130,53,24,252,162,87,189,145,84,148,242,66,86,230,176,247,54,228,198,39,241,28,193,243,77,30,59,90,218,228,113,147,61,31,170,37,46,77,235,171,235, +49,29,155,180,29,78,114,222,131,60,119,38,5,232,181,168,112,86,91,121,183,24,109,125,150,231,109,239,213,176,176,197,7,253,75,115,216,195,86,176,135,173,96,15,155,193,30,182,44,192,30,122,75,146,23,7, +81,235,125,135,45,222,82,214,240,23,40,154,149,217,19,156,163,155,85,118,142,70,109,103,85,223,235,162,188,95,231,123,60,251,243,236,193,179,35,79,133,29,45,55,217,97,186,50,73,110,186,235,88,175,131, +250,18,207,137,236,106,70,146,53,205,83,102,96,229,221,98,52,10,217,85,94,151,106,21,143,15,191,202,123,38,121,1,239,145,247,126,224,5,125,158,27,147,115,127,224,233,162,151,125,121,255,149,87,66,113, +167,221,18,47,14,66,171,181,214,235,101,220,245,216,0,125,199,29,119,180,71,169,134,58,170,54,66,183,178,111,69,80,62,106,251,202,62,115,141,12,206,141,244,54,185,183,234,182,203,183,124,130,154,10,101, +6,86,222,25,169,50,133,98,150,44,169,82,188,230,165,154,184,234,42,164,10,165,222,70,232,33,57,134,173,240,103,188,217,204,203,190,188,255,138,209,92,225,45,73,24,89,100,15,121,169,197,190,135,85,117, +229,26,187,116,133,253,125,139,236,97,10,94,238,194,179,59,79,145,61,172,174,75,214,244,231,171,189,14,215,244,63,220,210,127,191,94,12,46,178,135,69,246,176,200,30,126,250,216,195,113,227,46,160,58,113, +86,210,3,165,65,199,142,39,255,107,232,149,199,253,189,217,165,141,63,33,181,252,35,187,166,247,188,87,147,131,252,18,111,95,180,40,192,121,117,41,169,231,227,108,23,91,146,131,127,173,42,27,133,90,185, +244,64,180,7,21,206,193,148,54,71,200,68,32,56,91,204,215,197,148,62,23,80,34,41,83,114,172,10,87,97,234,240,225,77,168,48,252,187,239,97,176,135,63,146,61,124,191,115,242,58,26,146,215,145,85,124,240, +171,83,146,95,254,55,55,40,118,56,45,149,44,124,170,216,195,82,116,95,111,188,209,63,121,237,141,190,201,139,8,102,150,174,108,150,252,252,247,135,37,255,11,199,212,177,83,235,84,242,111,97,125,171,239, +123,40,123,184,82,69,31,34,183,215,223,236,151,188,242,70,239,100,49,234,160,87,222,61,35,249,227,223,247,79,254,243,99,46,21,188,250,188,148,67,84,9,180,85,247,61,84,152,186,10,246,112,37,236,225,10, +20,125,175,188,217,59,89,251,122,247,100,209,138,75,147,95,255,191,239,38,255,3,161,246,171,63,81,201,184,254,244,84,143,101,17,78,226,212,81,118,196,61,219,206,157,128,120,150,253,7,246,208,107,40,248, +149,82,111,126,139,57,253,60,229,153,129,156,130,184,69,173,116,95,92,105,226,145,67,104,91,219,228,241,163,143,62,122,85,28,143,32,178,138,138,255,39,61,122,52,193,136,254,84,254,6,83,231,29,130,81,67, +80,219,13,73,149,243,209,247,80,201,113,153,125,15,97,15,103,192,30,78,65,190,56,13,69,253,211,75,187,39,179,86,158,157,26,251,223,201,151,147,223,253,125,223,100,192,144,83,211,186,178,70,111,117,236, +225,82,186,246,188,6,123,248,20,236,97,255,12,123,104,89,213,209,19,204,90,178,250,224,212,216,255,74,246,77,126,159,236,157,92,63,225,248,84,176,234,168,6,104,169,132,65,190,65,125,180,95,149,81,88,124, +231,82,177,79,40,184,173,161,188,187,28,61,216,219,156,168,204,98,132,59,228,54,40,21,182,245,220,228,8,27,141,133,163,237,85,106,251,78,71,86,208,242,222,123,219,51,170,131,40,94,143,65,55,121,123,57, +161,230,200,46,183,31,19,236,225,85,21,176,135,98,118,206,211,1,131,46,73,222,250,217,193,201,143,127,247,141,212,216,95,255,109,175,228,222,169,223,79,251,31,122,90,41,81,26,198,90,112,247,128,79,249, +176,218,48,139,238,82,44,168,4,62,225,132,69,163,75,105,228,186,142,202,228,84,12,62,147,199,51,183,130,135,121,21,26,140,224,123,95,151,30,73,112,27,179,218,171,84,55,158,48,161,101,106,108,89,217,122, +28,239,39,63,185,133,103,98,34,199,180,16,180,103,98,5,236,161,35,23,236,161,245,97,5,48,42,249,4,164,187,117,235,146,76,122,228,244,100,204,173,199,165,122,14,141,110,240,236,225,146,74,216,67,231,166, +50,136,16,173,249,251,96,15,149,10,6,123,24,134,234,5,17,180,228,149,162,143,90,72,43,28,97,21,242,126,165,34,249,7,142,115,151,241,242,214,114,8,184,218,211,212,220,1,227,142,249,201,71,193,17,70,77, +243,101,70,248,1,147,10,25,127,91,238,218,133,214,0,181,102,205,208,148,23,14,208,114,37,236,225,115,25,246,208,15,30,61,212,212,104,185,166,170,140,85,187,161,14,43,244,87,106,180,52,66,14,73,131,149, +35,55,120,246,112,141,77,30,243,250,30,134,177,6,23,37,14,242,15,1,126,68,27,177,16,146,90,253,87,11,162,14,68,217,176,98,22,255,126,131,101,15,103,102,216,195,88,63,3,161,245,131,43,53,12,50,77,180,71, +131,29,229,104,83,162,138,94,157,135,134,43,67,86,199,101,210,161,38,36,110,48,214,101,141,206,91,188,239,161,1,42,203,30,154,44,232,190,202,124,85,225,248,40,52,11,28,79,208,67,131,213,85,58,194,10,206, +20,178,40,80,147,48,149,80,139,30,136,26,236,99,78,238,60,181,12,179,69,251,30,202,30,62,144,97,15,67,158,52,115,230,204,13,154,197,105,108,180,4,20,240,80,38,236,19,116,154,128,151,122,173,104,24,23, +221,179,162,11,136,250,46,13,85,14,101,113,205,95,111,17,246,112,118,1,246,80,53,188,35,152,197,241,68,241,226,209,248,16,132,107,112,244,63,84,201,19,163,171,180,88,17,106,144,170,198,1,149,125,238,160, +124,148,67,213,59,123,104,6,101,82,145,101,15,29,97,101,131,26,36,181,226,83,8,199,203,242,135,26,172,212,63,248,67,231,187,42,122,141,13,180,199,128,166,62,75,67,21,199,168,133,174,119,246,112,94,94, +223,67,131,148,226,50,231,107,224,120,209,43,45,219,25,207,95,251,34,4,181,12,90,26,172,16,205,209,149,143,112,100,125,66,130,236,58,109,162,98,114,98,211,40,31,37,254,54,133,171,87,246,112,74,1,246,80, +229,186,235,171,70,27,148,20,122,199,104,219,39,205,121,28,100,154,136,158,234,89,133,165,130,28,209,154,36,122,28,70,35,155,128,45,3,184,212,248,44,123,168,209,6,52,11,234,117,198,30,186,235,113,35,160, +106,46,16,30,163,169,58,73,19,9,165,251,142,158,210,95,151,31,231,180,36,154,198,198,220,214,213,253,57,21,241,6,43,57,134,24,89,71,55,219,202,51,174,194,8,54,81,233,67,189,177,135,191,128,61,124,5,246, +176,103,159,78,105,174,235,7,51,63,214,245,196,114,132,54,20,137,106,184,79,176,136,66,89,38,30,62,177,38,251,103,42,226,133,176,162,159,97,52,193,136,86,158,254,251,209,9,36,184,98,95,114,33,246,80,189, +87,173,245,61,148,61,244,164,98,53,236,225,188,28,123,168,102,82,99,221,189,248,161,92,62,84,198,10,99,184,182,6,133,166,171,59,154,114,12,186,185,238,237,104,235,250,206,95,151,33,3,94,62,108,25,92,114, +208,165,65,142,235,1,21,177,135,26,108,96,115,249,34,15,255,151,197,119,235,209,20,222,165,196,175,229,177,127,233,158,229,185,52,238,213,27,215,156,199,220,90,78,214,244,161,55,155,201,30,122,6,229,177, +140,39,21,110,222,221,207,186,197,211,88,89,7,13,86,28,234,122,42,97,166,44,88,2,197,12,202,151,96,54,165,242,93,183,87,226,175,139,235,234,162,60,142,92,68,228,72,92,124,121,254,58,186,114,5,251,228, +247,53,188,78,217,195,215,97,15,87,192,30,174,128,61,44,1,199,123,32,211,247,208,45,158,198,154,22,250,225,157,143,102,76,89,132,206,37,199,63,247,251,82,102,190,4,21,240,206,111,145,30,151,32,51,50,127, +109,150,165,106,222,181,56,96,203,96,162,252,106,172,240,231,20,167,42,68,173,19,246,240,13,216,195,101,176,135,75,49,118,49,236,225,125,25,246,208,157,142,110,237,178,98,254,171,240,59,40,53,55,1,209, +25,47,64,73,73,112,93,56,218,118,106,180,163,239,139,240,101,249,114,36,214,188,208,196,127,47,218,20,249,111,197,223,245,229,40,76,85,144,90,81,223,195,205,102,15,61,36,247,220,216,163,84,79,23,23,194, +30,222,95,128,61,244,195,249,129,140,182,126,117,52,28,33,147,8,71,69,154,69,35,99,30,58,47,205,202,92,179,93,147,165,86,12,120,166,153,78,9,211,83,17,129,96,25,245,24,95,130,193,76,13,181,122,107,191, +6,63,28,236,161,226,113,191,231,28,222,172,190,135,86,4,60,36,95,4,123,184,0,246,112,1,236,225,227,5,216,67,93,81,35,3,108,142,185,23,249,181,110,27,203,138,70,251,18,156,231,102,102,1,91,138,211,7,126, +231,188,15,216,82,227,163,185,186,215,86,200,64,132,236,88,21,124,173,178,135,45,96,15,127,8,123,248,18,236,225,171,176,135,235,96,15,231,193,30,246,202,245,61,12,246,80,195,162,71,112,220,195,147,189, +162,38,112,60,255,204,209,214,197,221,33,57,178,177,123,114,67,225,250,45,141,38,203,164,171,7,108,25,173,64,13,150,82,46,42,230,185,66,42,133,181,148,30,43,48,119,196,253,106,64,51,17,225,32,97,243,250, +30,190,14,123,184,20,246,112,46,236,225,76,216,195,167,96,15,123,228,177,135,114,196,26,18,9,127,24,232,82,19,220,97,52,120,116,14,186,246,154,138,58,162,113,93,77,236,147,3,193,11,194,212,0,23,16,182, +129,79,99,12,88,26,86,81,223,195,26,177,135,79,194,30,46,130,61,156,1,123,56,13,246,240,113,216,195,113,121,236,161,71,174,186,106,228,192,217,22,128,145,38,186,164,56,167,13,90,70,116,141,112,141,118, +84,93,170,130,46,141,174,150,190,12,147,24,31,215,117,233,82,231,116,101,236,161,141,48,106,196,30,14,130,61,92,2,123,248,44,236,225,211,176,135,143,195,30,222,10,123,216,38,211,247,208,36,36,170,4,46, +85,113,23,71,96,120,26,237,114,226,113,143,129,205,104,28,6,203,41,57,127,99,164,131,46,213,221,189,59,64,172,199,53,92,143,112,69,208,157,117,221,66,236,97,180,228,245,243,212,168,239,225,66,216,195, +103,97,15,31,135,61,124,12,28,239,78,216,195,238,25,246,208,243,99,83,77,15,202,253,26,237,255,52,52,248,97,71,215,101,198,37,198,8,172,193,186,173,201,136,6,251,20,2,45,157,211,162,122,186,115,85,217, +67,13,38,90,191,187,217,125,15,239,134,61,156,1,123,168,177,143,192,30,222,7,123,56,58,195,30,70,85,192,160,162,209,217,27,86,52,56,218,119,26,172,92,167,221,240,27,133,93,138,52,90,183,142,54,220,186, +180,105,103,32,121,26,236,60,246,104,86,131,43,99,15,221,59,123,6,134,182,179,68,173,166,242,69,210,201,166,57,109,166,53,229,157,55,56,166,245,180,158,132,226,65,82,197,101,22,163,145,236,254,103,47, +216,195,103,97,15,31,129,61,124,16,246,240,113,216,195,41,176,135,195,115,236,161,37,17,43,5,110,204,125,187,26,25,231,207,6,50,35,184,75,151,6,155,88,184,212,4,104,169,209,110,36,52,48,12,55,112,249, +123,31,71,215,233,82,85,246,208,207,64,62,93,179,190,135,178,135,15,194,30,62,13,123,56,3,246,240,9,216,195,187,97,15,71,230,245,61,140,131,113,243,236,200,139,35,117,140,171,43,204,202,52,216,17,118, +131,225,252,204,130,150,26,233,186,107,18,33,215,175,215,24,168,28,217,170,176,135,108,31,255,201,129,252,90,37,199,53,98,15,135,194,30,206,133,61,124,16,246,240,14,216,195,91,193,241,110,132,61,28,152, +233,123,168,107,155,214,121,246,100,29,200,181,216,125,174,89,151,199,175,209,220,81,131,13,66,38,24,177,169,48,72,233,190,238,172,220,239,110,179,205,54,27,180,239,180,215,97,101,236,161,129,12,35,127, +87,107,125,15,39,193,30,62,8,123,168,177,55,193,30,78,128,61,188,14,246,176,123,5,236,161,153,145,41,158,107,180,121,181,238,238,135,246,247,142,176,79,52,87,119,46,199,165,98,174,181,193,30,198,38,193, +191,183,69,216,195,251,97,15,111,135,61,156,0,123,56,22,246,240,122,112,188,97,176,135,87,108,130,61,116,109,244,60,202,93,142,137,191,203,135,163,28,193,75,195,93,155,195,125,35,26,107,172,231,87,30, +209,170,249,16,238,202,118,180,140,131,0,255,125,147,16,92,249,55,236,137,87,80,89,172,61,246,176,13,236,225,61,192,89,19,96,15,53,246,90,216,195,107,192,241,174,135,61,236,9,123,216,129,190,135,93,115, +125,15,45,105,198,25,148,46,41,142,231,220,212,240,160,88,124,1,181,193,30,214,105,223,195,1,176,135,183,195,30,94,15,123,168,177,99,96,15,175,131,61,28,4,123,216,1,246,176,93,142,61,180,106,224,50,229, +41,132,6,59,178,26,107,48,114,244,162,185,163,95,53,186,150,250,30,150,214,122,223,195,163,142,63,240,111,195,96,15,111,132,61,28,3,123,56,26,246,112,48,236,225,0,216,195,62,176,135,29,97,15,155,195,30, +54,43,192,30,122,204,106,180,141,167,38,236,97,174,93,232,223,37,212,132,182,88,26,215,240,242,166,176,180,74,187,8,128,200,68,72,186,108,112,253,242,38,21,0,222,193,206,220,184,148,37,103,186,2,18,239, +115,86,102,112,216,81,223,252,219,0,216,195,91,113,239,145,176,135,3,97,15,251,194,30,246,130,61,236,14,142,215,9,12,175,37,236,97,83,216,195,179,187,236,151,156,82,71,236,33,198,190,203,33,125,218,29, +143,125,242,76,140,235,203,35,4,34,237,34,0,242,217,42,213,135,179,63,196,205,70,123,65,172,244,84,45,227,229,213,106,42,148,25,28,112,192,215,63,110,13,123,120,53,236,225,48,216,195,94,176,135,26,123, +5,236,97,71,216,195,142,24,125,57,236,97,51,216,195,179,97,15,143,134,61,60,240,244,221,147,253,143,162,247,33,125,15,171,195,30,102,3,148,203,222,22,101,15,207,131,61,28,12,123,56,8,246,176,7,236,97, +39,216,195,203,96,15,47,131,61,108,7,123,216,26,246,176,25,236,225,249,176,135,167,194,30,30,77,195,199,35,91,238,144,124,243,24,140,38,104,197,213,50,126,141,32,230,38,223,136,172,161,206,123,16,188, +244,222,74,215,121,3,212,22,103,15,143,56,246,192,143,219,194,30,246,130,61,236,1,123,216,25,246,240,50,216,195,54,176,135,45,97,15,91,192,30,94,12,123,216,4,246,240,76,216,195,51,7,236,148,28,154,99, +15,163,239,161,134,249,84,210,247,80,246,112,141,141,89,157,179,57,55,150,103,58,47,55,111,189,205,193,121,187,145,212,161,218,144,135,162,175,220,29,236,29,84,203,200,27,169,169,32,223,46,225,67,174, +226,195,254,82,246,176,53,236,97,23,216,195,43,96,15,47,135,61,108,3,123,216,28,246,240,18,216,195,11,97,15,155,192,30,94,52,254,51,201,137,109,247,73,139,99,100,70,233,198,62,234,70,193,30,234,186,193, +30,218,247,144,81,126,149,249,186,188,65,179,135,237,97,15,219,195,30,182,135,61,108,3,123,216,28,246,240,98,216,195,230,176,135,103,245,251,98,121,145,204,196,193,4,195,101,44,203,30,146,112,108,221, +236,97,27,216,195,54,176,135,45,96,15,91,21,251,30,22,217,195,34,123,72,224,44,178,135,213,229,160,42,149,15,87,251,31,44,178,135,69,246,176,214,189,170,58,94,184,69,255,243,234,124,208,218,250,217,122, +49,184,200,30,22,217,195,34,123,248,233,101,15,123,162,52,176,248,206,53,114,114,135,31,127,170,217,195,55,209,144,188,139,172,226,253,247,47,76,222,122,151,58,52,245,232,91,238,56,42,25,51,241,160,228, +130,11,79,245,218,200,173,191,239,97,176,135,111,192,30,46,67,48,179,12,13,201,146,165,205,147,165,43,154,38,43,94,58,39,249,229,127,125,55,249,205,255,126,35,213,130,121,8,192,177,206,63,188,106,18,227, +215,130,234,172,64,35,178,6,129,75,41,103,108,15,121,192,232,153,91,69,200,78,141,232,82,234,183,123,34,28,109,109,195,56,57,38,209,30,59,109,9,128,12,24,208,227,147,81,163,154,35,72,83,177,215,151,234, +254,0,84,58,55,241,235,129,148,80,250,240,244,226,249,55,123,248,38,236,225,27,176,135,203,81,7,45,69,48,243,226,178,75,147,133,75,47,74,214,188,121,98,242,39,160,173,159,254,238,112,64,173,102,233,129, +128,21,193,92,205,234,47,156,124,252,20,215,95,65,73,118,37,226,153,181,158,166,122,192,200,241,172,29,119,42,132,179,178,134,87,105,29,206,25,123,185,56,158,221,241,132,182,228,152,108,43,38,237,50,111, +94,119,228,9,3,168,249,14,78,187,246,216,200,230,253,247,199,226,174,215,240,235,62,124,255,223,236,97,25,138,190,55,97,15,95,131,61,44,65,10,165,177,139,74,46,78,94,92,213,56,249,213,255,124,35,249,127, +64,91,101,175,159,64,113,189,73,42,19,222,234,216,195,85,176,135,171,80,225,46,129,61,156,13,123,248,20,242,69,187,249,204,128,61,124,4,221,215,227,139,154,38,207,149,158,157,252,224,215,96,121,255,220, +27,52,239,11,201,242,87,14,74,113,187,48,120,171,232,123,88,130,114,254,45,216,195,105,176,135,131,144,28,183,200,245,61,204,178,135,186,172,228,232,189,15,31,151,252,225,111,251,164,198,254,49,217,43, +153,50,253,64,196,41,103,167,46,221,224,217,195,82,216,195,57,176,135,215,128,9,116,43,208,247,48,216,67,201,51,213,3,150,81,63,252,253,87,203,141,253,67,242,249,228,206,135,190,157,178,14,158,90,90,119, +110,144,236,225,203,176,135,139,65,123,110,134,61,60,239,188,198,105,176,113,132,52,76,25,191,66,212,124,246,112,125,43,192,110,201,160,193,237,147,171,175,189,36,121,96,202,41,201,207,254,252,249,228, +161,167,191,149,234,58,252,251,13,178,239,225,79,233,123,184,28,246,176,121,203,243,83,67,29,25,213,236,217,43,212,213,74,134,14,58,148,122,222,58,206,82,83,14,97,169,231,184,188,227,165,201,224,43,79, +74,245,86,1,93,54,40,246,112,53,56,222,243,176,135,131,243,250,30,70,179,40,85,61,10,80,85,234,40,64,147,137,80,173,163,188,65,169,131,210,135,128,45,245,6,163,114,200,160,252,181,248,172,218,108,95,164, +247,87,71,211,56,21,1,158,101,203,61,88,112,167,56,240,129,69,1,202,180,107,188,182,142,101,234,68,30,47,55,219,96,185,218,104,89,66,77,179,61,79,7,132,159,233,237,13,54,83,118,157,117,233,145,4,207,130, +150,107,49,118,86,30,123,168,42,47,68,223,142,176,134,43,103,136,6,83,209,18,48,122,32,170,180,211,229,3,162,246,239,7,123,104,164,110,48,125,15,157,179,115,96,15,91,180,58,63,93,66,130,61,84,182,164, +90,71,77,150,146,67,229,74,129,227,41,255,23,229,81,113,167,24,77,201,146,66,210,144,13,43,21,246,81,134,172,27,123,77,115,131,97,15,13,80,49,103,253,112,33,85,82,187,225,40,70,119,60,191,74,167,197,239, +253,179,232,231,160,100,73,156,71,101,158,72,143,178,196,104,129,162,76,209,127,183,65,176,135,63,135,61,156,92,160,239,161,26,43,133,223,162,58,209,54,44,154,197,201,46,249,61,69,225,206,101,93,90,233, +97,0,151,26,155,5,46,85,251,40,89,148,41,182,246,164,44,201,203,186,183,8,123,56,191,0,123,168,202,78,55,13,86,41,58,228,101,187,227,249,107,13,14,142,88,217,146,186,104,5,227,42,121,12,110,209,206,83, +161,185,194,54,61,199,100,37,122,28,214,59,123,104,6,101,82,145,101,15,13,52,142,150,145,88,101,108,48,134,18,44,129,227,233,214,254,90,151,214,224,192,241,20,169,133,228,95,192,67,77,117,22,184,84,198, +152,147,20,166,108,146,34,25,163,122,189,245,61,92,4,123,216,188,85,147,52,33,136,40,172,43,43,247,117,169,81,28,170,209,46,63,26,30,68,154,46,45,183,20,28,177,243,215,128,37,254,19,160,136,186,76,93, +57,148,245,65,169,9,91,42,249,183,158,108,29,217,116,84,87,175,243,190,135,110,4,158,204,177,135,38,12,241,129,28,97,221,51,136,52,217,66,71,80,163,37,210,52,84,119,142,238,120,114,137,10,196,93,131,29, +93,249,67,93,217,168,238,147,93,195,77,96,162,251,157,170,31,133,104,10,213,52,218,8,110,65,189,206,216,67,119,61,110,4,204,130,252,32,161,141,214,237,156,139,174,183,209,50,200,17,215,104,35,178,70,107, +172,134,235,214,97,176,170,90,231,190,203,144,47,205,39,107,172,169,168,194,112,51,50,101,140,38,24,193,30,154,120,152,111,171,24,112,228,5,62,124,12,112,222,133,235,245,176,222,152,138,38,172,140,228, +163,73,174,16,183,75,121,226,1,76,113,42,128,197,92,70,103,53,255,209,91,109,218,156,243,175,15,63,236,201,188,28,197,72,141,33,178,222,144,188,158,97,15,227,195,68,202,168,107,106,180,81,87,144,50,132, +163,186,185,226,111,163,119,116,187,52,74,11,115,56,21,148,22,235,198,10,202,157,34,209,216,38,114,239,184,255,67,111,50,65,9,69,79,180,49,81,158,88,103,236,225,162,76,223,195,16,130,203,252,251,248,225, +133,174,162,215,153,193,72,22,73,87,87,202,175,225,206,105,71,88,87,119,254,202,35,137,7,68,102,230,232,6,108,25,252,112,244,124,241,171,70,215,27,123,232,73,133,155,247,96,15,117,179,232,136,39,123,104, +224,209,112,97,12,127,29,24,158,35,175,128,84,227,205,157,117,103,151,38,97,75,163,177,27,9,13,137,219,33,178,95,195,123,130,46,245,207,52,184,162,190,135,142,186,199,65,166,169,222,114,236,197,191,204, +255,229,184,243,45,60,135,242,236,93,238,210,224,53,195,152,127,243,113,75,111,60,249,133,125,15,131,61,44,133,61,44,5,199,123,36,143,61,244,3,101,241,187,64,232,100,27,252,181,193,40,208,58,95,132,1, +74,67,93,175,117,99,93,216,32,165,65,142,180,191,142,174,150,254,58,58,77,199,154,108,244,86,214,84,136,61,212,181,99,14,27,193,189,210,217,91,142,189,136,27,67,39,241,28,198,179,111,185,193,124,200,97, +72,242,23,224,138,203,72,233,48,184,49,7,109,109,112,61,9,211,246,164,128,173,147,201,121,236,161,187,152,96,11,165,86,2,193,11,88,50,174,183,176,219,150,6,58,162,142,146,198,153,105,9,97,249,34,252,55, +2,233,19,245,241,239,199,213,22,254,58,8,83,147,144,138,216,67,5,172,6,175,26,177,135,158,27,123,148,234,233,162,7,110,158,65,185,41,247,164,194,205,130,192,165,201,66,172,159,142,68,160,176,126,141,206, +120,129,226,57,146,142,156,115,93,215,54,130,155,75,203,37,169,161,118,74,8,114,5,96,105,62,237,227,255,97,154,233,139,10,53,110,173,179,135,86,4,60,36,247,220,216,163,212,165,176,135,207,230,177,135, +94,30,228,200,197,250,105,240,9,38,56,90,135,69,244,213,29,125,33,142,166,81,60,150,43,57,7,231,182,209,61,152,195,32,77,93,178,124,1,34,4,26,235,191,85,103,125,15,45,127,252,28,246,240,13,216,195,119, +96,15,223,132,61,124,49,195,30,186,147,113,115,30,228,104,100,93,186,108,224,120,129,185,107,172,31,88,55,117,251,39,154,227,60,118,148,205,202,220,46,6,148,21,141,29,67,53,111,142,173,193,182,239,12, +246,48,26,197,213,58,123,248,67,216,195,85,176,135,139,97,15,231,193,30,62,7,123,216,43,143,61,116,148,93,162,178,204,97,224,120,241,61,231,176,110,233,232,186,108,185,70,59,135,227,98,4,71,59,238,231, +17,237,209,197,29,109,19,19,151,59,3,35,215,177,167,173,60,131,114,169,19,246,208,90,207,114,216,195,185,176,135,115,96,15,167,193,30,222,156,199,30,122,44,227,73,164,215,74,229,119,135,214,112,221,61, +250,29,234,162,110,246,93,155,221,104,104,180,27,9,71,217,17,55,37,13,172,214,117,218,165,204,192,230,223,211,208,96,15,85,218,154,117,25,153,67,133,107,244,174,49,123,56,12,246,112,21,236,225,108,216, +195,153,176,135,211,96,15,239,206,176,135,113,193,151,71,50,30,183,70,114,160,43,199,92,214,141,77,29,197,120,36,193,77,72,4,176,76,68,52,218,12,44,220,58,144,90,119,94,209,209,210,195,1,71,217,41,36, +0,226,28,174,83,246,112,57,236,225,108,216,195,105,176,135,79,131,227,221,15,123,216,43,199,30,58,178,193,30,122,75,161,35,236,168,26,188,98,47,235,178,34,198,227,154,236,7,15,238,208,145,12,183,214,165, +157,199,190,0,249,37,243,112,31,61,193,57,109,224,170,55,246,240,65,216,195,121,176,135,26,251,36,236,225,35,176,135,19,96,15,187,247,232,82,190,47,141,236,75,35,13,94,209,250,47,70,215,185,235,122,235, +252,13,131,243,27,60,234,210,26,28,55,170,105,184,243,217,159,247,164,178,154,236,225,178,205,102,15,251,194,30,62,15,123,248,36,236,225,20,216,195,105,176,135,79,195,30,94,149,233,123,232,238,201,3,55, +71,217,228,34,174,166,48,80,25,97,125,140,182,174,191,110,48,28,57,13,150,51,212,141,29,105,159,184,229,197,239,27,181,93,163,93,243,171,195,30,214,184,239,225,249,176,135,83,97,15,159,131,61,156,11,123, +56,29,246,240,65,216,195,235,96,15,219,180,191,56,205,91,61,74,13,246,80,163,93,155,227,170,10,147,8,221,217,181,213,188,218,53,216,53,87,151,246,16,32,72,210,24,93,127,239,252,118,116,253,183,170,195, +30,114,78,93,59,236,225,72,216,195,37,176,135,83,96,15,239,131,61,156,4,142,119,39,236,225,112,216,195,14,157,154,165,135,107,89,246,208,108,204,165,200,145,53,85,212,104,93,218,179,43,13,54,250,70,159, +67,141,139,86,158,46,53,0,36,105,33,60,219,190,179,42,236,161,135,2,246,134,169,21,246,240,244,179,142,253,100,50,236,225,84,216,195,212,88,216,195,219,96,15,199,193,30,246,129,61,236,216,169,93,26,69, +141,214,209,247,80,40,195,239,153,223,250,129,61,142,9,58,92,131,117,105,15,11,34,64,233,17,219,109,183,93,66,79,150,114,246,208,43,44,130,42,173,119,246,176,41,125,15,31,131,61,188,15,246,240,54,216, +195,155,97,15,39,216,10,16,246,176,23,236,225,128,2,125,15,61,127,50,231,21,201,19,224,48,90,7,115,232,92,214,112,221,219,219,92,52,40,214,217,248,234,118,111,139,178,135,237,97,15,31,6,206,186,29,246, +80,99,199,193,30,142,1,199,27,15,123,216,63,195,30,122,170,24,236,161,70,107,176,236,161,201,129,71,52,50,136,126,117,231,227,40,6,150,103,112,10,52,207,196,194,179,44,221,91,242,69,134,56,96,75,247,196, +217,190,135,117,202,30,14,133,61,188,15,246,112,2,236,161,198,222,4,123,56,30,246,112,4,236,97,23,216,195,203,96,15,187,117,239,146,222,88,232,92,214,96,63,112,156,84,100,251,29,6,131,168,209,13,150,61, +60,26,246,240,42,216,195,187,96,15,111,134,61,156,8,123,56,18,246,112,56,236,225,32,216,195,174,176,135,109,97,15,91,192,30,118,200,245,61,212,93,163,239,97,109,177,135,158,84,18,164,234,135,61,252,62, +236,225,80,216,67,209,218,235,97,15,135,195,30,14,129,61,28,8,123,216,15,28,175,135,45,0,97,15,91,192,30,54,129,61,60,253,252,195,146,147,79,89,127,247,187,59,28,31,95,128,115,52,78,27,13,110,186,190, +30,160,171,251,228,243,194,122,137,110,159,227,157,52,182,126,217,195,182,176,135,99,96,15,71,193,30,14,132,61,212,216,222,176,135,221,97,15,187,99,116,55,216,195,214,215,126,62,185,96,224,238,201,9,173, +118,75,190,119,198,238,201,55,97,15,247,135,61,252,74,53,251,30,198,61,29,91,156,61,60,31,246,112,36,236,225,85,176,135,253,97,15,123,192,30,118,133,61,236,10,123,216,25,246,240,114,216,195,54,163,247, +74,46,25,190,103,114,118,183,61,146,19,96,15,143,133,61,252,246,214,220,247,240,72,216,195,203,96,15,7,194,30,14,128,61,236,5,123,216,13,246,240,114,216,195,14,176,135,237,97,15,91,194,30,94,114,229,23, +146,115,97,15,207,161,239,225,247,207,222,35,237,123,88,77,246,240,87,13,170,239,225,105,176,135,29,96,15,123,194,30,246,133,61,236,14,123,216,9,246,176,61,236,97,107,216,195,230,176,135,23,195,30,182, +160,239,225,41,185,190,135,155,98,15,205,209,237,123,40,123,72,242,242,74,131,103,15,59,194,30,118,129,61,236,10,123,216,25,246,176,3,236,97,27,216,195,182,247,236,144,156,151,215,247,48,159,61,116,51, +178,85,179,135,45,233,123,216,14,246,176,3,236,97,91,216,195,182,69,246,176,200,30,22,217,195,34,123,72,47,213,234,242,76,213,254,11,149,253,7,42,223,120,108,253,103,79,81,213,234,94,47,33,21,42,159,239, +117,169,86,241,44,108,29,158,121,252,189,223,63,152,199,251,55,190,197,227,253,87,251,228,212,116,118,157,173,180,15,75,101,159,45,109,65,90,149,31,218,220,159,201,24,95,236,123,184,185,47,177,166,127, +175,78,71,184,166,31,174,46,254,126,189,24,92,100,15,139,236,97,145,61,44,178,135,159,138,190,135,89,246,240,93,216,195,217,212,163,175,164,68,123,252,241,199,162,178,59,237,211,203,30,46,133,61,92,14, +123,184,138,226,251,75,212,163,223,250,241,249,201,211,179,206,72,38,61,112,48,180,203,161,84,51,142,253,143,79,13,123,184,12,193,76,9,56,222,98,216,195,133,40,13,22,44,109,146,188,250,30,87,180,175,61, +41,249,227,71,95,74,74,95,62,32,173,246,83,194,249,120,171,102,15,95,135,61,92,142,20,74,99,95,132,61,92,132,134,100,62,178,138,165,107,46,73,214,190,117,110,242,211,223,124,35,249,4,104,107,226,173,39, +166,133,53,171,147,214,173,26,124,223,67,37,199,171,81,225,46,133,61,124,30,246,240,105,228,139,118,243,121,14,246,240,49,116,95,79,193,30,206,40,57,47,153,131,96,102,38,26,146,210,215,90,36,191,250,195, +1,169,177,191,255,243,158,201,224,97,167,164,181,103,65,18,207,184,44,191,96,244,95,56,183,94,227,29,125,94,91,199,249,246,60,110,59,236,155,187,239,107,131,75,255,170,117,39,158,141,89,17,130,158,45, +66,43,85,106,147,71,180,26,107,108,5,120,251,237,237,209,90,141,163,2,120,101,138,246,172,89,99,31,181,161,60,131,209,112,12,72,150,161,156,127,27,246,112,6,236,225,224,74,216,195,86,109,155,38,125,80, +7,61,56,235,244,228,205,15,143,76,254,242,207,207,39,127,73,62,151,252,248,215,28,230,183,58,101,3,44,175,193,245,61,44,195,216,185,176,135,163,170,193,30,134,78,100,214,243,199,37,255,253,151,47,166, +198,254,57,217,13,215,222,55,57,227,204,245,6,59,186,13,170,239,161,28,211,18,208,158,91,243,216,67,37,138,161,121,46,204,30,118,79,5,110,3,7,94,154,188,249,131,111,36,127,252,120,207,212,216,63,37,187, +38,143,60,245,205,228,212,211,78,76,13,86,43,237,99,85,82,23,247,123,206,107,206,169,63,66,180,182,10,249,212,74,175,173,227,194,252,59,114,251,236,157,249,186,77,149,92,26,215,221,158,231,2,251,11,163, +98,95,42,9,46,28,221,181,107,99,92,120,32,46,188,190,201,99,180,2,148,61,92,145,199,30,170,10,200,170,219,53,58,110,21,15,57,176,170,122,47,213,215,224,232,123,216,166,77,171,228,166,219,78,72,254,243, +163,93,192,108,191,147,26,167,60,170,193,244,61,148,61,156,87,128,61,212,40,37,76,217,43,212,85,234,40,18,87,17,175,84,73,61,135,106,29,239,154,214,93,67,228,182,190,141,231,249,201,229,157,79,77,165, +20,122,73,131,97,15,231,228,177,135,42,104,67,53,171,54,90,142,65,195,213,122,100,91,2,106,184,66,22,149,59,138,75,85,228,170,251,82,54,33,108,169,20,234,220,115,207,73,191,166,212,41,245,102,93,216,199, +72,237,193,125,220,103,157,131,61,62,162,108,147,186,54,191,95,75,19,140,145,184,244,254,60,159,217,228,29,0,188,245,47,32,27,122,12,186,44,109,147,77,84,252,213,196,137,29,16,142,141,65,121,51,42,141, +198,47,189,52,44,113,206,206,221,4,123,168,142,50,8,53,13,19,242,144,108,17,1,240,251,98,0,142,120,72,148,148,62,232,222,26,167,244,201,158,166,193,30,74,176,108,241,190,135,6,168,124,246,80,97,154,122, +13,165,132,193,31,70,235,48,65,173,108,15,68,127,198,151,162,130,39,20,119,122,132,55,254,171,155,86,48,174,43,55,8,246,240,23,176,135,15,231,177,135,186,177,31,54,154,197,105,176,163,154,223,29,79,183, +246,207,212,88,58,194,1,108,5,112,169,30,83,93,151,250,76,21,124,142,236,22,101,15,77,42,22,228,177,135,106,43,101,27,212,92,233,162,6,36,65,14,31,113,188,32,76,99,148,253,190,90,105,95,142,56,143,106, +30,71,87,99,213,115,137,246,104,176,210,69,149,184,6,46,233,52,43,255,245,206,30,154,65,153,84,24,53,7,14,28,88,190,244,168,163,140,70,113,129,227,57,138,142,166,110,29,93,46,253,181,223,51,82,251,114, +116,103,21,182,10,79,165,97,28,213,96,37,84,208,27,244,92,206,148,73,120,165,171,255,111,189,178,135,139,97,15,91,100,216,195,104,81,226,135,11,56,75,129,168,115,83,253,164,35,25,163,172,209,186,184,174, +238,203,240,5,25,172,130,63,212,75,100,27,28,213,104,231,169,177,78,23,71,89,205,87,244,61,172,55,246,240,233,76,223,195,96,15,77,48,92,86,2,204,10,149,157,70,43,11,86,4,30,13,226,2,184,52,104,233,206, +142,174,115,95,213,187,75,151,146,197,224,153,162,185,141,25,154,133,115,13,86,6,229,175,165,75,93,142,234,180,239,161,187,30,55,2,230,181,166,121,26,172,114,214,57,39,163,160,218,93,133,157,143,138,246, +232,138,167,209,174,187,17,185,29,97,215,95,217,7,245,151,142,172,115,54,184,37,99,130,107,183,130,115,179,49,33,105,229,139,170,124,124,20,182,69,155,146,58,101,15,223,132,61,236,149,235,123,232,91,247, +3,25,100,162,231,153,75,146,115,57,218,147,4,131,104,54,229,188,214,189,93,135,53,216,232,28,109,133,124,97,193,52,5,169,102,134,22,124,163,221,247,156,195,234,65,212,133,168,232,81,238,20,212,105,16, +166,33,135,66,157,255,119,148,127,175,19,224,214,241,85,216,178,87,174,182,181,123,249,65,60,26,200,182,140,200,92,158,82,254,131,247,123,247,62,135,121,40,145,246,239,190,135,139,243,216,67,71,88,30, +193,53,83,213,186,198,139,229,249,85,55,85,87,41,168,97,234,168,28,216,145,214,88,71,90,61,180,164,154,154,106,133,165,17,11,162,125,145,198,58,186,34,127,62,254,222,124,186,94,217,67,55,239,89,246,208, +15,161,52,216,17,146,105,80,60,42,88,21,164,153,243,210,200,171,7,56,234,129,239,184,44,233,242,210,108,161,162,15,206,176,34,186,52,190,191,169,190,135,181,206,30,62,154,199,30,186,3,138,38,113,129,207, +41,14,143,101,197,209,211,40,127,175,118,218,185,42,183,100,48,243,207,12,118,226,2,142,106,244,102,10,254,41,2,150,127,22,244,169,223,115,132,235,141,61,124,36,143,61,180,131,86,48,251,186,165,107,102, +80,106,241,53,54,19,113,237,133,31,218,151,163,209,142,190,47,194,151,148,207,24,198,5,40,209,181,54,174,181,169,55,246,208,3,55,207,160,178,236,97,52,136,203,246,22,13,124,39,176,60,63,104,252,218,63, +211,48,231,180,110,109,226,97,100,55,233,48,6,56,21,162,195,165,203,156,143,217,86,36,32,254,125,9,53,71,184,78,217,67,143,82,87,192,30,206,200,99,15,221,209,196,72,20,226,127,227,242,33,71,201,40,236, +135,23,246,80,254,31,237,181,3,204,50,249,48,208,5,108,169,225,78,7,31,255,94,220,252,80,25,123,104,222,109,38,70,26,250,158,39,32,168,110,151,19,161,109,214,170,226,224,203,229,81,26,183,58,157,249,181, +128,204,103,45,123,207,119,130,61,124,11,246,240,61,216,195,119,97,15,75,96,15,123,231,250,30,42,239,247,31,246,113,157,116,174,5,122,23,128,165,107,169,65,73,119,215,245,157,195,142,168,178,127,13,118, +139,232,142,201,253,176,1,77,252,206,224,230,60,207,130,150,26,109,6,102,144,84,64,174,190,186,78,250,30,190,15,123,184,22,246,176,4,246,208,115,99,143,82,61,93,116,131,238,37,4,30,227,152,226,185,135, +117,233,8,230,48,220,56,50,48,3,148,137,133,204,131,217,152,235,178,169,165,155,140,200,169,29,233,232,115,24,237,60,253,249,0,178,221,27,219,224,66,119,118,61,174,19,246,208,90,143,229,15,43,2,30,146, +123,110,124,107,142,61,212,72,31,143,101,60,115,10,238,48,48,60,221,57,58,106,185,100,185,62,155,85,57,127,13,88,38,34,26,171,225,174,207,238,180,76,73,253,115,183,138,174,223,49,218,102,83,2,32,117,222, +247,208,194,150,181,158,185,176,135,115,96,15,103,194,30,222,11,123,216,54,211,247,80,102,201,185,28,61,74,3,175,205,246,75,51,18,187,22,71,115,56,13,54,96,105,108,184,181,191,215,181,221,128,184,70,155, +165,57,175,13,104,206,219,160,93,116,233,77,177,135,126,158,26,245,61,92,5,123,56,23,246,240,57,216,195,233,224,120,15,194,30,246,201,244,61,212,189,125,98,77,141,251,56,2,195,51,25,113,116,205,186,178, +220,97,108,33,117,107,231,177,199,64,166,155,186,182,160,165,70,187,177,112,148,109,165,29,236,161,132,184,103,89,70,233,80,206,251,85,106,198,20,179,198,125,15,31,134,61,92,8,123,56,13,99,159,129,61, +156,2,123,120,99,1,246,80,215,54,56,69,119,90,3,77,92,21,229,145,77,96,120,186,173,81,218,173,99,126,131,71,13,118,148,77,59,157,207,110,66,52,216,99,158,232,163,166,34,222,226,154,243,56,139,10,72,201, +100,250,30,110,62,123,216,31,246,112,1,236,225,51,176,135,79,192,30,206,132,61,156,14,123,120,77,1,246,208,32,22,153,150,41,166,105,167,203,140,57,179,28,176,163,230,134,63,110,113,9,163,53,220,221,147, +174,238,94,218,63,215,181,157,2,158,98,214,43,123,120,1,236,225,147,176,135,207,195,30,46,132,61,124,14,246,240,17,216,195,27,10,176,135,190,97,3,153,198,234,202,206,93,179,41,221,217,229,72,131,5,40, +29,73,131,84,52,119,212,189,3,199,243,172,218,109,165,193,203,99,219,45,194,30,94,13,123,184,28,246,240,73,216,195,135,96,15,239,3,199,155,4,123,56,2,246,240,178,2,236,161,7,233,46,83,186,158,123,103, +183,140,110,5,163,215,161,35,152,5,45,117,97,127,38,140,245,124,107,51,217,195,218,233,123,120,6,236,225,99,176,135,79,195,30,166,198,194,30,222,9,123,120,35,236,97,255,10,216,67,119,46,242,134,30,201, +152,156,24,176,124,60,229,112,4,157,171,26,237,200,250,179,50,254,54,82,246,78,129,152,175,91,148,61,188,24,246,240,9,216,195,135,96,15,239,130,61,188,13,246,240,102,91,1,194,30,246,41,192,30,10,82,121, +202,104,52,117,163,174,139,199,5,69,46,57,49,159,13,102,94,102,16,23,26,68,52,22,189,219,28,246,16,207,168,189,190,135,151,193,30,78,1,206,186,11,246,80,99,111,132,61,28,47,142,7,123,56,16,246,240,178, +76,223,67,215,202,104,26,101,4,21,186,114,233,48,186,6,123,232,247,108,1,152,189,208,64,67,253,123,85,101,15,141,218,36,38,127,226,223,93,99,243,41,126,189,146,194,248,96,242,230,104,22,183,55,191,46, +47,146,87,40,61,228,28,248,107,4,161,113,94,94,237,125,206,140,214,154,67,15,61,228,147,225,176,135,147,97,15,111,130,61,212,216,91,97,15,111,132,61,188,6,246,176,27,236,97,199,60,246,208,81,18,180,12, +227,42,98,15,253,190,47,196,23,229,58,171,87,56,37,220,255,250,119,253,115,159,0,45,125,137,30,233,240,114,254,198,175,223,176,173,24,233,102,89,173,247,61,148,61,28,5,123,120,47,236,225,109,176,135,183, +192,30,142,130,61,28,9,123,56,12,246,176,39,236,97,251,28,123,120,89,142,61,244,195,215,38,123,168,177,185,235,226,196,241,222,169,243,190,135,178,135,195,97,15,31,192,189,199,194,30,94,5,123,56,28,246, +112,8,236,225,64,113,60,91,0,194,30,182,130,61,60,63,199,30,158,84,203,236,97,14,180,172,95,246,176,61,236,225,4,216,195,235,97,15,135,192,30,106,108,63,216,195,222,176,135,189,48,186,39,236,97,91,250, +30,94,4,123,120,50,125,15,15,163,239,225,183,97,15,15,128,61,252,106,53,216,195,10,250,30,190,99,147,71,138,233,63,192,229,231,49,79,237,142,119,38,207,17,185,50,169,138,252,141,174,81,175,84,62,204,95, +218,214,59,216,137,158,3,85,203,112,10,241,54,235,108,169,50,3,14,212,254,112,1,236,225,40,216,195,107,97,15,135,192,30,246,129,61,236,9,123,216,19,246,176,27,236,97,23,216,195,14,176,135,205,97,15,207, +129,61,60,17,246,240,4,216,195,239,108,6,123,104,32,107,16,125,15,101,15,59,193,30,14,133,61,28,12,123,216,23,246,176,23,236,97,23,216,195,78,176,135,151,195,30,182,133,61,188,148,190,135,23,192,30,158, +15,123,120,100,53,251,30,18,160,254,202,126,184,97,245,61,148,61,188,28,246,176,15,236,225,64,216,195,62,176,135,93,97,15,47,135,61,108,7,123,216,26,246,176,5,236,97,107,216,195,211,51,236,161,203,80, +161,190,135,89,246,112,171,232,123,216,25,246,176,59,236,97,79,216,195,238,176,135,157,97,15,47,131,61,236,8,123,120,65,245,217,195,21,36,21,165,174,179,185,165,199,46,180,174,181,206,217,111,242,216, +209,82,250,101,219,77,161,3,149,206,225,141,100,63,235,49,157,93,61,20,219,126,251,237,123,120,121,181,154,10,84,56,171,73,33,87,243,235,23,73,44,150,240,188,237,189,26,184,226,71,222,51,41,123,216,1, +246,240,50,216,195,246,176,135,237,138,236,97,145,61,44,178,135,76,163,98,223,195,234,178,77,213,14,90,149,253,7,25,252,174,200,30,242,50,246,228,113,187,182,111,90,246,248,247,243,37,126,45,88,41,156, +185,7,143,47,75,113,232,246,149,45,51,149,13,64,149,196,165,213,253,71,182,166,159,175,117,151,110,232,198,215,139,193,69,246,176,200,30,22,217,195,34,123,248,169,100,15,231,80,143,30,241,127,133,61,92, +1,123,184,150,226,251,235,212,163,223,135,61,156,9,123,56,152,66,222,133,212,182,62,85,125,15,21,204,44,3,199,91,10,123,184,4,165,193,82,216,195,119,96,15,151,175,62,37,41,161,106,57,147,66,222,149,215, +30,153,116,232,248,253,191,125,42,216,67,141,45,129,61,92,138,134,228,69,100,21,43,97,15,87,173,187,52,153,67,61,122,54,37,218,231,75,142,74,86,191,243,237,148,82,27,114,229,119,45,122,255,151,69,1,196, +173,165,84,39,223,162,88,240,188,7,140,156,130,236,111,42,90,89,226,83,105,226,65,133,126,87,59,90,218,228,241,163,143,62,122,85,28,143,58,209,42,170,131,159,244,232,209,132,58,110,255,180,211,86,105, +233,16,244,148,67,40,150,13,193,53,7,33,92,25,1,251,48,54,89,13,123,184,22,21,238,114,216,195,249,176,135,211,144,47,206,69,81,63,7,246,240,113,116,95,211,96,15,231,192,30,46,66,48,51,31,13,201,75,175, +181,74,94,88,222,56,153,69,241,125,58,245,232,146,117,7,37,127,250,219,238,201,127,253,101,215,180,162,168,152,5,163,63,110,112,236,225,114,148,243,239,193,30,206,134,61,28,138,228,184,229,38,250,30,182, +134,61,236,135,58,232,190,103,207,78,102,163,24,154,130,172,98,218,130,99,147,151,222,249,86,242,187,255,221,51,249,56,249,108,242,212,115,223,74,206,165,219,158,242,7,233,52,140,254,132,58,212,26,142, +140,151,123,116,76,57,103,22,35,220,33,183,65,169,176,173,231,38,71,24,17,247,193,136,187,111,177,87,169,237,59,29,89,65,203,123,239,109,207,168,14,162,90,63,134,81,188,189,156,80,115,100,87,202,68,192, +30,94,7,38,208,189,138,125,15,131,61,84,10,213,163,119,135,100,200,168,147,147,5,43,191,157,252,229,31,187,165,198,254,246,79,187,128,29,124,47,45,182,91,36,215,96,197,225,104,167,63,225,46,91,141,46, +165,89,206,58,202,171,83,115,135,241,158,185,21,60,204,171,208,96,100,8,251,34,54,25,1,163,176,192,198,172,246,42,213,141,39,76,104,153,26,91,86,182,30,199,251,201,79,110,225,153,136,24,101,80,178,12, +180,231,246,2,125,15,149,253,42,107,82,140,42,129,166,70,211,239,137,233,168,0,10,20,47,154,63,46,122,241,160,228,191,254,180,71,106,236,71,201,103,232,86,251,153,244,134,227,184,229,120,139,179,135,31, +194,30,174,130,61,108,145,233,123,168,222,67,69,158,234,30,197,222,89,99,67,57,235,75,208,240,44,123,216,161,67,243,100,197,170,111,38,127,250,251,46,169,177,127,74,118,76,158,152,254,29,70,183,89,90, +66,21,178,140,86,128,138,93,28,105,43,32,8,199,237,64,178,150,159,89,237,105,42,35,236,30,123,199,42,237,135,209,92,124,153,17,126,128,209,93,140,200,100,145,45,119,237,66,107,128,90,179,102,232,70,173, +0,23,193,30,14,201,235,123,168,94,75,113,90,200,152,162,217,140,74,31,5,226,74,15,67,148,166,208,69,49,140,47,201,81,92,239,226,23,39,37,171,191,148,252,230,79,159,73,238,186,255,184,114,109,214,22,237, +123,248,18,160,229,124,216,195,115,207,61,43,21,142,171,191,84,144,22,236,161,194,20,133,103,42,103,5,56,212,110,9,119,200,49,169,140,183,15,147,127,174,236,65,145,139,82,165,96,15,133,56,206,63,159,206, +3,115,191,154,118,239,242,247,214,141,183,24,123,232,156,93,0,123,216,50,175,239,161,35,42,2,160,178,78,67,163,155,150,172,131,134,218,74,204,95,251,125,71,90,201,82,116,186,84,6,225,173,225,74,148,125, +129,193,254,159,215,100,189,190,211,160,229,247,4,45,117,111,171,255,42,135,162,49,51,5,245,95,146,149,45,182,40,64,59,4,43,138,39,228,71,237,141,130,22,10,155,102,184,218,34,92,174,4,157,85,89,143,30, +237,255,101,231,232,215,95,191,26,109,228,29,8,66,111,66,56,54,60,13,80,49,103,163,239,161,163,171,32,52,84,118,146,44,26,38,171,36,160,37,153,166,193,242,75,126,63,92,58,8,83,25,38,255,190,218,77,69, +171,46,65,193,30,58,202,254,63,126,223,145,214,232,184,23,32,70,30,99,255,142,161,101,86,64,248,245,26,132,50,74,31,236,62,189,115,204,229,141,12,70,250,55,9,87,91,132,225,11,9,52,255,49,116,232,133,105, +155,108,59,71,155,84,188,247,222,232,228,87,176,135,143,229,216,67,65,231,104,234,166,8,77,165,172,46,170,156,208,17,214,109,179,56,94,24,236,75,8,224,82,185,146,243,88,165,173,122,46,133,108,106,51,85, +210,26,197,115,215,90,164,80,117,189,247,61,148,61,92,156,199,30,134,56,220,121,170,36,73,57,146,163,236,252,44,132,227,105,116,180,10,212,165,213,109,233,206,161,151,142,174,60,138,196,85,255,24,200, +182,24,123,104,6,101,82,17,125,15,3,123,119,148,165,202,28,41,141,86,66,232,200,41,13,118,148,131,37,142,118,128,126,47,180,210,6,43,133,107,74,152,84,204,43,14,87,171,169,198,90,44,79,94,66,141,200,22, +97,15,151,230,177,135,1,95,24,172,148,24,170,193,146,81,82,17,171,194,78,149,172,35,109,128,138,166,143,26,111,231,75,93,58,218,121,170,197,116,100,53,214,145,13,50,70,88,196,165,76,66,92,221,180,100, +154,17,187,94,216,67,55,2,211,51,236,97,72,134,99,206,101,113,60,231,163,2,81,21,119,65,165,69,0,139,14,151,70,103,95,142,174,236,191,161,204,88,125,166,112,135,146,255,108,131,42,147,20,139,230,146,105, +94,204,29,236,97,157,246,61,116,215,227,70,32,216,67,37,255,1,110,56,50,142,144,56,158,31,94,213,93,104,43,53,90,215,54,217,112,253,213,96,93,90,109,180,47,70,17,184,144,180,198,170,162,119,68,53,54,203, +32,154,173,169,234,83,243,165,209,209,247,208,151,80,103,125,15,223,41,192,30,58,207,12,44,226,120,70,85,35,181,35,165,241,209,226,64,5,173,129,73,247,142,102,143,10,195,237,202,147,133,45,53,54,56,165, +44,89,106,90,234,28,86,184,166,193,126,13,246,80,55,175,179,190,135,75,51,236,161,132,137,111,61,122,154,57,239,252,117,96,121,142,88,24,110,48,82,221,174,209,46,85,174,201,26,239,247,124,65,178,76,6, +188,232,228,19,216,157,236,97,116,182,12,5,188,178,69,113,188,224,150,28,109,231,117,52,114,117,191,204,38,228,95,4,184,247,88,207,87,161,64,88,193,58,44,198,227,37,162,123,150,175,195,172,123,189,9,32, +243,24,141,229,236,98,62,28,49,226,28,150,23,59,226,117,33,242,118,230,185,60,221,188,231,179,135,126,216,232,21,172,43,58,255,34,224,24,105,131,73,212,229,149,5,107,180,60,177,1,77,143,208,80,3,94,96, +64,193,36,103,141,117,135,229,250,171,50,87,99,213,103,58,178,74,15,29,109,141,142,23,80,171,125,15,167,22,96,15,53,46,186,225,69,143,165,232,93,168,139,250,2,162,171,86,96,1,74,136,29,89,231,104,112, +133,209,236,49,11,91,106,180,198,6,93,170,71,213,43,123,56,37,143,61,148,235,213,160,216,238,133,1,89,244,46,24,38,127,38,118,80,186,187,70,203,68,184,206,198,26,30,255,142,243,55,128,233,104,237,25,152, +109,189,178,135,158,65,5,123,40,33,174,152,155,14,176,229,236,111,182,51,94,246,215,26,106,212,213,3,12,110,70,103,35,182,192,71,246,26,11,151,34,189,34,126,54,214,120,255,126,180,39,171,87,246,112,78, +134,61,52,199,245,138,9,231,150,191,206,98,120,49,170,142,146,243,51,184,67,161,15,115,101,119,82,38,34,174,195,70,112,97,14,241,187,96,145,157,38,206,237,184,15,32,203,24,111,138,61,52,19,51,104,121, +160,80,35,246,240,135,176,135,63,132,61,44,203,176,135,26,155,101,15,243,49,60,95,128,35,165,203,155,99,187,198,186,70,155,70,154,136,184,14,187,54,155,126,250,61,95,68,92,126,224,207,70,107,80,93,62, +2,155,187,167,202,216,67,19,17,178,176,127,98,252,235,108,54,94,34,160,25,165,69,226,189,210,249,75,229,81,154,183,248,85,24,193,133,100,71,47,51,98,235,56,55,250,68,246,240,37,216,195,21,156,36,122,110, +236,81,170,167,139,238,77,61,157,112,247,226,215,184,46,42,174,160,240,247,142,138,73,137,203,148,143,35,104,70,101,202,233,78,202,180,210,104,173,209,186,184,135,5,26,237,75,113,57,211,245,29,113,95, +150,70,235,37,138,205,55,197,30,202,38,154,132,112,5,198,95,73,72,86,177,157,124,149,23,84,138,161,23,242,120,127,245,62,27,108,15,113,191,89,236,73,215,16,13,75,217,107,126,108,173,199,242,135,21,1,15, +201,61,55,190,43,175,239,161,27,118,131,77,164,153,70,100,221,56,122,29,26,152,92,146,162,155,86,164,154,38,30,97,176,219,73,95,132,121,184,107,182,153,151,251,226,104,227,25,145,190,42,236,97,147,38, +77,220,43,127,140,193,37,28,24,172,227,124,107,41,134,158,200,227,101,221,123,109,96,48,35,116,15,31,172,132,181,117,57,127,241,143,22,182,172,245,44,134,61,92,4,123,56,15,246,112,50,236,97,187,12,123, +40,250,230,65,92,4,27,141,13,12,47,250,165,233,170,206,83,93,215,163,28,221,216,157,146,155,10,13,119,78,71,219,63,105,52,127,54,118,78,254,187,182,21,11,246,48,80,90,231,170,104,64,208,105,209,203,165, +198,236,225,171,176,135,47,194,30,206,135,61,124,158,242,135,135,228,253,242,216,67,111,81,113,190,250,225,124,156,127,166,155,62,110,247,28,93,183,127,70,101,221,55,246,202,113,0,16,220,161,27,9,131, +88,128,150,186,183,81,121,155,109,182,169,191,190,135,143,195,30,46,131,61,180,214,99,249,227,25,216,195,219,10,176,135,186,182,203,74,36,23,142,174,115,209,15,29,84,154,110,171,193,110,250,157,187,249, +13,30,205,190,124,41,113,24,96,46,238,133,37,187,236,178,75,185,193,149,177,135,30,227,242,119,74,54,187,239,161,37,75,171,120,22,182,172,245,204,131,61,156,3,123,120,93,1,246,208,202,65,116,177,52,232, +184,129,112,116,205,153,221,42,250,120,48,224,25,86,24,157,109,240,232,241,80,244,59,20,234,210,224,32,212,228,153,76,45,5,70,92,126,156,207,166,152,186,181,217,151,155,10,127,150,192,246,91,54,22,139, +207,62,251,236,21,188,168,233,185,131,188,245,1,75,221,87,254,65,53,75,77,43,150,129,101,224,235,171,9,92,107,173,207,90,178,124,1,246,112,41,236,225,124,216,195,39,97,15,39,192,30,182,205,235,123,232, +150,205,141,185,55,156,241,31,166,153,148,115,81,23,245,113,244,226,36,68,183,142,6,143,6,173,120,252,153,88,166,60,178,221,34,236,225,117,176,135,107,97,15,167,195,30,78,133,61,124,4,28,239,33,216,195, +81,5,216,195,184,167,206,51,40,221,207,67,1,247,197,26,172,59,27,156,2,152,118,238,70,163,71,71,221,128,230,17,145,211,192,114,74,180,239,172,70,223,195,218,99,15,159,129,61,156,5,123,152,26,11,123,120, +63,236,225,237,176,135,67,242,216,67,163,167,134,6,123,104,132,118,151,164,33,113,236,19,204,161,17,217,29,143,112,86,160,240,174,225,193,30,198,174,72,55,174,247,190,135,205,96,15,103,194,30,62,14,123, +120,63,236,225,61,176,135,119,217,10,16,246,112,32,236,225,192,92,223,67,221,48,78,24,61,141,112,110,89,58,49,90,59,210,193,28,26,145,221,210,113,59,97,218,57,58,118,65,213,97,15,253,59,246,28,246,37, +147,81,253,134,61,241,10,42,139,181,199,30,118,132,61,156,6,156,245,32,236,161,198,222,1,123,120,43,56,222,157,176,135,195,51,236,161,41,167,1,196,32,227,94,85,146,44,216,35,55,240,209,73,203,53,213,220, +56,140,244,171,237,178,27,20,123,120,53,236,225,19,176,135,119,193,30,106,236,36,216,195,59,96,15,199,192,30,246,129,61,236,146,99,15,141,216,30,180,121,224,86,17,123,24,134,138,209,154,64,200,26,214, +128,61,44,171,19,246,240,24,216,195,177,176,135,143,192,30,222,11,123,120,55,236,225,88,216,195,235,97,15,175,129,61,236,15,123,216,25,246,176,77,215,99,146,203,59,181,78,175,118,171,237,190,135,245,206, +30,30,14,123,120,53,236,225,84,220,251,102,216,195,209,176,135,163,96,15,175,130,61,188,18,28,111,16,24,94,87,216,195,14,176,135,23,195,30,158,73,223,195,147,78,62,46,13,100,181,213,247,112,139,176,135, +151,195,30,222,1,123,120,35,236,225,85,176,135,26,59,20,246,112,16,236,225,64,140,30,0,123,216,153,190,135,45,96,15,79,135,61,60,2,246,240,187,176,135,223,130,61,220,175,26,236,161,121,114,52,69,207,244, +61,220,50,236,97,83,216,195,113,176,135,227,97,15,175,130,61,28,12,123,216,31,246,112,0,236,97,95,216,195,158,176,135,93,174,223,139,62,105,123,38,23,116,221,35,57,173,197,174,201,73,45,118,72,14,220, +12,246,208,53,190,65,176,135,71,193,30,118,133,61,188,26,246,240,106,216,195,161,176,135,3,97,15,123,193,30,246,128,61,236,6,123,216,9,246,176,45,236,225,37,176,135,23,193,30,30,253,105,96,15,207,128, +61,236,12,123,56,24,246,112,36,236,225,80,216,195,190,176,135,221,96,15,59,195,30,94,6,123,216,14,246,240,50,216,195,179,170,217,247,48,143,61,44,101,99,63,133,220,184,111,78,181,115,52,95,109,96,245, +69,30,113,188,141,46,210,174,176,62,188,73,110,15,150,62,87,81,63,211,155,186,21,144,80,228,90,227,21,199,86,222,161,181,203,56,20,255,245,113,199,29,67,62,125,97,210,29,246,176,31,236,225,96,216,195, +129,176,135,189,97,15,187,195,30,246,128,61,188,164,0,123,104,209,219,98,184,141,210,11,244,61,220,186,216,195,214,176,135,29,97,15,59,195,30,118,132,61,236,80,100,15,139,236,97,145,61,36,126,20,217,195, +202,228,194,85,82,226,85,247,31,217,224,210,249,98,223,195,180,233,99,177,239,97,77,188,168,38,127,183,82,69,124,77,254,241,134,248,119,235,197,224,34,123,88,100,15,139,236,97,145,61,44,178,135,7,31,124, +52,71,186,229,58,232,170,174,8,213,138,210,57,104,235,108,209,30,105,23,155,79,201,68,160,128,47,179,107,143,98,114,245,213,51,102,116,163,88,54,130,218,114,47,148,181,72,37,202,122,80,6,237,158,94,176, +175,238,235,141,55,250,243,244,165,218,208,150,167,21,101,24,192,142,12,123,248,99,216,195,89,176,135,67,41,228,53,253,191,192,30,190,7,123,88,6,123,88,106,213,146,66,222,72,216,67,175,154,252,212,177, +135,75,144,85,172,129,61,124,9,246,112,62,245,232,121,148,104,231,151,28,157,44,121,233,123,92,4,124,80,98,185,167,193,247,61,84,114,252,18,42,220,82,216,195,5,176,135,211,145,47,206,67,81,255,60,236, +225,147,232,190,166,195,30,206,133,61,124,1,193,204,66,52,36,175,192,30,46,129,61,124,158,226,251,44,234,209,51,22,28,147,60,51,255,240,100,46,133,188,57,212,182,174,190,225,192,228,162,139,191,245,183, +6,199,30,174,64,57,255,67,216,195,57,176,135,195,170,192,30,246,71,29,244,0,236,225,92,20,67,79,32,171,152,142,210,64,99,159,157,127,100,242,36,37,218,39,23,28,148,44,122,249,235,201,239,63,222,53,89, +84,182,143,69,241,191,82,170,89,187,197,217,195,85,48,17,139,96,15,175,175,128,61,20,197,177,104,30,216,157,162,152,44,123,216,19,246,176,63,26,146,219,30,61,38,121,104,250,145,201,19,115,191,151,60,181, +240,160,228,181,247,247,78,254,242,175,29,232,137,184,93,210,166,253,241,41,217,66,205,234,175,91,148,61,92,14,218,115,103,1,246,80,153,162,66,81,31,123,52,41,87,180,101,130,236,161,242,69,241,28,53,95, +241,18,4,42,91,182,106,150,12,187,254,148,100,234,156,111,66,152,238,146,252,249,31,59,166,198,62,246,244,126,192,90,199,167,69,58,81,158,45,210,247,240,103,176,135,171,11,176,135,65,187,132,80,84,101, +172,130,84,141,13,0,83,227,179,236,161,71,180,30,213,106,252,60,220,248,87,191,253,28,125,76,215,143,236,47,254,176,67,210,171,239,65,169,56,220,42,99,92,160,93,175,236,161,56,222,226,74,216,67,239,152, +86,210,160,134,82,41,176,70,43,120,81,44,174,86,75,33,139,127,38,200,161,139,171,244,107,214,236,130,228,87,191,219,181,220,216,63,39,219,36,211,230,124,33,53,214,199,34,184,35,44,200,37,215,68,173,249, +3,184,196,18,207,201,189,182,46,39,70,251,28,95,55,96,137,55,74,60,248,96,219,243,116,128,43,90,204,7,90,108,82,49,96,64,143,79,230,205,235,158,146,224,54,102,141,142,150,26,187,176,2,246,80,221,150,21, +127,13,149,81,138,54,98,170,115,84,243,4,157,38,196,165,72,77,189,135,146,98,95,142,226,50,15,229,207,63,191,73,210,111,192,209,180,246,220,38,249,240,119,159,73,186,245,252,86,170,46,208,96,141,172,215, +190,135,178,135,139,50,236,161,194,207,32,73,149,12,42,94,137,22,98,193,44,229,183,4,244,247,26,172,4,81,131,85,228,41,124,145,163,80,121,47,76,162,26,232,174,251,191,158,188,252,206,30,137,178,194,232, +144,87,239,236,161,1,42,216,67,231,168,98,20,231,172,66,82,141,85,145,163,6,75,99,52,202,71,192,35,248,67,193,203,48,88,145,154,63,171,164,73,142,73,109,101,52,101,21,159,117,36,219,180,61,41,85,20,40, +137,10,119,174,55,246,240,215,176,135,83,50,125,15,67,92,170,18,94,238,65,90,69,145,153,163,38,138,231,163,92,56,64,173,44,112,25,122,203,44,112,41,180,165,100,194,81,86,225,167,193,244,17,79,197,233, +46,107,42,120,85,22,56,127,45,176,171,160,245,171,30,97,109,203,171,38,153,22,43,89,178,20,166,29,152,37,76,55,152,195,204,161,47,163,118,157,205,220,45,67,117,179,212,32,50,117,106,123,54,0,253,49,98, +112,122,123,131,236,225,139,21,176,135,209,204,34,112,60,245,88,26,173,92,88,65,120,160,181,97,176,65,203,249,235,8,59,186,74,151,156,247,209,161,199,249,44,154,107,228,118,238,126,255,251,223,79,35,186, +145,93,137,97,24,235,247,125,20,210,24,189,189,87,147,37,239,101,138,123,106,165,27,243,120,59,219,78,238,168,54,48,24,97,103,103,254,243,185,124,200,101,72,248,223,57,233,164,19,152,83,189,8,50,253,48, +116,32,65,101,64,98,6,101,82,17,236,97,116,238,144,80,81,118,168,242,78,248,74,89,146,12,162,35,157,157,203,6,171,104,7,104,48,115,244,29,93,127,94,241,90,24,171,204,73,173,166,243,217,8,190,197,216,195, +18,216,195,150,153,190,135,206,91,37,134,89,28,79,249,175,162,51,121,96,165,132,170,237,84,206,58,143,117,107,231,174,236,161,163,174,192,212,64,165,126,203,191,167,190,82,49,185,198,42,84,13,129,185, +152,129,114,166,96,15,117,109,85,63,62,142,174,220,146,94,96,132,103,131,241,123,220,122,169,237,135,208,75,79,203,49,75,222,183,183,221,6,35,140,59,205,224,141,175,228,237,150,160,181,250,120,214,172, +118,233,126,118,229,202,62,140,48,15,27,129,153,121,236,161,35,108,84,86,76,170,16,92,104,67,233,96,52,136,83,14,172,65,186,182,96,135,17,59,0,106,93,58,216,97,213,242,254,29,93,56,224,45,153,168,104, +250,232,116,81,84,90,175,236,161,187,30,55,2,6,7,211,66,163,179,10,120,165,194,209,185,67,215,182,175,146,31,92,101,187,163,230,232,169,132,15,136,58,250,16,71,179,71,181,212,26,235,168,138,248,104,164, +145,90,0,204,165,206,160,232,186,110,196,86,178,164,238,43,178,172,58,101,15,223,45,192,30,170,126,207,146,104,142,138,110,24,109,75,204,168,140,186,42,100,205,168,2,197,115,148,157,223,206,91,95,140, +47,73,184,195,127,207,151,168,208,220,168,31,93,185,228,150,92,235,227,82,124,231,180,70,215,41,123,88,146,199,30,202,31,6,128,225,104,72,164,249,65,21,138,107,184,115,80,195,141,182,50,12,70,97,101,195, +18,166,142,174,25,151,198,26,236,132,57,194,72,71,213,216,16,45,185,163,225,163,196,138,109,19,212,72,215,11,123,232,230,61,203,30,186,251,201,186,93,68,108,71,72,244,198,53,89,227,253,25,93,222,209,118, +78,71,100,214,88,95,74,116,212,139,150,127,217,54,158,1,91,186,6,171,205,148,53,84,179,37,193,146,101,15,125,25,181,222,247,240,241,12,123,232,6,192,29,79,160,59,89,12,47,80,60,3,77,252,58,72,111,95,128, +115,214,192,22,13,230,116,91,201,51,255,45,141,142,174,150,97,172,187,44,85,186,209,231,129,155,28,202,13,14,209,170,66,214,200,177,221,111,19,181,63,100,112,150,51,239,151,19,157,39,229,184,165,125,203, +163,52,174,55,140,181,112,1,114,253,101,236,79,127,113,221,117,141,153,99,109,8,56,18,166,237,25,153,214,201,212,28,123,232,146,16,251,89,191,250,1,253,208,133,158,104,41,22,220,161,1,200,37,204,101,75, +227,157,6,26,27,232,94,62,74,171,177,238,161,221,101,121,105,137,13,166,20,165,58,119,53,80,131,21,166,42,34,55,227,50,43,51,19,99,244,63,36,247,94,78,130,162,193,119,243,28,158,38,32,113,158,139,203, +245,37,128,176,58,44,40,37,173,251,112,228,200,179,192,105,189,205,172,45,70,107,120,139,244,12,74,215,50,221,11,246,208,104,29,141,151,99,255,27,134,59,98,209,252,49,250,167,185,108,69,251,48,19,20,231, +184,65,79,183,15,143,136,139,20,226,208,192,145,142,81,175,87,246,240,249,2,236,33,215,58,165,193,37,46,26,202,54,120,116,30,187,188,68,87,60,231,176,209,218,100,195,44,203,168,109,102,101,64,51,66,71, +151,204,104,28,153,197,251,194,224,138,216,67,131,89,173,179,135,171,10,244,61,140,64,163,161,177,94,250,53,192,105,83,67,161,105,83,69,231,174,70,70,147,199,108,127,37,95,134,209,58,122,28,6,225,230, +250,27,17,91,176,179,94,217,67,143,82,61,93,244,68,194,51,40,31,207,164,116,215,112,93,191,234,158,142,170,41,167,35,167,177,142,164,155,138,108,55,60,163,181,107,177,145,219,181,58,208,90,151,40,151, +181,24,241,96,143,157,163,82,46,170,234,11,245,61,172,85,246,208,67,114,207,141,39,229,177,135,158,61,233,186,65,133,7,96,25,100,154,121,113,108,40,76,49,221,72,196,141,15,174,197,142,178,249,182,243, +217,159,115,205,142,141,136,9,76,244,46,213,147,234,141,61,124,17,246,240,69,216,195,69,176,135,143,20,96,15,141,164,177,222,234,194,6,162,72,56,162,253,159,163,235,161,128,91,70,71,214,109,161,6,155, +99,123,96,224,220,142,230,142,206,105,83,83,189,67,79,209,99,220,34,26,157,37,93,42,234,123,232,210,84,99,246,240,53,216,195,18,216,195,69,176,135,150,63,60,36,247,220,216,163,84,79,23,117,111,79,33,116, +235,104,14,231,70,194,188,216,229,71,132,199,244,209,173,98,140,176,155,254,216,248,103,185,67,119,87,110,34,28,105,61,195,151,231,153,181,255,87,240,17,230,206,155,234,123,168,193,236,160,222,101,53, +41,101,23,181,140,102,83,99,89,142,142,229,249,22,207,110,27,236,150,216,130,237,71,128,152,15,62,103,195,214,210,51,206,56,141,121,117,124,82,6,123,168,177,150,63,172,8,220,89,128,61,116,237,211,80,231, +173,46,233,40,249,193,53,192,20,210,253,174,188,146,238,236,38,34,26,60,154,106,250,253,32,210,52,218,75,79,124,89,70,93,62,100,57,123,104,183,173,58,103,15,45,89,90,197,179,176,101,173,103,17,236,225, +60,216,195,235,51,236,161,103,75,202,125,117,59,119,82,142,188,1,200,64,100,254,108,80,18,210,114,190,186,217,15,163,131,59,52,112,57,250,122,129,6,27,224,140,218,206,89,185,166,24,93,83,199,202,216,67, +146,145,154,177,135,214,103,45,89,46,133,61,92,1,123,248,2,236,225,51,176,135,55,21,96,15,221,190,185,131,49,130,154,49,197,33,128,6,107,148,115,88,23,206,54,120,140,230,142,49,202,190,32,231,178,169, +167,155,250,8,84,174,191,26,235,8,155,93,153,94,70,59,50,179,47,127,150,115,234,127,178,95,94,203,17,111,25,222,81,198,230,255,74,60,228,184,156,120,220,51,234,109,55,58,151,102,206,236,67,22,245,52,81, +182,140,124,185,196,139,112,71,195,30,190,2,123,56,11,246,208,194,214,84,112,188,71,97,15,175,203,176,135,206,99,83,63,13,246,67,153,109,233,206,26,237,73,164,235,175,6,187,44,105,116,52,119,244,247,142, +186,47,196,115,105,127,222,128,229,191,21,72,158,203,141,198,58,119,77,33,221,45,197,99,230,165,171,27,200,48,178,246,216,67,235,179,150,44,167,104,44,236,225,100,216,195,187,96,15,135,101,216,67,71,216, +209,13,238,80,163,117,235,112,105,15,1,60,172,211,72,3,156,201,133,110,238,232,26,197,253,89,61,163,65,244,61,180,24,109,125,246,41,216,195,201,176,135,247,195,30,222,3,142,55,17,246,112,112,134,61,52, +120,153,32,24,112,76,240,29,17,35,167,65,72,195,13,94,230,225,186,170,189,14,253,89,255,204,28,61,220,215,175,186,235,230,244,61,172,85,246,176,51,236,225,44,224,172,135,97,15,53,246,110,216,195,59,196, +241,96,15,71,228,245,61,204,103,15,117,65,247,177,230,188,206,65,231,93,176,135,166,139,97,108,117,217,67,61,138,23,251,191,100,95,117,211,247,240,90,216,195,103,96,15,239,133,61,212,216,251,96,15,239, +134,61,28,15,123,216,15,246,176,107,5,236,161,70,154,52,68,255,66,231,158,198,105,168,134,251,34,26,36,123,120,44,236,225,120,216,195,199,97,15,31,132,61,188,23,246,112,2,236,225,88,216,195,235,96,15, +7,193,30,118,133,61,108,11,123,216,177,115,197,236,161,129,200,195,184,224,135,29,169,168,27,121,124,99,190,156,13,78,254,58,232,211,122,103,15,143,128,61,188,22,246,240,105,220,251,14,216,195,177,176, +135,163,97,15,175,133,61,188,90,28,15,12,175,7,236,225,229,195,246,73,46,201,177,135,39,127,26,216,195,142,176,135,147,96,15,111,133,61,188,22,246,80,99,71,192,30,14,133,61,212,232,33,176,135,87,208,247, +176,213,128,221,146,51,97,15,143,130,61,60,112,51,216,195,6,213,247,80,246,112,34,236,225,77,176,135,215,194,30,14,131,61,28,12,123,56,24,246,112,0,236,97,95,216,195,110,176,135,29,96,15,47,130,61,60, +147,190,135,167,209,247,240,160,205,96,15,115,125,15,109,204,250,186,237,59,57,121,121,51,215,228,113,52,73,197,121,60,18,106,54,140,219,131,167,224,245,233,85,82,226,89,162,240,14,118,158,190,222,212, +237,229,213,210,104,94,113,108,229,253,104,216,195,238,176,135,215,193,30,94,7,123,56,18,246,112,8,236,97,95,216,195,222,176,135,189,96,15,175,128,61,188,12,246,176,57,236,225,165,176,135,199,110,6,123, +200,255,247,107,187,208,146,132,148,113,94,181,134,255,219,74,191,29,45,53,214,13,130,56,158,221,241,54,186,102,185,218,40,158,111,140,157,199,87,248,218,193,155,186,173,219,120,159,179,50,3,150,155,85, +94,132,43,123,120,5,236,225,48,216,195,107,97,15,71,192,30,14,132,61,236,5,123,216,13,246,176,51,236,225,229,176,135,93,96,15,207,201,235,123,232,154,237,246,206,199,163,88,179,53,243,114,140,251,39,71, +176,191,203,177,135,43,108,185,75,112,107,152,236,97,79,216,195,65,176,135,87,194,30,14,133,61,236,15,123,216,27,246,176,15,236,97,243,60,246,208,180,81,153,131,27,144,2,236,225,18,94,236,214,197,30,182, +129,61,236,4,123,120,5,236,97,23,216,195,203,11,176,135,222,146,196,200,254,145,125,236,59,100,104,75,189,113,133,12,172,140,81,45,37,35,91,197,186,61,35,215,76,217,235,162,116,225,239,241,236,159,155, +179,59,242,181,66,170,180,218,46,157,199,38,109,203,63,110,139,47,175,37,63,145,45,220,72,239,115,246,138,99,43,239,22,163,57,187,94,101,201,18,87,45,225,195,175,98,238,191,238,213,139,36,23,31,120,72, +238,185,49,229,205,15,188,217,204,203,190,188,255,202,43,161,8,76,75,220,188,123,151,142,215,203,184,235,193,208,231,185,109,201,185,170,161,118,179,60,138,199,202,190,133,110,219,141,85,218,223,161,70, +6,167,149,116,222,166,193,129,199,109,151,111,249,4,239,115,86,102,96,229,157,145,42,115,158,115,200,247,10,21,251,215,184,97,109,157,247,76,34,85,40,181,34,224,33,57,134,173,240,103,188,217,204,203,190, +188,255,138,209,92,225,73,5,70,22,217,67,94,106,145,61,172,170,18,190,198,46,93,209,127,196,40,216,204,85,252,174,216,247,144,151,80,236,123,88,93,151,172,233,207,87,41,181,172,233,127,210,144,254,126, +189,24,92,100,15,139,236,97,145,61,44,178,135,69,246,176,200,30,38,85,90,113,170,244,67,174,163,148,56,247,180,59,30,250,140,201,246,80,179,173,24,154,141,197,54,159,146,137,24,53,170,57,165,146,174,105, +35,155,117,235,6,80,244,190,41,149,28,43,76,93,185,82,9,114,15,158,174,233,5,251,111,190,217,143,90,82,239,84,29,84,168,239,161,236,225,106,216,195,53,86,45,41,228,93,13,123,120,230,167,153,61,92,7,123, +248,2,245,232,69,148,104,23,195,30,174,128,61,156,77,109,171,249,214,194,30,174,67,133,91,6,123,184,8,246,112,38,242,197,5,40,234,231,194,30,62,133,238,107,38,236,225,60,216,195,197,57,246,240,53,216, +195,229,176,135,11,40,190,207,165,30,61,27,28,111,6,236,225,66,10,121,11,168,109,117,227,104,248,208,67,15,249,164,65,178,135,239,195,30,206,133,61,28,94,5,246,112,0,234,160,201,176,135,11,96,15,159,70, +86,49,11,165,129,198,206,132,61,124,86,246,144,170,229,140,146,239,36,165,63,60,40,25,127,239,193,137,21,144,6,209,247,48,237,199,4,123,56,186,146,190,135,86,25,85,244,21,98,15,7,162,33,185,19,246,240, +49,216,195,103,230,30,154,60,133,177,143,83,162,157,93,122,108,50,125,197,65,201,115,47,125,33,185,227,137,253,184,12,248,43,255,216,162,236,225,10,208,158,187,54,193,30,170,166,83,51,25,236,161,101,83, +165,253,21,177,135,195,97,15,111,69,105,240,56,197,247,153,203,142,76,166,149,124,63,121,226,133,47,39,207,175,222,139,230,143,219,37,37,107,247,160,195,229,215,255,194,177,241,106,207,201,61,46,242,38, +55,182,161,135,231,206,220,54,58,212,43,24,165,209,96,108,207,115,1,98,238,69,98,239,70,99,10,213,127,232,218,181,49,17,120,32,53,222,245,77,30,131,80,147,61,92,91,128,61,12,193,104,200,129,149,39,170, +216,203,130,150,106,53,43,98,15,91,183,110,149,94,233,124,235,195,71,225,206,135,38,47,190,178,87,242,254,111,62,147,124,242,175,70,116,189,108,148,244,232,115,104,170,10,160,250,240,95,245,214,247,80, +28,111,73,30,123,24,173,0,53,216,95,43,97,176,242,175,228,80,176,67,41,161,70,171,112,87,226,224,159,41,57,204,178,135,66,89,170,118,125,25,207,78,63,61,121,253,135,187,164,70,106,236,159,254,218,40,185, +97,156,125,151,142,74,21,181,22,206,41,197,214,15,123,248,66,134,61,84,67,29,237,71,212,72,42,78,81,215,17,109,196,130,91,18,3,80,154,36,208,37,229,34,237,162,88,205,159,141,174,120,10,209,155,52,57,55, +153,252,200,65,201,31,105,246,248,87,242,10,141,253,243,223,26,37,175,188,249,217,164,241,57,135,164,245,100,21,4,234,74,168,78,124,68,25,102,149,174,205,241,240,90,143,142,115,167,169,159,217,224,136, +57,127,115,142,230,226,11,104,48,30,131,73,88,140,148,104,129,183,55,76,156,216,129,15,61,6,105,209,40,146,129,225,104,170,134,165,189,74,23,195,30,182,202,245,61,212,216,192,241,116,91,181,89,106,55, +20,172,100,27,197,69,131,169,128,181,68,122,228,31,162,233,163,127,199,191,107,35,26,85,4,234,70,198,142,255,86,185,27,255,215,159,182,73,46,109,254,157,20,1,208,96,93,186,94,250,30,26,160,178,125,15, +179,56,158,110,28,55,134,107,176,18,67,13,242,209,96,65,173,172,193,89,224,50,144,60,21,61,106,191,52,88,10,237,134,113,7,36,127,252,243,182,201,212,39,15,64,177,115,72,58,178,42,125,212,136,213,121,223, +195,223,192,30,62,158,97,15,3,181,113,100,53,86,221,165,2,22,133,102,234,176,20,160,169,188,11,162,37,232,52,191,58,194,126,63,11,92,42,82,243,230,113,217,66,221,213,231,164,147,142,75,222,249,209,246, +224,244,231,165,220,133,212,169,82,166,122,97,15,75,200,148,46,187,172,93,186,134,134,180,87,17,232,115,207,61,151,74,133,157,159,170,99,157,163,126,120,231,166,98,52,13,115,132,229,150,52,214,175,6,49, +61,192,39,26,92,232,29,106,188,92,167,149,65,56,130,235,111,37,255,126,170,235,244,251,26,27,55,149,215,57,123,104,82,145,101,15,13,80,82,105,74,127,149,28,70,175,52,141,118,164,21,166,41,70,11,180,54, +12,214,120,35,183,202,90,133,106,138,211,148,30,42,36,87,148,234,191,163,118,83,129,121,176,135,82,225,202,160,156,183,186,181,198,6,142,103,180,246,133,160,15,121,219,218,150,229,158,237,182,219,206, +98,249,55,60,39,223,8,182,228,3,222,201,142,104,17,34,177,197,44,25,255,53,124,120,147,244,122,153,178,50,97,203,126,4,172,190,201,242,60,246,208,165,71,118,73,208,42,84,180,26,173,246,42,58,120,56,31, +29,101,221,58,218,122,106,172,191,118,94,43,54,53,88,73,176,105,172,2,53,17,31,21,181,190,72,141,54,89,81,73,107,253,216,178,106,189,177,135,179,10,176,135,202,124,131,107,80,39,173,225,242,131,33,48, +13,249,112,180,29,10,120,218,101,202,209,117,158,71,119,75,167,131,75,147,222,226,191,225,250,236,163,58,62,191,239,161,115,92,1,92,128,150,122,129,20,57,243,250,35,171,150,22,242,40,240,45,203,101,94, +41,82,91,158,105,121,148,138,176,115,62,163,176,22,237,243,26,92,131,246,67,189,208,72,14,32,139,234,71,118,213,51,113,215,227,70,32,219,247,208,57,28,189,133,3,201,211,120,221,208,15,172,42,86,35,28, +61,71,217,209,116,25,138,245,87,87,119,25,114,100,245,136,192,104,125,105,254,123,1,92,170,140,55,34,231,179,135,42,7,234,172,239,225,123,176,135,189,251,116,74,69,225,209,6,48,0,44,49,0,231,178,40,64, +0,30,193,32,106,132,115,82,165,172,6,234,206,70,103,93,92,157,180,23,33,232,194,1,91,234,49,209,221,82,53,188,255,174,43,129,189,199,179,236,161,129,171,78,217,195,229,25,246,80,166,200,141,64,244,55, +51,233,136,198,82,190,132,172,225,65,158,58,210,170,106,101,135,157,187,142,184,198,234,250,78,5,189,34,154,179,138,231,249,239,4,224,21,168,80,180,1,12,246,80,1,91,157,245,61,116,243,238,26,104,192,16, +206,50,187,210,232,44,202,19,72,158,174,238,154,236,135,142,181,89,240,195,128,228,92,54,98,107,108,176,194,174,221,254,108,244,29,143,46,93,89,224,82,165,173,130,23,229,139,217,190,135,26,93,39,236,225, +147,57,246,208,36,63,182,120,26,45,57,150,143,225,133,225,126,223,15,159,101,154,236,223,226,58,171,145,241,98,220,80,4,146,23,45,255,130,42,245,165,10,132,57,186,186,180,58,205,48,56,159,61,116,221,174, +53,246,240,137,76,223,195,216,226,69,27,192,44,134,23,220,175,223,115,116,163,1,164,191,119,78,70,99,229,216,85,69,55,75,183,143,230,208,89,4,79,99,165,102,188,230,66,33,170,42,92,13,86,140,90,231,236, +161,103,80,209,247,208,125,172,143,110,24,198,198,72,134,193,249,72,173,244,183,198,198,205,44,142,180,115,86,195,131,25,14,216,50,75,150,58,125,164,75,237,248,17,146,99,123,180,152,104,40,58,21,7,208, +173,157,215,142,176,87,98,40,152,81,67,66,150,182,156,229,232,150,242,165,41,118,75,44,45,237,153,95,11,88,30,86,226,178,63,238,217,243,52,212,234,205,210,59,235,60,74,93,177,162,5,135,109,45,82,114,83, +172,70,34,77,52,206,224,20,220,112,4,176,232,155,230,146,98,196,245,113,79,172,177,170,226,3,197,51,106,71,192,114,217,201,111,193,171,209,65,151,58,234,174,14,245,218,247,112,53,236,97,159,126,157,82, +225,152,199,50,54,161,113,52,179,100,154,191,14,67,13,82,70,95,151,37,247,198,230,214,6,44,65,75,215,99,141,55,41,209,104,127,54,208,59,71,60,218,241,234,226,142,186,6,59,114,245,202,30,122,148,234,233, +98,150,61,212,173,53,208,145,118,148,162,103,154,238,107,186,233,174,71,44,199,156,218,244,49,32,45,247,200,26,111,210,225,26,237,75,49,133,52,105,9,150,49,54,38,206,113,163,181,57,115,101,125,15,205, +186,106,165,239,97,176,135,247,229,177,135,50,74,145,104,184,222,154,33,105,172,203,77,52,151,114,19,17,27,8,119,77,46,73,206,99,247,190,110,33,253,115,119,90,166,147,254,27,102,110,70,240,104,4,107,140, +48,120,5,252,161,225,42,107,205,171,157,191,2,211,209,218,164,86,250,30,6,123,248,2,236,225,148,2,236,161,110,23,57,116,52,90,214,88,215,92,207,172,220,60,184,19,242,236,202,17,214,96,183,131,142,176, +220,161,163,239,252,214,181,221,44,232,222,206,251,184,72,65,23,119,23,84,175,236,225,98,216,67,203,31,30,146,123,110,156,101,15,61,112,51,141,212,29,253,192,26,27,93,165,117,89,71,209,12,203,77,126,184, +116,128,150,186,185,164,139,157,243,252,59,238,178,28,105,179,46,255,61,51,46,95,104,101,236,161,57,182,81,186,86,216,195,85,176,135,26,107,249,195,138,192,164,2,236,161,91,54,215,74,179,48,247,177,49, +111,53,88,12,47,139,224,229,55,120,244,103,162,103,90,128,150,206,103,93,217,101,203,141,126,52,140,171,136,61,116,93,142,70,234,53,234,123,40,123,104,21,207,194,150,181,158,37,176,135,139,96,15,199,228, +245,61,12,254,208,45,155,155,0,163,175,70,4,70,43,144,165,11,27,157,125,28,237,64,105,245,128,184,124,72,131,245,16,243,99,59,90,6,123,232,250,91,21,246,176,198,125,15,101,15,45,89,150,194,30,174,130, +61,92,10,123,56,3,246,208,138,64,244,61,140,62,135,193,30,58,31,221,238,105,176,174,236,252,117,207,171,193,158,111,249,4,138,167,75,251,231,46,89,6,47,35,182,211,131,68,33,53,54,120,38,83,201,170,178, +135,74,142,107,196,30,142,133,61,124,19,246,112,46,236,161,133,173,180,214,67,249,227,6,216,195,203,59,53,75,147,17,51,176,248,64,158,57,57,23,221,212,199,21,83,26,172,91,107,104,92,7,23,61,15,13,92,49, +194,70,107,65,105,215,219,136,202,110,24,42,99,15,189,246,17,35,127,207,38,98,137,250,106,37,199,188,180,38,57,169,241,126,124,77,207,167,55,42,181,112,86,181,3,19,191,171,154,10,214,213,85,156,14,174, +181,24,109,125,214,146,165,85,60,11,91,143,193,30,222,7,123,56,34,175,239,161,208,163,115,206,0,226,218,108,48,114,244,76,50,52,80,182,216,204,204,125,176,135,118,142,176,115,220,209,213,149,205,172,194, +208,184,168,100,139,244,61,180,24,109,125,118,26,236,225,99,176,135,147,97,15,31,0,199,187,5,246,112,88,37,236,161,153,153,35,103,0,50,241,215,16,65,45,95,132,75,146,167,34,158,162,84,151,61,172,243,190, +135,87,192,30,206,3,206,154,2,123,168,177,247,193,30,222,3,142,119,63,236,225,213,176,135,151,119,106,65,126,125,69,154,2,122,170,105,224,137,190,135,38,249,46,29,186,103,176,135,38,12,6,163,44,123,232, +239,55,163,239,97,221,177,135,163,97,15,159,131,61,124,16,246,80,99,39,195,30,222,15,123,120,51,236,225,64,216,195,238,57,246,208,61,179,235,179,145,85,228,78,35,53,38,154,36,251,107,71,52,114,227,90, +96,15,75,165,93,64,141,188,134,70,84,64,76,64,165,254,174,170,247,43,213,75,251,67,188,233,163,89,219,30,98,46,174,165,150,91,170,204,192,202,251,77,176,135,207,192,30,62,2,123,248,32,236,225,205,176, +135,19,97,15,199,192,30,14,131,61,236,14,123,216,238,138,245,125,15,141,224,217,190,135,186,178,91,185,56,139,218,106,216,195,209,176,135,51,112,239,73,176,135,19,97,15,199,193,30,222,0,123,120,157,56, +30,24,94,111,216,195,46,244,61,108,14,123,120,246,167,165,239,97,103,4,38,15,192,30,222,5,123,120,3,236,161,198,94,3,123,56,2,246,80,163,175,132,61,236,1,123,216,14,246,240,108,216,195,99,96,15,15,134, +61,252,54,125,15,191,190,181,246,61,188,24,246,240,86,216,195,219,97,15,111,128,61,28,9,123,56,28,246,112,56,236,225,16,216,195,129,176,135,189,96,15,59,193,30,94,10,123,120,54,125,15,207,160,239,225, +33,85,100,15,221,5,25,248,44,169,52,40,246,176,39,236,225,24,216,195,177,176,135,163,96,15,175,132,61,28,8,123,216,31,246,176,31,236,97,15,216,195,78,176,135,173,97,15,91,193,30,30,127,246,30,229,93,106, +35,122,199,109,104,174,195,6,49,143,113,92,211,173,39,49,215,255,218,224,216,195,51,97,15,187,193,30,142,132,61,188,1,246,112,20,236,225,48,216,195,254,176,135,189,96,15,187,193,30,118,129,61,236,1,123, +120,94,53,216,67,51,40,140,125,13,227,27,54,123,216,27,246,112,24,236,225,53,176,135,87,193,30,14,133,61,28,0,123,56,8,246,176,229,230,177,135,101,68,247,149,185,165,167,13,43,137,148,218,17,60,34,180, +82,165,54,121,220,118,147,189,27,171,203,35,240,15,138,233,184,182,29,206,197,32,61,188,188,90,77,5,116,217,106,206,184,86,123,17,174,119,195,90,178,116,100,44,108,145,132,252,165,45,236,97,23,216,195, +110,176,135,221,96,15,59,86,192,30,146,154,22,217,195,34,123,184,62,131,210,133,63,171,199,85,199,75,171,44,31,174,132,68,115,238,8,97,185,13,147,250,108,108,229,221,139,112,173,207,146,66,150,145,94, +150,225,222,43,216,249,164,87,47,122,27,161,135,228,156,50,46,39,32,173,32,197,44,229,231,151,242,60,155,187,18,170,41,255,206,9,60,222,165,99,154,120,8,79,145,61,172,206,232,22,220,15,87,247,31,200,255, +249,92,80,43,178,135,188,136,221,115,110,191,55,95,247,229,81,130,16,143,224,245,62,60,222,1,189,7,143,160,166,64,246,246,149,45,51,213,29,160,26,207,225,234,254,135,91,250,231,139,6,215,197,8,20,217, +195,34,123,88,100,15,139,236,97,145,61,44,178,135,159,18,246,112,1,133,188,107,97,15,207,250,191,192,30,190,64,137,182,4,246,240,37,216,195,133,212,182,90,110,13,236,225,26,218,157,188,140,10,119,53,236, +225,139,176,135,179,145,47,190,128,162,126,1,236,225,179,232,190,102,195,30,46,132,61,92,130,96,102,17,247,87,7,123,184,136,226,251,66,234,209,11,192,241,230,194,30,46,163,144,87,66,109,171,103,67,101, +15,75,233,218,243,19,216,195,133,176,135,35,144,28,183,106,125,65,174,45,216,122,173,166,183,143,91,98,181,50,209,166,109,211,100,16,234,160,71,97,15,95,128,61,124,22,89,197,92,148,6,26,59,15,246,112, +54,37,218,25,84,45,231,193,30,174,131,61,188,185,161,177,135,75,96,15,111,0,19,232,209,163,93,122,19,177,149,65,37,17,26,167,54,196,91,199,179,45,255,178,125,15,123,209,247,112,8,26,146,123,97,15,159, +132,61,156,5,123,56,19,99,167,81,162,93,8,123,56,23,246,112,1,181,173,59,40,247,120,251,226,22,103,15,239,46,192,30,170,229,10,125,181,242,35,117,207,54,197,8,246,144,171,167,54,234,123,216,138,190,135, +35,97,15,239,66,105,48,141,226,251,60,216,195,57,176,135,143,81,181,156,66,33,111,54,181,173,27,110,255,22,117,170,175,127,76,9,54,5,180,234,157,61,108,217,242,252,180,76,170,86,74,85,64,62,123,152,109, +114,161,216,76,249,162,198,170,232,211,197,85,14,232,17,209,247,80,246,176,29,236,225,157,176,135,51,23,31,145,26,251,8,37,218,135,168,90,62,60,123,223,100,218,242,207,39,150,112,191,243,157,45,192,30, +14,29,218,35,117,89,105,209,192,241,52,216,95,43,82,19,231,81,200,162,2,79,233,161,149,127,37,193,234,53,53,88,121,146,47,73,217,145,74,191,44,123,56,108,120,207,228,218,155,191,145,220,69,241,93,99,239, +159,246,149,228,241,57,123,39,207,45,221,35,249,209,207,118,76,238,125,224,43,245,215,247,48,203,30,170,191,12,66,205,17,84,149,167,180,33,4,45,249,24,143,194,23,101,134,42,229,125,9,106,63,148,60,105, +116,180,1,244,215,190,144,142,157,218,37,19,239,254,18,134,126,49,121,235,71,59,39,63,253,229,142,201,199,31,55,74,126,247,251,109,147,171,70,125,199,34,250,95,40,217,172,169,55,246,208,121,26,18,96,93, +87,195,53,88,201,97,0,151,217,142,90,18,45,209,37,79,142,73,14,66,44,64,13,151,222,224,11,19,197,19,183,107,219,246,124,34,246,33,120,197,62,201,223,128,45,255,130,161,26,251,243,95,108,207,84,56,140, +159,59,51,173,63,81,116,255,53,7,249,139,45,10,120,71,95,238,212,211,211,212,242,163,220,141,78,60,80,212,52,195,237,22,241,225,74,144,19,150,217,38,219,219,27,94,127,253,106,244,145,119,0,102,220,132, +20,105,56,218,140,126,68,220,245,115,214,145,213,88,229,191,10,76,163,203,142,66,21,71,88,247,85,170,164,190,82,163,197,120,132,60,178,252,97,24,28,88,143,114,39,37,135,209,247,112,230,204,189,83,99,255, +10,74,27,35,123,251,237,95,135,90,59,33,173,44,42,88,67,109,240,15,12,45,179,2,226,133,132,222,209,151,59,58,46,239,53,190,145,193,188,221,73,188,233,69,24,190,16,189,242,127,216,19,220,171,42,86,174, +28,132,64,109,8,210,163,209,184,223,109,168,95,251,164,198,58,111,253,96,142,168,250,42,233,20,53,147,34,57,182,244,83,142,164,44,41,24,68,221,58,31,199,139,166,113,33,28,87,222,20,234,30,131,89,220,59, +255,224,131,95,72,141,253,232,163,70,104,59,191,150,242,74,10,76,213,132,88,101,172,179,190,135,203,10,176,135,10,65,213,72,170,194,83,149,19,56,158,226,52,165,133,142,152,26,173,112,235,172,59,235,222, +6,51,131,154,106,91,167,128,110,173,198,90,87,117,244,124,142,60,242,8,188,164,17,112,200,87,153,227,223,75,141,85,58,33,224,81,103,125,15,205,160,76,42,178,236,161,163,171,24,52,186,120,104,180,116,153, +163,173,162,86,25,162,115,57,88,98,49,30,231,109,52,139,243,37,132,193,122,130,198,58,29,164,94,214,27,122,100,249,189,243,163,71,239,133,64,253,172,244,69,104,176,198,214,41,123,88,6,123,216,42,215,247, +48,88,7,85,240,26,171,80,60,24,37,229,196,202,254,109,95,224,7,215,181,29,57,213,180,97,112,204,91,35,180,208,86,244,109,17,184,244,239,248,178,20,171,25,165,77,71,197,238,14,60,240,59,169,42,207,204, +77,87,86,0,87,103,125,15,221,8,60,159,199,30,186,214,134,116,223,128,165,176,91,1,154,202,120,163,180,192,164,48,135,35,22,107,177,8,173,70,235,202,126,117,116,85,229,233,250,217,246,37,190,44,255,190, +83,197,23,26,236,161,232,157,252,176,66,86,71,184,206,216,67,119,61,110,4,130,61,116,233,8,137,111,0,30,126,117,196,195,104,197,222,126,104,215,90,13,114,148,13,78,206,97,13,150,41,14,99,163,111,105,116, +183,212,67,148,42,70,119,75,71,53,216,67,93,90,114,188,78,251,30,254,40,195,30,10,94,72,157,4,92,21,40,158,95,131,65,52,123,210,205,213,62,135,209,138,77,53,82,131,133,46,117,99,37,136,1,91,26,225,141, +1,26,106,92,8,224,82,44,64,238,33,192,44,5,111,117,222,247,176,44,199,30,154,235,6,98,19,173,189,242,187,226,5,137,22,236,146,134,235,154,70,109,93,216,209,53,106,107,108,180,17,139,150,160,209,240,209, +23,166,167,184,2,200,71,249,40,124,177,155,64,189,244,61,116,243,30,125,15,179,236,161,18,253,66,40,94,128,146,254,153,202,90,71,203,145,14,118,73,23,215,125,29,77,231,104,192,29,1,107,154,118,234,45, +145,155,251,239,233,210,249,236,161,178,166,58,97,15,159,201,244,61,116,139,39,119,104,210,225,60,14,131,163,73,156,95,179,187,35,63,116,228,217,186,172,198,58,146,142,158,134,233,9,254,29,221,54,18,25, +217,37,159,184,233,197,127,79,131,213,104,214,11,123,248,84,134,61,116,63,235,19,237,55,3,165,13,186,204,15,239,168,250,232,154,26,228,207,58,146,26,171,209,241,146,2,180,204,54,123,212,107,98,186,4,186, +235,86,82,113,170,130,212,122,233,123,232,25,84,150,61,244,106,25,141,209,200,112,67,243,232,252,254,165,206,95,151,40,85,242,26,107,162,97,186,169,209,190,16,163,125,140,164,198,5,85,154,229,15,141,208, +193,30,218,125,39,230,112,157,178,135,11,242,216,67,247,190,174,189,217,17,20,189,113,46,234,174,70,231,252,101,201,45,160,235,176,155,9,19,11,255,220,23,18,237,254,52,62,70,84,117,124,176,135,170,242, +100,32,162,199,146,73,136,116,169,154,107,137,211,58,233,123,248,82,1,246,208,17,114,30,26,77,205,178,52,84,88,203,76,75,134,201,81,21,250,144,127,112,13,118,116,125,92,123,205,190,220,100,248,179,65, +134,235,230,209,191,52,140,53,94,72,205,236,180,211,78,41,30,192,57,86,154,106,42,61,54,98,59,226,126,85,151,105,240,130,31,254,167,215,176,123,51,185,130,25,118,76,189,120,14,227,249,82,249,110,137,64, +241,85,70,103,33,46,247,50,35,183,142,189,40,151,30,52,101,123,215,138,173,96,51,242,225,11,210,163,84,79,23,179,236,161,110,237,40,105,168,110,43,111,168,193,110,32,2,140,142,142,90,209,43,205,101,41, +246,189,190,12,127,214,191,31,148,184,243,63,206,192,116,107,71,220,249,237,188,173,87,246,208,115,227,135,10,176,135,126,88,151,22,13,117,84,163,65,156,249,176,183,59,184,83,10,110,201,44,203,196,67, +151,118,30,155,74,202,67,184,6,235,33,177,159,54,8,106,184,115,91,131,93,17,182,8,123,248,4,236,97,251,203,46,74,143,97,132,55,188,158,198,104,173,219,105,172,249,175,105,164,52,139,198,70,251,63,185, +195,56,0,112,132,53,88,94,41,250,29,250,146,156,243,209,220,81,208,210,0,24,151,29,184,254,87,133,61,244,24,24,20,224,143,118,19,240,130,125,117,95,184,242,241,57,253,216,30,27,28,0,48,103,186,49,159, +22,227,98,171,137,138,239,29,127,252,177,140,194,250,190,135,193,30,122,72,238,185,113,150,61,212,197,141,222,70,82,231,164,251,88,221,88,200,82,68,39,238,239,200,114,135,238,123,53,216,121,28,253,136, +205,196,156,22,49,210,6,50,71,218,151,89,21,246,208,249,91,171,236,161,229,15,43,2,247,103,216,67,79,60,52,214,17,48,176,152,57,153,62,58,186,177,89,48,133,212,64,183,128,133,184,67,119,82,113,29,77,128, +150,70,238,200,180,220,239,86,133,61,116,247,228,134,162,86,216,67,11,91,214,122,74,97,15,151,194,30,142,207,177,135,190,81,207,161,53,214,115,101,231,173,187,30,153,67,83,200,32,210,226,138,41,3,151, +191,246,48,192,185,237,153,151,47,71,236,214,32,167,193,6,193,136,254,26,161,177,85,97,15,253,12,181,194,30,90,178,92,13,123,248,50,236,225,74,216,195,185,176,135,86,4,60,36,119,99,174,209,209,2,208,219, +31,12,68,206,93,131,146,115,87,227,162,73,171,199,56,254,222,23,17,13,30,3,167,117,58,24,188,232,218,145,48,247,82,238,169,58,236,161,141,108,236,123,88,99,246,112,60,236,225,143,96,15,23,195,30,90,216, +74,107,61,148,63,38,100,216,67,48,244,244,222,43,143,100,60,80,23,154,140,249,235,154,27,110,29,125,15,141,218,113,156,227,124,119,30,59,194,110,236,165,74,119,217,101,151,242,168,108,103,189,202,216, +195,232,123,72,6,86,115,246,208,98,180,245,89,75,150,86,241,44,108,61,5,123,248,48,236,225,168,10,216,67,231,157,9,73,156,116,248,107,231,187,153,152,217,86,160,180,6,182,232,87,106,170,233,89,116,44, +63,177,73,216,34,236,161,197,104,235,179,207,195,30,62,13,123,248,56,236,161,181,30,203,31,87,193,30,14,26,220,53,45,142,101,251,30,122,200,38,149,230,232,187,143,53,13,148,217,119,9,50,160,197,253,89, +38,43,30,10,102,217,195,72,48,60,217,144,28,53,117,204,54,141,139,75,136,76,57,189,187,3,87,254,13,71,61,43,106,181,239,97,119,10,87,75,128,179,158,129,61,204,22,182,30,129,61,188,46,195,30,122,232,150, +237,123,40,137,166,225,126,213,112,191,134,1,166,132,181,192,30,218,86,172,110,250,30,142,135,61,180,62,107,201,210,194,214,84,216,195,71,96,15,239,130,61,28,14,123,216,171,130,190,135,230,185,49,202, +193,28,198,87,137,83,95,66,117,250,30,250,194,204,165,57,211,250,27,123,228,55,108,43,198,72,151,213,9,123,104,49,218,250,236,147,176,135,83,96,15,239,130,61,188,29,246,240,102,216,195,171,96,15,251,192, +30,94,6,123,216,9,246,80,119,246,236,201,179,229,56,56,55,39,174,13,246,144,13,194,223,217,41,189,99,195,56,150,198,181,120,202,20,50,42,105,23,155,79,169,204,23,19,216,97,147,23,121,102,255,16,184,98, +103,230,198,165,44,57,211,201,151,223,98,157,93,238,21,199,86,222,39,192,30,138,214,78,134,61,188,29,246,240,22,216,195,27,97,15,199,131,227,93,7,134,55,16,246,176,59,236,97,27,216,195,115,96,15,79,62, +37,173,253,164,163,226,19,87,172,250,213,199,163,87,151,33,183,127,206,117,159,66,115,214,128,150,235,141,170,177,239,242,34,211,238,120,185,134,113,125,49,80,180,199,78,91,106,177,63,187,145,128,189, +50,245,44,238,182,23,129,166,39,163,244,60,155,131,247,144,39,44,87,102,96,229,189,43,2,147,41,176,135,15,194,30,222,8,123,168,177,99,96,15,175,131,61,212,232,81,176,135,253,175,253,124,210,105,224,238, +201,249,176,135,199,195,30,126,239,72,122,31,86,147,61,108,80,125,15,155,193,30,222,3,123,120,63,236,225,141,176,135,215,195,30,142,130,61,28,5,123,120,21,236,225,149,176,135,3,97,15,187,195,30,182,130, +61,60,175,249,174,201,57,205,119,72,14,171,34,123,232,188,247,144,206,249,109,52,102,206,54,140,190,135,253,96,15,111,134,61,188,5,246,112,28,236,225,117,176,135,87,194,30,14,131,61,28,2,123,216,15,246, +176,59,236,97,135,222,123,38,237,251,237,148,156,92,77,246,16,215,205,178,135,165,13,162,239,225,89,176,135,189,96,15,175,135,61,188,25,246,112,28,236,225,53,176,135,195,96,15,7,194,30,246,133,61,236, +57,242,11,73,255,177,159,73,154,182,217,59,173,9,185,195,177,122,80,73,223,195,173,131,61,236,15,123,120,13,236,225,56,216,195,49,176,135,163,96,15,71,192,30,94,3,123,216,161,0,123,232,142,203,61,182, +91,79,11,225,36,28,191,197,157,215,152,46,230,250,30,110,61,236,97,123,216,195,110,176,135,189,97,15,123,193,30,118,222,4,123,200,124,45,246,61,44,246,61,44,178,135,181,172,151,174,44,65,201,33,120,210, +100,202,132,204,114,188,226,88,64,242,112,30,239,196,241,108,248,90,30,111,32,156,196,227,125,27,254,218,239,249,103,222,189,113,98,238,192,205,212,80,192,242,80,30,91,236,10,113,126,145,71,110,121,7, +158,74,123,148,86,8,135,86,102,72,117,255,60,103,120,145,61,228,69,20,217,195,234,122,79,109,252,124,145,61,172,141,183,152,255,111,20,217,195,34,123,88,100,15,139,236,97,145,61,44,178,135,181,156,75, +111,169,190,135,255,103,217,195,23,168,109,181,218,90,216,195,87,80,225,174,133,61,92,10,123,56,7,249,226,98,20,245,139,96,15,167,163,251,122,30,246,240,5,216,195,165,155,96,15,231,195,30,174,164,144, +87,74,109,171,87,67,103,15,95,128,61,28,89,5,246,112,48,234,160,41,176,135,47,162,24,154,150,97,15,231,195,30,206,165,68,59,155,170,229,34,216,195,215,97,15,111,131,61,60,174,33,245,61,172,14,123,152, +223,247,80,246,112,40,26,146,251,97,15,159,129,61,156,11,123,168,177,51,41,209,190,8,123,184,16,246,112,49,181,173,187,41,247,28,217,144,217,67,245,86,234,39,179,236,161,172,83,22,199,83,50,17,167,150, +178,135,87,195,30,222,131,210,96,38,197,247,133,176,135,243,236,123,72,137,246,9,10,121,243,169,109,141,109,72,236,161,198,41,26,13,13,101,72,140,67,85,171,226,206,239,137,227,89,94,141,78,151,133,216, +195,73,176,135,179,97,15,53,118,10,236,225,163,84,45,167,192,30,206,130,61,236,70,9,151,202,228,31,234,189,239,97,176,135,86,249,179,56,158,70,169,108,87,8,30,72,158,106,30,249,37,5,106,86,253,53,216, +118,35,34,182,186,120,33,246,112,52,236,225,61,20,223,53,118,50,236,225,3,79,125,57,121,120,230,23,147,39,169,109,89,238,161,152,86,255,125,15,37,212,212,58,135,94,50,232,82,101,76,10,88,212,119,68,135, +60,21,241,98,60,98,0,10,219,4,178,244,6,85,121,186,117,33,246,240,234,113,251,37,247,62,254,229,228,254,167,190,148,220,67,137,246,110,170,150,143,80,200,187,159,218,214,49,199,30,248,113,189,246,61,12, +246,208,209,85,40,170,156,88,233,160,122,43,229,13,42,122,212,117,40,78,83,77,171,161,62,26,238,87,95,132,132,154,35,175,144,205,191,171,138,64,117,144,53,102,189,160,75,215,86,201,213,227,246,199,216, +125,146,187,168,71,223,78,137,246,158,41,251,36,79,204,227,114,224,201,95,67,85,176,223,175,234,149,61,84,42,40,190,163,130,86,29,135,50,36,117,91,106,182,212,100,41,87,210,157,149,30,10,86,106,104,52, +140,19,250,136,62,106,209,52,78,81,121,176,135,151,94,122,73,202,56,14,25,124,94,114,231,125,95,76,22,44,222,61,121,229,229,93,146,119,222,216,57,249,253,207,27,37,111,188,178,83,210,249,242,239,254,139, +154,113,253,176,135,209,83,73,189,165,66,83,59,115,72,166,41,67,84,188,162,132,41,70,89,131,3,184,12,66,205,209,13,112,203,81,246,229,200,57,41,61,244,138,214,19,78,56,54,89,249,226,222,201,251,111,238, +149,252,247,175,182,77,254,231,215,141,146,255,253,77,163,228,127,126,213,40,121,109,245,142,73,243,75,191,157,190,28,110,55,254,15,196,108,75,208,142,173,164,142,61,157,195,67,149,0,229,132,233,6,103, +90,72,136,190,140,122,110,54,193,164,140,15,188,212,59,162,167,78,109,143,200,172,63,65,103,48,31,122,16,95,7,32,45,220,184,239,161,163,161,170,86,113,168,74,58,5,102,142,178,115,82,106,197,121,28,221, +60,28,65,1,45,141,204,34,121,126,79,215,214,88,231,187,174,173,82,79,119,86,37,112,228,145,135,37,191,121,191,81,242,255,114,198,254,129,145,93,240,220,46,201,37,77,191,158,94,235,106,253,88,105,5,115, +185,132,41,246,50,163,173,86,186,113,238,156,124,167,141,238,196,67,32,214,25,165,220,92,230,218,50,2,206,59,162,170,175,188,98,195,115,219,0,14,68,44,58,0,233,225,198,236,161,163,43,177,226,220,245,107, +224,120,202,145,130,76,83,142,232,135,215,24,13,118,132,117,99,13,246,107,176,195,209,33,64,5,159,211,64,239,80,186,164,92,66,99,46,105,250,149,228,39,111,1,74,255,180,81,50,111,198,103,147,99,143,57, +64,109,101,106,176,229,87,117,159,181,218,247,48,159,61,52,178,134,193,162,0,234,157,21,161,105,184,64,135,238,45,63,168,107,135,216,84,151,142,206,120,89,55,54,160,169,216,11,186,84,72,83,133,158,154, +142,232,68,123,200,33,7,38,207,76,105,148,60,114,223,190,201,105,167,238,87,110,108,32,121,202,32,41,175,254,158,96,183,212,75,16,188,106,50,87,1,241,190,189,237,54,112,105,70,97,6,31,102,37,238,92,130, +27,125,60,107,86,59,220,185,103,218,218,126,245,234,62,140,112,47,220,179,125,42,36,149,48,137,78,88,65,180,4,126,163,236,87,227,85,221,233,230,174,181,170,108,85,220,41,56,141,72,173,11,107,120,180,227, +141,238,150,106,168,85,240,69,59,19,141,8,213,143,55,144,183,110,249,5,184,195,245,238,235,232,134,177,181,222,247,208,93,143,27,1,217,195,232,124,101,98,161,136,59,120,165,108,103,60,229,191,186,121, +160,120,142,178,82,195,0,61,34,80,25,164,252,158,129,205,185,238,168,58,239,141,242,1,92,58,77,254,205,30,30,144,26,171,66,47,92,57,212,64,206,99,239,194,229,69,172,162,189,217,107,94,34,154,171,109,121, +9,232,46,229,35,140,94,249,84,62,204,92,178,161,213,240,6,111,181,105,115,206,191,62,252,176,39,31,100,20,35,50,134,121,119,67,242,99,216,195,62,185,190,135,26,26,236,97,164,141,129,227,5,135,232,50,101, +48,211,189,205,182,132,39,157,203,206,83,215,223,128,45,117,97,21,181,142,170,134,26,232,92,218,252,121,31,3,160,47,205,53,94,69,143,114,166,16,185,168,253,18,233,145,48,13,57,20,217,218,223,81,254,189, +142,23,174,243,198,212,92,177,206,162,220,238,229,6,227,114,109,145,252,206,229,41,133,47,120,191,119,239,115,72,5,59,18,164,186,226,210,93,113,105,190,102,250,30,6,91,20,217,84,22,197,203,142,182,31, +50,80,60,63,180,189,88,140,192,209,168,213,12,44,218,15,169,166,21,182,212,64,31,25,10,71,214,228,197,71,60,72,197,94,189,177,135,110,222,131,61,116,215,227,19,100,90,214,200,0,52,226,37,132,155,59,218, +26,237,104,154,71,59,178,33,255,119,253,86,254,31,132,140,243,223,224,103,16,212,67,252,42,7,161,132,169,16,123,24,224,150,18,230,92,35,215,15,200,208,74,189,11,55,87,150,181,244,186,119,249,8,243,70, +135,49,186,243,81,166,47,3,227,249,197,117,215,157,75,128,105,203,219,119,148,125,218,39,207,230,177,135,178,8,1,99,24,168,226,137,174,120,166,151,241,189,184,249,193,29,148,217,152,151,26,104,164,174, +30,35,232,124,15,210,45,2,95,180,19,139,86,130,142,112,62,123,168,150,75,215,118,30,215,106,223,195,103,10,176,135,126,72,63,84,240,9,26,233,200,200,32,5,251,235,87,127,239,50,165,171,106,172,9,74,64, +154,65,143,70,111,180,104,254,24,211,37,182,153,190,72,69,170,21,177,135,206,99,71,216,173,38,243,249,67,180,92,233,45,199,185,226,251,225,105,2,18,133,47,230,74,95,214,61,184,169,5,165,180,30,249,112, +228,200,179,248,96,45,136,154,109,89,252,219,240,180,72,207,160,242,217,67,231,149,198,58,210,142,148,134,4,161,22,205,146,93,139,157,155,46,51,26,171,59,155,95,251,2,52,206,160,23,209,62,90,119,198,247, +140,21,241,184,50,168,183,118,132,11,177,135,17,200,106,173,239,225,162,2,236,161,70,234,162,174,183,206,191,160,211,196,235,4,54,162,81,156,203,141,107,112,108,28,204,171,253,243,232,62,235,232,69,187, +63,193,172,0,45,163,179,165,29,52,149,249,87,212,247,176,78,216,195,151,97,15,251,230,245,61,212,224,104,249,23,145,53,12,53,34,27,148,76,36,52,214,60,57,110,116,112,99,224,78,202,121,236,191,225,28,143, +86,158,249,93,45,165,210,80,246,150,179,135,178,134,26,95,231,236,161,71,169,158,46,102,217,67,223,188,35,171,209,97,104,108,24,2,231,113,233,113,237,21,225,49,203,138,91,29,28,117,61,64,215,55,10,71, +131,199,88,227,165,208,13,140,110,11,37,93,118,221,117,215,212,157,133,45,13,78,166,156,186,184,143,235,179,89,88,173,246,61,148,61,124,56,143,61,244,88,70,169,160,134,7,134,39,64,105,30,108,86,229,200, +58,111,205,164,130,59,212,104,151,36,71,94,108,207,212,211,185,111,28,208,104,131,151,163,28,247,12,232,214,186,108,48,17,46,77,245,214,247,240,169,12,123,232,129,155,121,174,141,84,189,230,77,116,199, +192,100,34,97,154,24,123,96,115,100,141,53,133,116,116,29,105,13,118,51,97,186,153,109,229,105,148,143,51,177,104,231,105,208,178,227,222,22,97,15,61,36,247,220,216,81,245,209,88,93,220,195,55,71,214, +237,156,6,155,92,56,186,209,9,207,249,171,177,142,110,220,183,227,193,158,243,88,207,112,74,24,181,93,230,28,105,215,97,13,214,88,225,47,231,173,35,172,242,214,165,199,40,29,202,121,191,214,73,223,195, +96,15,31,204,235,123,104,82,239,238,201,209,53,31,214,144,56,180,211,149,29,81,13,14,238,48,118,69,190,20,13,142,102,233,89,164,86,131,99,29,118,55,180,69,217,195,229,176,135,19,242,250,30,122,188,98, +144,113,125,53,2,107,112,48,195,226,119,158,101,249,24,188,252,190,167,31,206,113,231,186,158,225,246,209,185,236,26,110,162,98,26,234,124,54,56,133,43,215,91,223,195,44,123,184,10,246,112,33,236,161, +21,129,66,236,161,24,123,182,11,94,32,120,113,117,84,32,120,174,195,242,137,6,46,13,214,173,53,216,136,173,75,251,72,164,109,81,246,112,9,236,97,20,182,44,127,220,4,123,216,49,215,247,48,216,67,215,71, +51,29,105,81,143,104,116,105,95,128,65,74,227,243,207,171,60,20,112,75,232,129,159,35,40,100,233,242,227,28,13,36,111,139,176,135,214,103,45,89,70,97,107,26,236,225,20,216,195,235,10,176,135,174,133,126, +96,215,86,163,183,155,116,147,4,141,246,5,4,100,105,148,214,165,93,154,12,88,26,235,122,27,134,138,208,70,71,75,217,39,55,14,249,104,143,185,181,41,165,76,4,123,223,87,153,90,165,172,207,171,114,250,106, +145,30,5,174,10,83,183,175,176,177,5,231,65,251,179,197,122,156,12,104,37,181,159,21,4,141,159,90,140,182,62,187,0,246,112,26,236,225,211,176,135,214,122,44,127,140,170,128,61,140,99,25,121,36,119,52, +30,214,27,168,116,227,184,70,202,128,229,142,201,200,155,207,30,58,226,155,98,15,163,231,112,157,177,135,61,40,92,45,7,206,154,9,123,184,65,97,11,246,112,12,236,97,199,92,223,195,96,15,131,64,211,96,217, +195,224,14,163,23,162,203,73,62,123,168,209,230,203,38,22,209,26,212,164,195,101,41,70,55,64,75,255,157,28,218,83,119,125,15,111,132,61,180,62,107,201,210,194,214,83,176,135,83,97,15,45,127,140,132,61, +236,157,199,30,234,218,174,145,142,134,198,197,197,35,1,88,250,213,239,7,155,100,12,112,180,53,86,87,141,35,29,255,94,180,246,244,123,190,4,247,191,25,246,176,110,250,30,90,121,183,24,109,125,246,89,216, +195,39,96,15,45,108,165,181,30,216,195,107,97,15,251,195,30,94,14,123,216,177,64,223,195,24,245,90,100,15,223,206,177,135,107,234,140,61,180,242,126,35,236,225,34,220,251,81,216,67,171,120,22,182,110, +129,61,188,81,28,15,12,111,40,236,97,47,216,195,118,193,30,158,124,220,214,207,30,118,67,96,98,125,214,146,229,45,176,135,26,59,30,246,112,12,236,225,13,24,61,26,246,112,16,236,225,21,244,61,188,16,246, +240,4,216,195,67,97,15,15,130,61,220,255,27,255,158,147,1,82,187,235,113,174,138,215,102,97,203,6,199,30,90,159,157,12,123,120,27,236,225,88,216,195,235,97,15,71,195,30,142,130,61,188,10,246,112,8,236, +97,47,216,195,182,176,135,77,96,15,207,131,61,252,126,21,217,195,6,217,247,208,98,244,0,216,195,219,96,15,239,128,61,188,17,246,112,12,236,225,213,176,135,35,96,15,175,132,61,28,12,123,216,27,246,176, +35,236,97,71,216,195,83,114,236,161,1,173,58,125,15,89,139,215,16,208,26,14,123,216,7,246,112,12,236,225,29,176,135,55,194,30,142,134,61,28,1,123,56,4,246,112,0,236,97,31,216,195,33,176,135,23,181,94, +207,30,122,77,84,176,135,46,95,158,62,186,124,25,173,173,112,120,85,5,121,192,239,216,220,191,218,224,251,30,14,132,61,188,30,246,240,38,216,195,137,176,135,55,192,30,94,3,123,56,26,246,176,99,134,61, +244,42,12,151,162,56,243,222,4,123,88,186,213,244,61,148,61,236,1,123,216,23,246,176,31,236,97,151,60,246,144,92,252,175,100,85,31,219,247,176,200,30,210,0,189,200,30,22,217,195,90,214,75,87,134,247,228, +16,188,34,123,152,19,148,88,140,182,62,235,222,212,42,158,23,242,89,235,137,199,223,251,253,131,115,170,155,111,241,245,107,60,182,6,252,28,143,157,51,211,253,108,77,159,26,255,3,155,108,125,187,190,147, +173,224,229,46,105,49,122,189,124,168,216,247,176,166,163,86,157,191,95,167,35,92,157,15,82,95,63,91,47,6,23,217,195,34,123,88,100,15,139,236,97,145,61,44,178,135,85,203,194,170,188,44,21,217,195,39,159, +92,129,234,230,15,157,59,55,165,24,214,29,45,244,0,202,40,131,211,174,61,138,201,223,127,127,44,101,209,107,82,21,238,170,85,150,88,186,241,103,93,40,167,94,142,4,162,55,197,242,238,169,20,106,217,178, +75,41,187,92,188,254,254,234,37,231,81,66,189,132,170,226,165,136,97,78,229,249,119,223,195,173,142,61,124,9,246,176,4,246,112,46,242,197,37,40,234,95,128,61,156,129,238,107,46,236,225,98,216,195,146, +42,176,135,171,169,109,245,217,26,216,195,171,170,192,30,14,65,29,244,56,236,225,210,2,236,225,60,216,195,185,224,120,47,194,30,190,13,123,120,39,236,225,241,159,38,246,112,24,26,146,7,97,15,159,205,177, +135,26,59,7,246,176,4,246,112,49,236,225,50,106,91,247,82,238,57,170,33,178,135,209,15,162,80,223,195,96,15,59,119,238,92,176,239,225,53,176,135,247,163,52,152,67,241,253,69,216,195,69,176,135,79,83,162, +125,134,66,222,11,212,182,38,52,36,246,80,129,167,162,208,192,4,52,56,196,164,33,36,247,207,212,119,133,193,209,247,48,186,95,70,223,195,251,96,15,231,194,30,106,236,147,176,135,83,169,90,62,9,123,56, +23,246,208,235,99,27,4,123,168,70,58,140,85,89,167,4,73,33,139,34,53,5,226,74,151,84,247,40,101,82,17,32,101,170,200,77,221,151,170,129,252,190,135,99,97,15,239,167,248,174,177,143,194,30,78,134,61,156, +10,123,56,141,218,86,243,45,205,30,106,172,218,73,53,148,142,170,10,89,213,57,98,60,33,67,84,164,38,186,35,6,32,251,224,72,103,117,95,133,216,195,107,97,15,31,128,61,156,12,123,248,0,37,218,123,169,90, +78,165,144,55,153,218,214,177,91,146,61,84,27,45,153,166,20,41,58,3,196,173,226,242,72,74,151,108,110,33,213,34,10,224,163,186,71,21,173,87,54,171,209,244,165,121,185,118,150,61,188,2,246,112,20,236,225, +3,20,223,239,165,30,125,55,37,218,187,31,254,82,242,212,220,189,147,33,87,29,106,137,230,151,245,202,30,250,33,21,178,40,48,19,210,18,208,16,214,80,146,168,193,74,17,53,88,119,86,164,166,110,90,132,39, +24,38,129,45,71,91,24,211,63,87,186,164,193,150,97,84,252,41,50,85,86,113,205,216,47,39,147,30,217,55,185,111,10,26,147,71,191,150,76,122,244,139,201,93,20,242,206,230,94,205,122,237,123,168,152,76,129, +138,250,105,245,86,10,195,163,201,133,50,38,197,44,206,99,71,83,145,154,82,226,232,112,41,161,166,177,26,175,193,186,188,47,70,69,158,58,142,184,138,189,107,215,43,104,187,112,82,114,243,164,3,146,59, +31,250,114,114,19,245,232,137,148,104,39,61,182,123,210,143,66,30,5,185,95,243,146,94,172,83,246,208,168,235,156,85,29,31,84,154,115,86,177,184,163,29,141,31,163,211,101,180,3,116,116,195,224,24,93,13, +118,110,135,193,10,216,164,200,229,148,14,63,252,251,169,196,241,186,107,218,37,55,221,10,82,251,192,158,201,51,207,238,150,76,125,98,183,100,206,236,157,147,197,243,119,79,58,180,61,72,121,211,146,58, +97,15,13,52,177,244,8,103,4,251,224,175,3,9,200,146,105,193,31,26,165,179,132,105,24,235,92,118,212,141,222,209,41,64,109,151,127,79,40,203,210,234,173,99,118,79,214,130,210,254,248,229,237,146,223,253, +168,81,242,203,183,183,73,126,207,215,223,190,215,40,121,189,108,251,100,112,255,227,173,55,191,203,18,183,26,175,40,219,110,187,237,70,115,52,236,133,132,187,109,164,211,98,4,238,68,237,186,8,189,228, +98,154,206,252,215,240,225,77,72,242,123,145,240,11,91,246,35,177,239,203,175,215,247,61,116,217,200,146,224,142,114,240,253,126,13,216,67,29,180,74,89,71,89,169,176,58,45,151,161,104,233,169,177,62,142, +182,18,99,141,141,214,8,26,171,154,207,191,163,186,111,125,61,249,187,201,204,199,224,133,151,55,74,126,241,70,163,212,216,119,86,109,159,220,112,141,245,230,67,210,158,19,184,245,31,17,178,45,171,85, +246,208,53,51,214,217,160,78,130,72,211,224,160,210,12,98,26,173,142,82,17,154,210,98,13,142,40,29,236,161,35,235,75,208,88,231,184,203,151,243,93,57,178,94,18,4,154,197,243,115,206,252,92,242,204,67, +141,146,151,94,104,148,172,123,113,155,164,79,183,125,147,195,14,253,78,185,106,143,114,235,95,248,249,229,172,237,175,208,176,117,89,174,194,225,213,147,59,149,239,135,61,74,69,146,63,159,96,178,22,215, +92,195,229,5,180,31,234,197,27,30,64,116,237,151,110,241,100,15,221,8,100,251,30,70,219,47,141,206,71,241,84,195,218,145,195,101,202,15,237,40,203,64,168,182,53,10,107,108,52,106,213,88,151,43,71,213, +104,174,36,81,87,86,146,108,196,87,111,169,66,192,231,152,35,247,76,174,25,178,109,50,184,247,23,146,35,15,255,106,42,122,11,25,148,174,95,107,236,225,7,25,246,48,208,154,96,140,2,206,170,200,104,231, +181,129,76,220,206,64,20,17,218,121,171,43,59,103,149,19,59,162,6,55,21,182,246,111,209,43,92,218,84,223,43,94,83,111,121,192,254,251,38,231,156,181,79,10,80,43,80,243,101,56,191,213,120,42,86,171,53, +246,112,117,30,123,104,162,160,33,49,119,3,167,205,130,86,129,227,249,103,170,221,5,65,204,184,156,179,26,235,168,58,226,234,172,93,186,92,179,53,50,218,250,186,150,251,119,252,42,26,20,236,97,180,225, +85,229,163,193,2,31,106,51,93,194,152,110,255,226,5,188,199,75,90,133,168,85,74,220,219,81,45,228,237,89,238,210,184,91,111,230,204,60,230,216,114,66,250,135,35,70,156,67,222,123,25,107,167,167,20,157, +211,147,10,55,239,89,246,80,109,180,70,184,254,70,215,59,131,85,176,135,49,151,179,193,204,159,119,244,98,190,6,6,32,242,227,72,74,148,71,103,75,215,113,221,217,53,221,37,79,30,49,216,67,93,219,81,13, +89,83,157,176,135,211,11,176,135,38,25,46,65,97,116,116,163,212,48,231,174,65,203,199,63,143,209,118,173,54,169,112,36,29,57,163,184,40,144,73,139,115,61,238,18,136,174,150,254,253,104,62,39,170,163,0, +213,17,86,146,172,104,173,206,216,195,103,11,176,135,190,249,104,204,170,230,57,139,225,57,50,241,61,221,209,145,147,105,210,141,53,58,136,84,3,155,47,45,64,75,35,124,180,19,12,117,188,63,227,58,175,166, +171,222,216,67,207,160,178,236,161,25,80,140,78,32,120,225,134,209,63,45,219,44,206,245,212,145,117,73,114,77,214,232,236,158,57,182,145,17,3,162,21,104,188,24,191,175,36,177,34,246,80,183,118,14,215, +26,123,184,184,0,123,104,234,232,142,40,139,225,69,119,105,149,238,82,43,174,189,174,169,26,107,158,172,193,177,190,106,68,182,209,163,203,92,156,142,248,235,120,124,25,254,92,232,171,77,53,235,188,239, +225,43,25,246,208,156,54,189,46,134,29,140,31,196,145,52,232,232,178,70,90,215,91,215,82,71,213,77,191,9,133,187,163,104,140,238,70,66,176,67,151,215,93,131,81,50,242,71,163,199,128,178,253,42,165,230, +255,165,59,139,6,212,11,123,232,81,170,167,139,130,89,30,225,248,120,75,146,68,182,163,236,186,105,162,16,204,161,163,234,118,208,220,217,121,43,164,101,116,54,125,148,104,209,3,156,219,6,183,224,14,29, +221,32,74,163,209,163,46,42,108,25,226,114,215,222,122,99,15,31,205,177,135,26,233,19,236,161,203,71,108,1,77,32,92,107,53,216,204,201,209,213,141,77,54,178,73,134,243,56,218,101,27,144,226,88,200,17, +214,88,65,75,31,165,255,108,2,202,153,8,149,242,133,216,67,151,42,151,77,244,153,31,147,130,150,240,249,214,1,142,44,101,253,245,102,114,5,51,123,109,80,106,193,173,238,97,169,40,225,104,102,57,73,248, +31,71,140,56,129,205,195,153,140,216,185,60,141,113,211,51,147,103,96,15,59,228,250,30,6,123,232,136,56,170,206,213,192,240,178,151,13,105,100,60,209,28,221,151,162,55,68,191,67,225,44,215,112,143,131, +2,180,12,186,212,209,13,218,69,151,14,244,221,23,17,56,158,235,177,75,85,173,247,61,148,61,244,220,56,219,247,208,200,109,202,24,247,237,56,103,77,21,229,148,28,221,64,104,179,220,161,6,59,207,205,168, +140,232,26,236,178,20,174,29,164,184,163,237,255,21,125,15,93,119,55,197,30,250,179,120,192,187,124,166,82,118,87,203,182,221,118,219,177,140,172,119,206,43,133,218,109,131,17,230,178,131,253,88,38,230, +51,202,107,185,120,168,244,140,51,78,35,225,63,158,192,115,114,90,235,9,246,112,114,30,123,168,27,9,68,154,53,57,178,113,50,25,173,255,178,220,161,220,82,52,120,116,132,53,216,228,195,164,35,110,118,8, +208,82,99,141,206,91,156,61,92,1,123,120,99,134,61,116,15,42,123,232,135,139,78,120,209,250,47,26,180,250,213,101,201,32,230,220,54,122,59,13,12,92,70,119,147,18,35,118,220,26,17,91,78,163,113,85,216, +67,97,176,58,233,123,24,236,161,21,129,66,236,161,163,18,231,86,26,232,40,251,213,23,224,163,193,110,22,226,26,26,3,151,243,216,160,231,190,57,58,212,26,192,60,199,170,42,123,232,186,92,235,125,15,101, +15,163,176,101,249,227,150,10,216,67,215,103,163,175,87,188,185,132,57,183,157,207,186,179,155,123,185,98,49,60,163,186,35,236,26,110,148,54,72,105,176,163,235,238,167,65,176,135,81,216,154,9,123,248, +4,236,225,13,121,236,161,163,18,251,82,151,15,35,167,65,38,168,210,104,223,25,205,29,77,84,60,80,224,100,34,93,122,220,226,109,14,123,200,70,162,246,217,67,235,179,139,97,15,159,131,61,156,6,123,104,173, +199,242,199,117,176,135,131,243,250,30,58,66,62,113,49,144,59,35,179,43,71,59,246,189,30,212,123,96,47,77,26,23,26,68,52,22,231,169,42,123,232,154,108,223,67,153,8,188,170,140,101,108,6,17,217,206,32, +118,3,81,216,186,107,40,253,10,74,30,8,231,59,114,8,214,146,202,223,10,182,102,107,232,54,185,130,15,254,135,158,20,174,86,2,103,205,134,61,220,160,176,5,123,56,46,143,61,52,19,114,191,234,209,75,244, +56,116,173,76,79,44,120,220,245,200,41,153,27,59,79,179,160,165,231,86,13,134,61,188,25,246,208,250,172,37,75,11,91,207,194,30,62,9,123,104,249,227,106,216,195,190,57,246,208,251,244,68,229,29,37,207, +156,76,18,42,98,15,3,204,50,137,168,42,123,232,11,43,192,30,214,126,223,67,43,239,22,163,173,207,206,132,61,124,6,246,48,45,108,81,235,185,11,246,112,52,236,225,32,216,195,78,159,38,246,208,202,251,45, +176,135,182,245,124,28,246,208,42,158,133,173,219,97,15,111,21,199,3,195,27,14,123,216,7,246,176,61,236,225,185,246,61,252,52,176,135,221,17,152,88,159,181,100,121,59,236,161,198,90,235,25,15,123,168, +209,99,97,15,135,194,30,118,135,61,188,8,246,240,36,216,195,239,195,30,30,12,123,120,192,55,171,206,30,58,247,3,142,214,229,69,104,237,104,105,147,71,138,233,63,96,186,204,35,48,93,195,115,38,207,17,60, +251,167,105,36,2,245,106,55,122,228,47,109,75,194,190,31,209,115,32,243,113,30,153,208,219,20,172,75,153,119,171,172,188,91,140,182,62,251,24,236,225,157,176,135,22,182,198,194,30,142,133,61,28,13,123, +120,45,236,225,149,176,135,125,96,15,59,192,30,54,133,61,188,0,246,240,240,173,153,61,180,24,61,8,246,208,146,229,36,216,195,91,97,15,199,195,30,94,11,123,120,13,236,225,85,176,135,67,97,15,251,193,30, +118,129,61,188,2,246,240,180,42,178,135,174,233,98,241,174,179,28,224,253,218,46,180,54,102,181,87,105,174,125,167,35,123,94,110,131,32,87,97,191,210,29,107,220,96,138,127,100,123,118,30,95,225,107,7, +254,163,169,214,109,216,108,172,37,135,46,97,164,87,89,140,182,62,107,201,114,60,236,225,36,216,195,219,96,15,199,194,30,94,3,123,120,37,236,225,16,216,195,129,87,241,107,216,195,102,85,96,15,205,141, +115,236,225,239,183,10,246,112,48,236,225,24,216,195,219,97,15,111,133,61,28,15,123,56,26,246,112,60,236,97,151,10,250,30,198,149,55,110,70,108,128,158,215,247,112,235,97,15,59,228,216,195,254,176,135, +3,96,15,187,86,206,30,150,176,206,46,182,1,58,35,157,94,85,97,6,133,151,13,206,101,81,238,113,237,66,107,128,218,67,55,230,169,180,151,90,149,197,165,27,244,240,37,144,241,143,11,101,125,137,231,196,157, +119,222,121,36,89,211,60,34,232,26,43,239,22,163,57,94,89,229,117,169,100,90,37,94,170,233,61,147,150,63,200,175,63,96,94,126,232,157,117,68,217,15,48,228,61,190,255,58,145,119,149,199,50,100,88,75,220, +188,51,210,107,209,120,172,224,207,76,21,139,236,97,46,56,125,182,208,210,179,73,150,170,166,248,140,255,33,143,228,152,16,150,237,250,188,207,185,177,149,119,47,194,181,62,235,117,169,222,32,106,97,203, +123,38,153,159,233,109,132,236,162,150,51,218,203,153,167,43,88,250,74,61,112,227,121,54,119,44,211,148,127,231,4,158,227,120,220,4,88,12,115,35,32,232,149,182,3,220,156,207,190,89,46,93,232,63,202,25, +94,100,15,121,17,86,222,139,236,97,238,69,248,50,124,12,126,130,149,222,1,109,196,53,45,212,91,182,231,217,118,115,92,183,198,137,71,109,254,167,91,242,223,170,181,57,188,37,141,168,206,255,93,47,6,23, +217,195,34,123,88,100,15,139,236,97,145,61,44,178,135,69,246,176,224,146,91,165,117,56,7,90,94,142,2,231,137,63,255,249,207,107,169,230,47,164,0,86,100,15,87,173,26,130,64,116,72,218,181,231,141,55,70, +160,152,29,155,182,59,81,133,43,123,184,12,246,112,30,242,197,165,176,135,139,97,15,103,162,251,154,15,123,248,34,236,225,50,4,51,47,112,127,245,107,175,181,66,210,212,56,45,190,47,92,120,60,50,197,99, +208,116,173,239,123,184,85,177,135,173,91,95,144,150,94,84,11,40,134,177,101,152,82,9,123,172,181,109,219,52,25,138,58,232,73,216,195,18,216,195,233,121,125,15,163,68,91,2,123,248,30,236,225,221,159,38, +246,176,55,125,15,213,144,60,148,199,30,62,15,123,88,10,123,88,2,123,88,70,109,235,129,134,202,30,42,107,82,122,20,215,160,135,28,73,38,49,216,67,5,103,106,190,252,217,108,223,195,81,176,135,15,160,52, +120,158,226,123,9,236,225,139,176,135,211,41,209,206,160,144,183,148,218,214,77,13,145,61,204,222,236,175,177,10,207,226,162,108,127,93,136,61,84,14,165,225,178,135,237,219,95,156,60,0,123,184,0,246,80, +99,159,129,61,124,202,170,37,236,225,66,216,67,175,143,109,48,236,161,210,5,181,26,138,93,66,67,169,112,37,203,32,42,133,80,21,160,130,71,197,93,176,135,94,223,172,225,130,152,195,135,247,76,198,195,30, +62,68,241,93,99,31,135,61,124,12,246,240,73,216,195,231,182,52,123,168,88,52,216,67,165,72,10,86,20,158,106,188,58,14,245,151,33,122,81,195,165,20,81,133,158,58,76,181,91,113,231,188,1,77,41,132,47,64, +205,72,199,78,237,146,235,97,15,39,195,30,62,10,123,56,153,18,237,131,84,45,159,162,144,247,216,150,102,15,53,76,193,183,82,164,44,168,165,212,65,49,139,35,154,109,250,152,69,241,156,199,26,107,52,207, +239,123,40,123,120,61,236,225,100,138,239,15,80,143,190,151,18,237,189,176,135,211,96,15,135,111,41,246,80,101,172,110,171,112,92,101,187,114,36,117,28,42,245,84,222,101,155,62,70,75,79,73,180,104,39, +166,14,68,41,163,222,161,158,186,16,123,120,29,236,225,125,176,135,15,194,30,222,15,123,120,31,236,225,189,20,242,26,215,7,123,104,45,40,186,233,168,160,115,46,42,46,83,37,175,225,209,179,37,160,75,93, +58,196,107,106,184,116,233,124,36,79,60,207,239,169,224,19,29,80,5,100,93,216,72,46,123,56,20,246,240,118,216,195,73,176,135,183,82,143,190,153,18,237,253,84,45,251,215,53,123,24,198,58,63,99,142,42,16, +245,67,70,135,60,95,128,238,173,188,80,213,142,163,172,193,202,152,162,89,156,116,139,252,146,132,90,180,246,204,242,135,70,242,245,236,225,225,41,123,216,175,95,175,100,216,85,251,37,55,82,116,191,145, +226,251,4,234,209,119,82,162,157,120,251,215,121,49,199,212,29,123,152,197,222,99,148,179,4,139,238,45,160,225,72,59,159,21,132,59,143,195,224,224,15,3,154,14,131,29,221,144,26,27,216,68,124,28,97,85, +65,206,107,163,185,26,146,145,200,42,52,118,220,205,123,37,227,111,251,60,174,189,59,153,91,29,247,61,84,245,154,237,151,22,56,94,116,192,114,164,37,197,117,109,21,119,34,60,70,99,101,136,106,168,35,96, +57,194,89,74,77,67,163,187,165,98,114,255,141,244,14,219,3,191,155,6,181,238,93,155,36,195,71,124,14,185,212,158,201,152,155,246,74,38,240,245,174,135,118,75,134,82,162,173,147,190,135,70,211,112,101, +93,56,136,180,252,6,113,206,107,231,180,163,172,91,171,154,87,117,235,250,171,219,234,206,193,12,187,52,57,111,163,39,132,47,37,128,75,61,67,145,155,220,82,255,206,59,38,247,140,217,45,153,253,240,14, +201,235,139,26,37,47,47,220,33,41,157,189,83,242,202,162,237,147,210,57,59,39,151,92,112,240,199,86,45,107,157,61,116,116,53,218,104,26,46,157,111,120,144,166,6,49,201,23,221,90,192,195,57,156,5,46,53, +90,131,141,220,190,12,129,76,53,153,174,217,190,32,245,212,42,222,85,205,30,121,216,94,201,13,131,26,37,143,223,214,40,89,61,179,81,242,193,178,70,201,175,86,67,155,174,108,148,60,253,192,110,73,155,230, +39,124,98,33,157,185,255,122,141,250,30,230,179,135,102,80,89,34,205,209,148,55,210,157,125,130,80,139,81,119,164,157,203,202,15,53,204,209,117,254,186,36,5,108,169,161,174,211,46,95,202,139,13,114,146, +49,6,44,129,172,245,221,4,246,75,250,116,104,148,140,30,216,40,121,242,246,70,201,194,71,182,77,198,12,219,51,57,245,196,111,167,243,156,206,61,255,64,11,242,14,57,250,43,53,234,123,184,38,195,30,106, +172,82,225,16,117,107,140,9,71,180,15,10,248,50,139,216,26,196,92,155,117,79,3,86,24,171,11,59,154,106,168,125,25,194,150,26,105,135,143,0,46,109,63,164,82,79,217,162,170,248,54,77,27,37,93,90,238,144, +180,60,127,151,228,176,239,125,57,29,121,101,142,10,90,157,227,136,90,223,103,21,89,83,35,246,208,205,123,62,123,24,40,94,244,40,140,110,120,186,176,17,218,160,165,161,142,190,238,173,71,152,110,6,22, +144,237,106,169,66,62,12,52,81,209,253,253,89,19,23,151,182,92,231,217,148,110,57,235,228,93,146,227,143,254,74,242,213,175,236,157,190,8,129,75,129,106,163,185,23,160,168,52,168,113,223,195,25,5,216, +67,231,165,200,93,161,39,24,66,231,95,120,128,174,174,39,56,170,38,33,209,159,212,8,174,198,58,160,175,232,110,233,215,160,221,140,244,26,166,16,245,187,223,93,207,12,171,211,84,164,170,171,203,34,214, +106,223,195,233,121,236,161,9,65,144,160,126,176,248,181,233,164,224,70,80,107,18,163,209,124,89,35,53,54,128,14,191,234,21,78,13,189,69,118,209,39,110,139,112,57,138,222,198,254,140,46,45,217,18,196, +184,198,198,8,215,122,223,67,207,160,130,61,244,130,17,55,240,206,81,221,205,145,209,245,52,204,52,210,172,74,68,86,137,191,193,39,122,15,7,206,35,45,30,77,164,162,213,103,118,13,207,34,245,65,170,250, +85,85,110,176,135,170,105,253,189,70,251,34,106,189,239,225,139,25,246,16,81,90,154,230,117,237,218,53,13,94,97,160,24,158,201,133,129,201,0,20,187,35,229,255,113,81,137,35,236,92,117,100,179,247,245, +248,235,136,232,65,152,6,132,29,145,95,23,118,132,235,133,61,124,181,0,123,232,94,213,139,131,28,73,131,142,134,42,239,55,155,114,121,113,189,213,64,19,10,71,215,175,70,100,127,222,249,239,220,118,100, +227,100,36,219,197,210,23,16,237,61,93,239,185,121,34,29,221,122,99,15,61,74,245,116,49,216,67,79,30,101,15,157,175,142,166,57,111,22,195,211,176,48,216,117,214,17,246,171,107,173,75,143,65,202,249,233, +232,153,196,104,108,62,104,41,165,230,247,124,33,6,37,13,174,55,246,208,115,227,199,242,250,30,186,99,210,61,189,107,199,145,53,43,18,211,209,40,89,37,71,213,140,202,199,95,155,69,249,231,122,130,243, +216,224,100,224,210,149,93,219,243,65,75,73,23,31,21,246,34,121,50,17,245,202,30,62,155,97,15,61,104,179,253,159,209,213,185,234,136,202,37,229,99,120,17,168,162,229,189,155,1,13,54,184,25,240,12,70,209, +202,51,232,210,0,45,61,242,249,204,103,62,83,206,30,106,180,107,173,203,79,189,176,135,30,146,231,179,135,30,176,199,253,28,26,108,128,114,115,31,189,14,205,170,252,181,223,243,207,117,123,13,14,238,208, +211,145,96,136,195,165,29,85,123,150,42,12,223,102,155,109,202,217,195,202,250,30,214,9,123,248,72,1,246,208,115,230,224,133,53,56,90,255,105,168,121,115,92,55,19,144,86,144,165,38,21,174,187,102,101, +142,114,92,119,19,238,173,86,122,151,93,118,41,55,216,165,72,226,197,121,28,100,169,35,237,239,79,59,237,180,20,9,36,57,41,81,171,137,55,148,32,123,82,209,167,146,207,59,231,119,222,160,152,166,38,138, +15,254,32,9,196,50,214,200,18,254,242,127,14,29,122,12,35,114,92,122,169,166,181,158,210,210,51,18,217,195,155,10,244,61,244,40,214,75,73,98,132,131,59,20,197,115,111,43,132,233,75,49,184,233,17,166,143, +38,37,102,80,145,162,106,116,32,181,186,183,6,70,147,71,183,135,118,218,114,131,96,240,146,146,209,88,115,107,51,173,58,101,15,173,8,120,72,110,157,200,163,84,15,219,236,92,167,75,154,47,27,100,52,72, +99,195,224,236,101,66,70,105,131,157,41,165,6,155,69,153,114,6,78,235,114,228,53,51,13,134,61,180,252,113,91,1,246,80,20,207,199,196,192,15,28,192,101,128,150,6,44,163,185,46,29,35,236,122,236,60,142, +107,45,156,191,13,166,239,161,236,161,133,173,57,176,135,79,195,30,142,45,192,30,106,176,128,150,203,135,253,133,53,210,36,196,175,70,243,104,238,104,238,173,203,66,168,36,102,110,142,110,192,209,129, +208,86,181,239,97,157,177,135,75,96,15,231,192,30,62,7,123,104,173,199,242,199,232,12,123,232,82,101,130,16,205,30,221,221,120,28,228,86,207,121,107,218,105,142,237,239,173,44,32,46,79,59,71,215,2,123, +248,235,90,103,15,123,83,184,122,9,56,107,30,236,97,182,176,245,12,236,225,132,12,123,104,6,230,233,162,59,154,232,113,104,112,113,137,49,154,250,120,122,97,94,236,222,54,0,203,24,213,205,100,15,87,19, +180,86,219,143,41,135,9,216,213,82,68,64,125,117,185,182,186,66,201,3,111,235,107,4,161,113,68,222,82,150,136,149,28,177,172,57,244,208,67,62,185,13,246,208,250,172,37,75,11,91,51,97,15,159,133,61,180, +252,113,45,236,97,255,188,190,135,206,99,79,35,140,164,133,216,67,131,210,110,187,237,150,26,239,20,168,42,123,24,125,15,137,216,127,227,215,175,219,86,140,100,164,148,36,229,110,12,12,178,116,255,156, +152,188,156,133,168,208,96,126,112,27,222,244,209,24,253,16,73,193,90,182,131,165,172,123,107,100,15,45,70,91,159,157,13,123,56,29,246,208,194,150,181,158,123,96,15,199,192,30,14,129,61,236,220,245,24, +42,127,173,19,171,128,70,111,231,170,129,40,191,239,161,193,45,50,39,179,39,127,237,207,229,247,41,213,67,244,0,51,45,141,245,140,11,99,255,206,252,175,251,190,135,178,135,183,193,30,174,192,189,159,134, +61,180,138,103,97,235,110,216,195,59,192,241,172,8,120,72,62,96,216,62,201,101,176,135,231,53,57,44,57,169,150,217,67,46,66,208,216,119,197,241,56,210,121,51,7,109,245,101,160,194,149,213,97,127,182,218, +40,30,174,182,23,27,236,158,140,210,243,236,138,222,3,195,91,78,151,246,53,7,28,240,245,143,123,194,30,90,159,181,100,121,55,236,161,198,90,235,177,252,161,209,19,97,15,71,140,162,104,13,123,120,9,236, +225,201,167,237,158,28,14,123,248,61,217,195,154,247,61,124,123,139,177,135,214,103,159,128,61,156,4,123,104,97,203,242,199,68,216,195,177,176,135,163,97,15,71,194,30,14,224,24,245,114,216,195,139,96, +15,47,130,61,60,162,154,236,97,156,102,48,205,254,228,156,181,125,167,35,155,3,45,189,202,81,28,239,104,158,111,230,84,245,5,219,21,85,73,167,37,192,65,48,216,159,167,47,41,220,44,174,149,90,199,82,179, +146,8,188,12,87,250,64,246,112,8,236,161,37,75,171,120,22,182,110,132,61,188,1,246,240,58,216,195,107,97,15,71,192,30,14,132,61,236,6,123,216,29,246,240,244,179,246,40,39,197,141,216,62,65,145,58,87,157, +167,233,161,59,115,220,124,218,254,194,252,127,89,246,112,205,22,103,15,173,207,90,178,188,17,246,240,126,216,195,187,96,15,111,132,61,188,30,246,240,42,216,195,225,176,135,67,96,15,175,134,61,108,158, +199,30,186,132,85,212,247,144,224,244,123,140,125,173,193,247,61,180,176,53,1,246,112,18,236,225,93,176,135,55,195,30,142,131,61,188,25,246,176,123,142,61,140,123,103,179,125,15,205,205,221,245,176,164, +229,179,135,101,91,77,223,195,203,96,15,123,209,247,112,32,236,225,32,216,195,238,57,246,48,119,123,248,63,11,244,61,44,178,135,185,132,194,101,199,253,173,4,156,75,143,200,79,149,251,169,85,41,104,85, +64,162,109,195,127,36,209,105,19,55,51,154,19,192,238,6,179,100,77,103,125,92,225,69,184,50,198,150,44,57,176,127,141,35,221,117,222,51,105,249,131,114,141,215,87,45,231,140,123,133,63,67,42,250,18,133, +175,87,189,255,138,244,112,133,183,36,185,121,103,227,63,29,52,239,74,254,237,38,185,245,85,67,131,40,21,140,46,178,135,149,33,61,155,61,194,27,101,48,235,161,203,34,123,152,155,103,69,246,48,247,34,138, +236,97,101,115,176,166,127,94,107,115,184,166,31,164,190,254,126,189,24,92,100,15,139,236,97,145,61,44,178,135,69,246,176,200,30,22,217,195,34,123,184,81,175,150,66,217,14,197,236,93,145,9,182,22,180, +252,232,163,143,94,165,176,189,16,153,194,42,180,24,159,244,232,209,132,226,88,127,106,190,131,169,27,15,65,43,89,57,123,56,31,249,226,50,216,195,165,176,135,179,209,125,45,130,61,44,129,61,92,241,127, +141,61,28,142,58,232,89,216,195,21,176,135,51,144,85,204,155,23,160,229,145,229,215,195,202,30,254,16,246,240,222,173,133,61,180,236,162,174,75,241,103,96,119,138,98,108,10,167,20,74,105,191,236,225,149, +176,135,143,194,30,78,207,244,61,12,246,112,5,236,225,75,212,182,30,109,200,236,161,50,69,149,1,106,174,44,118,171,209,244,62,234,96,15,85,243,89,113,204,103,15,175,135,61,156,140,210,96,46,197,247,101, +176,135,37,176,135,179,41,209,206,165,144,183,154,218,214,237,13,145,61,140,174,120,234,63,100,15,85,230,104,108,92,139,174,24,38,219,247,112,61,115,216,58,53,62,216,195,135,97,15,23,195,30,106,236,44, +216,195,153,84,45,103,195,30,46,135,61,180,132,219,160,216,67,171,250,106,42,229,29,212,109,40,60,211,104,165,135,10,92,188,77,92,49,155,170,89,117,33,158,73,235,222,114,197,234,71,130,61,188,25,246,112, +42,197,119,141,157,6,123,248,20,236,225,76,216,195,5,212,182,90,109,201,190,135,193,30,106,168,82,164,32,211,84,221,105,180,106,29,245,89,113,189,186,210,68,245,91,65,177,168,14,80,246,160,106,215,155, +201,21,164,59,239,59,193,30,142,131,61,124,28,246,240,41,216,195,199,41,209,78,161,106,249,28,133,188,167,183,52,123,168,44,88,13,165,250,43,111,5,15,58,77,153,131,35,171,46,83,118,73,25,147,82,68,133, +107,114,74,178,15,146,46,122,129,134,42,67,178,247,97,4,187,174,176,135,227,96,15,31,167,248,254,24,245,232,135,41,209,62,12,123,56,23,246,240,170,250,100,15,117,85,21,177,206,87,71,86,247,12,36,192,17, +13,61,181,82,195,48,88,129,139,122,204,232,1,97,75,147,104,252,168,151,200,56,112,205,115,194,85,114,27,244,61,236,68,223,195,177,176,135,143,192,30,78,129,61,124,20,246,240,81,216,195,135,41,228,157, +83,31,236,161,115,205,15,24,45,196,28,93,65,143,232,176,163,142,50,59,202,129,227,9,116,168,202,115,132,229,31,84,218,106,180,56,143,234,61,95,156,228,155,42,218,252,190,135,87,194,30,78,130,61,124,8, +246,112,18,245,232,187,40,209,62,70,213,114,112,93,179,135,174,161,97,108,140,110,182,59,158,31,90,145,154,65,75,247,22,9,208,173,37,86,156,195,10,213,84,235,105,172,134,6,146,39,161,38,226,19,192,165, +75,89,62,123,120,21,236,225,29,20,221,239,160,248,126,27,245,232,251,41,209,222,94,31,236,97,176,73,26,87,168,95,154,163,29,252,97,24,172,176,212,214,38,202,17,29,93,231,109,52,140,211,216,44,112,233, +252,214,253,131,61,212,213,141,230,87,192,30,94,135,172,66,99,111,134,61,188,13,246,240,209,250,96,15,99,100,85,182,231,27,28,44,131,163,108,16,115,46,27,173,29,97,13,86,147,25,252,97,176,135,49,186,186, +119,116,239,81,197,39,53,163,32,198,58,178,17,188,67,135,75,89,222,246,76,141,189,9,246,112,34,74,131,135,168,71,143,168,107,246,208,57,22,74,216,160,209,242,137,52,231,181,65,76,183,86,76,170,236,80, +145,184,1,75,195,194,88,71,54,186,91,58,178,217,134,143,170,247,84,238,168,251,82,229,167,209,93,186,124,149,151,252,121,36,139,208,165,40,13,238,164,248,126,27,245,104,132,113,31,213,25,123,168,113,234, +36,21,134,26,168,116,225,192,241,178,221,242,252,190,115,89,92,192,222,14,46,75,26,228,114,228,92,141,17,213,208,232,250,17,125,33,156,235,122,132,73,136,119,195,31,248,221,111,164,170,218,38,168,131, +6,12,216,149,0,7,82,139,172,98,252,248,47,176,238,239,90,119,125,15,213,52,7,137,22,32,150,70,107,112,180,255,202,162,182,142,180,148,169,6,187,6,71,195,229,64,242,116,111,181,213,89,245,173,114,228,0, +46,77,98,52,248,27,251,239,147,116,3,195,235,217,126,175,228,170,254,59,38,247,222,184,75,242,224,237,187,38,55,142,223,147,23,186,51,115,252,220,127,122,23,174,37,218,90,103,15,101,22,28,97,215,91,159, +104,215,23,29,237,28,121,95,64,244,65,243,5,153,105,25,176,12,84,186,176,163,107,240,114,137,82,49,175,16,85,15,80,87,29,125,33,52,54,90,38,168,234,107,125,126,163,164,119,219,70,201,88,128,203,103,110, +133,50,125,186,81,242,195,249,52,108,157,179,109,50,229,246,3,20,173,213,188,239,161,155,247,124,246,80,69,172,31,38,104,52,165,192,6,39,131,140,115,214,151,144,109,45,164,225,102,94,17,176,28,77,215, +99,13,140,198,23,106,169,141,228,206,117,19,21,89,40,119,84,226,59,161,246,57,238,251,219,39,157,154,53,74,250,95,214,40,185,125,68,163,228,249,123,26,37,75,30,221,46,121,252,246,221,146,107,135,30,173, +193,63,165,161,108,153,119,225,82,184,187,133,231,80,158,189,203,207,125,88,50,134,17,254,231,243,31,45,67,202,251,139,235,174,59,151,15,210,150,13,121,71,62,136,79,123,242,214,54,169,193,238,100,220, +0,248,104,160,57,114,92,97,161,164,223,121,234,247,125,252,181,6,250,2,76,64,12,94,186,189,174,235,188,20,205,83,97,43,73,170,171,155,75,219,206,68,45,181,73,138,222,224,99,96,84,136,234,232,42,55,62, +251,164,237,146,203,46,106,148,116,224,185,236,162,29,146,102,231,238,153,156,114,252,55,105,218,250,189,52,7,39,104,253,10,181,238,74,47,254,197,208,73,60,135,241,236,91,110,48,31,106,24,217,207,2,222, +234,50,228,7,24,220,152,157,76,27,182,96,118,183,108,143,225,173,249,16,173,210,27,147,220,192,199,126,214,175,26,100,218,232,99,98,225,7,244,195,250,193,53,32,104,53,141,115,77,213,88,151,170,88,159, +245,8,95,140,94,226,11,139,199,151,24,143,47,213,191,19,125,15,207,62,105,199,228,172,147,246,74,190,117,192,231,147,125,246,94,255,34,212,117,41,91,150,132,65,200,246,11,12,166,103,212,25,26,172,224, +244,240,180,68,27,231,88,184,95,95,62,16,47,123,65,41,39,15,31,142,28,121,22,129,165,5,115,168,45,70,107,120,139,244,12,202,229,192,148,207,77,189,68,154,155,120,71,77,57,127,208,105,234,162,229,13,157, +127,186,169,238,234,54,80,247,53,42,59,87,125,73,6,52,131,91,92,142,96,14,30,192,101,116,185,244,171,143,193,206,63,211,48,21,184,135,28,114,112,202,62,232,230,10,78,253,190,235,180,234,93,63,159,151, +117,171,33,241,74,231,156,75,111,104,48,193,166,61,31,122,1,31,118,37,153,204,143,123,246,60,13,170,172,25,31,186,21,79,11,70,184,5,39,14,45,210,127,204,237,91,176,135,26,44,96,25,109,255,162,103,154, +35,105,132,141,237,159,68,154,81,217,199,8,237,122,108,212,246,96,192,104,239,35,220,97,242,226,122,30,215,99,24,253,179,76,178,6,202,30,186,38,43,71,84,118,28,115,219,23,96,222,237,242,229,205,228,10, +102,188,191,26,131,109,214,186,161,193,140,210,233,124,136,5,44,240,182,15,123,167,69,139,83,255,249,243,159,55,39,223,237,65,128,233,195,211,147,81,106,199,241,76,167,244,38,36,65,75,207,160,36,74,53, +82,105,191,249,177,163,233,50,162,177,209,74,44,219,55,205,209,117,227,224,75,50,146,59,194,26,234,99,18,19,185,184,47,195,145,207,246,68,245,148,36,203,30,154,95,171,193,182,115,143,95,149,46,218,110, +12,60,240,159,94,195,174,58,200,203,186,49,182,87,110,14,127,169,220,165,121,171,95,133,44,89,200,7,127,153,209,91,199,214,140,134,203,77,9,44,173,210,147,196,165,75,47,72,143,82,61,93,244,68,34,184,67, +183,134,206,77,151,16,141,213,80,151,150,216,5,69,251,63,71,214,84,209,205,190,160,150,243,91,160,58,11,104,69,147,199,184,157,201,23,144,221,133,69,135,173,66,236,161,122,106,27,185,58,242,138,220,188, +115,94,41,148,55,147,99,172,130,113,163,244,62,27,156,206,179,94,206,98,132,215,240,31,150,178,249,254,120,206,156,51,48,226,60,192,200,243,121,206,75,239,172,123,34,143,61,244,72,198,185,234,28,117,127, +91,168,27,158,238,44,142,231,72,59,234,122,132,81,216,96,229,252,119,148,117,109,71,48,186,89,6,100,25,109,61,125,25,149,177,135,6,45,87,17,196,168,181,215,247,112,6,236,225,101,185,190,135,193,30,186, +228,196,149,81,65,165,5,62,155,229,14,253,51,115,104,61,194,40,238,178,21,220,161,46,29,13,30,163,163,165,219,66,127,237,203,48,88,134,34,190,94,217,67,15,201,61,55,206,246,61,116,169,114,148,29,97,35, +177,185,176,6,199,197,6,145,46,234,234,186,189,17,92,131,93,134,4,180,162,55,113,128,150,209,224,209,149,64,133,173,115,51,218,120,214,59,123,104,69,96,10,236,97,143,30,93,210,195,53,178,153,116,161,55, +9,209,173,163,185,99,182,215,161,243,214,84,210,148,209,185,110,162,97,208,114,105,114,41,138,155,94,140,7,142,114,128,150,26,199,188,43,103,15,13,78,206,227,122,103,15,203,96,15,111,205,235,123,232,249, +147,70,123,180,234,72,25,188,28,109,95,64,92,49,163,219,7,149,102,114,18,189,14,163,245,159,17,58,192,105,231,178,203,141,92,83,96,62,110,11,43,98,15,235,188,239,161,21,129,124,246,208,3,55,9,22,215,66, +15,216,13,82,142,110,96,120,89,208,210,40,29,247,115,196,40,103,131,151,35,237,58,27,236,161,1,75,99,29,97,147,12,47,58,8,55,55,213,172,243,190,135,150,63,238,130,61,236,212,169,89,154,140,120,148,42, +206,170,193,126,40,71,218,136,108,226,145,165,74,221,24,152,106,70,55,75,179,40,3,151,203,147,35,236,50,228,203,138,246,157,142,174,116,155,198,42,34,247,215,46,65,241,152,120,232,234,6,50,254,206,239, +64,128,150,216,219,197,118,39,76,7,85,184,42,112,109,184,241,153,130,229,82,136,178,29,88,106,186,170,169,32,215,93,197,185,240,218,179,206,58,246,147,23,94,56,40,189,46,53,203,30,78,135,61,188,17,246, +208,67,114,239,166,212,173,29,93,211,59,71,71,87,213,64,19,13,19,19,47,29,114,7,228,101,37,130,149,46,105,26,232,207,185,141,204,70,227,234,176,135,222,208,146,99,15,95,97,179,176,194,70,54,116,179,181, +15,147,218,106,59,128,124,145,39,213,84,23,172,146,131,198,238,207,8,61,142,171,173,4,232,88,193,155,251,105,171,86,71,164,119,195,202,30,62,15,123,56,7,246,208,90,143,229,143,241,5,250,30,154,230,121, +254,228,136,104,152,23,28,184,145,48,58,59,162,186,170,188,161,105,162,115,223,249,153,109,5,184,25,125,15,235,134,61,92,7,156,181,16,246,48,91,216,154,5,123,120,11,236,161,135,228,222,89,103,244,174, +136,61,116,183,227,50,227,188,51,40,57,15,53,58,140,53,69,108,80,236,225,29,176,135,214,103,45,89,90,216,154,7,123,56,27,246,208,242,199,88,216,195,65,176,135,221,187,119,73,143,82,77,22,162,239,161,134, +102,217,195,216,229,68,110,108,186,216,96,217,67,139,209,214,103,23,193,30,62,15,123,104,97,203,90,207,100,216,195,155,96,15,71,194,30,122,110,220,169,83,171,180,10,104,192,201,103,15,77,40,124,9,238, +95,55,135,61,244,239,213,43,123,120,55,236,161,238,61,11,246,208,42,158,133,173,7,97,15,239,3,199,179,34,224,33,249,80,250,30,118,129,61,244,116,49,250,30,186,124,200,23,251,2,28,125,191,250,152,244,251, +18,116,241,236,101,6,17,141,93,138,124,12,102,254,172,236,33,75,83,218,10,176,222,216,195,62,176,135,214,103,45,89,62,8,123,168,177,214,122,44,127,104,244,109,224,120,158,27,15,128,61,108,209,98,55,150, +173,221,89,47,119,135,30,221,141,243,229,170,247,61,212,208,232,123,232,146,39,66,43,85,186,69,216,67,139,209,214,103,103,194,30,78,134,61,180,176,101,249,67,99,111,134,61,180,34,224,185,241,48,216,195, +43,174,216,131,227,151,93,147,102,176,135,71,109,6,123,104,74,73,64,251,223,6,193,30,142,128,61,180,100,105,21,207,194,214,157,176,135,55,194,30,90,17,240,144,252,90,216,195,97,195,190,128,68,97,207,164, +119,223,157,146,51,55,193,30,198,125,59,89,246,208,117,86,246,144,163,90,251,30,150,146,191,111,121,246,208,250,172,37,203,59,96,15,167,192,30,90,235,177,252,49,1,246,112,52,236,225,40,216,195,145,35, +249,245,152,207,36,173,42,96,15,157,199,30,197,26,200,162,239,97,1,246,208,150,99,83,72,38,228,133,109,223,41,85,106,147,71,19,12,219,153,85,216,29,175,90,138,120,254,161,29,120,236,141,118,38,24,251, +29,184,216,106,150,159,53,146,166,124,192,197,204,171,50,62,240,175,189,46,213,27,68,45,108,89,235,121,24,246,112,50,236,225,36,216,195,219,96,15,239,134,61,236,83,128,61,116,215,101,146,18,236,97,129, +190,135,91,15,123,104,249,163,47,236,225,16,216,195,97,176,135,61,55,205,30,190,235,245,50,197,190,135,235,207,166,138,236,97,117,136,152,106,205,225,77,180,255,43,246,61,196,245,190,145,219,154,121,0, +238,190,212,179,97,15,196,45,108,89,235,177,252,225,175,253,158,127,166,187,158,200,115,60,143,125,73,221,199,122,180,106,244,117,63,107,4,78,27,60,110,42,10,87,54,218,53,30,225,10,160,203,157,248,80, +114,189,182,245,43,246,61,228,37,236,155,123,17,69,246,176,50,151,172,233,159,215,186,75,215,244,3,213,245,223,175,23,131,139,236,97,145,61,44,178,135,69,246,176,200,30,22,217,195,34,123,88,100,15,183, +28,123,88,2,123,184,4,246,112,22,236,225,2,216,195,165,176,135,244,58,252,63,213,247,112,248,48,216,195,167,97,15,151,231,216,195,185,159,2,246,208,178,139,218,16,165,139,138,199,36,208,42,100,15,31,134, +61,156,118,36,53,172,67,203,75,180,246,61,76,217,195,53,176,135,147,191,78,5,227,155,127,243,66,66,216,197,82,175,173,163,94,53,213,3,198,220,190,185,96,119,249,10,115,105,42,247,251,34,78,25,129,90,125, +1,242,222,69,246,42,21,161,157,48,161,37,138,157,65,104,53,134,82,95,26,142,128,229,22,158,137,168,115,6,241,97,250,33,17,108,207,21,172,141,211,234,161,197,52,133,168,138,83,148,33,41,133,80,149,19,236, +161,223,87,209,87,33,123,120,29,236,225,67,121,236,225,115,176,135,179,96,15,75,97,15,111,249,22,146,226,175,127,76,81,124,149,39,167,42,239,60,77,197,96,15,29,188,8,105,163,227,218,130,6,35,85,216,158, +231,2,132,100,139,16,111,47,69,86,184,152,98,245,31,186,118,109,76,61,105,32,5,238,245,198,174,93,59,156,74,226,48,212,58,55,242,235,43,25,189,245,141,221,60,110,13,4,39,203,30,134,196,48,11,90,122,179, +127,150,61,116,212,55,98,15,31,202,177,135,24,59,107,6,236,225,179,176,135,51,96,15,151,192,30,246,106,64,236,161,226,81,101,12,209,37,79,77,135,5,113,239,127,215,104,165,13,170,122,84,6,168,172,245,37, +5,123,168,58,104,3,246,240,70,216,195,71,97,15,49,118,218,83,176,135,32,121,51,159,133,61,156,3,123,216,242,251,214,154,63,160,250,95,226,57,57,5,184,153,185,227,34,47,55,219,46,187,229,220,104,132,17, +160,108,207,211,1,213,235,98,70,120,49,178,221,178,1,3,122,124,50,111,94,247,148,4,95,181,234,223,35,251,210,75,131,137,172,61,168,16,156,149,42,224,116,213,232,187,164,64,69,129,168,26,233,16,140,43, +11,246,2,109,31,191,167,2,55,148,182,106,188,84,254,40,63,214,104,255,189,56,152,47,103,15,199,192,30,62,10,123,72,121,246,241,199,96,15,41,237,60,55,13,246,240,137,189,145,89,28,248,49,53,167,212,181, +81,48,172,69,253,51,18,99,247,231,73,181,29,241,108,100,48,34,148,47,160,169,122,12,121,254,98,84,115,11,208,78,253,106,226,196,14,40,114,198,48,79,71,161,147,92,239,198,206,217,197,139,123,34,52,93,207, +8,170,207,8,28,207,145,117,196,84,231,168,134,245,171,226,21,133,104,98,60,42,120,84,223,58,186,209,34,65,181,143,128,135,98,54,5,108,254,91,78,15,217,67,255,125,141,238,122,5,236,225,24,216,195,199,96, +15,49,246,225,7,97,15,31,132,61,156,5,123,56,226,80,75,52,191,180,2,130,14,116,53,165,212,121,24,123,2,143,149,146,242,81,222,200,96,222,114,51,254,227,69,136,66,75,16,142,149,245,232,209,254,95,207,63, +223,21,117,252,213,232,37,239,64,220,125,19,2,179,225,105,128,138,57,171,160,37,140,205,202,127,29,97,13,14,240,50,12,86,235,161,26,79,245,109,136,217,52,52,8,23,41,23,245,92,138,100,188,238,209,235,216, +29,113,255,159,78,29,97,15,111,128,61,124,8,246,240,17,184,195,201,60,15,193,30,62,0,123,216,248,136,127,98,104,25,47,103,53,134,175,241,142,190,220,137,231,206,21,142,48,111,124,18,202,215,69,24,190, +144,200,250,31,67,135,94,200,7,235,139,10,103,80,218,76,249,189,247,70,243,193,110,67,99,213,39,29,1,151,154,44,149,230,175,29,225,44,194,147,143,227,41,89,82,141,167,120,220,17,86,165,167,92,49,52,213, +66,151,194,92,33,131,82,10,149,237,123,120,229,112,216,195,187,96,15,239,135,61,164,14,125,215,237,176,135,147,97,15,7,166,69,245,95,243,130,94,100,90,172,244,66,66,12,246,118,196,242,81,222,96,132,145, +245,126,25,224,98,54,115,183,140,0,179,84,157,198,212,169,237,137,204,253,49,122,112,218,57,122,245,234,1,233,45,13,151,93,214,46,93,67,131,23,118,132,13,78,249,116,90,244,76,83,53,235,124,118,30,123, +141,186,6,103,187,92,102,129,75,13,214,189,141,9,138,221,116,233,141,216,195,43,97,15,111,165,248,126,43,236,33,116,218,253,147,96,15,111,169,135,190,135,65,161,105,80,240,74,217,206,120,254,185,98,111, +117,89,74,248,117,107,71,56,219,240,81,93,102,184,115,0,151,65,169,137,248,72,189,168,253,202,246,61,188,162,11,236,225,53,168,12,48,246,230,137,20,224,111,130,61,164,60,91,231,125,15,93,103,3,144,14, +42,45,70,61,12,215,205,85,218,169,207,82,80,234,8,139,233,136,9,40,41,86,98,172,97,209,52,46,140,13,128,90,119,23,2,209,96,235,199,41,123,216,30,246,176,47,77,151,129,179,110,26,15,123,56,14,246,240,62, +216,195,225,117,220,247,80,49,168,174,106,84,206,167,211,178,238,238,75,241,103,84,193,171,164,85,51,109,192,114,116,53,86,35,227,209,240,48,86,69,125,16,166,209,247,48,216,195,206,151,195,30,94,253,249, +212,216,241,99,96,15,111,129,61,188,185,30,216,67,129,44,229,131,186,117,116,198,139,64,22,40,94,176,12,70,108,85,121,70,105,153,194,24,93,41,53,159,172,161,209,159,201,17,246,103,77,65,149,58,133,246, +242,188,243,14,77,6,244,217,45,185,126,20,236,33,10,131,241,99,96,15,239,175,99,246,208,17,211,221,76,36,252,181,198,139,227,105,152,47,192,8,29,115,59,110,124,208,96,35,180,106,91,151,160,48,214,145, +54,82,71,35,27,221,221,132,68,79,208,253,205,210,66,190,164,212,233,148,83,142,79,90,54,223,61,25,58,112,207,228,218,171,247,74,174,103,78,63,116,239,103,147,203,47,171,3,246,208,141,128,27,2,1,170,124, +50,45,112,60,141,143,251,0,162,31,162,115,89,157,180,84,90,192,150,209,202,51,107,172,146,99,141,85,137,107,208,114,249,50,5,21,167,85,209,167,123,235,218,167,158,178,123,210,165,211,30,201,240,33,95, +72,70,93,245,197,100,18,40,94,223,62,103,212,46,123,104,114,31,170,117,117,205,6,162,66,56,94,240,135,209,12,210,17,54,200,249,18,76,35,3,161,213,101,29,77,51,44,71,83,229,188,218,106,71,213,212,211,4, +37,58,93,218,132,70,241,218,133,167,110,151,52,61,243,11,201,233,39,126,54,185,244,146,93,147,94,221,247,76,70,12,35,106,223,180,123,50,100,240,73,181,211,247,240,185,153,235,217,195,245,61,128,215,95, +47,163,18,86,106,76,74,197,39,184,65,127,173,234,221,37,40,154,53,138,196,59,234,193,30,58,130,209,206,196,204,74,40,90,185,177,243,219,199,72,110,2,162,228,216,174,123,234,51,203,217,195,19,96,15,47, +164,187,229,37,141,146,33,151,75,153,238,144,140,27,185,71,114,227,216,93,147,225,67,79,80,210,248,161,183,28,215,140,61,156,177,49,123,232,142,71,195,252,80,174,173,126,200,248,192,126,248,104,45,230, +8,197,85,22,209,57,218,252,90,67,220,76,248,98,178,204,162,47,46,251,184,143,86,191,165,10,87,81,248,161,223,222,62,233,112,1,160,37,79,239,86,141,146,155,105,222,58,255,174,70,73,217,20,240,218,59,190, +162,188,241,67,175,116,174,25,123,200,25,84,126,223,67,141,115,110,25,132,20,130,7,157,22,13,105,178,116,154,115,84,55,214,157,117,107,65,44,3,154,203,149,73,137,65,207,249,111,114,226,60,247,101,56,85, +196,246,92,195,213,80,135,228,248,220,19,183,77,218,55,105,148,62,26,222,245,210,237,147,161,157,119,73,110,224,94,128,235,6,31,99,91,207,159,50,194,101,53,99,15,151,254,155,61,20,180,244,180,66,151,11, +168,82,99,13,70,206,193,0,183,4,61,28,81,169,52,179,41,127,237,46,201,168,30,237,255,162,167,169,134,27,225,117,123,231,191,177,33,94,128,41,169,83,39,250,30,54,59,115,155,228,188,83,62,151,28,242,237, +221,146,253,190,252,185,228,128,253,247,78,190,251,29,37,200,135,166,56,2,226,244,159,64,208,189,84,51,246,240,117,216,195,190,235,217,195,116,231,194,150,77,162,212,8,170,129,6,29,55,2,217,158,105,209, +21,79,131,77,32,252,25,95,146,6,107,104,156,130,248,85,140,199,117,219,81,119,158,155,142,186,180,5,108,105,192,91,175,175,254,98,170,192,85,113,175,186,150,77,66,250,85,240,195,76,140,163,158,127,241, +245,45,14,16,94,174,25,123,200,81,170,167,139,193,30,202,31,250,33,116,95,19,3,141,13,110,201,205,128,46,108,166,164,177,126,53,26,187,196,56,215,117,89,221,84,163,243,97,203,72,69,77,98,194,96,35,189, +253,30,66,135,105,110,173,193,46,81,142,186,146,99,151,44,165,197,236,224,254,86,123,236,225,212,211,211,27,206,60,156,243,244,209,83,72,3,82,214,216,232,134,167,193,193,29,106,172,132,139,110,47,213, +162,139,134,193,30,30,196,5,99,193,26,70,111,242,184,11,196,76,45,203,30,10,147,56,154,209,172,85,121,177,191,175,125,246,112,58,236,97,135,139,210,99,24,93,91,26,219,15,239,8,123,106,33,118,23,8,158, +238,28,215,84,152,72,56,183,157,239,82,45,254,29,3,87,52,133,203,118,180,12,208,50,220,92,163,221,138,6,233,178,197,217,67,35,183,163,108,128,210,224,224,14,53,220,244,81,55,247,133,4,119,232,26,29,220, +161,115,213,105,17,220,97,62,104,169,241,174,245,85,101,15,29,8,216,137,119,249,76,165,118,19,160,217,212,216,156,238,235,91,169,148,42,123,192,69,212,221,143,255,124,62,35,32,52,13,63,127,26,103,80,199, +179,220,156,204,188,59,149,96,115,114,50,143,138,192,148,199,54,102,15,29,1,161,75,215,101,3,83,96,120,186,186,1,77,99,163,87,90,112,135,230,219,166,156,26,28,100,105,116,180,244,248,214,104,107,111,212, +104,24,87,21,246,208,3,131,90,239,123,88,86,10,123,120,115,147,244,206,58,143,82,237,125,230,169,132,103,80,30,203,152,228,235,222,142,172,243,54,174,173,208,157,141,234,38,25,142,112,244,58,52,112,229, +131,150,82,46,140,72,57,123,104,112,218,20,123,88,231,125,15,173,8,4,123,232,185,150,167,139,30,184,121,254,228,28,213,216,48,216,17,118,125,54,65,241,104,199,140,202,132,34,139,225,57,79,195,104,65,75, +14,224,82,99,27,76,223,195,148,61,188,243,223,236,161,35,236,232,26,61,93,159,205,192,92,174,92,163,141,204,142,174,235,175,47,195,84,210,132,34,219,205,210,172,75,183,54,80,233,206,17,145,13,84,102,87, +155,98,15,157,223,245,195,30,78,131,61,156,240,111,246,208,136,29,77,30,133,174,92,71,93,130,98,19,224,197,36,102,75,20,190,210,125,178,89,149,167,36,70,106,151,157,184,11,207,185,26,237,59,93,110,52, +86,207,201,239,163,22,180,75,253,177,135,212,122,44,127,140,31,251,117,62,108,215,180,104,102,185,36,215,192,45,77,12,156,91,6,52,71,212,156,216,15,233,136,104,148,235,176,134,187,243,18,188,106,216,236, +97,166,176,53,107,6,236,225,77,176,135,28,146,7,123,232,205,102,94,36,146,223,247,80,128,35,182,120,209,247,48,203,30,234,202,13,143,61,164,62,107,201,210,194,214,188,217,176,135,51,96,15,41,127,140,29, +13,123,56,0,246,176,91,197,236,97,52,73,118,94,58,162,26,107,4,110,216,236,33,197,104,235,179,139,230,193,30,66,150,90,216,178,214,51,249,1,216,195,9,176,135,195,97,15,57,55,46,196,30,154,254,105,180, +95,93,95,197,242,182,14,246,240,78,216,195,85,176,135,211,97,15,115,133,173,7,239,133,61,156,4,123,72,69,192,67,242,161,131,96,15,59,201,30,30,250,41,97,15,123,195,30,82,159,181,100,249,224,189,176,135, +24,107,173,199,242,199,29,183,124,49,185,253,230,125,210,115,99,143,82,91,52,135,61,228,192,237,200,195,183,118,246,144,98,180,245,217,153,207,194,30,62,0,123,72,97,203,242,199,109,55,195,30,78,252,98, +50,97,44,199,167,156,27,15,27,4,123,200,233,162,7,110,205,155,237,192,126,118,183,116,75,231,145,141,59,158,216,245,4,99,28,157,163,93,150,12,124,46,61,13,139,61,28,14,123,72,201,210,42,158,133,173,59, +113,235,27,199,193,30,82,17,240,144,252,218,171,97,15,57,74,237,221,115,207,164,111,239,157,146,179,206,44,220,247,48,174,143,202,239,123,40,123,200,93,59,13,140,61,164,62,107,201,242,142,91,97,15,31, +134,61,164,214,99,249,99,2,21,129,209,215,194,30,114,110,60,146,102,143,99,110,248,76,210,186,213,222,41,17,110,189,40,238,171,52,144,101,217,67,115,116,146,142,127,122,123,3,198,190,218,224,251,30,90, +216,178,214,243,48,229,143,201,247,193,30,114,72,126,219,77,187,37,247,220,181,3,163,252,197,52,13,141,123,103,117,215,124,246,176,64,223,195,210,173,166,239,161,229,15,43,2,30,146,15,31,10,123,216,163, +113,122,31,151,10,30,239,191,202,235,123,88,100,15,115,247,114,20,217,195,124,89,82,101,84,76,141,169,22,255,67,165,65,57,29,133,200,156,154,138,198,219,109,183,221,104,154,52,78,99,95,187,140,20,178, +204,27,68,137,180,43,188,103,210,242,135,21,1,15,201,61,55,246,40,213,155,205,248,249,165,60,207,230,142,101,154,230,84,56,199,241,85,44,207,27,87,236,174,103,79,240,20,201,171,204,184,130,172,228,230, +252,165,77,64,151,197,190,135,140,68,145,61,228,37,20,217,195,218,154,90,149,253,59,53,14,90,149,253,7,13,237,207,235,197,224,34,123,88,100,15,139,236,97,145,61,44,178,135,69,246,176,200,30,22,217,195, +45,195,30,206,163,239,225,82,216,195,197,176,135,51,97,15,231,195,30,190,8,123,184,236,255,26,123,56,20,246,240,73,216,195,18,216,195,233,244,61,172,136,61,124,143,190,135,119,31,76,149,242,192,191,81, +144,19,195,91,78,5,242,109,246,219,179,216,148,116,200,167,88,54,186,73,102,83,185,46,90,141,131,81,225,220,242,167,63,253,105,41,2,149,180,163,229,176,97,253,254,126,239,189,237,83,28,239,237,183,199, +160,231,184,189,156,80,11,38,98,9,228,232,13,55,180,160,154,216,46,165,204,60,125,84,14,17,236,161,10,160,108,203,191,141,250,30,14,163,239,225,67,176,135,207,22,96,15,75,96,15,203,96,15,31,104,224,236, +161,197,238,16,174,4,153,22,236,161,34,183,130,125,15,71,193,30,62,0,123,200,221,153,203,74,232,123,248,34,125,15,167,195,30,206,128,61,92,10,123,120,83,3,103,15,53,88,89,131,85,126,141,86,190,168,50, +87,197,128,6,171,251,42,216,247,240,1,216,195,5,244,61,196,216,89,207,192,30,130,226,205,126,22,246,112,33,236,97,143,45,204,30,250,193,3,199,83,157,163,118,195,223,71,131,41,21,120,210,105,234,41,237, +17,161,172,223,17,150,137,240,239,86,216,247,112,60,236,225,67,176,135,24,59,237,113,216,195,199,40,215,62,9,123,248,28,236,97,243,45,196,30,250,193,163,135,154,35,25,146,255,64,2,252,170,104,52,140,86, +227,225,11,145,65,84,244,162,22,68,253,135,243,126,35,246,176,35,125,15,175,135,61,156,12,123,248,40,236,225,100,216,195,7,97,15,159,130,61,124,108,11,176,135,142,86,40,222,29,217,0,180,28,57,181,30,33, +17,86,84,170,130,71,233,146,13,105,164,91,148,29,43,126,81,188,166,204,201,95,171,249,80,69,32,134,87,222,247,80,246,240,122,216,195,201,176,135,212,177,30,190,23,246,240,94,216,195,105,176,135,195,235, +153,61,204,66,90,129,227,5,201,226,239,53,90,169,161,6,11,121,40,93,82,194,164,18,62,196,169,202,156,66,167,169,162,207,151,164,208,76,81,169,130,214,114,246,240,58,216,195,251,96,15,31,132,59,188,159, +231,62,216,195,123,235,153,61,12,17,168,31,178,16,142,231,72,171,216,209,141,165,96,156,199,42,124,148,51,5,127,168,145,170,110,133,63,20,146,171,213,116,116,227,222,121,151,47,53,36,87,14,133,61,164, +137,212,67,147,96,15,169,82,222,69,121,246,49,110,75,29,220,191,30,217,67,93,56,154,84,4,158,231,215,120,148,24,6,127,168,10,79,249,161,46,237,8,107,176,174,172,46,83,35,149,27,71,207,67,239,133,87,10, +21,114,168,245,188,69,175,228,170,97,176,135,92,5,123,199,141,176,135,52,137,187,255,78,216,195,137,245,200,30,6,185,162,12,201,209,140,72,29,56,158,46,175,91,27,184,84,210,10,70,171,223,82,131,169,54, +83,169,162,198,170,154,119,132,53,88,201,177,114,67,65,75,191,170,9,41,239,123,216,9,246,112,36,20,11,198,222,60,142,2,252,120,216,67,202,179,245,194,30,106,164,130,51,221,217,81,84,201,238,136,102,219, +2,134,204,223,121,236,8,107,176,1,203,209,85,65,175,204,88,67,163,127,105,240,135,254,153,145,221,233,160,156,201,250,177,89,91,135,246,205,146,254,20,215,111,26,227,3,123,56,26,246,240,46,216,195,161, +245,192,30,58,39,3,202,210,232,192,241,178,163,28,81,91,183,87,164,38,177,34,24,98,100,14,186,52,140,149,61,244,17,224,114,164,29,117,5,170,249,125,15,59,95,6,123,56,130,130,59,215,57,143,231,2,239,59, +111,132,61,156,80,135,236,161,107,173,238,171,194,78,55,213,16,71,195,209,214,197,53,94,61,116,182,37,160,63,239,203,81,113,235,186,27,93,182,162,119,105,0,151,65,171,105,172,129,204,8,110,102,182,1,123, +120,238,161,73,255,30,176,135,35,97,15,81,24,140,191,30,246,240,238,58,98,15,163,93,144,70,7,153,22,116,154,198,251,61,13,55,195,210,29,99,94,251,2,124,41,70,104,21,242,70,102,141,50,42,199,163,107,251, +61,31,17,130,104,17,40,43,17,93,241,202,217,195,75,96,15,65,119,174,189,18,241,12,115,250,161,59,235,128,61,52,19,82,169,174,122,221,252,88,35,76,36,92,106,28,109,51,169,232,134,167,68,216,165,200,209, +14,163,197,111,85,219,26,148,98,100,131,44,53,66,107,160,65,204,249,171,192,60,24,68,27,83,217,68,42,203,30,158,118,18,236,225,101,176,135,3,96,15,135,195,30,222,12,123,216,171,182,216,67,54,239,166,124, +38,248,193,30,170,128,21,176,114,137,49,69,84,49,171,68,88,151,53,48,153,42,250,2,252,25,3,154,89,152,17,219,236,202,249,25,109,119,3,243,201,182,241,12,99,141,226,206,97,49,3,5,171,138,83,21,194,168, +226,59,242,251,187,39,205,154,194,30,118,129,61,28,68,212,30,7,123,56,176,182,216,195,25,27,247,61,212,125,3,189,243,171,248,93,240,131,46,59,209,176,209,23,34,235,32,127,104,84,143,158,76,161,152,23, +174,52,159,54,235,242,215,186,187,17,60,160,75,191,175,192,220,72,173,70,243,160,131,190,155,26,124,240,65,187,39,103,159,190,75,210,174,229,30,201,0,132,50,19,175,223,45,25,62,168,182,216,195,233,235, +217,67,55,239,178,13,194,23,46,45,190,121,221,205,15,236,147,253,144,241,225,29,161,232,55,172,177,70,114,71,222,104,29,125,17,21,144,103,249,69,127,237,247,226,251,198,11,245,91,10,82,207,60,122,103, +154,61,126,45,57,252,224,93,147,147,143,223,57,185,248,252,207,37,221,58,237,149,140,185,122,119,12,62,177,150,216,67,206,160,130,61,116,179,32,93,26,204,97,24,28,6,186,220,136,238,104,156,107,108,180, +204,54,32,233,206,206,231,104,76,19,59,40,221,223,105,224,116,112,90,120,223,135,83,196,169,162,166,218,222,46,193,30,54,57,110,219,164,205,89,219,36,77,79,218,54,57,239,164,29,146,11,27,127,54,233,208, +234,243,201,181,195,112,233,1,167,213,82,223,195,23,55,100,15,93,38,204,148,98,151,99,144,113,153,137,54,247,166,138,70,97,13,142,104,235,124,212,189,77,64,98,191,108,162,226,50,102,128,51,186,155,152, +8,90,26,0,77,65,13,136,226,5,50,16,129,243,156,123,52,160,229,217,141,146,118,103,53,74,218,242,92,209,116,219,164,127,251,157,1,45,119,73,250,247,57,183,150,250,30,190,250,111,246,48,250,30,58,71,99, +52,179,237,195,52,208,81,141,230,142,254,58,250,149,58,138,70,237,56,253,240,4,68,230,48,118,84,97,184,145,222,24,161,235,251,82,118,217,101,151,245,221,181,62,183,91,185,177,109,206,196,96,158,94,244, +48,189,165,71,163,228,201,107,65,107,135,28,234,92,127,163,230,125,15,57,74,29,206,233,98,150,61,52,131,138,54,157,17,136,204,137,131,59,52,105,200,111,1,232,214,208,228,67,183,22,238,16,187,211,248,24, +241,236,30,218,145,247,103,29,121,55,18,6,172,239,127,103,231,164,197,233,59,37,231,157,176,75,114,198,145,59,38,167,30,190,99,114,252,247,118,73,78,62,252,243,73,135,11,191,144,116,108,113,220,63,72, +65,95,98,59,249,90,205,251,30,62,182,33,123,232,145,76,116,139,14,12,47,90,255,133,27,235,218,6,44,127,206,64,228,53,83,174,205,46,79,129,238,68,43,207,184,165,41,14,13,36,75,163,227,86,144,46,223,63, +236,144,148,46,253,230,55,190,154,236,253,197,189,82,2,70,85,174,89,152,123,103,54,27,127,165,41,198,106,130,235,171,74,161,114,87,77,29,204,215,189,54,40,71,240,182,239,33,88,148,48,191,150,163,123,252, +227,136,17,39,176,254,157,201,178,115,46,143,7,229,103,38,51,158,221,152,61,116,7,228,114,227,72,7,119,232,87,115,228,48,214,101,198,173,160,1,200,249,169,193,209,213,210,228,37,186,90,250,107,71,60,70, +59,186,204,75,168,69,223,67,201,82,13,150,153,136,71,41,178,215,93,232,125,252,249,127,179,157,92,198,93,65,101,234,190,48,212,107,216,213,143,237,177,129,193,100,78,221,112,157,197,68,203,213,44,63,239, +29,127,252,177,208,220,167,128,208,157,201,122,122,70,138,227,121,72,126,37,231,198,217,190,135,254,39,70,111,197,161,1,93,58,159,163,7,184,75,146,81,220,245,217,101,200,151,19,6,103,185,195,232,106,25, +252,82,52,111,117,244,205,174,116,231,108,223,195,208,88,107,172,163,235,246,209,207,85,251,236,225,35,176,135,52,145,242,120,213,195,117,141,53,3,243,246,37,13,118,84,141,214,46,75,34,241,145,52,184, +222,154,126,122,204,99,148,118,132,13,86,26,148,15,89,106,188,163,237,11,17,241,9,142,169,178,190,135,117,195,30,174,128,61,188,105,61,123,104,154,233,200,74,166,121,28,163,193,249,160,165,201,136,160, +165,6,187,204,184,171,50,24,57,79,53,88,195,2,178,244,171,7,244,210,105,190,8,101,197,129,209,110,217,190,135,84,4,130,61,148,72,139,158,135,126,200,104,199,235,188,213,149,157,187,46,95,38,17,26,172, +75,199,129,65,240,195,110,70,52,214,229,14,173,101,178,205,54,219,164,193,168,58,236,33,103,95,255,68,183,185,22,143,43,67,120,238,252,189,146,121,171,86,211,214,9,222,143,183,237,70,53,84,14,202,246, +225,13,63,141,219,149,145,58,150,128,216,252,102,252,248,19,216,143,158,204,28,60,142,164,225,176,244,158,73,203,31,119,221,6,123,216,241,223,125,15,93,54,68,114,212,65,199,121,85,24,235,232,186,254,186, +133,116,35,161,75,59,194,113,142,29,148,184,211,66,99,99,205,173,74,223,67,147,17,93,189,238,251,30,62,13,123,56,22,246,144,67,114,143,80,131,61,116,206,25,64,92,79,53,210,52,209,100,194,162,154,55,67, +68,231,120,55,17,209,112,217,229,201,244,209,151,166,145,209,190,211,35,157,77,177,135,238,143,235,158,61,156,67,223,195,231,232,123,72,173,199,242,199,248,209,155,102,15,221,112,8,74,26,77,205,133,85, +193,187,85,140,196,195,151,224,135,206,26,170,43,187,21,116,93,117,25,114,211,144,237,104,153,109,43,230,60,183,249,148,76,132,75,17,83,97,6,238,171,152,92,217,177,146,227,93,43,188,19,207,63,224,63,223, +145,249,208,146,29,209,10,82,192,53,128,208,43,24,177,63,244,238,253,253,100,221,75,244,61,132,72,203,22,182,102,61,3,123,56,225,223,236,161,46,237,233,162,163,19,236,161,208,165,70,7,123,24,8,79,126, +223,195,134,199,30,222,70,223,67,234,179,150,44,45,108,205,155,9,123,248,44,236,33,229,143,177,215,194,30,246,47,204,30,202,31,105,172,163,20,204,97,124,117,212,125,25,13,183,239,33,197,104,235,179,139, +102,195,30,78,135,61,164,176,101,173,103,242,61,176,135,99,96,15,135,192,30,114,110,156,207,30,234,162,62,158,86,248,212,148,61,180,21,160,221,241,8,148,101,246,80,203,181,21,107,131,11,219,220,198,204, +234,11,249,202,249,77,138,75,113,175,157,113,201,75,41,104,77,39,178,190,69,253,118,185,50,3,111,253,189,251,54,216,195,21,176,135,79,195,30,82,197,179,176,245,224,221,176,135,119,192,30,82,17,240,144, +124,104,255,125,146,206,151,193,30,114,186,120,242,73,235,211,193,173,187,239,97,79,216,67,234,179,150,44,31,188,27,246,16,99,173,245,88,254,208,232,219,38,0,103,113,110,236,81,106,243,139,119,75,78,229, +192,237,8,206,160,14,61,132,190,135,7,84,191,239,161,49,161,64,223,195,119,153,38,222,82,106,55,90,175,90,62,130,103,127,30,187,1,109,112,47,109,149,84,60,46,214,184,202,126,68,208,129,100,58,243,20,144, +120,159,179,87,28,51,47,255,96,49,218,250,236,204,39,96,15,39,193,30,202,29,82,254,184,109,34,236,225,88,216,67,14,201,61,55,246,40,213,211,197,75,47,130,61,188,8,246,240,200,170,177,135,206,123,79,42, +141,226,46,89,36,20,13,164,239,225,16,216,67,74,150,86,241,44,108,221,201,8,223,120,3,236,33,21,1,15,201,71,141,128,61,228,40,181,87,87,216,195,238,59,113,240,182,71,26,193,93,110,76,252,227,188,217,224, +230,242,148,101,15,93,135,27,46,123,72,201,242,14,154,48,79,193,112,107,61,150,63,38,80,17,24,125,21,70,115,110,60,114,240,23,146,177,87,127,38,105,211,98,239,116,212,100,15,221,1,25,204,242,217,195,232, +123,152,97,15,151,243,189,213,224,123,13,180,239,33,133,45,107,61,15,79,130,61,188,11,246,144,67,242,219,198,193,30,222,12,123,216,253,139,233,198,192,39,118,64,110,66,220,222,249,120,39,72,129,190,135, +91,25,123,72,69,192,67,242,225,131,96,15,187,175,103,15,73,73,255,197,217,83,62,123,248,78,177,239,225,250,158,224,69,246,176,208,210,179,41,117,97,141,169,22,255,67,158,34,123,200,75,40,246,61,228,37, +72,136,218,188,241,48,158,195,51,143,191,247,251,30,165,154,3,123,217,215,215,120,246,225,241,164,66,15,218,190,54,160,175,26,187,244,38,231,203,122,119,183,233,227,46,60,187,243,120,117,185,56,108,145, +61,172,141,209,171,202,191,81,167,35,92,149,15,80,223,63,83,47,6,23,217,195,34,123,88,100,15,139,236,97,145,61,44,178,135,69,246,176,200,30,86,233,212,18,221,198,174,200,23,90,35,252,124,226,163,143,62, +122,149,98,119,74,168,217,48,174,71,143,38,136,210,250,167,157,182,74,75,135,160,191,26,146,182,40,146,80,123,227,141,17,72,30,198,242,251,94,40,234,174,72,94,90,219,17,230,240,178,100,254,28,216,195, +197,176,135,139,96,15,167,195,30,62,15,123,248,2,236,225,82,36,21,139,206,70,113,208,10,197,93,227,244,226,223,133,11,163,21,224,225,252,63,223,253,255,237,189,119,156,215,245,153,183,139,81,99,3,163, +216,98,65,41,34,189,195,80,69,197,2,138,40,29,4,164,75,145,34,32,32,168,96,3,44,40,2,214,32,168,216,162,40,34,138,138,136,72,145,162,38,209,100,147,53,155,39,207,179,39,207,150,179,207,110,54,231,188, +206,238,115,146,221,236,238,231,92,215,111,230,158,249,78,17,17,126,67,241,204,31,223,215,192,204,48,204,253,253,244,251,126,95,159,55,23,15,214,77,147,38,182,36,129,223,228,79,148,106,118,155,39,71,233, +243,149,217,212,227,143,63,126,50,101,214,115,217,167,239,245,202,154,189,238,180,8,246,24,130,189,2,37,206,202,127,253,215,127,221,99,176,84,1,119,139,227,61,250,232,80,100,72,11,169,238,223,150,179, +21,211,105,107,207,158,153,60,51,114,22,69,219,183,79,70,148,118,55,50,137,145,233,246,185,61,185,48,172,103,78,197,167,82,192,11,124,101,148,84,14,168,32,184,97,112,175,52,123,6,236,225,106,216,195,15, +97,15,215,148,97,15,223,161,68,251,86,147,180,101,227,69,233,215,95,192,30,46,129,61,108,127,132,178,135,229,124,15,39,14,3,226,128,61,124,26,246,240,213,34,246,144,96,223,94,219,48,109,255,16,223,195, +247,97,15,55,193,30,62,6,123,216,250,8,240,61,84,187,97,165,95,173,166,242,69,75,165,113,193,126,22,192,28,56,176,79,186,251,14,216,195,39,40,190,175,133,61,124,31,246,112,3,236,225,75,176,135,47,193, +30,190,11,123,184,224,48,97,15,237,186,138,84,20,157,133,240,44,110,251,143,74,191,74,29,37,200,202,23,21,199,120,167,173,236,97,57,223,195,33,215,147,230,133,61,124,11,246,144,96,215,173,134,61,228,62, +220,183,86,195,30,174,131,61,188,233,16,179,135,142,201,44,142,103,128,10,87,172,246,171,142,87,219,161,168,37,112,60,91,220,128,213,97,217,194,21,250,30,206,154,144,22,223,3,123,248,4,236,33,193,174, +89,9,123,248,35,202,181,171,96,15,95,134,61,236,115,152,176,135,225,181,164,146,78,173,164,79,4,173,148,80,66,77,37,173,173,171,63,155,114,38,95,68,133,190,135,178,135,119,192,30,62,9,123,248,52,236,225, +19,176,135,143,193,30,62,11,123,248,52,236,97,187,131,236,123,232,120,204,226,120,182,178,1,103,245,147,89,75,64,133,163,202,133,21,141,43,19,14,6,81,5,144,250,107,135,130,2,151,82,236,225,104,216,195, +59,96,15,159,128,61,92,78,137,246,81,216,195,71,97,15,95,128,61,156,113,136,216,67,89,37,245,27,17,112,150,78,243,107,6,29,238,120,138,212,148,50,169,164,215,206,196,96,213,121,201,56,168,148,183,71,24, +176,85,67,5,51,197,236,225,92,216,195,165,176,135,143,193,29,46,227,121,20,246,112,9,236,225,229,7,209,247,48,220,239,20,156,101,91,58,235,144,151,133,46,237,210,234,161,13,88,254,80,241,154,193,42,87, +12,85,174,186,107,199,126,212,159,236,250,57,246,112,58,236,225,3,176,135,143,192,30,46,130,61,228,58,216,231,151,194,30,78,58,136,236,161,138,28,165,73,97,27,230,223,131,65,204,226,120,89,224,82,85,173, +98,83,187,115,8,205,203,34,121,138,84,109,217,64,242,172,71,229,216,195,105,176,135,92,3,187,148,91,81,151,80,131,126,250,65,216,195,123,15,18,123,232,88,205,218,133,133,59,94,96,59,17,184,221,60,248, +195,172,255,161,72,128,150,68,74,140,213,105,170,160,87,103,45,245,34,173,166,116,41,2,182,210,104,208,99,134,195,30,206,68,101,64,176,139,231,83,128,191,11,246,112,73,37,179,135,6,234,228,162,124,88, +133,93,192,89,106,156,195,28,206,110,28,12,98,240,135,1,92,58,97,217,186,142,93,131,13,156,54,32,45,193,45,133,169,170,123,124,68,241,20,195,20,250,30,194,30,142,129,59,188,211,7,246,240,118,216,195,7, +97,15,167,85,18,123,232,94,56,36,252,182,174,75,140,75,138,45,231,242,226,196,228,114,164,222,57,107,5,168,130,214,113,238,247,42,71,180,117,229,32,108,89,91,213,32,109,85,193,173,240,63,116,45,15,186, +84,213,64,177,239,225,13,176,135,211,40,184,35,169,88,52,7,246,240,30,216,195,187,243,205,30,114,16,80,66,152,229,21,92,122,130,72,83,252,29,100,154,99,58,44,121,99,76,27,188,93,94,150,65,60,71,45,181, +193,6,51,28,129,6,169,102,240,129,214,150,101,15,187,95,9,123,56,26,246,112,6,236,225,109,176,135,200,42,86,62,152,79,246,240,191,205,0,221,25,153,83,157,7,123,232,71,229,191,225,119,38,129,226,100,164, +98,54,252,16,195,192,34,186,183,45,239,247,40,41,118,102,118,98,10,43,207,44,89,106,176,225,156,231,247,248,253,165,124,15,187,224,123,216,19,108,103,60,236,225,52,196,51,51,96,15,31,128,61,28,154,47, +223,195,79,198,230,142,118,174,137,113,9,137,45,231,122,26,238,117,122,177,184,212,200,30,41,21,182,197,221,77,185,195,114,194,138,117,218,175,27,172,227,53,140,30,3,178,12,26,38,96,203,112,184,20,49, +80,230,95,202,247,176,3,236,225,160,83,210,172,137,176,135,183,192,30,222,11,123,56,62,95,236,33,135,119,207,179,106,48,220,3,171,113,118,13,117,211,224,238,72,169,176,147,144,143,155,9,129,142,64,240, +108,81,101,195,1,104,121,225,129,99,54,192,232,44,62,107,128,97,110,35,74,16,44,148,51,57,2,151,98,246,80,145,91,171,166,53,82,239,30,213,211,132,97,53,211,109,19,153,181,239,164,197,39,231,139,61,124, +173,132,61,244,136,151,13,216,201,199,205,131,188,160,143,179,171,226,112,25,97,191,38,193,22,204,131,59,40,3,50,224,192,5,220,108,248,196,223,131,153,112,246,14,119,75,127,78,9,123,88,8,91,54,190,168, +70,186,162,203,73,233,134,222,176,135,99,78,79,15,220,6,123,56,37,95,236,225,171,165,217,67,143,119,177,29,180,187,217,2,170,224,157,136,156,121,179,173,19,110,91,118,87,131,114,226,18,248,80,41,111,207, +176,135,68,79,9,11,65,127,94,252,76,127,174,95,87,222,36,123,232,242,148,51,138,187,240,228,212,185,237,137,233,186,43,127,144,198,14,57,45,221,123,43,236,225,148,124,177,135,228,160,202,178,135,17,176, +64,71,32,120,174,167,254,217,199,86,179,139,198,69,6,254,217,238,236,238,203,37,203,110,110,119,119,77,118,215,149,53,140,244,101,56,100,108,217,176,242,116,89,82,133,75,94,43,183,60,53,188,176,122,42, +104,121,98,186,226,226,234,105,104,111,38,175,201,116,233,73,249,98,15,55,150,247,61,244,205,71,176,6,23,176,86,248,28,58,203,58,249,184,123,114,44,198,245,51,110,76,12,218,117,57,46,52,113,130,211,140, +217,9,205,19,148,47,192,57,192,23,20,151,30,40,53,182,133,175,234,112,90,234,84,192,133,250,23,158,152,218,52,59,33,93,210,1,61,231,213,167,166,185,19,107,112,25,66,190,216,195,207,75,251,30,186,197,147, +233,205,110,248,179,24,94,216,255,133,105,178,167,32,39,52,151,43,103,235,160,209,108,233,112,146,55,57,224,26,237,186,110,240,46,119,246,0,65,203,227,142,59,174,80,53,127,74,141,52,228,210,106,233,186, +206,39,166,130,38,199,166,22,141,142,75,237,91,30,159,122,92,82,61,205,24,125,124,26,53,226,122,21,126,95,28,56,123,72,42,213,236,98,89,246,208,163,92,92,41,19,36,105,88,0,250,119,199,172,99,218,110,105, +171,185,27,243,144,97,11,187,142,27,184,155,151,216,133,133,165,167,107,185,155,24,119,113,162,180,62,57,81,121,245,19,114,1,223,192,51,168,107,181,212,179,195,81,233,178,118,133,1,79,130,48,245,130,253, +252,248,30,146,55,126,105,85,105,246,208,28,148,217,10,105,209,108,208,6,106,247,182,27,219,178,206,224,46,85,66,31,174,203,174,201,6,105,192,65,160,197,245,54,6,238,207,139,116,144,45,110,111,10,164, +231,146,102,71,231,130,29,124,73,225,99,208,67,46,59,42,141,184,230,251,105,220,224,179,61,108,252,145,128,183,176,103,248,236,192,217,195,87,96,15,135,150,248,30,154,142,113,35,98,171,187,12,57,142,179, +107,168,45,235,50,229,76,236,222,217,238,233,222,59,2,14,238,208,143,97,222,234,248,118,204,250,24,184,123,111,243,94,57,59,177,51,78,77,125,187,28,157,250,116,134,48,237,82,45,245,233,84,45,93,219,254, +168,52,18,150,120,86,223,106,233,158,177,248,71,116,40,248,191,56,67,111,70,136,186,237,192,217,67,146,228,230,141,67,4,26,193,154,95,14,64,58,48,60,131,181,101,13,214,77,72,150,59,52,168,224,14,93,207, +125,226,70,53,63,31,201,2,79,94,142,241,96,15,155,54,105,72,64,156,136,26,193,79,252,176,102,58,251,172,211,82,157,243,78,73,23,156,119,70,106,209,248,130,52,164,119,206,226,243,175,200,156,126,146,63, +223,195,21,133,236,161,93,57,216,67,111,62,115,131,16,107,111,108,24,108,245,240,59,116,11,234,248,116,130,50,224,44,119,232,206,205,212,110,128,150,89,186,84,248,43,203,30,250,119,97,145,44,93,234,223, +93,166,252,26,90,235,221,244,188,159,128,48,108,161,244,162,155,128,56,143,186,175,19,74,149,90,84,191,147,32,95,193,68,241,49,91,192,45,72,120,255,97,230,204,118,116,213,246,180,80,167,92,173,103,251, +246,203,210,142,173,176,135,247,151,248,30,42,251,85,238,235,88,116,93,118,227,225,114,101,235,186,134,58,51,59,89,101,65,75,91,205,19,87,220,7,226,38,198,199,160,3,180,116,82,243,106,41,253,213,202,250, +30,134,19,151,56,144,193,138,9,153,244,99,247,245,143,60,155,177,37,220,14,221,246,58,49,117,44,18,189,41,114,59,166,92,109,137,177,50,144,183,255,49,51,233,46,198,192,158,94,189,58,252,215,123,239,181, +102,253,236,66,48,215,16,64,55,2,111,149,171,8,12,37,73,238,97,194,113,108,178,205,95,206,95,214,29,81,108,39,221,60,56,118,93,94,92,106,76,18,152,0,200,130,150,81,141,112,187,106,222,202,160,157,204, +130,8,183,117,221,89,169,140,55,227,225,137,73,148,54,238,3,16,150,118,95,93,57,236,97,81,97,203,242,199,242,135,42,102,15,253,165,227,70,52,131,117,23,229,76,235,250,107,98,192,137,200,46,237,56,117, +162,10,186,84,133,188,160,165,235,173,156,67,144,106,158,144,246,230,123,104,15,168,60,223,195,162,194,214,250,53,245,211,235,171,97,15,239,170,152,61,52,37,99,151,116,141,181,117,4,177,252,115,120,29, +198,169,41,102,105,187,183,128,37,158,44,197,129,218,141,163,101,247,209,247,240,167,12,173,237,164,130,118,22,121,187,116,46,210,119,158,17,90,205,10,203,165,116,207,218,116,213,23,217,242,125,130,41, +227,54,142,100,255,99,224,192,86,185,250,236,230,247,234,165,183,9,118,253,143,97,15,169,245,88,254,88,52,15,246,112,122,197,190,135,30,231,194,67,201,110,231,172,27,231,98,39,38,95,130,44,162,208,86, +214,247,208,63,59,9,29,90,246,144,75,51,63,219,10,123,184,22,246,48,83,216,90,183,26,246,240,190,242,236,97,16,104,6,236,164,34,189,34,181,226,227,100,83,145,239,161,221,216,49,41,96,25,99,86,194,197, +110,27,176,101,100,61,60,72,132,173,24,61,200,57,103,151,126,76,12,139,25,180,168,173,219,180,72,204,90,92,36,255,218,130,56,173,113,62,221,104,33,147,199,118,90,225,19,186,201,110,43,239,75,31,132,61, +164,62,107,201,210,194,214,134,87,96,15,95,128,61,164,252,177,96,46,236,225,205,133,236,161,227,216,147,149,104,109,0,150,225,135,86,17,123,120,248,250,30,82,121,183,24,109,125,118,227,107,176,135,47, +193,30,82,216,178,214,179,242,81,216,195,249,176,135,83,97,15,201,27,143,24,62,48,245,234,213,43,215,82,30,214,237,182,209,234,249,96,15,57,32,28,36,246,144,202,251,99,15,194,30,110,132,61,124,14,246, +144,42,158,133,173,21,15,195,30,62,8,123,72,69,192,36,249,204,137,176,135,55,212,74,61,200,46,202,30,58,38,13,220,199,195,187,127,247,163,143,57,103,187,190,75,141,221,61,214,215,178,221,216,46,239,247, +10,90,178,52,253,146,158,184,131,186,242,207,57,54,174,165,251,78,206,116,101,77,113,78,252,86,215,45,251,205,140,179,211,248,193,19,232,222,111,43,32,241,62,103,108,232,119,215,169,115,193,31,39,221, +4,123,72,125,214,146,229,10,124,14,13,214,90,143,229,143,165,80,105,75,238,6,206,34,111,108,42,181,127,79,124,15,59,226,123,216,20,246,176,209,254,177,135,92,70,82,17,123,248,151,7,151,61,164,24,109,125, +118,237,74,216,195,37,176,135,20,182,44,127,44,193,250,111,241,60,216,67,146,228,119,145,55,158,197,13,133,99,6,159,194,33,29,246,176,231,177,169,77,203,26,185,205,195,55,249,30,58,254,15,63,223,67,138, +209,115,110,129,61,164,100,105,21,207,194,214,50,186,245,131,119,192,30,82,17,48,73,62,127,250,233,105,54,169,212,155,135,195,30,142,193,247,176,107,197,190,135,21,177,135,46,77,135,39,123,72,125,214, +146,229,210,251,96,15,9,220,90,143,229,143,251,169,8,220,115,43,221,155,188,241,220,73,248,30,206,57,62,13,236,93,226,123,152,101,15,77,210,217,170,238,156,246,226,123,120,152,178,135,20,182,172,245,172, +122,8,246,144,138,128,73,242,37,243,106,164,199,23,30,155,38,141,46,100,15,179,190,135,145,243,14,246,176,2,223,195,29,71,142,239,33,229,15,43,2,38,201,103,79,129,61,28,83,197,30,238,52,45,99,166,130, +13,203,118,90,121,15,71,188,109,222,184,194,185,246,237,42,223,195,194,11,13,78,228,41,135,189,87,177,135,236,39,246,122,113,201,254,176,68,190,233,92,10,165,144,62,115,151,83,197,30,22,157,77,171,216, +67,94,196,217,60,230,156,78,227,57,133,199,43,41,236,45,199,152,103,219,159,30,247,117,255,230,160,144,105,249,252,133,15,244,103,85,5,124,160,111,176,162,127,95,197,30,86,177,135,85,236,97,21,123,88, +197,30,86,177,135,85,236,225,17,206,30,2,104,13,28,144,187,47,243,247,22,5,184,108,116,187,215,214,153,77,245,114,51,80,188,218,81,63,58,160,227,97,94,216,195,207,97,15,119,193,30,126,8,123,248,22,236, +225,7,176,135,239,193,30,190,6,123,248,22,236,225,251,176,135,155,247,194,30,190,3,123,248,49,236,225,22,216,67,174,165,59,188,217,195,247,97,15,231,236,3,123,56,29,246,240,57,216,195,15,96,15,95,203, +176,135,27,90,167,13,111,193,30,190,1,123,184,1,246,240,51,216,195,197,176,135,5,223,37,246,240,86,216,195,39,97,15,95,134,61,92,215,12,20,15,246,112,13,236,225,251,176,135,239,192,30,190,7,123,184,20, +246,176,213,97,198,30,170,255,80,251,225,245,201,33,90,169,136,61,244,198,225,10,125,15,231,194,30,46,135,61,92,3,123,72,75,111,89,15,123,248,60,236,225,106,216,195,183,96,15,239,61,76,216,67,53,31,86, +15,173,255,134,114,62,123,45,186,194,21,3,215,24,195,151,17,70,143,193,30,122,103,181,88,158,247,87,43,171,88,181,12,246,112,45,236,33,193,174,123,22,246,144,251,112,223,90,5,123,184,6,246,112,204,97, +194,30,90,253,207,98,2,74,27,84,223,169,134,15,79,135,96,16,101,36,178,236,161,222,104,86,29,213,143,88,44,159,45,123,56,31,246,112,57,236,33,193,174,121,26,246,240,9,202,181,43,96,15,87,31,6,236,97,208, +104,129,226,169,238,241,207,2,92,170,236,20,156,133,157,129,50,68,197,46,118,125,19,240,234,190,124,76,202,91,121,80,48,163,40,205,43,157,23,206,129,61,92,14,123,72,121,246,197,229,176,135,143,194,30, +174,128,61,228,138,216,130,182,135,144,61,20,215,49,40,133,224,118,107,91,55,94,130,218,14,69,45,97,250,168,130,86,57,147,66,82,101,75,126,93,156,64,21,79,57,223,67,217,195,185,176,135,203,97,15,9,118, +213,195,176,135,15,195,30,62,11,123,56,237,16,177,135,234,175,108,61,91,50,107,33,22,116,154,159,11,201,112,224,120,42,126,148,9,171,152,87,57,31,202,122,127,86,57,246,112,120,255,180,96,54,236,225,195, +176,135,75,225,14,151,240,80,170,93,181,248,16,176,135,6,162,210,46,132,43,182,86,120,32,70,192,74,149,252,62,199,178,152,143,128,151,218,104,133,167,17,172,234,122,101,139,66,32,6,93,142,61,188,5,246, +112,17,236,225,67,176,135,84,41,151,83,158,125,254,97,216,67,46,68,160,168,254,119,188,164,15,25,10,159,80,199,86,152,230,13,108,166,142,115,9,251,82,251,77,100,130,231,160,162,123,11,157,243,14,68,160, +31,41,45,124,225,133,161,240,11,83,17,166,205,200,221,222,224,133,6,31,127,60,145,89,120,72,82,95,105,139,217,93,213,93,169,197,82,236,237,228,20,56,94,89,240,210,128,237,234,118,233,96,136,189,82,93, +45,166,226,113,229,139,89,193,185,90,108,133,106,42,128,172,252,23,251,30,78,129,61,228,26,216,165,119,193,30,206,131,61,92,8,123,56,191,146,217,67,103,80,39,35,39,165,0,180,156,121,109,185,48,136,179, +149,13,58,219,194,190,28,187,189,47,72,206,73,244,39,8,211,208,107,134,101,145,130,115,185,7,203,167,94,235,90,236,123,120,35,236,225,52,84,6,4,187,248,118,10,240,119,192,30,62,116,16,216,67,151,30,131, +182,101,21,114,27,184,129,168,137,14,137,97,184,226,133,53,175,58,45,225,45,197,223,182,174,90,204,192,105,109,93,85,185,130,89,42,233,133,181,12,222,123,5,84,234,89,75,118,246,206,177,135,163,224,14, +231,242,204,129,61,188,13,246,16,251,176,57,83,243,205,30,190,61,52,103,98,225,38,33,214,89,103,98,187,169,173,101,192,62,170,217,93,95,13,218,46,30,6,174,113,31,128,154,105,181,211,242,12,42,229,109, +89,101,199,209,178,226,3,193,77,216,245,45,148,171,2,50,96,197,110,74,162,70,13,132,61,156,66,193,125,54,236,225,44,216,195,59,97,15,239,204,39,123,200,169,199,131,128,111,216,29,82,200,247,13,38,160, +12,117,149,17,184,107,172,93,220,214,244,133,196,120,182,165,237,210,46,69,50,19,170,111,21,149,27,108,88,2,218,178,129,226,57,131,171,183,84,229,163,176,69,205,135,82,168,30,87,192,30,14,135,61,188,5, +246,16,133,193,162,153,176,135,11,243,201,30,254,21,236,225,205,133,236,161,91,69,31,187,164,227,207,110,169,114,214,53,212,49,233,231,13,220,110,27,86,128,142,221,112,184,180,213,124,73,78,84,106,172, +179,176,101,160,121,225,108,41,108,233,75,115,99,18,34,183,156,239,161,236,225,53,248,30,114,103,245,252,41,176,135,83,97,15,239,203,39,123,184,163,132,61,84,35,105,192,138,191,93,78,36,188,21,131,251, +231,120,1,6,31,118,37,42,105,157,185,237,13,46,53,190,8,101,198,34,3,142,213,240,84,203,6,27,45,44,243,228,215,29,223,229,216,195,246,176,135,56,226,205,26,7,123,56,25,246,16,73,197,228,155,242,197,30, +114,120,207,178,135,30,2,164,200,100,26,34,96,255,172,56,220,207,135,102,218,214,183,91,186,133,116,141,118,204,187,187,114,114,10,124,54,235,127,24,30,196,17,104,96,64,174,205,142,225,172,239,97,171, +38,39,167,222,87,225,123,56,4,223,195,241,204,218,115,0,181,110,206,23,123,248,106,121,246,80,5,188,24,143,111,95,217,191,155,6,31,73,150,236,231,92,90,156,137,13,222,160,253,154,129,4,36,157,13,46,96, +203,192,247,164,101,36,100,156,216,148,37,23,250,30,22,177,135,245,97,15,59,193,30,246,130,61,28,137,239,225,173,176,135,147,242,197,30,190,82,158,61,52,56,199,160,143,191,160,191,156,143,51,174,79,22, +115,143,89,215,205,132,59,45,119,87,246,12,123,133,47,196,151,16,63,43,62,250,226,194,117,207,158,99,11,151,98,15,235,193,30,182,129,61,188,28,223,195,65,248,30,222,2,123,120,115,190,216,67,114,80,89, +246,80,51,153,112,208,138,171,40,92,63,195,56,217,25,215,32,253,123,116,83,95,130,221,217,110,29,224,180,60,132,193,59,99,135,167,184,47,32,122,139,255,135,193,250,245,18,246,176,89,33,123,88,15,246,176, +249,137,233,202,206,176,135,215,51,121,221,76,151,158,152,47,246,240,189,210,236,161,75,147,227,202,96,35,208,176,255,139,117,84,246,208,238,234,146,227,47,238,68,230,82,21,91,82,119,100,78,104,46,81, +206,236,206,240,206,246,190,0,131,15,3,73,123,130,147,161,82,69,91,216,173,166,51,117,163,122,176,135,77,97,15,11,96,15,123,192,30,142,133,61,28,159,47,246,240,83,216,67,144,120,51,18,102,41,164,197,92, +91,109,49,3,42,107,255,151,181,0,12,87,60,151,34,49,30,55,45,110,73,253,247,254,221,165,203,153,219,192,229,155,156,221,13,222,141,137,251,108,79,82,110,100,20,138,159,121,230,25,185,173,102,235,214,45, +8,248,184,212,162,33,236,97,115,80,188,46,176,135,195,97,15,111,204,23,123,72,42,117,54,217,197,44,123,104,166,194,204,132,191,84,22,197,179,197,3,197,179,23,216,66,162,178,206,212,174,169,46,79,177,113, +113,35,98,247,246,164,101,107,187,83,19,167,247,216,104,171,187,35,83,78,28,236,97,179,122,53,210,165,157,154,164,230,77,234,166,230,23,29,159,90,54,58,145,128,79,74,221,187,212,72,147,6,229,155,61,124, +166,144,61,116,107,105,160,230,158,220,16,120,145,144,1,135,157,174,19,88,152,196,25,108,208,225,6,228,44,109,144,113,215,86,100,68,60,54,74,189,184,41,113,63,30,129,219,117,143,62,250,232,98,38,226,202, +22,71,167,190,160,120,237,155,156,148,90,54,60,33,23,112,187,102,213,211,213,180,240,152,254,231,229,153,61,124,169,132,61,20,180,52,5,227,117,19,6,103,171,186,182,58,11,219,170,46,89,6,235,100,227,58, +28,100,154,27,144,32,94,92,203,13,216,23,96,247,246,116,229,222,219,189,182,47,199,110,110,82,80,218,197,229,136,51,110,26,0,111,56,248,98,30,216,195,110,45,143,33,232,19,83,219,166,213,211,53,23,179, +203,26,80,160,126,243,15,249,99,15,73,146,223,70,222,56,235,123,232,73,198,93,147,227,52,107,255,23,220,161,193,218,61,253,229,109,193,44,134,23,6,143,238,220,2,160,142,244,144,61,193,192,157,216,2,202, +234,216,224,216,226,96,7,117,174,150,250,118,48,232,163,83,123,160,233,158,80,226,3,6,244,171,4,223,195,167,75,124,15,205,46,186,251,114,137,202,186,225,249,103,247,201,110,52,156,168,108,93,143,140,97, +203,25,220,97,214,220,49,252,75,109,233,184,123,203,9,77,197,173,210,255,211,106,158,154,250,117,132,44,237,116,92,50,216,254,29,171,165,1,69,207,224,139,143,74,3,175,56,29,119,190,75,220,126,110,81,171, +153,63,246,240,35,216,195,69,229,217,67,247,214,238,165,13,212,37,197,165,37,14,18,142,113,103,98,3,54,160,184,240,196,108,70,60,38,235,253,188,107,116,92,84,228,129,63,124,15,219,183,107,147,11,190,121, +195,243,210,25,53,79,76,77,106,211,149,47,58,49,117,105,114,92,26,214,245,123,105,124,207,211,92,174,254,9,49,249,135,10,83,243,195,30,126,2,123,248,14,236,33,21,129,138,216,67,51,143,225,12,157,189,195, +195,73,40,236,255,60,60,56,97,197,69,128,89,208,50,130,118,76,155,192,11,28,47,8,53,121,38,209,129,192,107,107,212,168,145,206,56,253,180,66,67,185,130,198,114,137,95,208,227,118,229,199,247,112,19,190, +135,22,182,168,245,88,254,88,126,63,236,225,240,242,190,135,46,85,102,63,156,204,44,183,24,168,79,96,120,206,198,6,100,107,218,186,66,150,230,199,48,163,203,157,192,188,2,82,222,201,53,119,95,124,15,253, +30,73,25,206,203,255,172,128,156,94,177,75,201,49,137,187,171,121,68,105,107,241,28,95,225,85,173,32,169,199,50,243,142,85,83,193,100,177,147,174,177,231,242,203,11,254,244,1,245,89,75,150,86,241,44,108, +173,7,208,122,125,21,236,225,188,138,217,67,19,110,110,244,125,243,238,138,28,139,113,237,148,193,70,182,196,86,22,131,61,246,216,99,115,75,79,208,106,225,68,251,77,236,97,5,190,135,178,135,187,14,156, +61,164,24,109,125,118,243,219,176,135,63,134,61,124,17,246,144,90,143,229,143,69,183,151,103,15,205,63,25,180,105,25,51,21,6,104,46,43,178,30,193,29,218,194,98,122,177,169,8,131,71,91,247,208,179,135, +227,96,15,55,195,30,190,10,123,152,41,108,173,123,22,246,240,46,216,67,146,228,222,89,231,150,83,47,83,79,54,62,110,248,131,23,12,246,208,113,88,17,123,232,62,217,127,99,46,122,111,236,161,63,231,224, +176,135,139,96,15,169,207,90,178,180,176,181,225,5,216,195,103,97,15,41,127,44,152,13,123,56,177,180,239,161,187,36,179,20,118,189,175,99,15,253,124,240,73,142,69,65,105,131,117,72,248,162,164,211,92, +135,125,194,209,82,86,209,159,205,228,244,239,252,249,11,190,127,59,51,248,118,164,15,143,49,94,195,213,82,25,68,117,158,163,190,81,32,238,55,241,166,219,162,161,120,134,73,102,143,154,10,175,56,182,242, +110,49,218,250,236,198,151,97,15,33,75,45,108,89,235,89,185,24,246,240,118,216,195,73,176,135,228,141,71,142,24,152,155,180,42,139,61,44,194,241,126,81,249,190,135,84,222,31,195,186,243,179,13,176,135, +56,90,90,197,179,176,181,2,20,239,169,69,176,135,84,4,76,146,207,28,7,123,56,8,223,195,12,123,152,15,223,195,34,51,216,96,15,183,179,175,255,242,224,176,135,99,97,15,169,207,90,178,92,129,11,158,193,90, +235,177,252,97,208,75,238,4,206,34,111,108,42,181,255,213,176,135,36,220,204,65,53,107,0,123,120,193,190,251,30,198,184,119,242,115,227,65,203,254,59,115,192,47,120,121,219,169,126,28,100,223,67,217,67, +234,179,107,159,134,61,124,16,246,80,238,144,242,199,146,121,176,135,183,195,30,146,36,55,111,60,235,38,124,15,201,46,246,237,94,157,7,246,176,249,190,179,135,101,125,15,129,163,127,102,55,182,101,139, +64,203,123,24,130,61,120,218,242,212,43,82,213,87,104,87,180,79,2,113,43,111,234,160,188,150,156,37,100,29,152,252,103,28,11,63,97,150,252,152,174,244,91,139,209,115,166,192,30,82,178,180,138,103,97,107, +25,45,252,224,109,176,135,84,4,76,146,207,159,130,239,225,77,248,30,14,173,153,38,13,131,61,236,188,239,236,161,115,0,19,212,191,17,248,223,73,130,59,65,233,85,90,212,141,245,82,51,88,253,74,117,146,22, +239,249,254,1,35,0,138,190,138,238,96,31,198,127,244,2,85,250,157,92,134,189,135,75,6,182,208,229,118,50,203,254,141,119,195,90,178,92,122,55,236,225,98,216,67,106,61,150,63,238,159,5,123,56,141,238,77, +222,120,238,4,216,195,105,199,167,65,189,74,179,135,110,48,236,178,193,30,122,125,133,21,14,175,170,56,114,124,15,41,108,89,235,89,69,249,99,37,21,1,147,228,75,230,224,123,56,31,223,195,225,220,153,195, +120,12,246,208,165,40,203,30,186,205,204,176,135,31,242,98,183,178,35,59,130,124,15,101,15,169,8,152,36,159,125,51,236,225,168,66,246,208,146,235,215,248,30,126,68,55,222,164,1,58,197,187,220,85,21,58, +71,23,93,104,224,58,107,23,246,82,3,215,218,83,236,198,217,245,246,128,187,116,246,7,240,131,191,199,35,102,35,126,211,137,203,189,230,50,107,110,96,34,241,14,156,79,184,107,250,115,210,63,59,57,237,124, +68,87,221,194,198,99,39,99,255,11,54,9,95,177,153,248,45,203,202,95,179,193,248,107,102,217,223,18,200,87,94,246,229,253,87,85,236,33,119,233,20,89,219,123,234,241,154,10,79,62,209,170,85,236,225,190, +16,57,251,180,44,237,211,15,170,98,15,115,56,157,104,157,224,165,214,244,174,145,85,190,135,69,47,164,138,61,220,151,97,180,63,223,147,183,49,188,63,255,249,161,248,55,7,37,224,42,246,176,138,61,172,98, +15,171,216,195,42,246,176,138,61,252,174,176,135,224,59,243,239,104,157,46,239,86,240,39,111,95,36,49,176,205,59,250,76,29,115,252,124,221,203,205,72,222,91,59,218,167,27,91,246,105,29,70,198,80,147,234, +254,112,173,0,117,199,67,188,242,62,229,207,109,20,195,126,63,106,84,47,170,251,227,16,157,221,130,242,110,6,202,88,69,228,51,40,140,47,64,176,118,39,127,158,196,231,39,240,220,196,215,70,83,56,31,142, +192,236,102,4,165,227,80,6,244,71,153,211,23,249,226,245,212,145,123,34,139,232,129,106,167,55,42,190,190,84,32,187,98,11,216,41,109,217,212,54,125,186,173,105,250,224,45,216,195,126,71,2,123,184,11,223, +195,207,96,15,119,192,30,110,132,61,92,11,123,248,30,236,225,59,176,135,175,192,30,174,133,61,220,0,123,184,9,246,240,253,140,239,225,123,248,30,190,131,239,225,91,237,210,187,111,192,30,190,15,123,248, +30,236,33,215,210,29,158,236,225,54,124,15,127,131,239,225,59,176,135,179,97,15,7,236,197,247,112,16,190,135,183,192,30,174,132,61,124,15,246,240,199,176,135,235,138,130,93,11,123,248,26,37,218,151,97, +15,223,128,61,220,14,123,184,232,112,99,15,55,141,75,247,222,211,159,43,153,135,228,92,238,204,62,170,3,177,236,162,54,68,229,79,88,254,149,243,61,156,128,239,225,52,216,195,101,176,135,207,195,30,190, +10,123,248,10,37,218,23,97,15,223,130,61,124,29,246,240,77,216,195,135,14,23,246,112,249,80,2,188,50,87,243,85,166,104,96,214,128,227,106,229,178,236,161,69,243,64,241,74,249,30,14,192,247,112,54,236, +225,35,20,223,95,132,61,164,165,183,172,129,61,252,17,236,225,10,216,195,87,97,15,231,29,106,246,176,255,53,185,64,131,61,12,223,67,21,58,113,143,116,220,31,109,213,95,33,140,230,114,69,153,203,156,246, +75,149,95,41,246,240,6,216,195,71,96,15,95,129,61,36,216,117,79,193,30,114,31,238,91,79,194,30,190,0,123,56,242,80,177,135,183,142,207,117,217,240,61,180,202,31,84,154,1,135,136,69,177,138,50,164,96,16, +189,248,94,41,132,95,151,48,141,59,231,185,201,63,247,2,114,236,225,76,216,195,219,97,15,31,134,61,36,216,53,203,96,15,151,80,174,93,14,123,248,35,216,195,235,15,161,239,97,184,103,169,185,10,70,201,32, +195,217,50,4,104,170,1,226,194,123,53,148,106,66,228,32,226,206,121,135,131,61,165,20,123,56,19,246,112,49,236,225,18,216,195,197,176,135,15,192,30,46,135,61,124,228,16,179,135,202,26,196,122,12,40,112, +60,117,89,89,74,205,128,109,229,144,26,134,77,145,178,70,131,181,10,81,206,247,112,20,236,225,76,216,195,197,176,135,4,187,106,33,236,225,66,216,67,138,121,183,79,62,24,236,97,209,152,117,210,9,237,134, +10,29,213,115,225,175,148,117,210,202,6,236,247,43,49,84,187,165,164,73,1,169,150,37,138,79,157,224,20,179,249,178,46,185,228,146,210,190,135,178,135,211,97,15,23,194,30,62,8,119,120,63,207,66,216,195, +251,96,15,187,85,166,239,225,139,147,114,45,160,178,214,174,107,48,170,116,100,9,29,151,182,174,106,186,48,139,203,182,112,128,30,6,108,11,43,73,212,240,194,235,213,67,39,173,184,77,233,162,65,71,13,170, +216,247,112,10,236,225,93,176,135,247,193,30,222,9,123,200,117,176,207,47,128,61,100,83,82,57,236,225,150,210,236,161,147,83,248,166,217,53,21,133,170,203,50,32,91,60,240,157,104,225,112,199,179,219,219, +27,12,88,228,71,97,120,16,50,89,69,188,179,121,57,246,112,2,236,33,215,192,46,229,86,212,37,212,160,159,158,7,123,56,167,50,216,67,118,80,110,42,108,93,65,230,192,222,13,194,110,108,11,251,8,105,133,212, +48,186,117,140,231,172,255,161,47,71,29,166,93,216,128,37,97,148,254,11,142,132,103,132,170,248,114,236,225,16,216,195,155,81,25,16,236,226,91,41,192,207,132,61,188,167,50,216,195,173,227,184,64,228,234, +220,206,201,110,26,236,161,127,246,23,183,107,26,112,48,136,49,158,29,179,126,79,248,177,72,170,69,119,150,102,179,43,139,228,133,127,147,170,220,192,10,212,94,251,98,172,33,91,63,246,255,30,122,3,236, +33,197,245,135,102,240,76,135,61,156,6,123,56,15,246,240,230,124,178,135,28,4,54,172,43,100,15,221,21,133,185,140,221,209,9,71,158,33,108,14,84,180,219,202,78,72,6,109,247,182,165,195,3,209,49,174,186, +214,239,83,230,175,252,56,220,45,213,91,171,187,86,112,46,47,225,35,174,167,140,73,249,131,130,53,131,30,217,23,246,112,60,5,119,36,21,139,160,210,150,205,130,61,156,149,79,246,144,83,143,7,129,96,15, +21,118,187,180,168,156,181,43,250,81,229,187,226,82,73,21,91,59,150,27,101,255,46,69,209,173,29,215,194,30,178,13,142,219,192,120,194,129,43,236,139,194,33,79,13,102,176,135,106,180,188,130,185,123,183, +102,105,202,224,26,233,174,9,176,135,83,96,15,145,85,172,188,51,159,236,225,87,229,217,67,3,116,140,133,73,92,136,194,213,73,219,226,2,27,46,53,217,241,108,208,78,88,190,140,48,123,12,178,52,112,31,105, +24,153,67,91,87,120,196,49,172,120,77,153,162,31,157,196,186,116,110,159,250,95,9,182,195,157,213,243,199,33,158,153,0,123,56,23,85,252,13,249,242,61,220,90,154,61,12,20,79,152,42,36,255,142,65,39,29, +225,43,199,164,242,127,225,14,105,21,187,176,75,146,1,187,116,169,165,246,123,237,194,82,49,65,148,6,100,25,127,55,112,247,220,130,30,26,100,248,81,13,167,74,188,174,109,78,78,163,174,135,61,28,1,123, +120,19,236,225,76,216,195,209,249,98,15,57,188,103,217,67,187,89,204,168,254,210,182,82,184,240,248,2,2,205,139,86,119,124,187,141,116,121,178,59,251,111,109,209,176,237,12,35,185,0,46,179,176,165,208, +151,123,110,113,218,96,15,115,190,135,220,55,223,251,50,124,15,251,227,123,56,138,89,27,50,237,214,155,242,197,30,190,92,154,61,180,133,133,175,156,96,194,183,208,153,213,39,76,166,130,27,116,137,113, +169,17,194,52,104,63,58,78,195,152,53,90,211,49,235,231,99,178,10,186,205,23,35,72,18,142,31,197,236,33,72,207,229,5,39,165,193,61,96,15,111,192,247,240,102,216,195,113,249,98,15,95,42,207,30,134,95,154, +65,102,97,173,176,212,13,15,53,187,165,143,1,217,237,109,97,91,222,225,96,79,136,37,200,241,26,176,101,76,96,254,12,95,156,47,215,64,75,177,135,117,97,15,91,192,30,118,197,247,176,15,190,135,227,96,15, +199,229,139,61,36,7,149,101,15,39,78,156,152,115,218,137,96,179,24,158,1,71,23,245,207,126,143,191,180,12,161,193,186,60,201,39,57,155,139,216,57,241,185,244,24,124,12,15,63,250,66,227,239,206,228,229, +216,195,58,176,135,77,241,61,108,95,61,13,185,186,102,154,55,210,46,157,47,246,112,67,9,123,136,40,45,119,197,132,87,202,120,172,43,139,225,5,123,24,159,183,139,187,63,118,169,114,134,142,171,106,236, +222,174,227,242,17,206,236,78,114,49,241,217,162,206,5,190,8,131,245,165,168,179,46,197,30,214,129,61,108,4,123,216,26,246,176,27,236,225,48,216,195,49,249,98,15,119,149,176,135,6,154,187,35,135,103,210, +164,73,185,49,44,122,103,247,243,9,20,207,64,195,59,205,221,148,75,145,27,16,119,104,238,186,220,128,184,100,185,116,185,132,25,184,91,204,240,21,55,248,240,66,117,39,87,200,30,158,89,200,30,182,130,61, +172,13,123,88,31,246,176,241,241,169,123,7,216,195,1,176,135,67,243,197,30,146,74,53,187,232,9,73,81,153,25,10,129,14,55,21,49,206,194,194,51,102,108,103,98,91,198,96,109,73,151,38,183,149,110,90,76,10, +196,30,220,195,70,28,34,130,50,117,57,51,240,88,222,60,43,75,167,185,241,200,225,60,178,135,23,194,30,54,208,240,17,246,176,125,141,116,243,245,249,100,15,201,27,191,244,84,105,223,67,51,18,78,62,1,74, +59,27,59,14,195,100,213,110,236,230,196,32,12,200,238,239,190,58,155,254,113,153,10,59,79,183,163,182,164,36,155,7,10,91,60,224,76,145,1,153,136,230,205,155,22,218,14,213,171,153,154,215,63,49,181,228, +105,215,24,246,144,113,60,230,186,124,179,135,171,97,15,135,20,250,30,154,130,53,205,234,157,29,182,164,203,134,19,140,99,207,174,232,254,216,238,233,196,36,168,101,235,70,22,36,200,82,19,125,145,14,114, +191,237,247,24,116,248,152,26,44,226,180,98,167,45,125,15,47,111,95,151,46,221,54,53,56,191,48,216,22,60,109,27,194,30,182,103,151,213,55,223,236,33,73,114,243,198,101,217,67,187,158,173,234,120,51,88, +187,177,159,115,179,225,1,33,252,210,236,206,1,90,198,213,24,6,237,184,22,224,50,105,16,160,165,47,82,50,237,168,163,142,42,180,240,4,0,233,12,123,216,191,227,113,169,83,179,154,169,49,19,150,193,54,199, +176,181,109,163,147,8,248,164,212,159,6,224,144,241,43,173,19,14,220,247,144,242,135,21,129,213,143,151,102,15,77,182,57,113,85,116,136,240,112,96,130,206,150,139,132,64,214,224,49,124,14,29,211,38,11, +252,30,95,138,135,18,151,45,95,128,94,106,118,101,3,30,8,92,57,24,222,176,111,65,181,212,238,162,227,82,115,8,241,230,23,158,148,218,131,212,246,236,114,110,30,217,67,10,91,214,122,182,111,198,247,112, +35,236,225,125,37,236,161,219,77,125,15,77,178,103,189,196,93,163,109,93,207,199,78,74,217,238,28,30,228,97,205,29,204,97,228,186,12,216,132,130,39,179,156,239,225,233,53,83,207,86,71,229,130,29,196,51, +176,125,181,212,171,77,181,212,190,193,247,83,179,186,39,166,78,77,79,74,215,94,222,194,163,227,255,82,133,123,96,236,33,37,203,93,219,241,61,220,137,239,225,71,176,135,111,192,30,82,17,24,74,146,60,235, +123,104,194,205,116,140,227,207,138,130,7,4,39,42,131,13,251,63,15,15,46,73,225,100,25,160,101,84,39,194,198,211,151,99,86,37,216,195,150,141,206,73,125,58,158,148,122,183,63,46,215,202,3,8,216,167,103, +203,106,169,101,221,227,210,197,45,78,77,151,94,220,206,141,201,30,37,199,7,198,30,46,232,152,254,234,231,93,210,230,119,96,15,45,108,81,235,177,252,177,252,222,242,236,161,74,118,31,55,246,210,105,182, +152,129,155,224,179,203,198,12,109,37,34,32,75,111,63,244,5,24,180,1,251,209,67,126,89,223,67,215,222,134,117,207,74,13,47,56,57,117,133,40,189,162,249,49,169,127,59,12,91,219,86,75,87,119,248,161,12, +211,63,177,215,214,164,117,251,129,177,135,20,163,173,207,90,178,180,138,103,97,107,253,243,176,135,79,193,30,206,41,205,30,134,194,221,95,216,12,133,129,185,228,196,229,67,145,3,179,75,219,186,34,57, +252,114,185,0,45,191,88,185,240,239,129,208,102,217,67,215,223,32,218,92,162,206,63,231,244,84,251,188,211,83,247,214,39,165,203,218,158,255,31,180,238,151,249,243,61,164,24,109,125,118,243,26,216,67, +130,93,191,18,246,144,90,143,229,143,69,179,96,15,167,21,94,216,233,70,196,214,141,22,246,56,231,76,107,224,206,206,217,187,46,13,46,156,163,101,15,61,246,237,43,123,24,94,106,238,173,253,191,32,214,254, +145,23,252,41,255,87,78,57,143,34,32,232,52,133,173,213,247,74,166,209,21,191,15,92,49,0,172,117,27,99,105,183,50,3,111,253,245,210,76,225,172,247,87,195,30,102,10,91,235,158,134,61,188,163,60,123,104, +194,205,95,72,191,195,96,15,3,165,243,16,239,22,49,27,100,16,165,251,194,30,250,115,252,217,246,40,122,193,191,240,127,124,202,152,255,148,63,239,202,175,239,225,61,176,135,212,103,45,89,90,216,218,176, +18,246,240,105,216,67,202,31,11,166,193,30,142,43,241,61,52,209,22,236,161,176,85,69,236,161,235,171,208,115,225,14,170,121,110,143,124,248,177,135,20,163,173,207,110,124,22,246,112,5,236,33,133,45,107, +61,43,239,131,61,156,5,123,56,14,246,144,188,241,136,27,11,125,15,139,60,207,190,214,247,208,241,27,213,5,3,246,144,111,42,39,186,109,124,140,30,224,88,118,236,203,30,114,115,203,95,28,28,246,240,30,216, +195,55,96,15,31,135,61,44,42,108,173,184,23,246,240,46,216,67,42,2,38,201,111,29,117,22,169,84,124,15,201,46,118,238,84,144,107,237,124,176,135,101,124,15,15,34,123,56,10,246,144,250,172,37,203,21,248, +28,26,172,181,30,203,31,6,189,100,54,112,22,121,227,169,55,112,86,189,188,70,234,218,22,246,176,17,236,33,87,66,237,15,123,248,53,190,135,7,153,61,164,24,109,125,118,237,163,176,135,247,194,30,82,216, +178,252,97,176,139,111,133,61,36,73,110,222,120,230,8,216,195,222,176,135,221,96,15,47,135,61,108,178,127,236,33,19,218,255,35,47,92,196,30,254,252,208,177,135,19,96,15,41,89,90,197,179,176,181,12,238, +240,65,144,90,43,2,38,201,231,115,133,155,169,212,137,3,96,15,7,195,30,118,44,207,30,154,111,174,200,247,176,136,63,14,246,112,247,225,195,30,82,159,181,100,185,148,11,115,87,223,11,123,72,173,199,242, +199,253,83,97,15,39,210,189,201,27,207,29,13,123,56,9,223,195,107,246,238,123,120,100,178,135,20,182,172,245,172,162,252,177,242,118,216,67,146,228,75,110,129,61,188,13,246,112,240,222,217,67,15,35,101, +216,195,109,71,22,123,72,249,195,138,128,73,242,217,227,96,15,71,84,177,135,85,236,161,119,233,84,177,135,213,170,157,233,97,128,167,216,23,252,219,224,64,251,36,31,222,151,31,168,94,185,8,177,173,242, +61,172,98,15,171,85,251,97,17,115,40,136,233,83,197,30,238,203,48,218,159,239,201,219,24,222,159,255,252,80,252,155,131,18,112,21,123,88,197,30,86,177,135,85,236,97,21,123,88,197,30,30,233,236,225,142, +139,211,238,237,237,33,211,96,15,231,194,30,94,246,93,102,15,63,133,61,124,23,246,112,3,236,225,187,176,135,155,97,15,1,180,6,246,57,82,216,195,79,97,15,183,195,30,190,7,123,248,58,236,225,6,216,195,183, +97,15,95,134,61,124,29,246,240,29,216,195,15,138,216,195,159,12,76,91,185,184,123,227,219,176,135,226,120,111,192,30,190,10,123,248,14,236,225,122,216,195,49,135,51,123,248,107,216,195,245,176,135,179, +246,129,61,156,10,123,248,35,216,195,119,96,15,95,130,61,124,189,40,216,215,96,15,95,166,68,187,26,246,240,85,216,195,143,96,15,239,59,156,216,195,157,183,164,205,27,97,15,239,46,207,30,42,59,10,51,184, +189,178,135,83,97,15,151,192,30,62,3,123,248,18,236,225,11,148,104,159,131,61,124,3,246,240,199,176,135,175,194,30,46,58,28,216,195,173,83,210,99,203,202,179,135,225,123,24,69,112,85,2,94,184,171,36,88, +69,95,160,120,229,216,195,89,176,135,15,81,124,127,14,246,144,150,222,242,10,236,225,19,176,135,79,194,30,190,8,123,120,251,161,100,15,119,221,150,6,84,192,30,90,15,86,176,98,85,223,2,184,213,126,5,48, +6,205,101,130,185,128,85,243,41,114,11,246,80,57,84,177,239,161,236,225,67,176,135,47,194,30,18,236,186,199,96,15,151,194,30,46,135,61,92,5,123,56,252,80,176,135,155,110,78,51,247,194,30,26,180,218,202, +16,178,88,233,23,7,80,177,19,206,91,202,31,228,146,212,125,169,244,179,234,88,138,61,188,13,246,240,1,216,67,130,93,243,8,236,33,126,105,107,151,192,30,62,14,123,216,235,96,178,135,239,143,7,250,184,60, +39,28,151,80,11,195,138,184,239,93,53,142,65,133,152,197,110,29,58,75,181,89,129,228,41,124,81,218,164,14,196,160,131,61,204,193,28,225,123,56,29,246,240,1,216,195,135,96,15,239,135,61,92,0,123,248,8, +236,225,3,7,139,61,220,56,1,164,231,154,28,229,226,120,12,28,79,129,153,10,58,5,102,106,59,178,56,94,80,45,190,144,172,68,73,225,139,186,44,21,123,6,236,11,244,231,34,63,202,233,62,12,122,172,236,225, +116,216,195,69,176,135,4,187,234,30,216,195,123,96,15,151,193,30,78,172,108,246,144,9,42,198,172,93,53,124,209,236,166,33,68,179,101,253,187,4,75,214,66,44,176,188,0,182,124,57,182,174,18,39,85,181,142, +103,117,33,94,245,104,201,69,69,128,212,169,61,104,228,141,176,135,83,97,15,239,129,61,92,8,119,120,31,207,221,176,135,119,193,30,94,86,89,236,225,223,45,73,47,173,46,100,15,253,69,252,197,29,167,182, +154,191,188,1,171,151,12,28,207,110,91,182,149,179,192,150,42,159,176,244,84,84,42,16,162,210,214,201,206,151,89,206,247,144,171,34,31,191,19,246,240,46,216,67,234,208,203,103,193,30,222,5,123,200,166, +164,114,216,195,15,97,15,135,149,248,30,6,123,104,43,10,98,40,76,11,28,207,110,29,55,135,7,148,25,132,154,227,85,253,150,162,53,3,86,94,172,54,83,238,73,149,188,226,84,241,32,103,245,114,236,225,77,176, +135,51,41,190,227,147,182,100,6,236,225,92,216,195,153,149,197,30,178,169,176,117,157,85,18,181,144,228,0,0,114,175,73,68,65,84,109,41,91,194,113,235,120,149,80,179,149,34,232,48,137,51,232,8,212,158, +144,5,46,253,30,95,144,255,78,233,162,224,150,226,212,112,231,210,166,204,219,255,245,61,244,255,85,171,61,102,48,236,161,14,90,4,187,152,162,251,146,91,96,15,239,172,12,246,112,75,9,123,24,45,107,23, +182,53,252,197,108,29,121,36,3,247,243,97,7,168,110,210,151,146,229,15,21,142,150,197,105,213,86,171,177,86,246,31,174,92,58,105,57,198,21,169,249,56,131,203,30,78,25,12,119,56,149,7,131,184,7,38,195, +30,98,31,54,103,66,190,217,67,216,165,178,236,161,50,225,192,96,13,92,245,187,106,246,160,210,108,193,224,15,237,214,190,168,112,224,241,107,10,194,125,73,242,14,6,43,8,18,198,85,98,5,62,138,208,149,53, +169,205,42,102,15,175,135,61,28,67,193,125,18,236,33,34,154,101,211,96,15,167,231,147,61,228,212,227,65,32,203,30,58,73,101,33,140,48,164,113,12,42,14,87,213,46,253,45,215,144,117,173,53,96,199,175,189, +64,1,121,192,29,242,17,97,37,38,15,37,41,35,179,36,90,224,210,167,200,77,28,47,199,30,94,134,239,225,0,216,195,177,176,135,40,12,22,113,179,241,202,217,249,100,15,127,5,123,56,177,180,239,161,45,27,191, +164,200,141,173,163,80,220,71,86,193,110,174,140,223,160,195,240,49,198,175,179,184,51,178,63,195,151,22,54,158,226,4,6,26,192,72,16,50,18,48,106,180,12,58,231,123,216,185,67,234,223,13,108,7,172,118, +254,104,216,195,177,176,135,51,81,197,15,206,23,123,184,165,188,239,161,93,47,12,225,108,5,91,197,23,224,227,24,12,6,209,177,109,208,238,188,156,180,92,159,213,82,43,42,247,37,249,111,69,126,34,184,32, +211,252,187,45,236,134,68,193,139,130,53,63,58,150,237,218,93,91,195,30,94,11,123,56,20,246,16,20,239,241,169,176,135,35,243,197,30,114,120,47,203,30,218,170,97,16,23,160,71,144,101,182,152,227,207,143, +182,184,193,25,116,144,44,142,119,3,13,171,49,129,174,44,119,24,52,155,159,119,255,173,54,51,148,62,142,101,45,18,90,113,223,124,239,174,213,211,248,222,176,135,195,152,181,53,137,27,147,47,246,240,197, +210,236,161,26,103,103,208,64,240,178,176,150,45,100,32,242,75,209,106,6,239,11,178,181,156,232,252,90,214,232,49,12,229,178,84,169,159,243,177,135,132,141,167,210,225,98,246,176,46,236,97,91,216,195, +43,79,73,83,7,194,30,222,4,123,56,54,95,236,225,11,37,236,161,155,1,39,17,143,124,206,172,49,185,132,183,161,173,98,11,249,203,6,19,236,223,125,41,142,107,131,182,219,219,194,97,208,234,247,6,108,25,236, +112,24,64,250,121,135,135,10,221,82,236,97,157,147,1,62,78,76,189,186,252,32,141,233,5,123,56,10,246,112,108,190,216,67,114,80,174,129,202,254,61,212,43,243,55,104,215,72,91,57,156,42,35,232,108,240,142, +115,199,187,221,218,217,218,229,201,160,157,205,157,217,101,157,98,72,132,21,89,128,154,190,36,63,231,11,18,137,87,129,171,0,53,231,123,88,27,246,176,49,236,97,91,216,195,43,97,15,135,217,165,243,197, +30,190,93,200,30,122,57,80,176,135,6,237,238,200,95,174,44,138,23,88,109,152,197,217,45,221,66,186,35,115,3,18,70,143,222,1,16,254,225,78,116,178,79,182,188,47,65,240,43,80,93,39,183,114,236,33,38,83, +109,26,192,30,182,68,207,121,9,236,225,64,216,195,81,249,98,15,119,194,30,98,199,107,192,178,135,110,241,132,39,35,208,112,196,115,166,14,66,77,128,203,77,131,107,178,187,47,119,86,114,74,110,62,60,69, +249,119,39,50,113,31,55,44,182,120,108,60,12,222,127,31,86,158,174,215,182,110,41,246,240,124,216,67,188,15,219,55,196,247,176,29,236,97,239,124,178,135,164,82,103,147,93,52,35,97,75,123,140,179,107,218, +213,12,218,128,109,77,127,193,44,22,31,193,10,107,185,197,116,211,225,105,200,86,118,243,17,176,165,184,158,59,52,191,63,246,210,177,166,123,136,16,14,43,197,30,54,134,61,172,11,123,8,172,213,30,80,171, +123,91,216,195,158,249,102,15,31,47,207,30,250,203,4,248,236,44,236,228,226,47,108,107,217,141,221,98,122,214,245,144,239,9,201,117,216,86,54,104,131,15,199,120,207,194,246,2,91,210,192,131,43,214,74, +208,173,167,54,158,161,156,207,177,135,117,97,15,1,181,90,66,166,181,3,197,187,154,113,60,186,103,62,217,195,141,221,210,27,207,150,102,15,61,15,59,105,133,203,172,168,123,248,140,250,75,219,229,13,196, +239,177,53,35,213,99,176,113,248,8,212,199,30,16,167,38,183,164,6,233,252,224,18,230,75,10,69,188,170,249,14,178,135,181,10,131,109,33,138,215,192,128,79,76,55,246,46,16,35,202,131,239,225,198,203,114, +229,15,147,228,183,145,55,206,178,135,206,220,110,31,157,120,220,19,123,226,177,91,58,46,61,24,184,37,140,123,60,194,62,204,131,189,153,204,72,245,216,242,246,0,39,181,192,106,253,168,87,147,76,132,227, +214,238,220,180,113,195,92,6,164,89,195,218,169,113,237,147,114,193,54,135,76,107,123,17,236,33,235,113,126,216,195,29,93,114,193,90,254,176,34,176,122,89,121,223,67,151,39,91,212,25,215,224,237,198,158, +111,61,28,56,70,227,166,150,176,14,51,153,103,208,182,180,173,238,121,57,174,171,177,165,61,86,186,171,67,210,84,204,30,214,60,245,148,116,85,187,90,169,99,135,246,169,254,121,39,19,232,73,185,96,253, +216,30,119,203,158,157,101,15,47,205,131,239,33,85,60,11,91,214,122,182,211,210,59,54,192,30,222,93,194,30,122,122,50,247,100,158,217,141,136,73,246,240,30,53,49,23,201,188,152,172,34,93,107,208,145,202, +137,132,158,65,59,166,13,218,159,43,215,20,100,233,213,77,143,74,125,219,30,79,107,158,154,234,157,125,108,106,90,251,132,92,176,205,120,58,53,134,61,236,214,50,79,236,33,37,203,93,31,193,30,110,131,61, +252,0,246,240,85,216,67,42,2,101,217,67,125,10,225,157,114,132,138,196,169,193,186,236,56,118,61,236,103,173,255,194,209,50,124,14,157,177,205,123,153,248,139,171,227,194,228,209,177,123,254,233,88,120, +130,220,13,226,233,209,228,168,212,248,252,227,83,35,150,164,134,231,125,63,53,175,125,124,186,180,69,205,116,105,151,130,60,177,135,247,192,30,254,4,246,112,29,236,161,133,45,106,61,150,63,150,223,5, +123,120,99,161,239,161,169,84,97,75,3,86,205,110,208,113,211,146,173,230,129,193,167,44,104,25,204,161,159,119,60,71,134,211,127,31,190,135,173,235,28,95,28,236,64,136,210,254,173,170,165,43,26,29,141, +179,229,9,4,142,59,109,237,99,1,72,234,137,245,252,99,126,216,67,138,209,214,103,45,89,90,197,179,176,181,30,64,235,245,229,176,135,179,74,216,67,115,200,193,30,138,218,184,253,140,100,123,4,107,96,118, +105,139,106,190,24,215,116,91,57,150,41,201,243,44,123,216,164,81,131,116,89,167,230,169,103,193,25,233,58,76,89,13,118,64,235,106,169,119,243,106,169,77,93,91,247,4,186,243,41,169,93,155,22,127,38,49, +240,19,134,214,54,141,108,14,220,247,144,98,180,245,217,205,175,192,30,18,236,250,167,97,15,169,245,88,254,88,52,163,132,61,116,159,109,176,38,220,194,67,201,150,119,124,135,185,163,173,42,165,38,111, +40,12,237,44,239,81,47,2,117,204,102,125,15,61,236,159,95,235,188,116,222,217,167,165,2,102,229,43,26,29,147,250,129,209,246,105,81,45,21,212,59,62,117,46,104,225,30,251,239,200,108,138,9,236,200,31,123, +56,10,246,112,29,236,225,42,216,195,76,97,107,221,227,176,135,115,96,15,73,146,235,123,56,124,248,240,92,197,192,235,160,202,178,135,30,222,229,6,221,68,4,123,104,128,62,223,196,30,202,43,250,239,106, +159,123,122,186,168,214,169,233,154,166,223,3,154,62,37,53,110,88,255,127,147,9,217,205,36,183,83,43,207,252,178,135,243,97,15,169,207,90,178,180,176,181,225,41,216,195,199,96,15,41,127,44,152,2,123,56, +182,132,61,180,229,130,61,20,167,203,178,135,6,107,139,198,222,216,76,198,190,178,135,254,44,95,154,39,166,22,13,206,255,51,127,255,138,28,215,39,149,231,123,72,49,218,250,236,198,21,176,135,79,194,30, +82,216,178,214,179,18,50,237,161,233,176,135,99,97,15,201,27,127,19,123,232,166,34,130,220,31,246,144,97,243,31,36,3,254,146,99,226,167,100,82,63,231,156,188,154,117,123,48,143,230,83,13,121,180,40,42, +165,156,223,171,184,148,22,56,129,46,217,215,155,186,73,184,253,130,242,229,86,198,214,238,54,250,30,206,135,61,252,49,236,225,82,216,195,162,194,214,138,249,176,135,119,192,30,82,17,48,73,62,243,70,216, +195,235,97,15,201,46,230,147,61,44,227,123,168,59,222,207,233,49,235,8,110,114,145,47,147,158,76,234,176,79,44,171,216,253,70,53,45,111,240,52,175,37,103,185,121,155,205,192,87,200,22,182,226,227,189, +187,78,157,11,254,56,105,4,236,33,245,89,75,150,43,230,195,30,18,172,181,30,203,31,6,189,100,198,153,233,206,209,167,166,41,253,57,171,94,134,239,33,9,183,214,13,138,216,195,90,223,206,247,208,244,78, +214,247,80,170,148,73,106,199,193,247,61,164,24,109,125,118,237,67,176,135,243,97,15,41,108,89,254,48,216,197,183,192,30,146,36,55,111,60,147,84,234,152,94,167,164,126,151,86,39,248,99,83,91,216,195,152, +132,60,212,251,248,247,24,231,49,78,13,244,240,244,61,28,7,123,72,201,210,42,158,133,173,101,128,150,15,98,251,103,69,192,36,249,124,16,188,89,195,78,79,55,247,173,153,38,15,128,61,108,95,194,30,154,103, +54,176,189,177,135,135,167,239,33,245,89,75,150,75,217,140,172,158,15,123,72,173,199,242,199,253,19,97,15,111,130,61,36,111,124,251,240,211,211,130,241,248,30,246,56,51,119,11,132,235,181,8,124,220,89, +121,100,251,30,82,216,178,214,179,234,54,216,67,42,2,38,201,151,112,133,219,19,211,97,15,7,156,145,171,251,250,56,67,135,239,97,92,168,93,129,239,225,17,198,30,82,254,176,34,96,146,124,246,104,216,195, +225,133,236,33,85,253,255,210,247,144,45,230,191,177,150,254,145,195,253,31,104,249,95,178,100,85,249,30,22,93,85,17,118,128,174,179,46,61,122,179,85,104,204,90,17,68,242,141,203,210,215,58,68,98,200, +204,127,164,155,228,15,120,106,243,116,196,248,124,6,75,214,235,44,25,219,56,24,236,208,223,148,52,238,79,208,100,253,140,235,228,62,67,127,181,147,171,208,183,115,176,223,202,241,113,43,59,177,109,126, +15,45,252,41,45,253,83,246,225,159,177,129,216,230,45,73,236,1,182,84,177,135,133,238,122,85,236,225,183,225,159,246,187,75,239,165,171,11,93,30,87,52,182,170,124,15,139,186,100,21,123,248,109,186,229, +129,124,111,222,187,244,129,252,50,7,227,223,30,148,128,171,216,195,42,246,176,138,61,172,98,15,171,216,195,239,12,123,248,211,110,233,191,253,229,53,105,221,154,203,210,204,105,237,82,175,107,59,252, +23,71,198,191,167,162,176,135,100,126,238,142,62,46,253,220,78,142,237,25,19,140,230,220,216,204,124,111,95,151,180,125,94,150,138,172,0,7,161,212,89,249,47,255,242,47,31,33,49,218,72,117,127,19,10,217, +255,126,203,45,227,255,52,111,94,63,42,247,99,145,48,77,230,254,247,91,16,185,60,196,159,167,33,63,156,196,51,145,103,60,207,88,84,183,163,208,118,77,65,18,113,51,181,228,193,84,249,11,173,0,63,250,232, +186,180,121,211,53,233,163,15,174,78,95,125,57,52,237,218,12,123,184,9,246,16,124,103,254,204,239,34,123,248,33,190,135,27,241,61,220,138,239,225,118,216,195,55,97,15,223,128,61,124,19,246,112,3,236,225, +75,176,135,215,31,9,236,225,78,124,15,119,195,30,126,12,123,184,1,246,240,53,216,195,183,97,15,215,193,30,190,0,123,248,26,236,225,58,216,195,13,176,135,235,241,61,220,9,123,248,46,236,225,27,176,135, +175,130,227,189,12,123,184,26,246,112,13,236,225,107,176,135,35,15,87,246,112,43,190,135,191,130,61,124,19,246,240,86,216,195,254,123,241,61,28,136,239,225,100,216,195,199,97,15,223,132,61,92,5,123,248, +114,81,176,47,192,30,62,75,137,118,5,236,225,243,176,135,27,96,15,231,195,30,182,109,248,239,22,5,204,147,83,123,254,11,42,135,38,226,135,241,120,53,206,215,218,122,238,117,12,163,140,107,140,164,240, +97,199,172,246,157,104,53,118,206,154,53,229,207,79,62,57,20,245,220,116,228,74,247,161,158,123,20,17,203,108,180,88,179,248,136,12,241,19,216,195,119,97,15,231,195,30,222,84,177,239,97,72,158,76,216, +149,243,61,28,143,239,225,100,216,195,7,97,15,159,132,61,124,22,246,240,25,74,180,79,195,30,190,2,123,248,28,236,225,243,176,135,247,192,30,182,168,247,239,22,5,8,122,59,19,218,103,84,31,94,32,216,110, +60,94,78,84,225,68,246,181,1,163,132,251,33,19,213,156,63,252,225,15,239,57,65,233,85,74,153,243,79,247,223,63,32,23,236,142,29,51,153,148,102,163,205,122,152,231,129,244,19,62,183,237,35,216,195,37,95, +207,30,198,125,180,98,120,106,53,173,31,239,149,61,156,14,123,184,144,226,59,55,163,126,76,75,111,121,14,246,112,9,236,33,142,120,187,86,192,30,206,60,84,236,225,95,63,152,246,236,216,59,123,24,170,29, +101,192,33,76,85,182,248,141,236,225,96,216,195,133,176,135,43,97,15,9,118,221,195,176,135,15,193,30,62,4,123,248,56,236,225,208,131,205,30,238,158,145,54,191,7,123,56,227,235,125,15,149,50,168,4,8,141, +101,0,151,138,95,148,56,168,253,240,37,88,76,207,178,135,254,61,231,123,120,43,190,135,51,96,15,239,133,61,36,216,53,139,96,15,241,75,91,187,8,246,240,97,216,195,158,7,139,61,220,51,3,51,86,216,195,171, +10,217,67,245,151,193,30,42,82,81,138,164,246,42,171,209,202,202,150,252,30,191,95,141,150,146,68,31,165,15,129,226,149,243,61,156,12,123,120,15,236,225,125,176,135,119,195,30,206,131,61,92,8,123,120, +55,236,97,235,134,127,164,40,190,19,42,245,19,170,157,123,80,255,204,45,202,166,30,159,221,148,148,27,195,72,7,79,71,197,250,60,194,237,77,72,8,223,67,166,240,183,15,60,48,12,105,255,125,72,10,231,33, +41,44,156,160,28,179,155,222,45,97,15,3,207,49,32,113,29,185,37,181,86,1,91,102,113,188,160,77,227,223,248,53,85,62,126,175,34,54,89,8,95,158,140,146,74,2,171,16,57,246,112,36,236,225,100,216,195,187, +96,15,9,118,213,237,176,135,183,195,30,82,204,187,253,166,202,102,15,153,160,130,61,148,9,12,235,206,160,74,213,66,27,112,224,120,95,7,93,26,180,47,200,96,131,65,244,223,249,243,130,61,84,14,165,248,165, +152,61,156,8,123,120,59,236,225,124,184,195,59,121,230,194,30,222,6,123,120,105,101,177,135,127,3,123,248,92,33,123,168,92,41,88,164,240,107,240,151,87,51,169,10,79,129,153,221,218,86,180,235,218,133, +179,132,169,129,69,192,234,49,21,180,249,111,237,5,33,131,10,237,87,177,239,225,120,216,195,217,176,135,115,96,15,167,195,30,78,133,61,156,13,123,72,189,186,114,216,195,141,165,217,67,3,117,252,169,123, +246,23,86,6,172,236,80,173,100,120,166,133,131,71,150,50,205,78,102,225,228,161,16,85,6,81,188,199,25,220,151,234,122,93,142,61,28,9,123,56,133,226,59,62,105,75,168,65,63,61,29,246,112,74,101,176,135, +236,160,220,84,100,217,67,39,26,101,194,97,20,167,176,84,189,165,65,219,61,125,9,225,118,25,40,109,22,184,244,101,41,98,243,251,68,123,4,46,85,209,42,82,21,25,80,191,169,220,223,210,170,234,60,85,66,99, +6,182,77,119,233,160,69,176,139,185,236,119,201,4,216,195,91,43,131,61,252,16,246,176,127,137,239,161,93,79,141,179,220,66,24,197,137,231,248,203,26,180,242,97,187,181,50,68,91,209,110,29,232,173,250, +202,16,148,134,127,169,222,16,1,92,250,243,148,34,251,56,190,13,184,216,247,112,48,236,97,63,184,195,241,60,24,196,61,112,19,236,33,246,97,115,198,230,147,61,228,32,176,129,205,127,150,61,84,108,230,47, +164,48,92,164,199,63,43,225,151,74,83,231,172,230,57,12,226,108,101,151,170,152,224,28,187,182,174,252,97,96,0,33,12,247,231,72,171,249,51,125,148,38,43,120,83,247,165,20,42,135,202,35,6,159,119,35,5, +119,36,21,139,198,192,30,210,202,75,38,230,147,61,228,212,227,65,32,216,67,131,181,43,6,152,33,185,18,138,248,176,29,82,213,110,208,6,20,66,211,224,136,253,232,68,229,184,85,91,109,175,136,86,245,165, +249,115,195,206,211,160,221,153,149,98,15,47,193,247,240,58,216,195,225,176,135,163,97,15,71,193,30,78,206,39,123,248,139,210,236,161,210,95,165,254,18,40,242,14,126,148,125,8,71,158,8,222,113,104,247, +118,246,85,55,109,87,54,88,103,115,187,187,95,83,88,46,12,18,46,123,97,29,150,5,72,124,33,42,249,212,130,216,202,250,30,246,187,24,108,7,71,188,121,67,97,15,111,132,61,188,25,246,112,80,190,216,195,15, +203,251,30,10,117,132,103,90,56,105,9,109,5,130,231,75,176,117,132,185,12,204,177,28,179,115,120,166,25,172,96,136,63,43,94,90,56,114,201,50,201,67,201,64,137,245,40,102,83,233,19,190,135,23,55,131,61, +188,234,148,52,179,255,105,105,222,16,216,195,113,176,135,55,230,139,61,100,252,6,123,232,189,27,238,137,221,35,7,80,21,160,86,144,104,6,30,206,118,118,119,199,164,65,135,171,135,127,150,90,177,219,6, +131,24,112,101,64,94,65,188,73,168,249,239,28,195,6,172,8,38,231,123,120,97,141,116,125,39,216,195,107,78,77,183,161,27,89,2,153,118,235,136,124,177,135,171,11,217,67,151,133,56,226,25,180,227,47,90,33, +236,255,178,142,120,126,45,48,59,91,204,101,199,181,218,151,224,231,195,208,209,32,43,226,14,253,247,178,19,106,51,213,88,170,233,10,216,178,113,109,216,195,150,176,135,151,226,123,120,61,236,33,38,113, +179,71,228,139,61,124,190,144,61,84,235,28,71,60,63,58,27,71,215,243,151,139,160,131,41,52,16,123,129,127,23,226,146,88,49,104,187,125,214,236,49,124,17,179,65,7,191,232,132,167,16,85,53,173,176,165,98, +84,199,177,70,53,157,65,241,174,107,143,239,97,15,216,195,193,176,135,35,242,197,30,146,131,10,223,67,15,239,130,29,238,138,130,46,181,251,6,228,28,31,13,202,151,225,140,235,82,37,147,20,206,89,6,237, +108,236,216,53,112,95,72,160,181,65,154,198,203,243,165,161,120,207,73,142,213,82,23,179,135,181,96,15,47,66,67,221,18,246,240,82,38,175,126,118,233,124,177,135,235,74,124,15,93,34,124,156,108,194,190, +211,128,131,27,116,92,6,165,38,203,100,176,110,80,4,56,98,89,114,210,50,104,191,230,88,182,245,131,249,247,207,49,39,248,50,4,46,253,191,148,39,150,242,61,132,93,106,115,225,9,169,107,83,36,141,157,78, +77,115,174,175,145,166,12,191,202,53,251,43,5,51,8,81,183,114,76,156,207,211,50,167,250,137,179,34,203,197,165,172,135,239,129,186,238,97,140,254,178,127,255,174,255,249,187,223,245,227,63,25,79,16,147, +120,38,164,47,183,149,103,15,93,103,157,61,253,5,99,29,14,255,239,48,138,147,41,52,88,183,153,30,34,116,207,242,16,33,204,225,94,59,220,45,99,3,227,203,242,197,249,194,130,56,117,82,115,7,86,142,61,60, +15,246,176,14,236,97,125,124,15,105,229,233,221,97,15,185,161,137,93,217,23,170,131,24,235,219,8,116,34,79,115,158,179,139,3,230,173,159,199,6,255,125,222,246,231,108,218,63,227,104,246,167,223,252,166, +23,107,227,64,246,179,125,210,71,228,141,77,165,154,93,244,168,38,119,232,227,18,35,122,231,219,15,56,50,220,104,125,25,238,131,99,79,29,151,30,184,97,241,241,12,236,238,203,77,137,65,135,173,182,107, +113,96,245,193,24,187,180,121,237,84,41,246,176,17,236,225,5,176,135,176,75,5,128,90,87,181,128,61,236,150,15,246,144,138,128,73,114,243,198,47,45,45,207,30,250,139,6,130,231,199,184,218,194,153,216,189, +180,45,107,96,145,226,137,172,135,47,203,151,224,161,223,67,131,179,189,135,16,55,42,190,68,151,177,184,65,66,200,186,196,247,176,121,161,239,97,109,216,67,112,90,3,110,87,31,20,143,22,30,125,229,129, +178,135,212,122,62,124,191,123,250,48,151,40,135,61,252,17,236,225,13,133,190,135,30,219,100,15,157,65,195,119,212,221,144,47,192,177,233,132,22,119,242,184,171,114,135,229,201,202,132,158,31,195,9,79, +114,205,29,151,223,239,12,238,126,218,0,237,226,14,11,199,184,235,125,184,108,21,179,135,231,18,172,86,128,60,109,235,17,48,46,181,55,246,58,80,246,240,211,139,211,22,32,203,77,235,97,15,41,127,152,36, +55,111,92,150,61,244,148,227,158,57,48,188,184,169,197,214,19,212,242,208,96,139,6,217,18,100,169,7,9,183,155,78,96,158,152,34,104,127,86,92,136,98,79,177,117,237,206,42,111,115,236,97,3,216,195,90,176, +135,4,107,43,183,173,7,123,216,2,246,144,6,56,48,223,195,231,59,164,157,155,97,15,9,214,242,135,21,129,213,15,151,176,135,102,60,76,182,57,158,145,21,230,114,81,30,252,125,108,93,187,178,1,57,73,69,235, +10,89,218,202,113,135,143,203,148,71,199,96,14,13,218,113,237,207,210,242,55,8,53,151,163,66,8,172,67,170,127,46,236,33,176,165,193,54,191,0,246,16,188,167,103,1,236,33,200,16,219,207,45,52,200,30,229, +139,76,84,189,120,218,240,156,207,115,66,169,36,158,217,122,82,167,43,248,101,63,166,11,109,161,68,249,15,150,44,173,226,89,216,178,214,179,157,150,222,241,38,236,225,252,210,190,135,30,25,205,65,153, +150,145,63,180,101,13,214,101,40,142,132,225,100,41,152,21,8,158,173,238,215,125,60,243,134,141,167,173,200,239,147,99,15,11,187,242,233,169,125,187,54,185,27,90,26,213,61,55,93,120,214,247,83,211,90, +176,135,4,219,140,167,83,125,248,167,75,242,225,123,72,125,214,146,229,46,92,45,63,103,242,218,249,54,236,225,106,216,67,42,2,67,73,146,71,46,217,236,162,192,165,249,39,3,118,92,59,110,157,168,60,244, +155,225,176,27,103,153,195,24,203,174,203,46,81,49,107,219,181,237,190,6,235,154,107,192,157,46,252,62,238,179,245,82,187,182,173,83,253,115,170,167,102,248,150,54,62,23,246,240,108,140,30,107,29,159, +46,105,12,123,216,57,95,190,135,243,96,15,63,129,61,124,21,246,208,194,22,181,30,203,31,203,111,47,97,15,163,117,109,25,187,182,235,109,32,180,182,162,79,148,90,124,33,89,230,48,155,185,244,37,25,184, +59,169,112,200,59,227,7,199,165,193,224,119,189,90,85,79,141,207,171,158,154,18,108,174,101,207,63,137,191,195,30,158,119,108,186,184,85,61,215,222,60,178,135,212,103,45,89,90,197,179,176,181,254,9,216, +195,135,97,15,167,149,246,61,204,154,60,42,0,119,9,114,252,186,217,240,49,80,183,167,38,219,13,220,151,16,185,108,91,218,204,100,49,123,136,125,103,1,124,161,193,14,130,57,28,8,126,215,190,206,177,4,121, +98,174,133,13,184,5,176,101,199,139,96,15,91,231,155,61,164,24,109,125,118,243,179,176,135,4,187,126,25,236,33,181,30,203,31,139,166,194,30,222,82,232,123,232,47,92,150,61,180,155,187,239,54,56,111,74, +210,250,207,46,107,230,196,207,249,239,92,106,98,159,28,236,225,197,109,46,130,23,62,161,56,216,1,4,124,93,211,106,169,121,173,227,82,19,131,118,91,201,196,213,165,32,151,250,169,4,246,144,75,51,63,123, +5,246,240,9,216,195,76,97,107,221,18,216,195,91,247,141,61,140,235,101,130,61,180,53,29,167,95,199,30,118,106,219,36,181,189,240,228,212,23,154,116,0,112,101,127,62,118,172,123,76,106,116,238,9,169,21, +12,113,231,54,141,93,170,254,31,78,79,187,152,56,119,229,159,61,156,11,123,72,125,214,146,165,133,173,13,203,96,15,31,129,61,164,252,177,96,2,236,225,168,242,190,135,182,106,176,135,110,254,125,98,215, +100,176,182,172,215,70,85,196,30,230,44,0,207,198,182,243,172,26,4,122,108,234,71,192,125,155,85,75,45,24,183,237,26,157,155,154,52,110,252,103,61,212,180,21,171,28,246,144,202,187,197,104,235,179,27, +151,195,30,62,10,123,72,97,203,90,207,202,57,176,135,147,96,15,71,192,30,146,55,30,62,108,64,110,188,150,245,61,244,44,235,1,222,137,73,140,214,238,252,77,236,161,47,233,244,154,53,82,237,179,170,167, +158,141,142,74,87,99,214,218,184,65,189,255,228,197,253,178,242,125,15,169,188,63,54,23,246,240,89,216,195,7,96,15,139,10,91,43,110,131,61,156,9,123,72,69,192,36,249,173,131,97,15,175,133,61,36,187,216, +185,227,129,251,30,218,218,246,136,150,77,234,115,111,199,57,255,197,112,248,45,243,197,174,34,246,112,45,235,118,37,179,135,195,96,15,169,207,90,178,92,129,11,158,193,90,235,177,252,97,208,75,38,193, +30,14,131,61,36,149,218,175,11,190,135,205,241,61,172,15,123,200,149,80,117,191,5,123,24,126,167,193,30,50,102,255,157,150,253,10,24,228,51,170,138,127,85,100,5,120,103,145,220,161,85,81,153,84,218,165, +156,214,227,27,117,90,238,190,120,171,181,88,19,167,81,238,216,160,128,68,77,5,255,225,78,82,166,191,183,24,109,125,118,237,189,176,135,248,29,90,216,178,252,97,176,139,39,192,30,146,36,55,111,124,43, +246,127,163,186,227,123,216,25,223,195,46,176,135,13,15,140,61,228,218,71,169,210,95,16,236,123,252,142,247,240,244,224,105,203,83,143,231,20,158,10,209,158,111,12,216,4,129,111,234,248,227,143,175,205, +51,89,181,140,2,18,11,207,140,195,143,153,112,126,107,49,122,206,104,216,67,74,150,86,241,44,108,45,131,59,124,16,219,63,43,2,38,201,231,113,133,219,172,1,248,30,94,11,123,120,61,236,97,187,125,99,15, +29,227,46,107,69,236,225,223,58,27,31,62,190,135,212,103,45,89,46,189,5,246,112,22,236,33,181,30,203,31,247,3,90,222,51,156,160,201,27,207,29,132,239,225,72,216,195,43,246,157,61,100,114,251,71,14,4,63, +33,45,187,213,165,135,9,110,91,17,28,237,152,85,181,99,203,54,224,57,131,231,120,158,163,190,22,66,217,87,141,98,81,75,31,203,15,83,7,213,141,235,98,150,114,8,223,69,58,104,183,173,205,76,185,137,181, +117,135,245,217,246,237,219,81,55,190,54,87,216,178,214,179,106,10,236,33,21,1,147,228,75,70,193,30,222,12,123,216,167,60,123,104,70,116,47,236,225,214,35,203,247,144,242,135,21,1,147,228,179,135,195, +30,14,171,98,15,171,124,15,171,216,195,42,246,112,223,12,105,246,170,211,250,54,179,118,133,124,110,161,225,99,21,123,200,75,56,185,104,73,19,135,173,98,15,15,180,103,237,235,191,223,167,173,229,190,254, +176,35,225,251,14,74,192,85,236,97,21,123,88,197,30,86,177,135,223,77,246,240,173,203,210,156,219,58,82,48,43,224,66,206,75,44,221,252,3,71,194,61,40,133,182,80,138,217,73,193,237,19,106,95,219,72,8,44, +36,205,211,214,251,190,190,237,202,240,173,102,105,244,23,213,209,115,92,33,218,35,237,242,207,255,252,207,31,81,161,223,136,194,110,135,202,249,241,227,135,254,215,204,153,215,34,111,184,9,221,213,28, +138,217,19,41,148,79,160,64,62,158,34,247,56,244,146,99,121,70,163,182,155,202,51,25,4,239,6,158,129,148,69,251,165,109,91,123,165,61,59,123,164,47,62,133,61,252,5,236,225,143,97,15,167,194,30,246,252, +46,178,135,91,96,15,55,193,30,190,15,123,248,30,236,225,79,97,15,55,194,30,190,7,123,248,50,236,225,140,239,18,123,72,176,91,62,188,62,125,180,17,246,240,93,216,195,143,96,15,249,220,7,107,96,15,95,133, +61,92,3,123,248,22,236,225,243,71,18,123,184,11,246,240,35,216,195,183,97,15,127,12,123,248,22,236,225,155,176,135,207,195,30,190,2,123,248,6,236,225,122,36,21,107,97,15,183,195,30,190,13,123,248,42,236, +225,75,224,120,171,97,15,159,133,61,252,49,236,225,75,176,135,195,15,87,246,240,99,216,195,191,128,61,124,3,246,112,198,62,176,135,147,96,15,151,195,30,190,14,123,184,2,246,112,117,4,11,123,248,12,37, +218,167,96,15,87,193,30,190,5,123,120,199,225,196,30,238,128,61,124,7,246,112,222,215,179,135,58,222,125,173,239,161,236,225,36,216,195,69,176,135,203,97,15,87,192,30,18,236,219,143,195,30,190,0,123,184, +18,246,112,37,236,225,188,195,129,61,220,12,123,248,200,222,217,67,235,195,129,227,5,123,40,158,163,70,164,156,239,225,52,216,195,123,41,190,115,51,234,199,207,193,30,174,132,61,92,12,123,136,35,222,174, +39,97,15,167,31,42,246,240,127,192,30,110,131,61,236,119,77,14,254,80,228,98,157,56,110,251,87,188,162,220,65,49,139,1,43,61,182,94,172,116,145,123,182,246,238,123,40,123,120,47,236,225,211,176,135,4, +187,238,65,216,67,80,188,183,238,135,61,92,10,123,56,228,96,179,135,187,96,15,55,148,176,135,18,100,129,227,133,201,99,152,209,132,156,65,57,132,129,27,180,74,29,91,218,71,149,174,250,175,240,61,44,197, +30,222,2,123,56,31,246,144,96,215,220,7,123,120,55,229,218,251,96,15,239,63,216,236,225,250,18,246,80,206,40,12,227,212,99,169,178,83,160,34,157,38,204,17,194,240,112,1,136,174,237,191,241,107,190,8,213, +61,193,30,170,16,240,5,20,251,30,78,132,61,156,15,123,120,23,236,225,60,216,67,232,180,55,239,134,61,156,119,176,216,195,119,96,15,177,239,12,223,195,32,212,66,215,97,176,234,181,148,48,133,74,39,108, +196,194,1,32,107,48,23,148,139,223,107,203,43,148,17,195,83,36,83,204,30,78,132,61,188,19,246,112,46,236,225,108,216,195,219,96,15,23,192,30,142,169,108,246,144,9,42,198,172,147,142,178,194,80,235,132, +60,88,90,37,44,1,3,225,177,21,163,23,100,131,246,223,216,202,170,246,236,25,162,61,226,182,151,93,118,89,162,120,150,67,254,138,217,195,113,176,135,20,238,86,223,46,119,200,51,11,246,112,38,236,225,37, +149,197,30,254,79,216,195,85,37,236,97,56,90,170,153,84,24,42,167,164,92,80,249,97,168,242,196,117,108,57,53,147,129,227,149,13,216,175,43,100,115,8,24,176,47,204,202,97,176,135,6,237,253,213,183,141, +131,61,156,1,123,56,11,246,144,58,244,114,202,179,207,207,128,61,100,83,82,57,236,225,123,165,217,67,245,146,182,96,248,20,10,85,137,227,41,48,85,77,107,208,202,10,13,198,110,27,46,152,217,238,28,23,226, +27,108,168,241,108,241,184,130,93,57,148,234,32,103,245,41,147,39,166,219,111,132,61,228,26,216,165,55,195,30,130,226,61,61,25,246,240,230,202,96,15,217,65,185,169,40,235,123,40,166,163,102,90,142,73, +9,177,45,29,230,22,1,97,218,3,108,197,224,14,131,67,52,216,232,202,142,119,91,214,94,226,71,3,150,94,41,199,30,246,199,247,112,56,42,3,130,93,124,19,5,248,155,96,15,41,207,90,181,164,134,252,23,204,240, +59,189,106,242,232,163,143,182,88,94,151,167,70,174,2,154,61,79,34,253,93,198,241,111,35,45,181,9,81,231,63,207,158,125,117,238,136,183,99,199,20,184,163,41,4,51,57,237,216,84,194,30,218,66,174,181,154, +88,40,228,86,197,238,71,3,86,239,44,143,164,254,89,165,173,173,172,98,214,217,218,0,131,63,140,177,107,235,27,172,218,106,197,165,10,198,21,151,251,239,85,205,219,51,202,178,135,83,251,192,29,142,241, +129,61,164,6,253,204,36,216,195,81,249,102,15,217,252,151,245,61,84,242,175,68,95,4,192,143,182,180,159,19,224,176,165,213,63,27,132,221,213,9,41,59,83,59,137,169,164,117,140,75,174,197,248,87,115,237, +11,115,152,248,24,184,170,159,82,190,135,87,195,30,222,64,193,125,20,236,225,72,216,195,177,176,135,227,242,201,30,114,234,241,32,16,236,161,82,66,217,67,3,13,54,33,12,227,196,1,108,237,48,135,83,255, +108,64,6,28,23,29,216,202,234,42,125,17,126,205,158,96,171,58,20,2,205,11,59,79,177,2,103,233,82,236,97,87,124,15,123,193,30,130,225,45,68,97,176,136,155,141,87,78,200,39,123,248,243,18,246,208,96,221, +36,184,123,146,106,145,58,41,251,8,105,248,50,12,218,137,204,153,219,150,140,165,41,90,55,96,75,91,53,28,50,13,208,127,39,131,232,99,175,241,165,197,61,212,197,190,135,157,193,118,184,179,122,254,32,216, +195,27,96,15,111,130,61,28,144,47,246,112,83,33,123,232,238,199,96,67,28,234,248,12,50,45,235,91,232,231,2,205,17,210,176,107,122,55,64,204,212,182,118,4,235,215,148,251,203,56,216,51,34,80,95,152,104, +143,67,197,33,162,170,47,203,30,118,109,10,123,136,35,222,172,190,248,30,14,130,61,68,82,49,121,88,190,216,67,198,175,40,158,58,140,96,15,221,19,59,238,194,164,81,176,42,76,26,131,52,147,59,242,69,56, +169,217,130,10,193,237,206,206,222,142,113,3,245,133,24,156,47,40,134,69,120,165,133,203,165,47,66,88,75,113,106,49,123,88,15,223,195,246,213,211,132,30,248,30,246,99,214,190,145,22,191,49,95,236,225, +115,37,190,135,113,249,136,173,20,32,85,4,22,65,135,21,160,193,6,99,232,159,13,210,49,43,174,35,193,230,231,28,22,129,241,69,47,241,163,47,50,48,62,95,152,122,76,133,168,197,190,135,231,195,30,54,135, +61,188,24,223,195,158,167,167,251,7,195,30,222,152,47,246,240,217,18,223,67,183,125,118,105,33,45,3,13,252,181,172,233,99,188,4,91,206,137,205,177,232,118,211,73,41,203,29,254,254,247,191,207,5,30,220, +97,24,60,134,97,164,47,195,61,181,160,165,194,113,3,206,177,135,181,240,61,196,107,233,218,182,39,167,49,87,212,76,247,130,226,205,190,49,95,236,33,57,168,96,15,61,218,25,180,1,24,76,120,21,6,138,103, +247,148,48,115,44,58,99,187,54,187,60,25,172,123,110,17,1,91,218,175,103,77,33,13,58,44,60,35,104,191,238,153,90,111,151,176,59,145,110,201,249,30,162,144,47,168,127,2,173,92,61,221,112,49,236,225,245, +118,233,124,177,135,111,148,102,15,61,14,186,108,248,75,7,62,103,112,1,88,133,89,156,56,142,203,77,120,30,134,205,144,136,172,45,237,100,228,196,20,160,165,45,159,109,97,3,246,255,146,129,112,252,134, +81,156,45,220,8,161,120,155,186,176,135,141,145,52,182,135,61,188,6,246,112,216,129,178,135,95,193,30,254,10,246,112,75,121,246,208,86,11,11,94,91,219,9,200,109,102,56,78,27,104,112,135,182,106,236,206, +4,63,220,89,185,84,25,180,47,39,214,115,103,228,172,83,102,120,160,106,171,29,106,121,37,199,173,91,181,64,40,126,92,106,142,209,148,174,60,221,105,229,105,151,31,40,123,184,7,246,112,11,236,33,121,99, +83,169,179,201,46,102,217,67,3,8,207,111,47,44,240,177,69,5,182,68,235,156,193,61,23,27,108,224,60,174,225,110,47,157,240,156,188,220,70,74,162,25,180,115,130,1,7,106,31,228,170,127,175,144,61,132,104, +145,78,43,0,212,186,170,89,141,52,177,235,9,30,37,255,141,46,191,211,107,216,145,40,110,103,31,125,45,79,51,158,179,74,237,165,57,230,173,227,63,222,77,254,105,59,219,199,63,174,167,214,99,249,195,138, +128,73,114,243,198,47,61,82,154,61,148,80,243,84,20,8,158,91,192,104,213,112,138,247,36,229,142,42,174,165,9,216,50,46,27,10,119,120,127,70,128,155,49,246,157,31,124,236,49,49,97,57,83,231,216,195,243, +97,15,47,0,199,3,214,106,87,183,122,234,209,172,122,26,213,237,92,5,233,127,36,224,45,222,57,127,204,49,199,124,68,160,157,120,26,243,156,86,42,96,14,2,79,208,197,182,176,183,245,210,250,63,88,216,178, +214,243,225,59,176,135,185,68,57,236,225,147,37,236,161,111,92,246,80,92,199,205,135,129,123,144,112,139,232,6,35,28,226,227,28,28,144,101,89,238,208,3,131,221,222,157,148,219,74,135,133,75,150,115,65, +184,100,250,127,72,166,201,72,228,216,195,2,124,15,207,46,12,182,5,65,183,33,224,171,155,194,30,94,211,238,0,125,15,119,194,30,190,3,123,248,38,236,225,235,176,135,36,201,205,27,103,217,67,151,11,103, +111,31,127,249,184,90,202,125,182,193,134,155,165,93,217,236,101,112,135,182,120,100,55,220,113,249,178,236,29,118,111,183,150,206,13,30,55,253,156,173,91,138,61,188,8,246,240,60,48,30,130,109,14,210, +211,182,14,236,97,211,124,176,135,171,96,15,223,135,61,164,214,99,249,195,138,192,234,7,75,251,30,26,168,59,48,25,65,199,166,147,145,193,198,197,97,145,189,140,107,226,194,213,210,23,225,227,225,193,113, +30,39,37,91,90,246,88,170,212,249,193,159,239,204,92,138,61,60,27,246,16,110,201,96,155,3,93,182,7,169,189,166,109,62,216,67,74,150,86,241,44,108,89,235,217,190,22,246,240,117,216,195,59,11,217,67,91, +218,60,116,176,135,225,98,233,185,215,110,232,1,193,131,190,123,111,243,210,89,208,50,12,228,60,252,219,253,237,29,102,72,92,171,61,39,59,31,152,223,54,88,215,95,215,221,98,246,240,76,216,67,168,52,131, +109,198,211,137,73,171,103,215,124,176,135,212,103,45,89,238,194,213,242,115,38,175,157,111,194,30,62,11,123,72,69,32,216,67,199,113,112,135,210,104,158,111,227,194,48,243,93,182,176,173,27,144,165,31, +157,184,124,17,126,159,19,154,189,193,86,54,216,227,142,59,174,24,180,140,117,215,157,149,201,188,246,140,221,250,103,195,30,2,105,53,62,7,246,240,135,176,135,231,194,30,54,170,153,46,233,148,47,246,240, +14,216,195,173,176,135,47,195,30,22,21,182,44,127,44,159,83,194,30,58,142,229,14,205,61,153,108,11,158,208,29,146,147,148,65,150,5,45,253,30,95,136,45,236,99,239,176,101,143,58,234,168,98,251,78,91,183, +25,36,184,193,118,104,95,144,26,156,139,187,52,193,218,157,109,217,198,231,156,144,90,156,3,123,216,50,223,236,33,245,89,75,150,81,216,90,15,160,245,250,131,176,135,83,43,102,15,77,184,121,148,140,241, +234,132,101,142,217,113,110,224,65,150,70,18,62,176,91,107,76,6,233,35,178,211,166,214,247,161,209,190,159,46,41,32,219,113,214,201,57,4,47,130,109,230,164,69,183,238,120,33,236,97,171,202,96,15,169,207, +110,126,6,246,112,57,236,225,18,216,67,106,61,150,63,22,77,250,122,246,208,251,175,28,119,38,226,132,173,28,139,254,217,46,109,203,187,205,244,168,105,239,240,156,235,196,148,195,242,120,218,157,87,45, +13,134,66,27,196,211,154,219,28,234,159,117,66,174,117,109,89,131,109,6,18,223,6,202,180,11,190,135,149,195,30,222,8,123,184,26,246,16,34,45,91,216,90,247,16,236,225,180,18,246,208,113,92,214,247,80,27, +48,137,180,96,15,189,53,41,144,188,210,190,135,167,165,150,13,235,164,126,205,142,46,14,118,96,147,106,233,154,250,213,210,69,103,159,80,8,89,230,130,61,41,181,58,239,248,212,169,117,101,179,135,179,97, +15,169,207,90,178,180,176,181,225,17,216,195,7,97,15,41,127,44,184,9,246,112,68,197,190,135,6,104,62,74,186,204,137,40,0,75,63,218,178,101,217,195,110,237,155,164,171,240,85,51,216,1,60,215,55,172,150, +90,157,123,116,106,116,206,137,169,41,193,182,36,216,14,141,107,225,71,124,48,216,67,138,209,214,103,55,46,129,61,124,24,246,144,194,150,181,158,149,179,96,15,39,192,30,14,133,61,36,111,60,98,216,192, +212,171,87,175,98,246,208,35,157,116,153,51,174,207,222,216,67,95,192,249,231,156,153,46,174,123,92,46,216,254,141,160,74,107,29,149,46,60,243,216,212,130,3,67,251,139,126,152,154,53,105,244,31,186,227, +29,28,246,112,54,236,225,143,96,15,23,192,30,82,197,179,176,181,226,86,216,195,105,176,135,84,4,76,146,223,58,0,246,240,154,34,246,176,211,183,103,15,237,242,238,176,90,146,213,232,221,0,175,82,2,111, +112,198,247,82,235,250,103,231,130,229,107,191,212,10,240,224,177,135,67,97,15,169,207,90,178,92,129,11,158,193,90,235,177,252,177,116,34,249,165,241,192,89,228,141,77,165,246,235,12,123,72,194,173,53, +44,112,179,58,176,135,231,237,187,239,225,121,231,157,139,163,244,233,233,186,6,223,75,221,155,214,76,13,46,186,232,207,180,108,46,216,131,239,123,40,123,72,125,118,237,124,216,195,91,97,15,229,14,115, +215,46,194,30,130,226,153,36,55,111,60,147,42,193,104,178,139,125,59,122,73,16,236,97,131,111,207,30,94,214,142,161,80,191,206,255,6,190,252,75,206,198,59,109,217,34,208,242,16,176,135,35,97,15,41,89, +90,197,179,176,181,140,22,126,112,52,236,33,21,1,147,228,243,7,195,30,146,74,189,249,26,216,195,107,97,15,91,239,27,123,232,18,230,166,67,246,208,165,135,177,253,25,75,216,167,20,3,188,64,91,132,86,170, +84,208,82,191,82,113,60,253,74,191,127,192,40,158,180,38,54,183,231,242,113,152,55,117,123,117,19,105,151,61,108,41,183,48,3,239,100,185,249,27,235,179,150,44,151,78,130,61,156,6,123,72,173,199,242,199, +253,84,4,238,25,66,247,38,111,60,183,63,190,135,195,96,15,47,251,122,246,208,217,220,29,155,21,14,74,165,255,169,115,116,25,246,112,7,179,187,183,133,31,102,236,33,133,45,107,61,171,40,127,172,28,7,123, +72,146,124,201,141,176,135,99,97,15,123,85,204,30,122,198,54,239,93,129,239,225,17,198,30,82,254,176,34,96,146,124,246,48,216,195,33,21,179,135,180,108,149,239,33,89,142,183,139,60,193,205,77,85,249,30, +126,27,205,244,183,210,75,239,133,68,19,82,150,43,174,197,163,227,228,149,86,222,73,160,173,193,252,241,99,246,202,59,40,130,237,128,246,222,198,140,187,149,137,110,43,98,149,173,204,182,91,189,179,206, +107,220,204,46,154,112,227,121,141,201,113,1,63,195,91,146,58,242,180,231,241,182,164,38,60,85,190,135,223,166,117,203,73,30,190,237,63,174,98,15,17,141,148,34,57,75,192,203,147,170,216,195,50,47,39,31, +189,107,95,126,198,1,79,90,251,242,159,28,78,223,115,80,2,174,98,15,171,216,195,42,246,176,138,61,252,238,177,135,191,232,145,214,191,1,123,56,235,255,15,236,225,102,216,195,143,96,15,183,194,30,238,132, +61,252,41,236,225,139,176,135,147,97,15,175,249,174,177,135,31,225,123,248,33,236,225,251,176,135,239,192,30,190,13,123,248,41,236,225,6,216,195,183,97,15,177,14,155,63,13,246,240,210,130,63,145,249,248, +31,36,6,182,81,190,249,132,50,235,30,74,55,175,147,185,156,224,125,95,236,228,190,214,24,238,91,223,227,81,100,242,56,28,101,205,75,255,250,175,255,186,71,195,56,61,212,168,23,253,126,212,168,94,232,57, +198,81,192,190,5,125,199,12,106,186,24,197,65,186,252,230,55,11,80,247,220,201,159,39,241,249,9,60,55,241,181,209,72,23,134,163,186,187,57,125,241,179,113,105,235,150,194,96,183,108,132,61,220,0,123,184, +30,246,240,3,216,67,62,247,193,143,97,15,95,134,61,124,5,246,240,117,216,67,0,173,129,189,142,20,223,195,157,176,135,155,97,15,223,130,61,124,5,246,112,29,236,225,27,176,135,207,194,30,190,8,123,248,26, +236,225,155,72,42,214,192,30,110,129,61,228,207,27,95,134,61,20,199,123,22,246,112,5,236,225,11,176,135,207,31,174,236,225,206,91,210,246,45,176,135,191,160,168,189,6,246,112,250,62,176,135,19,97,15,31, +133,61,124,21,246,240,105,216,195,103,139,130,125,6,246,240,41,216,195,199,97,15,127,4,123,248,58,236,225,156,195,137,61,220,14,123,184,30,246,240,206,253,100,15,199,193,30,78,132,61,92,0,123,248,40,236, +225,83,176,135,4,251,246,50,216,195,231,96,15,127,4,123,248,20,236,225,237,135,3,123,184,9,246,112,241,190,177,135,202,22,149,47,170,176,11,28,175,28,123,56,21,246,240,46,216,195,101,176,135,180,244,150, +167,97,15,239,135,61,188,31,246,112,57,236,225,45,135,146,61,220,90,154,61,52,32,235,191,33,81,178,48,30,42,0,235,193,58,129,120,89,118,4,171,150,131,74,66,46,69,107,170,214,224,213,144,40,171,88,117, +55,236,225,19,176,135,4,187,110,33,236,33,40,222,91,247,193,30,62,12,123,56,248,80,176,135,111,151,247,61,84,215,97,209,59,84,119,106,56,172,242,43,83,82,222,160,182,67,161,184,204,161,212,153,220,161, +65,86,232,123,56,3,223,195,41,176,135,119,192,30,18,236,154,187,96,15,239,164,92,123,23,236,225,125,176,135,215,28,76,223,195,117,37,236,161,76,66,150,61,12,95,67,69,106,10,75,195,18,80,169,146,236,146, +173,47,127,104,235,234,255,226,203,81,135,173,72,70,25,84,57,246,112,60,236,225,29,176,135,119,194,30,206,133,61,156,13,123,56,15,246,112,238,193,98,15,215,151,102,15,3,199,203,186,223,217,178,138,206, +84,232,168,221,10,168,50,94,140,65,103,229,15,234,49,253,57,190,4,85,4,229,216,195,241,176,135,115,96,15,9,118,213,173,176,135,183,194,30,114,145,232,237,163,42,155,61,100,130,202,178,135,106,174,108, +53,69,102,234,34,181,47,8,119,60,149,121,74,19,195,3,209,23,162,90,39,198,120,124,12,31,38,131,182,235,59,161,121,231,188,250,15,91,61,199,30,14,235,159,22,140,129,61,188,21,246,240,54,185,67,30,174,135, +93,53,173,50,217,195,223,193,30,174,44,207,30,218,109,245,102,8,36,47,112,60,21,118,6,172,248,204,113,236,203,177,21,237,242,217,160,195,254,83,65,91,8,79,157,201,67,14,85,236,123,56,22,246,112,26,236, +225,116,216,67,138,239,203,199,195,30,222,2,123,200,93,185,249,103,15,217,84,124,252,110,121,246,208,238,170,24,84,129,184,65,7,142,167,154,78,13,165,173,28,50,98,213,121,182,166,1,134,126,218,191,103, +37,76,254,60,145,31,255,157,74,191,184,138,189,152,61,28,2,123,56,158,226,251,56,216,67,238,191,125,122,34,236,225,248,202,96,15,217,65,185,169,40,203,30,42,251,85,254,31,56,158,226,80,131,86,40,170,118, +82,107,18,129,203,16,156,6,138,23,62,166,118,113,187,186,98,212,160,75,237,21,118,237,96,15,253,40,139,152,243,61,236,7,123,56,20,149,1,193,46,166,232,190,100,52,236,33,229,217,252,179,135,27,97,15,251, +21,250,30,70,235,40,240,22,1,8,190,72,125,115,96,0,170,97,21,140,59,158,3,158,118,89,10,163,139,172,67,109,248,151,202,40,42,65,20,17,240,223,168,143,246,81,236,166,24,70,177,233,80,124,15,167,94,7,119, +56,210,7,246,144,26,244,51,227,96,15,71,228,155,61,124,185,132,61,140,203,12,108,197,48,148,10,186,197,160,195,179,80,85,172,93,219,86,182,133,179,190,45,97,199,235,75,240,107,246,2,187,177,250,105,39, +62,95,166,202,61,229,255,6,29,236,161,65,143,234,14,123,56,144,130,251,141,176,135,195,96,15,71,194,30,142,206,39,123,200,169,199,131,128,235,163,147,77,104,159,221,64,8,102,132,161,155,172,145,156,66, +152,76,133,81,163,72,128,1,169,180,205,122,152,26,172,168,173,106,90,91,85,187,34,131,21,205,179,119,248,66,125,220,160,4,123,168,12,162,187,236,33,80,199,93,96,120,11,135,194,30,14,129,61,28,147,79,246, +240,11,216,195,9,35,115,204,67,176,135,126,84,55,105,139,134,147,93,214,40,46,60,17,229,8,253,165,221,132,184,22,27,176,203,152,51,118,192,150,6,154,245,45,117,182,119,72,56,9,250,81,165,125,8,220,114, +236,97,167,14,169,127,71,176,157,235,97,15,177,1,188,123,32,236,225,200,124,178,135,27,75,124,15,195,149,195,95,220,150,11,194,44,139,226,9,93,133,65,156,93,221,113,237,4,230,210,20,40,79,96,180,89,247, +29,169,24,159,48,126,12,28,64,128,36,108,0,195,247,176,107,19,216,195,203,96,15,113,196,155,7,138,247,56,174,120,147,135,228,139,61,228,240,30,190,135,161,136,117,86,142,238,156,197,233,36,202,100,143, +112,170,206,117,111,131,247,165,24,180,203,147,67,194,117,217,22,181,235,26,96,88,143,133,59,151,31,165,92,194,78,204,89,95,53,95,41,246,144,251,230,123,183,131,61,188,18,246,240,122,102,109,92,241,110, +29,150,47,246,240,217,18,246,208,61,176,234,118,215,221,178,40,94,214,248,209,192,109,229,192,238,236,1,6,230,152,181,155,138,231,56,28,252,24,6,113,1,89,58,28,156,7,124,145,126,206,150,174,144,61,132, +117,24,220,25,223,195,171,241,61,236,7,123,56,52,95,236,225,202,210,236,161,199,60,39,164,88,146,4,173,194,142,51,104,113,191,102,64,146,161,190,28,131,116,204,10,112,196,75,176,245,195,2,48,62,102,123, +77,244,28,255,189,45,172,32,181,20,123,136,13,96,175,214,63,72,99,46,195,247,16,20,111,246,208,124,176,135,36,220,204,65,149,101,15,237,102,225,59,26,96,115,140,57,131,18,201,49,72,39,44,249,36,85,239, +174,223,206,200,126,93,0,51,0,203,96,16,101,15,237,25,89,31,196,240,46,85,134,172,220,184,216,247,240,92,216,195,122,176,135,77,96,15,59,193,30,246,164,75,15,61,80,246,144,84,234,54,158,45,175,149,247, +61,12,208,217,192,236,170,78,52,146,40,126,94,50,197,245,215,77,135,107,112,216,106,59,97,57,113,73,175,185,67,179,5,99,178,171,8,182,180,181,221,133,185,36,133,183,139,187,174,28,123,168,72,188,14,236, +97,67,216,195,118,176,135,87,193,30,14,61,16,246,240,75,124,15,127,9,123,248,115,216,195,15,97,15,39,142,204,101,37,188,58,70,33,184,235,165,148,104,4,233,159,157,132,12,198,64,3,197,11,87,60,143,130, +46,71,110,33,93,162,164,209,236,37,97,234,106,240,49,225,69,43,59,60,4,45,133,63,68,3,78,62,249,228,28,172,149,99,15,207,198,247,16,119,158,246,117,96,15,105,229,233,151,192,30,14,218,95,223,195,95,227, +123,184,19,246,112,19,236,33,121,99,83,169,179,201,46,102,217,67,119,91,2,151,158,140,252,168,25,163,129,186,129,112,123,232,76,44,119,24,23,15,25,176,93,218,205,134,167,43,95,152,176,165,179,183,227, +221,46,110,240,225,82,27,168,189,194,114,113,90,187,179,31,221,83,55,111,136,239,33,66,241,150,192,90,5,117,97,15,27,195,30,118,58,16,246,144,90,143,229,15,43,2,38,201,205,27,191,180,184,52,123,104,107, +187,153,247,184,231,198,192,205,131,99,213,49,234,76,108,215,141,141,134,47,199,96,221,172,120,4,116,242,178,171,7,141,230,216,119,9,114,41,42,235,131,234,207,11,248,163,152,61,196,254,68,80,171,37,79, +187,58,176,135,32,181,163,47,57,16,246,144,194,150,181,158,15,223,130,61,92,107,162,28,246,240,49,216,195,193,133,190,135,38,219,252,232,225,220,86,143,43,101,226,176,239,22,82,38,41,110,97,50,208,56, +255,250,130,124,33,126,175,199,71,199,186,123,110,131,54,96,103,100,131,118,169,114,50,244,103,149,242,61,12,246,144,96,91,240,180,185,128,128,27,157,152,134,93,125,160,236,225,86,216,195,183,96,15,215, +192,30,82,254,48,73,110,222,88,34,205,39,130,117,246,182,155,186,115,242,16,96,55,54,216,48,72,47,235,119,232,161,193,244,143,123,235,172,171,165,147,94,156,180,12,218,101,206,253,180,134,84,165,216,195, +250,176,135,176,15,6,219,28,240,163,45,206,90,87,55,58,41,245,227,229,51,131,255,138,223,103,59,230,53,31,23,137,220,148,22,95,232,245,52,165,52,30,164,84,106,209,229,222,101,12,106,216,186,221,235,82, +95,89,1,123,184,1,246,144,96,45,127,88,17,88,125,127,105,223,67,131,181,165,237,162,118,97,91,195,19,81,184,225,25,108,88,0,218,202,1,113,217,213,61,10,122,58,10,163,72,39,177,184,195,195,201,204,217, +31,51,156,138,217,67,232,22,131,109,206,199,246,80,166,215,180,206,7,123,72,201,210,42,158,133,45,107,61,219,105,233,29,63,134,61,188,189,196,247,208,140,132,114,95,79,51,89,12,207,131,129,227,54,152, +67,63,122,194,178,91,155,245,240,133,56,123,187,213,180,149,157,236,220,83,187,164,185,213,116,198,247,103,150,99,15,235,224,123,120,6,236,33,54,98,6,43,214,211,137,73,235,218,139,243,193,30,82,159,181, +100,185,235,77,216,67,38,175,157,175,195,30,174,128,61,164,34,16,236,161,173,107,118,209,123,175,164,209,76,194,217,101,93,111,35,224,128,45,131,72,115,12,187,52,57,12,226,12,236,100,39,100,237,216,118, +105,115,50,20,220,138,91,29,138,217,67,92,181,154,209,178,141,89,146,26,98,248,216,252,108,216,195,6,248,30,230,141,61,156,11,123,136,157,231,230,213,176,135,69,133,45,203,31,203,103,195,30,14,235,147, +75,169,102,217,67,15,24,118,221,240,42,245,160,97,190,217,160,35,224,240,44,53,232,152,188,156,4,25,115,185,199,173,99,216,1,234,12,111,176,29,101,15,207,97,151,85,212,141,133,181,26,3,111,181,252,33, +236,97,139,124,178,135,20,163,173,207,90,178,140,194,214,250,37,176,135,11,97,15,145,251,143,28,49,36,151,66,117,2,203,109,8,216,5,153,142,177,146,96,170,213,109,160,84,154,12,147,221,218,49,237,203,8, +207,210,240,45,181,53,209,69,23,59,228,157,113,250,105,169,73,163,139,114,193,118,229,185,240,172,31,164,38,236,172,114,221,152,96,125,90,0,91,118,172,91,204,30,254,20,165,238,118,254,239,157,69,250,106, +181,213,170,112,181,37,202,25,78,85,40,76,163,123,214,166,107,190,232,125,206,152,73,109,179,242,110,49,218,250,236,230,167,96,15,9,118,253,98,216,67,106,61,150,63,22,77,252,122,246,208,59,176,132,179, +68,240,220,7,199,164,229,82,101,192,174,199,118,123,243,207,209,162,65,173,93,215,224,168,212,173,160,81,106,221,178,69,170,7,104,217,232,108,39,169,146,96,155,65,169,181,133,67,236,210,174,178,124,15, +135,194,30,174,130,61,124,20,246,48,83,216,90,183,8,246,112,42,236,33,73,114,239,172,203,178,135,6,235,227,165,65,210,102,238,135,115,212,25,47,64,16,75,12,175,148,239,225,169,63,72,13,207,56,38,13,108, +12,104,9,130,215,173,201,153,233,252,211,171,167,6,142,213,82,193,194,30,194,13,119,174,116,246,112,38,236,33,245,89,75,150,22,182,54,60,4,123,184,8,246,144,242,199,130,209,176,135,55,150,247,61,140,43, +161,226,150,21,215,211,44,123,24,190,135,45,154,55,73,125,155,28,147,11,212,103,16,65,119,171,243,61,130,117,114,58,46,53,226,177,27,55,61,7,246,240,28,216,195,134,7,139,61,164,24,109,125,118,227,98,216, +195,7,96,15,41,108,89,235,89,57,29,246,112,44,236,225,13,176,135,228,141,71,12,45,100,15,29,131,122,159,57,150,131,59,252,58,246,240,146,54,13,240,53,60,49,23,236,64,120,195,62,23,85,35,216,227,233,206, +39,166,6,96,240,6,109,176,237,47,60,216,236,225,76,216,195,39,96,15,239,134,61,44,42,108,173,0,197,123,106,10,236,33,21,1,147,228,51,251,157,149,70,245,128,61,36,187,216,229,91,176,135,181,207,57,35,245, +97,252,14,128,53,52,224,214,231,30,75,43,67,149,50,35,55,59,243,104,12,210,207,205,178,135,219,169,43,127,89,4,109,85,178,239,225,13,176,135,212,103,45,89,174,152,6,123,72,176,214,122,44,127,44,29,103, +85,0,56,139,188,177,169,212,126,29,96,15,73,184,181,174,11,123,88,27,246,240,220,189,179,135,13,97,19,175,172,119,76,234,15,100,217,254,188,99,82,195,51,143,75,109,88,142,58,181,106,156,67,104,165,74, +15,13,123,72,49,218,250,236,218,219,97,15,241,60,180,176,101,249,195,96,23,227,110,105,146,220,188,241,76,82,169,163,187,193,30,114,217,87,191,2,216,195,250,223,204,30,214,59,239,204,212,143,22,238,93, +255,168,212,178,86,141,212,169,77,115,111,62,212,152,245,103,34,180,135,150,61,188,17,246,144,146,165,85,60,11,91,203,0,45,31,4,169,181,34,96,146,124,30,8,158,169,212,155,175,130,61,236,126,92,186,162, +229,41,185,148,107,204,220,49,177,153,119,118,103,229,186,237,204,126,73,243,11,210,13,45,127,144,10,154,212,253,15,190,247,255,60,188,124,15,101,15,41,89,46,157,0,123,8,112,105,173,199,242,199,253,152, +60,222,51,136,160,201,27,207,237,13,123,56,0,246,176,107,33,123,232,149,111,38,230,156,196,188,47,192,143,46,93,30,240,221,163,51,225,253,87,227,70,13,127,207,11,249,21,223,191,135,251,66,118,31,190,190, +135,20,182,172,245,172,26,11,123,56,10,246,144,36,249,18,174,112,123,98,24,236,225,213,165,217,67,47,70,176,64,231,246,210,199,234,63,245,164,255,69,47,216,205,75,217,12,231,244,9,159,211,95,120,39,14, +155,143,177,115,26,92,68,169,233,85,170,125,167,84,169,252,212,247,246,134,28,124,107,4,64,77,35,79,117,158,150,64,85,227,73,189,172,101,103,182,135,235,40,118,113,178,217,197,159,63,164,219,109,246,186, +84,198,219,63,177,28,253,111,74,171,255,175,87,47,90,17,48,73,62,251,6,216,195,27,170,216,195,42,223,195,42,223,195,42,246,176,202,247,240,27,39,225,111,252,134,3,161,202,138,102,116,77,31,171,216,195, +3,121,145,7,242,111,43,181,133,15,228,23,171,172,127,123,80,2,174,98,15,171,216,195,42,246,240,59,204,30,142,191,132,186,84,215,255,164,84,243,39,175,135,229,249,3,167,166,175,172,109,81,170,217,66,69, +114,23,50,137,29,223,13,246,240,139,254,233,87,95,244,73,191,249,197,181,233,87,159,193,30,190,12,123,56,253,187,202,30,254,12,223,195,15,241,61,220,136,239,225,187,176,135,239,194,30,110,132,61,220,12, +123,248,9,236,225,74,216,195,137,176,135,87,127,23,216,195,47,166,164,47,127,114,115,218,186,105,112,250,248,61,112,188,13,176,135,111,193,30,190,1,123,248,58,236,225,54,216,195,55,96,15,95,131,61,92, +1,123,56,25,246,240,146,35,149,61,220,6,123,72,176,95,236,129,61,124,191,48,216,45,235,97,15,215,194,30,174,129,61,124,27,246,144,207,125,240,60,236,225,179,176,135,207,193,30,190,8,123,248,56,236,97, +207,35,129,61,252,100,98,250,201,14,216,195,15,96,15,223,128,61,92,13,123,184,6,246,240,199,176,135,79,195,30,174,130,61,124,1,246,240,21,36,21,47,194,30,190,15,123,248,99,216,195,103,97,15,41,198,191, +247,20,236,225,99,176,135,43,96,15,159,134,61,28,114,56,250,30,202,30,126,4,123,248,51,216,195,87,96,15,167,146,171,234,215,51,151,179,178,148,106,13,217,27,74,85,14,120,173,235,13,3,122,165,217,227,97, +15,31,130,61,124,1,246,112,25,236,225,83,69,193,62,14,123,184,20,246,240,17,216,195,229,176,135,47,194,30,222,10,123,216,166,225,191,83,109,220,141,58,96,43,210,138,191,32,195,185,206,203,205,138,238, +4,250,90,180,118,175,91,75,36,68,141,53,102,253,151,127,249,151,143,68,104,89,30,118,206,154,53,229,207,79,62,57,20,41,194,116,228,132,247,33,51,122,20,121,239,108,100,10,179,248,8,74,187,21,246,112,45, +236,225,237,176,135,99,135,228,18,114,234,171,13,214,224,212,133,236,213,247,80,246,112,28,236,225,124,216,195,7,97,15,151,194,30,18,236,219,15,193,30,62,13,123,184,12,246,240,81,216,195,89,176,135,205, +235,253,59,154,45,131,222,78,149,211,43,227,188,69,173,91,81,206,173,194,100,222,215,6,140,176,243,135,168,104,230,232,66,139,42,118,163,188,48,133,237,63,221,127,255,128,92,176,59,118,204,68,150,48,27, +165,205,195,60,15,164,159,124,54,61,109,123,31,246,240,1,216,195,238,87,230,152,8,91,80,201,130,100,74,92,179,28,190,135,89,246,144,155,11,43,246,61,188,25,246,112,46,236,225,131,176,135,180,244,150,101, +176,135,119,195,30,226,136,183,235,65,216,195,155,15,21,123,248,223,241,61,220,12,123,216,183,180,239,161,226,149,80,239,196,101,218,154,97,100,217,67,21,125,190,20,187,184,236,97,164,105,139,217,67,84, +117,171,110,135,61,92,2,123,72,176,235,230,195,30,222,9,123,120,39,236,225,125,176,135,3,15,54,123,248,9,190,135,111,194,30,78,31,159,235,178,62,225,123,152,149,42,169,179,84,147,165,172,73,165,143,85, +127,101,77,22,197,109,253,96,15,43,244,61,148,61,156,0,123,56,11,246,144,96,215,204,133,61,196,47,109,237,109,176,135,119,192,30,246,56,88,236,225,238,25,220,27,95,154,61,12,195,56,171,250,193,37,249, +103,229,73,17,176,129,134,20,209,239,241,177,133,67,247,165,76,169,28,123,56,124,72,90,56,26,246,240,86,216,195,89,176,135,51,96,15,41,237,188,57,11,246,112,6,236,97,171,134,127,164,20,179,147,158,241, +137,121,114,180,153,115,25,203,181,77,206,239,245,14,0,84,111,167,163,132,123,30,37,251,38,148,174,239,233,28,253,192,3,195,208,60,223,135,242,117,30,82,224,194,9,202,49,187,105,45,236,33,246,157,225, +123,168,76,41,148,178,42,235,20,152,42,88,81,68,170,238,82,133,78,120,32,6,99,104,176,190,16,199,182,99,89,225,185,63,195,238,93,142,61,28,49,48,45,28,5,123,56,29,246,240,22,216,195,201,176,135,147,97, +15,111,131,61,28,86,217,236,33,19,84,140,89,5,45,193,30,42,65,82,7,29,56,158,242,35,101,254,74,146,190,14,199,51,224,120,194,36,210,23,162,116,162,66,246,240,70,216,195,201,176,135,211,224,14,167,242, +112,105,232,170,137,176,135,23,87,150,239,225,95,195,30,254,168,52,123,104,171,40,0,85,33,175,54,82,53,157,52,138,226,50,21,182,42,237,252,186,122,76,101,137,142,93,95,82,89,254,208,192,29,22,225,114, +105,171,107,98,161,58,168,152,61,28,9,123,56,17,246,240,102,216,195,49,176,135,128,90,207,143,135,61,28,84,89,236,33,14,209,55,14,27,146,131,155,99,130,82,118,168,46,50,107,82,99,208,62,202,9,5,174,52, +148,50,232,112,185,244,37,5,221,22,162,83,255,174,74,47,92,46,213,109,58,99,135,20,170,152,61,28,0,123,200,53,176,75,71,192,30,82,131,126,122,20,236,225,200,202,96,15,217,65,185,169,8,246,48,196,103,182, +172,202,87,245,206,194,25,114,14,42,228,21,138,42,30,183,149,181,52,80,63,109,16,202,149,130,59,204,226,180,190,192,192,105,21,159,58,7,248,130,202,249,30,246,129,61,28,160,131,22,236,225,16,10,240,67, +96,15,71,87,6,123,200,37,37,3,251,22,178,135,177,206,250,209,73,42,156,181,164,90,84,182,219,226,202,129,149,249,203,60,168,165,84,87,105,16,206,212,89,43,207,44,59,28,234,60,39,184,32,217,130,61,180, +150,156,99,15,7,193,30,98,27,246,208,13,62,176,135,131,96,15,135,195,30,14,205,39,123,200,65,96,3,155,127,103,101,215,205,88,103,253,197,85,196,134,245,151,42,246,112,214,10,147,25,33,43,21,243,210,226, +89,105,113,92,140,239,120,246,37,184,94,251,245,208,95,58,12,84,243,89,44,87,5,100,192,22,210,115,236,97,55,216,195,222,20,220,7,194,30,210,218,203,6,195,30,14,205,39,123,200,169,199,131,128,123,99,183, +139,89,223,21,103,230,44,130,231,159,5,181,236,218,118,113,91,90,169,191,221,58,84,242,225,67,236,4,21,70,173,182,170,19,155,75,152,192,165,147,157,107,248,69,23,93,148,19,184,249,81,69,95,142,61,236, +2,123,120,57,236,97,31,216,195,254,176,135,92,231,188,114,72,62,217,195,159,148,176,135,97,145,45,235,16,112,165,31,179,40,158,1,11,106,56,182,85,183,171,125,118,109,118,183,21,134,53,138,76,157,160,236, +230,118,119,91,212,151,98,176,162,1,193,81,216,131,156,193,213,130,168,11,41,102,15,219,128,237,208,181,231,93,7,123,8,153,246,204,32,216,195,126,249,242,61,220,80,194,30,26,176,251,99,187,108,140,93, +39,172,112,182,203,162,120,97,9,230,12,238,250,108,96,193,13,43,36,119,18,115,115,98,107,6,108,233,36,167,18,222,239,119,210,115,121,243,239,101,217,195,139,27,192,30,118,57,37,205,236,113,90,154,119, +45,236,33,100,218,228,193,249,96,15,201,84,120,120,47,203,30,134,73,156,99,214,128,109,77,91,58,220,240,162,149,125,1,2,88,118,111,65,16,3,86,57,239,152,54,80,39,61,187,188,193,5,108,233,184,119,194,243, +9,30,74,177,106,41,246,240,130,26,233,250,150,213,211,248,75,96,15,123,48,107,107,18,55,248,64,217,195,109,35,184,76,104,104,122,243,71,229,217,67,151,30,161,12,199,170,68,138,45,158,53,108,180,43,27, +188,47,194,224,157,216,252,186,203,146,173,168,204,223,159,97,119,247,229,197,35,186,231,184,15,132,207,207,187,145,49,224,82,190,135,231,225,123,8,235,48,184,29,236,225,229,176,135,61,97,15,7,30,8,123, +248,241,141,100,47,134,194,46,13,74,107,159,42,207,30,218,26,97,191,25,191,164,191,104,60,126,205,53,218,95,214,239,117,204,171,130,15,42,213,86,119,220,251,194,162,151,248,146,2,192,12,24,211,225,224, +75,113,182,46,197,30,158,139,239,97,61,216,195,230,63,72,99,187,192,30,118,135,61,28,184,191,236,33,121,99,83,169,102,23,77,184,153,131,42,203,30,138,219,5,212,108,215,51,168,160,212,236,162,142,59,91, +82,32,203,165,198,49,107,119,182,91,27,180,1,203,30,134,237,103,24,59,6,177,26,252,146,61,196,158,80,142,61,196,138,168,160,246,9,233,10,80,188,27,218,49,121,117,163,75,15,218,31,246,144,138,128,73,114, +243,198,166,82,183,241,108,121,177,60,123,232,216,115,235,232,198,194,64,195,227,80,88,195,32,13,204,37,198,29,86,152,180,58,51,187,197,116,34,114,56,132,205,103,89,216,50,44,62,3,207,181,91,75,168,217, +194,197,236,225,15,97,150,206,135,61,188,16,246,176,37,236,97,87,216,195,193,251,203,30,254,186,95,250,197,167,176,135,63,133,61,252,12,246,112,67,9,123,232,102,192,211,140,107,170,51,172,75,136,75,142, +129,186,164,136,226,69,160,110,36,92,103,3,250,48,112,215,91,103,100,187,122,224,244,182,106,76,110,97,244,24,230,143,78,132,174,199,202,18,207,58,235,172,66,212,0,165,188,114,98,173,76,10,206,135,61, +108,128,239,97,193,241,105,228,192,253,101,15,191,128,61,252,8,246,240,29,216,67,242,198,166,82,205,46,102,217,67,119,92,62,97,133,237,26,234,154,233,90,235,218,234,76,236,58,107,171,198,190,219,195,129, +251,99,91,223,30,225,166,37,96,75,91,51,220,109,227,163,189,40,152,67,63,170,195,204,177,135,13,96,15,33,90,90,162,178,45,192,112,234,170,139,96,15,91,31,8,123,72,173,199,242,135,21,1,147,228,230,141, +95,90,88,200,30,122,64,55,221,234,73,198,76,133,44,131,231,93,3,15,251,63,199,107,152,43,103,185,67,91,216,128,93,146,236,21,142,117,41,52,91,218,25,188,172,151,177,47,148,43,216,139,225,15,245,152,57, +223,67,36,200,205,129,62,12,184,237,249,160,120,23,225,123,216,225,64,216,67,10,91,214,122,62,124,13,246,144,228,248,7,47,194,30,62,82,49,123,104,142,42,220,240,12,198,101,199,115,109,92,80,226,11,9,154, +197,214,246,123,124,57,114,135,38,9,92,158,12,218,137,204,25,57,198,173,221,220,89,93,218,37,92,182,138,125,15,207,40,12,182,133,12,113,45,2,190,16,246,240,202,3,101,15,223,135,61,124,13,246,144,139,53, +45,127,152,36,55,111,156,245,61,84,230,111,192,142,103,91,53,139,225,121,56,8,191,67,63,26,108,150,59,52,19,226,184,119,226,11,11,109,3,143,163,102,184,90,202,69,148,98,15,47,132,61,132,114,49,216,230, +210,45,0,32,87,95,152,15,246,240,49,216,195,55,96,15,9,214,242,135,21,129,213,247,192,30,222,196,85,79,164,87,13,214,221,151,73,184,24,175,118,89,159,112,178,116,11,234,86,52,2,246,107,193,15,187,119, +118,54,119,233,114,2,11,208,50,28,111,93,195,229,161,74,249,30,98,107,82,255,76,124,15,129,61,12,182,57,129,23,208,210,215,52,203,7,123,72,201,210,42,158,133,45,107,61,219,105,233,29,171,97,15,103,151, +176,135,158,158,100,15,13,58,38,40,91,209,0,179,94,135,101,173,255,2,180,116,86,119,44,59,129,5,93,26,91,74,87,3,1,174,82,190,135,181,97,15,107,194,30,226,161,102,176,205,126,120,82,234,72,11,247,236, +216,194,67,197,255,226,217,68,2,112,155,90,205,34,235,132,66,163,86,96,173,114,149,7,90,109,32,19,205,199,86,222,57,247,238,177,62,107,201,114,215,143,97,15,153,188,118,190,4,123,248,24,236,33,21,129, +161,36,201,195,68,61,216,67,187,186,103,219,0,163,179,6,143,1,105,153,209,240,236,235,161,193,113,156,117,180,148,33,118,35,227,68,102,114,48,224,173,98,223,195,118,248,30,158,1,123,8,229,210,24,14,162, +225,105,248,30,158,121,124,234,90,23,223,195,142,249,242,61,156,9,123,248,14,236,225,10,216,195,162,194,150,229,143,229,211,96,15,135,86,204,30,26,168,9,56,147,5,86,23,108,233,44,74,235,56,119,8,120,114, +138,164,128,180,185,51,188,45,238,142,46,76,30,75,177,135,103,193,30,18,108,174,101,121,26,159,129,239,225,233,176,135,77,11,217,67,197,228,252,159,219,181,59,161,69,175,46,50,197,240,238,218,92,126,186, +92,11,147,171,58,150,236,255,88,53,21,108,22,118,210,53,246,88,140,182,62,107,201,50,10,91,235,239,135,61,188,11,246,112,28,236,33,73,242,178,236,161,59,33,211,50,238,125,125,98,12,187,173,180,7,56,134, +13,218,0,109,113,47,52,112,233,113,54,118,99,17,8,109,180,108,142,61,60,3,246,144,157,85,4,107,87,110,113,38,236,225,5,167,164,182,45,155,255,153,10,98,30,217,67,138,209,214,103,55,63,10,123,72,176,235, +23,192,30,82,235,177,252,177,104,12,236,225,212,177,185,43,27,77,165,10,90,70,14,202,180,140,153,10,187,190,107,177,179,180,135,127,3,142,153,221,127,19,23,26,24,104,184,72,135,87,105,219,214,173,8,22, +246,240,44,38,169,162,150,53,216,102,176,76,109,248,123,231,54,57,223,195,191,199,6,101,27,70,146,59,104,221,55,104,81,141,108,180,60,209,238,164,122,84,31,42,172,30,146,51,250,62,44,240,0,42,124,219, +104,229,221,94,113,204,47,254,123,47,205,20,206,122,255,126,216,195,76,97,107,221,221,176,135,19,74,216,67,185,95,171,6,230,159,124,164,83,176,253,202,101,43,4,56,220,41,249,81,130,69,246,48,130,52,80, +175,172,184,180,246,177,233,202,214,117,114,155,139,2,238,234,48,216,134,167,99,157,93,38,216,86,16,107,157,90,22,251,30,238,166,43,203,68,124,2,142,59,163,136,135,104,202,199,51,121,142,221,107,192,126, +145,46,121,62,65,47,100,220,109,247,62,103,90,109,119,179,102,77,254,180,244,22,216,67,234,179,150,44,45,108,109,184,15,246,240,46,216,67,202,31,11,134,193,30,14,129,61,28,59,58,215,210,102,54,109,237, +8,216,224,28,151,101,217,195,179,206,168,201,120,164,107,158,119,116,26,0,152,53,24,4,175,71,179,179,82,253,90,103,167,11,79,119,172,22,78,80,141,206,128,61,164,101,155,210,210,45,153,168,218,215,175, +149,154,84,186,239,33,149,119,139,209,214,103,55,222,7,123,120,15,236,33,133,45,107,61,43,39,193,30,142,128,61,236,7,123,216,187,109,26,49,100,223,217,195,190,216,97,223,64,160,6,59,24,4,239,226,90,199, +164,122,167,225,100,73,183,141,150,109,192,140,220,232,52,216,67,130,45,168,11,123,216,184,225,65,242,61,164,242,254,216,45,176,135,143,192,30,206,133,61,164,138,103,97,107,197,68,216,195,113,176,135, +84,4,76,146,207,236,5,123,120,57,236,33,217,197,46,29,247,238,123,216,177,121,189,212,179,193,113,185,96,7,209,202,61,235,30,197,242,3,100,73,192,206,198,185,49,203,4,213,180,230,209,169,221,133,176,135, +4,123,240,125,15,169,229,88,159,181,100,185,130,130,150,193,90,235,177,252,177,116,132,85,1,224,44,242,198,166,82,251,181,173,145,46,105,8,123,88,27,246,16,227,198,186,231,148,103,15,229,13,251,224,81, +58,144,128,123,212,57,10,142,152,117,246,76,2,46,154,141,219,18,120,167,22,141,115,221,248,208,177,135,20,163,173,207,174,157,14,123,8,119,104,97,203,242,135,193,46,30,2,123,72,146,220,188,241,204,171, +97,15,47,134,61,108,13,123,216,6,246,176,94,121,246,80,23,203,182,181,78,72,3,8,250,186,122,213,88,99,143,99,236,158,144,218,49,134,59,93,112,106,186,184,109,203,28,123,72,154,246,139,67,203,30,82,140, +158,115,3,236,33,37,75,171,120,22,182,150,221,8,123,56,24,246,144,174,109,146,124,222,117,176,135,61,96,15,47,171,153,166,92,14,123,216,172,98,223,195,122,231,159,157,174,170,115,76,26,5,48,221,142,179, +110,135,243,79,73,151,183,108,144,10,90,183,252,51,233,157,191,61,188,216,67,234,179,150,44,151,142,134,61,28,3,123,72,173,199,242,199,253,253,96,15,123,19,52,121,227,185,220,106,182,160,55,236,97,231, +210,190,135,46,95,193,30,54,168,125,94,154,210,246,248,52,144,139,72,58,180,110,145,219,65,149,241,61,212,114,108,53,203,205,97,230,123,72,97,203,90,207,170,161,176,135,131,97,15,73,146,47,185,30,246, +112,0,236,225,229,229,217,67,183,147,33,106,233,223,173,157,53,164,127,102,253,254,25,1,127,164,207,26,187,192,237,174,179,71,6,123,72,249,195,138,128,73,242,217,253,97,15,7,150,103,15,169,23,253,49,124, +15,233,190,91,56,245,108,134,48,221,67,160,238,3,118,186,131,42,218,84,184,139,242,126,29,55,22,234,56,78,225,249,62,207,81,223,196,74,236,23,243,192,15,254,30,207,9,60,103,243,116,82,64,194,132,179,129, +137,100,55,251,240,79,40,180,125,206,86,114,39,39,168,143,104,145,45,116,199,157,108,62,190,160,165,190,98,203,249,91,182,128,127,13,132,249,215,108,110,126,75,32,95,241,249,47,232,210,95,199,30,26,104, +149,239,33,47,90,124,246,68,158,125,114,240,248,198,173,229,55,117,141,226,31,80,136,215,86,249,30,242,18,234,242,120,45,76,203,162,115,233,68,62,206,231,121,152,231,113,30,161,103,255,236,231,252,154, +227,178,19,79,135,162,241,233,73,199,76,133,22,187,158,103,189,94,70,110,249,216,125,25,171,7,108,199,251,45,91,92,252,174,6,207,105,60,231,240,120,68,243,23,247,5,24,68,243,162,23,225,203,240,241,239, +126,190,49,143,206,152,94,246,117,62,143,105,153,31,240,216,131,114,119,233,28,232,115,192,63,96,175,248,121,149,239,225,129,183,208,97,221,194,7,250,203,85,198,191,175,212,46,29,191,112,21,123,88,197, +30,86,177,135,223,65,246,112,65,207,52,247,182,203,211,4,10,115,253,251,125,215,217,195,175,198,166,223,252,106,84,250,249,231,176,135,159,195,30,254,20,246,112,39,236,225,11,176,135,183,124,215,216,195, +173,163,211,151,63,157,154,190,252,28,246,112,35,236,225,187,176,135,235,97,15,223,134,61,124,23,246,240,125,216,195,173,176,135,63,130,61,28,127,164,179,135,219,199,166,29,91,105,217,159,192,30,126,10, +123,248,30,236,225,59,40,133,222,130,61,92,11,123,248,26,236,225,171,176,135,104,194,118,189,10,123,248,50,236,225,147,176,135,55,31,137,236,225,39,248,30,110,195,247,112,11,236,225,30,216,195,79,96,15, +55,16,236,122,216,195,181,176,135,107,96,15,127,12,123,184,14,246,144,23,240,193,74,216,195,21,176,135,207,192,30,62,7,123,8,160,117,228,176,135,219,96,15,223,131,61,92,3,123,248,28,236,225,171,176,135, +47,193,30,62,9,123,184,2,246,240,57,216,195,23,145,84,60,15,123,184,1,246,240,37,216,195,21,176,135,226,120,143,193,30,46,133,61,124,18,246,240,113,216,67,174,165,179,2,194,21,145,187,209,153,108,69,251, +245,21,53,168,13,164,125,38,147,13,57,215,211,212,126,95,47,133,236,224,24,132,222,87,32,50,89,169,163,37,242,131,247,81,230,236,22,199,123,244,209,161,200,18,22,162,205,184,13,215,202,217,57,218,101, +207,158,153,60,51,210,46,217,195,205,176,135,63,133,61,124,17,246,112,202,62,176,135,55,193,30,62,0,123,248,28,236,225,18,216,195,199,35,88,216,195,71,96,15,31,132,61,124,4,246,240,57,216,195,233,176, +135,173,15,23,246,240,99,216,195,215,97,15,231,238,39,123,120,19,236,225,77,176,135,119,194,30,46,130,61,124,24,246,240,33,216,195,69,176,135,143,195,30,62,2,123,184,24,246,112,58,236,97,179,67,205,30, +190,7,123,120,127,105,246,80,89,83,212,134,45,138,127,43,246,112,34,236,225,108,216,195,133,176,135,203,96,15,151,192,30,206,131,61,196,17,111,215,66,216,195,241,135,146,61,220,84,158,61,84,246,16,22, +69,42,2,228,14,131,61,20,182,212,247,80,13,71,150,61,84,5,16,4,106,206,247,80,246,112,14,236,225,98,216,67,130,93,119,7,236,225,28,216,195,57,176,135,119,193,30,246,63,216,236,225,14,216,195,55,42,102, +15,203,74,150,108,233,64,121,148,35,42,115,10,73,226,184,113,227,114,34,183,184,115,222,235,155,45,162,43,155,152,61,29,246,240,38,216,195,25,176,135,4,187,134,34,252,43,51,40,215,206,132,61,188,13,246, +176,251,193,98,15,177,221,253,96,77,197,236,161,193,138,223,41,58,51,40,165,75,126,84,127,169,170,86,152,67,197,79,88,6,42,101,10,217,132,210,70,147,242,165,124,15,101,15,71,192,30,78,131,61,164,60,251, +226,45,176,135,208,105,111,78,135,61,228,2,209,130,150,7,131,61,124,163,98,246,80,149,157,50,226,192,241,2,212,82,91,169,106,71,33,139,223,19,215,166,135,232,116,210,164,73,57,29,167,193,90,76,175,144, +61,28,1,123,56,21,246,144,96,87,77,132,61,156,8,123,120,43,236,225,144,202,102,15,153,160,42,98,15,13,72,37,157,143,202,186,8,60,139,227,133,233,163,173,27,176,135,26,46,31,97,75,199,181,247,79,171,251, +42,199,30,14,197,247,112,8,236,33,133,187,213,83,224,14,39,241,112,45,236,170,155,42,155,61,124,170,52,123,168,58,71,21,173,90,73,5,162,97,80,161,186,206,199,174,173,17,149,18,165,192,241,12,54,248,67, +39,183,8,58,4,108,170,123,20,150,170,156,213,6,48,199,30,142,25,147,110,27,1,123,56,14,246,112,60,236,33,117,232,229,148,103,159,31,13,123,56,160,178,216,67,28,162,179,236,161,179,177,234,156,240,70,18, +246,8,94,73,69,157,242,96,149,243,97,7,24,93,218,128,194,255,48,75,152,26,176,74,190,128,183,84,239,150,99,15,251,194,30,82,146,93,58,12,246,16,20,239,233,97,176,135,55,86,6,123,200,14,202,77,133,236, +33,23,13,228,20,119,241,11,218,109,203,250,36,5,7,33,161,162,238,57,248,67,199,176,106,60,39,183,88,190,12,58,254,238,36,230,24,15,184,90,87,60,1,15,255,95,133,233,99,122,195,30,246,69,101,64,176,139, +185,236,119,9,183,28,63,71,121,54,255,190,135,239,84,204,30,218,165,109,201,192,241,252,168,138,61,204,165,162,149,69,118,20,163,133,59,79,232,168,35,208,80,219,218,250,10,215,212,114,73,174,122,111,128, +1,135,239,225,176,193,125,211,84,108,195,12,246,161,1,176,135,92,246,251,204,16,216,195,27,242,205,30,178,249,87,78,232,154,25,106,89,3,144,121,40,75,166,69,240,146,41,170,99,213,81,42,251,183,75,75,142, +58,134,35,208,172,225,163,193,134,15,162,193,42,66,245,163,34,55,37,80,10,214,114,236,225,101,176,135,189,44,184,195,30,210,218,203,250,195,30,14,202,39,123,200,169,199,131,128,235,163,170,59,91,71,129, +168,240,85,216,5,101,81,188,160,211,2,197,115,60,219,173,157,220,212,89,42,32,15,126,216,63,219,133,109,85,215,104,123,128,12,162,19,156,143,255,103,92,176,175,192,77,246,176,71,103,216,195,203,96,15, +193,240,22,162,48,88,196,117,206,43,7,228,139,61,252,221,189,233,183,159,194,30,142,47,241,61,116,51,225,178,99,192,142,221,112,183,52,248,8,86,68,71,73,191,95,183,165,37,95,220,109,101,221,62,108,93, +91,212,86,183,37,13,212,94,32,60,162,210,214,239,87,189,103,160,182,176,10,190,98,246,176,53,216,206,21,90,135,193,30,246,132,61,236,155,15,246,144,76,197,174,29,99,211,238,245,229,217,67,215,90,151,160, +48,134,114,73,10,148,54,8,83,9,21,255,236,139,16,224,114,3,18,119,6,132,215,67,220,2,225,178,165,111,139,74,121,241,0,117,212,14,3,183,152,6,106,224,58,243,132,239,225,197,245,97,15,59,194,30,94,9,123, +200,21,206,143,95,7,123,56,240,64,216,67,114,80,166,101,204,84,120,120,207,178,135,158,126,92,99,229,137,194,155,48,139,226,249,18,4,167,13,216,22,214,3,209,151,33,157,230,228,100,43,75,191,8,135,56,123, +187,78,27,160,68,169,75,152,179,190,115,131,194,113,255,141,127,23,167,45,197,30,162,249,186,190,5,236,97,151,83,211,109,87,50,107,107,18,55,112,127,217,195,159,221,144,182,109,129,59,252,136,231,67,216, +195,167,74,179,135,30,245,156,136,28,155,182,180,129,135,132,95,233,126,112,131,182,186,47,194,224,13,92,100,199,125,180,65,186,237,116,141,54,48,151,46,127,94,124,180,251,7,194,231,231,13,92,181,79,41, +246,240,220,26,169,91,3,216,195,54,63,72,83,47,57,61,221,223,29,246,176,255,254,178,135,159,131,224,125,8,123,184,9,246,240,125,216,195,39,74,179,135,110,3,253,133,253,101,124,148,239,251,209,95,212,143, +238,165,125,252,179,59,45,91,200,238,236,218,234,184,247,5,216,226,190,0,95,142,99,220,45,169,47,206,23,230,82,150,181,20,244,231,184,44,149,98,15,207,134,61,172,115,98,186,22,135,129,49,29,106,166,123, +47,135,61,236,191,63,236,33,73,114,243,198,166,82,205,46,154,112,51,7,149,101,15,61,207,26,132,143,1,133,237,159,99,78,82,205,155,29,228,254,109,73,79,73,206,190,193,49,57,91,59,123,219,205,229,14,13, +220,201,45,92,44,125,33,246,138,176,242,12,147,72,249,225,82,190,135,63,132,61,4,197,187,28,102,233,134,214,76,94,93,233,210,3,246,135,61,164,34,96,146,220,188,177,169,212,109,60,91,86,151,176,135,110, +240,189,98,194,143,174,167,142,63,3,53,64,39,156,112,197,115,198,117,233,50,216,112,149,54,104,91,218,238,239,100,230,76,158,165,209,2,192,142,237,169,47,198,97,97,247,118,194,42,197,30,42,18,71,174,216, +181,30,236,97,179,83,211,220,78,53,210,212,193,221,149,45,127,5,13,179,19,197,208,86,18,123,202,42,84,26,156,83,92,46,5,172,186,148,25,242,61,198,146,246,97,191,180,252,241,187,95,194,30,238,130,61,252, +12,246,112,55,236,225,122,216,67,236,120,205,74,24,172,153,10,31,55,245,46,33,6,233,227,186,233,172,107,160,89,135,173,240,60,20,226,242,251,5,57,108,69,103,239,96,139,179,174,150,110,100,2,192,182,197, +157,200,108,93,131,46,102,15,209,99,54,199,104,170,0,59,192,238,245,241,61,108,131,239,225,128,253,101,15,63,135,61,252,0,246,240,45,216,67,242,198,166,82,103,147,93,244,204,234,126,214,64,61,205,76,153, +50,37,23,164,7,251,240,9,119,3,225,129,63,136,210,56,243,250,209,151,96,23,119,54,150,96,9,159,67,3,52,224,108,208,209,213,93,5,204,128,24,176,119,0,20,179,135,168,226,91,2,107,21,96,67,116,213,133,176, +135,45,15,132,61,164,214,99,249,195,138,128,73,114,243,198,47,221,87,222,247,208,205,66,92,48,18,150,217,113,245,76,220,228,16,6,143,118,107,83,59,190,32,199,184,72,173,173,28,206,180,89,87,75,255,236, +75,240,103,122,104,144,93,18,23,40,246,61,68,130,220,28,165,109,203,28,153,86,61,117,167,91,143,42,56,16,246,144,194,150,181,158,15,95,134,61,52,81,254,28,236,225,67,176,135,131,74,124,15,189,158,198, +45,166,187,36,91,213,29,83,192,90,113,147,146,193,134,165,152,235,175,223,235,216,118,99,225,44,239,178,22,174,182,174,221,217,3,136,189,64,75,177,96,15,13,186,20,123,72,176,45,8,186,13,166,173,61,152, +173,135,93,126,160,236,225,59,176,135,47,195,30,62,15,123,184,10,246,144,36,185,121,227,44,123,232,165,97,113,127,78,22,195,203,94,32,102,192,102,49,130,59,52,96,39,46,103,115,151,49,151,162,184,199,39, +11,90,250,242,142,58,234,168,98,16,196,221,86,231,206,157,83,51,217,67,216,7,131,181,149,219,128,229,93,93,7,246,144,179,243,129,249,30,62,10,123,8,149,102,173,199,242,135,21,129,213,243,203,179,135,158, +158,178,24,94,120,29,198,229,38,246,130,112,132,247,224,96,192,238,147,237,214,46,81,182,178,107,177,79,128,150,182,182,235,112,208,105,142,95,51,31,29,101,15,33,93,100,33,12,182,57,138,249,2,90,250,154, +38,231,166,75,177,34,67,219,249,49,13,178,135,127,183,133,153,185,23,143,34,55,117,95,39,148,18,181,240,137,239,145,47,94,193,86,239,99,47,194,69,178,251,15,150,44,173,226,89,216,178,214,179,253,57,216, +195,103,97,15,103,149,103,15,101,138,35,101,19,198,142,241,49,152,37,103,104,39,51,3,246,80,224,50,22,147,151,187,53,31,91,218,199,86,247,70,152,114,236,225,5,176,135,167,22,177,135,57,126,9,246,144,22, +238,217,33,31,190,135,178,135,148,44,119,189,8,123,200,228,181,243,121,216,195,71,97,15,169,8,148,101,15,77,184,217,213,157,168,156,193,61,66,102,205,29,109,225,8,216,217,220,153,58,28,45,93,162,100,136, +221,93,185,62,27,184,107,188,251,102,3,46,197,30,226,161,38,164,213,24,150,169,33,208,101,179,211,97,15,107,195,30,118,200,23,123,56,3,246,112,29,236,225,83,176,135,22,182,168,245,88,254,88,62,181,98, +246,80,192,42,80,60,151,18,187,117,220,132,102,235,250,4,89,234,46,204,177,236,110,45,246,208,110,98,92,250,194,228,177,152,61,36,205,211,64,246,80,180,167,168,101,27,159,14,123,88,19,246,176,73,190,217, +67,234,179,150,44,173,226,89,216,90,15,160,245,250,157,176,135,99,203,179,135,206,162,102,37,92,62,24,22,197,137,58,39,45,247,209,142,225,32,75,101,131,53,83,246,251,237,222,246,2,97,143,175,101,15,51, +193,218,149,91,0,91,118,60,175,178,216,67,234,179,155,31,134,61,92,0,123,120,55,236,33,181,30,203,31,139,70,149,102,15,109,93,31,175,129,242,116,99,208,58,91,70,22,210,101,41,156,105,101,14,5,45,253,152, +37,215,108,221,82,236,225,233,176,135,103,48,73,21,181,172,193,54,3,137,111,195,199,202,99,15,7,193,30,46,131,61,132,72,203,22,182,214,205,131,61,28,7,123,72,146,220,188,177,236,161,59,33,83,50,110,246, +229,12,101,15,227,0,111,23,13,246,48,144,89,103,224,156,191,240,233,53,115,47,201,97,145,243,42,133,23,190,144,96,27,66,164,149,13,182,21,32,151,28,19,223,175,173,88,37,177,135,147,97,15,169,207,90,178, +180,176,181,225,46,216,195,59,96,15,41,127,44,24,2,123,56,184,52,123,104,42,198,0,13,248,235,216,195,147,107,212,72,167,85,63,33,117,191,224,232,116,101,211,179,115,47,171,19,79,147,58,181,82,253,152, +160,216,51,139,225,217,178,77,105,233,150,76,84,237,47,60,24,190,135,84,222,45,70,91,159,221,120,55,236,225,124,216,67,10,91,214,122,86,142,135,61,28,10,123,216,7,246,240,250,111,102,15,91,52,105,152, +250,92,88,45,13,197,8,110,8,112,214,13,252,185,91,131,51,82,253,243,207,73,245,78,175,81,212,133,75,38,168,6,204,200,141,106,194,30,18,108,65,109,217,195,70,7,137,61,164,242,254,216,100,216,195,7,96,15, +103,193,30,22,21,182,86,220,4,123,56,6,246,144,138,128,73,242,153,61,97,15,187,213,74,87,147,93,236,210,169,112,34,211,240,209,199,150,247,239,87,55,57,163,56,216,193,4,220,250,140,163,83,93,32,203,198, +57,200,178,36,216,194,49,11,123,120,10,236,97,93,217,195,70,135,128,61,164,150,99,125,214,146,229,10,92,240,12,214,90,143,229,143,165,24,61,46,25,2,156,69,222,216,84,106,255,86,176,135,92,246,213,250, +2,118,72,92,9,85,175,136,61,172,143,213,95,159,122,71,37,131,29,88,183,90,234,116,246,209,169,62,93,55,71,149,198,4,117,102,225,108,220,150,160,59,53,63,212,236,33,197,104,235,179,107,167,192,30,142,129, +61,148,59,204,93,187,8,123,56,232,140,92,69,224,110,242,198,179,176,255,27,211,249,148,212,175,85,117,130,135,61,172,91,194,30,22,112,233,72,127,130,29,196,211,153,128,235,209,117,35,224,150,4,222,142, +167,83,173,83,83,23,216,67,39,168,67,207,30,82,140,158,51,24,246,144,146,165,85,60,11,91,203,0,45,31,236,15,123,72,215,54,73,62,255,218,211,211,236,171,96,15,185,217,108,202,165,176,135,77,74,124,15,27, +112,77,197,245,245,143,75,99,160,74,187,156,115,108,186,168,230,49,169,237,15,79,72,157,57,242,93,90,167,102,142,61,108,215,42,199,30,254,157,179,49,179,247,118,0,174,221,69,246,157,119,178,37,238,193, +35,184,37,87,33,222,243,253,3,134,60,132,44,138,116,80,195,188,169,219,244,9,91,191,61,172,177,91,88,110,118,146,36,255,27,239,134,181,100,185,148,162,245,234,17,176,135,212,122,44,127,220,79,69,224,158, +94,116,111,242,198,115,9,122,97,207,227,211,224,14,37,190,135,214,140,58,53,169,147,230,183,98,226,170,127,76,234,130,99,244,85,13,206,74,215,117,110,149,186,117,234,224,233,231,31,9,246,167,172,237,91, +197,222,15,95,223,67,10,91,214,122,86,13,132,61,236,7,123,72,146,124,9,87,184,61,209,27,246,240,178,210,236,161,71,190,71,47,173,145,110,187,248,156,212,157,195,254,37,172,193,225,123,72,192,31,30,153, +236,33,21,1,147,228,179,251,86,204,30,246,234,218,238,223,218,181,105,253,127,83,78,249,45,27,150,237,222,184,66,150,116,135,247,114,124,103,217,67,206,187,91,168,110,124,138,154,231,115,175,151,161,187, +123,77,197,119,154,61,220,206,30,124,171,135,247,42,223,195,42,223,195,111,15,126,229,157,91,98,249,146,54,173,98,15,121,9,39,243,212,228,241,170,152,31,230,202,30,37,143,224,181,96,165,112,230,41,60, +130,154,2,217,199,152,103,203,39,161,150,247,22,206,231,47,87,25,63,171,42,224,202,120,171,85,236,97,21,123,88,197,30,126,135,216,195,217,87,165,133,247,244,74,11,239,134,61,188,21,246,112,12,236,97,223, +239,34,123,248,213,168,244,203,47,71,164,159,127,118,99,250,171,47,96,15,127,2,161,182,3,246,112,7,236,225,39,176,135,155,97,15,87,192,30,78,250,46,176,135,219,199,35,127,26,7,203,52,54,109,255,0,246, +112,23,236,225,39,176,135,235,97,15,223,132,61,92,3,123,248,58,236,225,90,216,195,117,176,135,239,195,30,62,6,123,56,6,246,176,251,145,230,123,184,99,18,8,222,196,244,201,150,241,233,19,2,222,241,1,45, +187,19,246,112,59,236,225,91,176,135,111,160,20,122,13,246,240,21,216,195,23,96,15,87,195,30,190,15,123,248,60,236,225,179,176,135,143,194,30,142,131,61,236,122,36,248,30,254,197,157,72,22,39,165,157, +91,39,164,157,31,193,30,110,66,213,247,62,236,225,54,216,195,143,96,15,215,18,236,26,216,195,87,96,15,95,132,61,124,30,246,240,85,216,67,62,247,193,19,176,135,143,193,30,62,14,123,248,20,236,225,131,176, +135,87,31,206,190,135,95,204,73,127,253,223,22,164,221,31,225,123,184,9,246,112,29,236,225,75,176,135,43,96,15,95,132,61,124,30,246,112,25,236,225,227,176,135,63,130,61,92,137,164,226,71,176,135,107,97, +15,87,193,30,62,6,123,184,20,28,239,17,216,195,7,97,15,151,192,30,62,12,123,56,240,112,100,15,63,129,61,220,8,123,184,7,246,240,89,216,195,73,176,135,125,247,226,123,216,31,223,195,49,176,135,247,193, +30,254,8,246,240,1,216,195,71,34,88,216,195,69,148,104,239,133,61,92,4,123,248,36,236,225,228,195,137,61,252,8,57,34,174,149,247,206,134,61,28,83,218,247,80,8,43,110,29,87,34,161,222,75,81,140,76,67,72, +161,110,150,61,28,13,123,56,27,246,240,46,216,195,5,176,135,247,81,162,189,27,246,240,17,216,195,69,176,135,247,194,30,78,58,212,236,225,167,248,30,190,13,123,184,160,60,123,24,74,0,113,188,176,0,220, +39,223,195,155,96,15,167,83,124,191,11,246,240,33,216,195,251,97,15,103,195,30,226,136,183,235,78,216,195,49,135,138,61,252,45,190,135,239,195,30,246,41,237,123,24,126,74,234,59,130,61,180,78,44,144,101, +192,66,34,21,177,135,94,19,87,236,123,200,141,254,171,110,133,61,92,8,123,72,176,235,102,194,30,78,135,61,156,14,123,56,27,246,176,207,193,102,15,183,195,30,190,6,123,56,173,188,239,161,60,131,106,30, +245,91,234,162,21,184,40,57,54,120,133,224,10,91,84,3,40,117,178,23,24,164,93,220,238,237,205,228,118,249,98,246,112,20,236,225,100,216,67,130,93,51,21,246,112,18,229,218,201,176,135,183,192,30,94,121, +176,216,195,157,176,135,47,151,102,15,149,53,40,62,51,88,181,27,74,126,21,172,168,180,85,177,103,240,6,26,30,136,138,92,226,241,223,170,208,13,28,79,49,186,129,231,52,157,178,135,67,97,15,49,134,123,101, +18,236,225,4,216,67,74,59,111,78,132,61,228,2,209,202,103,15,25,179,155,94,133,61,196,190,51,235,123,104,176,234,55,244,85,81,243,172,244,72,177,74,112,75,234,56,108,221,172,233,163,202,120,131,245,37, +169,241,80,232,102,176,254,92,175,98,151,52,53,232,177,195,241,61,28,2,123,56,30,246,144,96,87,141,134,61,28,13,123,200,157,184,183,15,172,108,246,144,9,42,198,172,19,145,191,168,114,37,3,81,99,165,250, +213,143,74,10,179,56,94,184,227,249,125,182,184,34,151,32,76,29,235,42,246,156,181,185,39,58,23,172,87,177,91,134,81,252,34,125,170,172,98,193,0,216,195,209,176,135,227,224,14,199,242,12,135,61,188,17, +246,176,115,101,249,30,254,22,223,195,39,10,217,67,197,104,6,27,90,104,165,252,97,18,23,122,103,181,87,42,237,148,240,43,1,86,98,156,53,139,11,71,204,208,100,170,237,82,39,162,74,215,9,76,9,68,177,239, +161,236,225,48,216,195,145,176,135,35,97,15,111,128,61,4,212,122,126,8,236,97,223,202,96,15,217,84,232,16,93,150,61,52,96,187,165,45,152,197,241,148,15,218,181,21,155,169,156,85,117,167,228,48,132,227, +89,33,106,192,150,182,178,143,63,211,9,205,46,94,142,61,236,5,123,56,144,226,251,0,216,67,64,173,167,7,192,30,14,202,55,123,184,171,112,7,229,166,34,124,15,29,179,254,162,254,98,170,222,195,104,38,192, +45,229,191,118,107,199,178,218,104,233,20,21,243,10,211,164,196,13,56,152,195,44,93,26,174,31,190,68,85,185,202,36,74,177,135,215,193,30,194,41,25,236,226,222,20,224,175,135,61,28,144,79,246,144,19,206, +238,29,147,211,142,55,97,15,251,148,248,30,218,10,182,170,130,208,224,13,179,114,126,63,167,0,92,77,116,116,107,213,119,142,95,117,211,170,112,131,44,141,128,227,5,216,213,29,223,142,115,215,235,184,191, +214,153,59,199,30,82,92,127,232,122,30,20,6,15,244,130,61,236,3,123,56,32,31,236,33,39,30,79,61,30,4,54,176,249,207,178,135,118,61,21,175,65,159,57,126,3,199,11,191,52,131,118,2,83,41,107,183,214,214, +32,156,122,12,42,2,116,150,14,6,209,121,193,64,179,203,22,150,6,57,221,151,164,105,142,61,236,2,123,216,157,130,251,181,176,135,180,246,178,107,97,15,123,31,40,123,248,249,45,105,15,173,235,17,207,83, +143,7,129,240,61,180,69,100,4,109,61,199,106,76,86,225,155,20,158,73,74,250,237,1,118,119,209,61,151,38,151,46,53,151,14,137,240,42,246,207,190,0,151,41,31,81,1,21,123,118,125,55,46,46,79,10,218,196,241, +114,236,97,39,216,67,160,142,187,187,195,30,94,13,123,200,117,206,43,175,61,16,246,240,191,79,72,191,254,229,188,244,127,252,230,190,244,63,127,3,123,200,174,42,216,195,144,5,59,243,218,114,182,160,93, +55,120,164,44,105,42,170,19,78,121,170,100,165,95,124,81,129,195,27,112,4,234,75,112,46,176,187,219,11,36,87,85,222,250,81,68,222,22,206,178,135,3,154,131,237,208,181,231,131,226,221,125,5,236,97,15,216, +195,62,251,235,123,72,14,202,180,140,153,138,93,60,187,223,40,205,30,186,124,184,147,10,42,205,201,41,56,35,91,83,6,201,64,179,196,138,56,142,130,112,91,207,22,13,94,88,116,192,150,140,32,13,48,92,62, +194,206,147,251,119,138,161,75,239,162,86,231,213,181,46,236,97,219,83,210,172,174,167,227,151,6,123,120,37,236,97,191,253,97,15,201,46,154,112,51,7,101,90,198,76,133,135,247,178,236,97,152,196,133,169, +140,107,110,188,128,8,222,192,237,210,242,73,142,111,55,34,78,86,6,235,86,211,214,14,253,180,193,9,91,186,86,135,135,139,108,132,59,45,121,7,9,83,91,88,179,56,103,238,86,104,190,122,55,134,61,108,143, +239,97,87,102,109,77,226,250,236,15,123,120,103,247,244,197,46,216,195,247,105,101,110,74,218,190,1,246,240,177,210,236,161,183,174,184,204,184,217,112,50,138,27,29,252,179,91,201,112,203,243,5,40,254, +118,172,219,237,13,222,128,93,139,21,136,171,143,246,145,127,8,251,78,161,75,31,123,131,90,106,151,178,240,139,16,9,80,48,110,192,141,207,198,247,176,30,236,97,243,83,210,212,14,248,30,98,18,55,187,247, +254,176,135,183,95,153,190,220,33,130,71,43,191,3,123,248,22,236,225,210,18,246,208,35,158,242,124,79,62,182,128,27,10,113,60,63,6,138,231,47,239,206,202,199,239,241,151,182,155,58,33,25,120,220,6,17, +107,180,47,197,151,20,86,130,30,58,130,101,244,165,26,184,65,151,98,15,207,130,61,60,31,223,195,6,248,30,182,193,247,176,11,236,97,239,253,97,15,73,146,155,55,54,149,106,118,209,132,155,57,40,151,3,183, +147,30,231,188,78,198,160,13,192,150,10,219,63,169,51,187,165,135,4,105,240,184,213,193,77,134,251,109,63,26,148,227,59,186,185,147,158,47,192,97,224,11,136,94,17,31,237,49,34,63,242,195,165,216,195,51, +97,15,49,151,186,2,102,105,72,115,216,195,2,187,244,254,176,135,84,4,76,146,155,55,54,149,186,141,103,203,51,133,236,161,251,219,96,15,181,22,114,151,229,53,52,142,59,15,5,238,162,156,116,156,128,92,86, +156,144,156,145,3,244,112,6,182,171,26,156,75,150,179,120,120,157,58,222,157,240,98,221,118,24,248,2,156,27,28,42,229,124,15,21,137,159,115,66,186,4,15,211,126,141,96,15,209,116,78,237,191,63,236,33,229, +143,223,125,6,123,248,49,236,33,155,142,95,179,14,127,249,122,9,123,152,59,185,48,145,216,98,17,160,19,143,235,165,1,57,11,187,105,48,208,152,141,13,216,151,227,139,176,219,187,243,114,195,18,174,150, +129,224,217,242,6,110,139,251,24,188,251,113,215,111,187,115,192,90,57,223,67,132,168,45,240,113,41,192,34,161,123,29,216,195,38,176,135,253,247,151,61,220,6,123,248,14,236,225,107,176,135,228,141,77, +165,154,93,204,250,30,122,162,49,72,151,20,91,51,204,148,157,148,188,200,32,203,28,186,81,241,37,232,158,103,247,183,155,102,77,30,179,220,161,47,34,248,37,63,26,176,25,144,82,190,135,245,241,61,68,21, +223,18,15,166,2,48,158,171,104,229,137,13,14,132,61,164,214,99,249,195,138,128,73,114,243,198,47,205,47,205,30,218,189,237,178,62,177,21,12,190,63,46,36,137,171,102,220,58,154,210,177,71,56,230,93,210, +220,180,196,46,45,203,29,186,124,197,37,10,182,184,47,71,170,180,20,123,248,67,216,67,148,182,42,110,219,226,97,218,29,239,195,81,45,15,132,61,164,176,101,173,231,195,103,97,15,115,137,114,216,195,5,229, +217,67,19,0,238,144,98,179,31,102,234,113,190,13,55,60,91,219,93,84,216,132,57,171,155,25,177,203,6,54,155,61,120,24,168,65,219,173,93,175,115,76,4,22,70,197,236,97,205,194,96,91,200,16,3,78,247,56,239, +132,52,236,210,3,101,15,95,135,61,92,5,123,200,197,154,31,60,9,123,72,146,220,188,113,150,61,116,143,235,102,63,118,77,113,75,90,156,107,253,187,199,60,31,187,188,99,221,19,147,203,140,203,142,244,183, +91,82,187,119,214,213,210,73,205,3,3,138,188,98,159,38,79,76,57,246,176,30,236,33,94,76,6,219,188,136,110,233,113,110,62,216,195,7,97,15,159,131,61,164,214,99,249,195,138,192,234,185,229,217,67,187,118, +100,46,130,55,140,143,118,101,191,230,184,54,96,151,169,48,120,116,47,238,105,43,110,137,200,130,150,190,40,100,75,185,128,109,93,159,98,246,240,52,148,245,40,229,13,182,57,208,71,1,174,61,215,52,200, +7,123,72,201,210,42,158,133,45,107,61,219,159,134,61,124,26,246,112,70,121,246,208,52,171,147,152,16,181,187,176,178,198,112,97,123,111,192,110,27,157,169,3,180,180,149,179,160,165,179,180,179,185,16, +87,88,140,217,186,93,186,116,73,141,106,193,30,158,12,123,8,27,97,176,205,104,233,142,224,1,61,219,229,195,247,144,250,172,37,203,93,43,97,15,153,188,118,174,128,61,124,0,246,144,138,192,80,146,228,89, +223,67,217,67,108,199,114,57,168,203,46,187,44,23,112,100,46,108,97,39,44,151,43,97,105,215,108,103,106,119,102,89,71,75,187,182,99,214,224,221,220,4,142,231,193,33,199,49,1,135,212,175,9,123,72,203,54, +134,112,105,120,10,236,225,169,176,135,120,53,93,210,62,95,236,225,84,216,195,87,96,15,151,194,30,90,216,162,214,99,249,99,249,132,210,236,161,193,250,216,237,60,201,196,146,228,216,118,253,53,88,39,173, +8,216,117,213,237,103,152,163,187,181,52,247,101,55,55,75,89,33,123,120,6,236,225,233,133,221,216,150,109,92,19,246,240,228,99,83,151,134,117,77,1,253,83,126,124,15,41,70,91,159,181,100,105,21,207,194, +214,250,59,97,15,103,194,30,14,47,97,15,77,12,72,148,57,139,138,233,216,181,29,135,142,93,31,131,141,128,93,187,237,29,238,216,12,208,93,148,93,220,141,74,248,30,58,35,151,242,61,60,13,223,195,76,176, +205,78,99,210,58,21,246,240,135,133,236,33,64,88,30,125,15,41,70,91,159,221,188,0,246,112,30,236,225,92,216,67,106,61,150,63,22,13,131,61,156,82,232,123,104,133,80,39,188,184,251,202,113,103,194,207,25, +59,14,246,142,97,47,46,144,55,116,140,250,98,204,69,27,168,173,90,161,239,97,77,216,67,2,140,150,53,216,102,44,75,109,248,216,185,85,101,249,30,114,105,166,112,214,251,119,194,30,102,10,91,235,102,195, +30,142,42,205,30,122,99,97,89,246,208,141,191,25,11,209,60,55,17,110,17,203,177,135,180,106,41,246,80,148,143,96,27,158,2,123,88,212,141,35,216,86,140,221,78,205,42,155,61,28,15,123,72,125,214,146,165, +133,173,13,115,96,15,103,194,30,82,254,88,208,31,246,112,64,9,123,232,201,42,216,67,55,253,89,246,208,64,61,215,218,154,103,158,90,35,53,172,117,58,248,109,179,220,112,112,157,245,105,82,27,246,208,9, +138,110,236,4,213,232,84,216,67,90,180,105,77,216,67,130,109,95,247,96,177,135,20,163,173,207,110,156,11,123,120,27,236,33,133,45,107,61,43,71,194,30,14,128,61,188,22,246,240,218,118,105,196,208,129,185, +36,186,179,171,129,123,37,148,99,178,213,69,231,179,13,60,58,93,114,246,247,82,143,115,65,119,48,132,187,170,217,121,185,137,78,219,78,55,21,23,177,206,22,118,225,146,9,170,1,75,81,163,31,192,30,18,108, +65,173,131,233,123,40,123,56,30,246,240,110,216,67,168,82,171,120,22,182,86,12,135,61,28,6,123,72,69,192,36,249,204,43,97,15,47,134,61,36,187,216,165,99,9,123,216,174,117,203,212,167,97,245,52,84,208, +146,96,7,67,164,21,156,127,106,170,67,144,181,79,198,9,143,217,55,183,169,96,51,81,186,27,195,30,86,63,26,208,242,80,249,30,82,203,177,62,107,201,114,5,5,45,131,181,214,99,249,99,41,110,120,75,250,1,103, +145,55,190,165,115,141,52,160,25,236,97,61,216,195,243,116,134,174,1,90,119,98,46,216,33,4,123,3,79,99,176,246,139,236,182,96,120,205,225,12,179,45,27,179,113,91,90,220,49,219,180,180,239,225,95,50,92, +54,176,35,147,80,235,198,211,138,167,118,145,200,188,156,249,212,55,234,165,85,164,115,6,173,197,110,103,154,55,117,179,91,250,11,102,212,237,204,168,59,73,166,253,222,98,180,245,217,181,99,97,15,135, +193,30,82,216,178,252,97,176,139,123,227,123,72,146,220,188,241,172,75,107,166,177,5,176,135,88,118,246,111,118,44,173,84,61,13,187,240,168,52,140,160,251,94,80,45,53,224,92,219,80,235,206,211,142,231, +41,156,160,154,211,210,45,79,131,61,100,12,119,58,27,246,144,158,161,239,33,147,223,207,14,173,239,161,236,97,127,216,67,74,150,86,241,44,108,45,235,7,123,216,11,246,144,174,109,146,124,254,149,176,135, +151,194,30,118,132,61,236,12,123,216,232,20,188,74,171,167,25,248,27,14,169,251,189,212,10,67,71,187,112,91,93,44,105,229,14,252,185,51,39,160,75,107,193,30,54,43,197,30,238,58,124,216,67,234,179,150, +44,151,14,134,61,28,8,123,72,173,199,242,199,253,120,29,222,115,21,221,155,188,241,92,110,53,91,120,37,236,97,187,51,83,247,214,245,211,138,142,213,210,204,166,199,176,53,60,41,117,227,185,150,174,126, +53,183,39,93,83,255,236,212,171,67,203,212,141,177,127,228,176,135,20,182,172,245,172,162,252,177,242,106,216,67,146,228,75,186,193,30,246,128,61,236,114,70,234,220,169,99,90,223,237,232,244,84,251,239, +165,161,117,25,211,224,240,35,46,111,159,6,145,217,184,156,189,248,145,205,30,82,254,176,34,96,146,124,246,117,176,135,253,10,125,15,151,15,104,157,22,244,108,106,165,255,207,140,203,63,133,239,33,155, +147,143,190,179,236,33,101,147,95,80,73,248,25,59,179,29,236,197,55,179,97,217,238,93,58,223,89,246,144,189,244,103,200,147,190,36,223,253,83,74,177,219,96,15,63,174,98,15,11,29,245,116,215,19,244,202, +217,1,238,15,129,243,141,235,240,190,254,208,34,4,79,154,76,250,76,234,172,202,247,144,151,80,229,123,88,212,27,170,216,195,125,29,74,223,246,251,242,54,134,191,237,127,124,168,190,255,160,4,92,197,30, +86,177,135,85,236,225,119,132,61,156,112,85,154,51,19,246,240,46,216,195,249,176,135,211,138,216,195,62,223,53,246,240,203,49,233,215,191,128,61,252,28,246,112,39,236,225,231,176,135,123,32,212,182,192, +30,110,129,61,252,24,246,240,125,216,67,234,86,115,38,30,233,236,33,215,52,239,64,54,177,109,19,236,225,70,216,195,247,96,15,119,192,30,110,133,61,124,19,246,112,13,236,225,143,97,15,95,129,61,124,13, +246,240,117,216,195,119,96,15,151,194,30,142,58,210,216,195,79,166,165,79,62,134,61,220,2,123,248,33,236,33,1,239,120,151,150,221,14,123,184,5,246,240,13,216,195,87,81,10,189,2,123,248,2,236,225,115,176, +135,207,194,30,162,9,219,181,10,246,112,5,236,225,98,216,195,177,176,135,23,31,238,236,225,175,23,164,95,125,9,123,72,192,59,55,195,30,126,0,123,72,235,238,120,7,246,144,96,191,160,197,183,190,86,24,236, +150,23,97,15,159,131,61,92,9,123,248,50,236,33,159,251,96,57,236,225,82,216,195,71,97,15,31,131,61,92,8,123,216,253,112,101,15,119,77,79,95,254,4,246,144,160,119,111,130,61,124,31,246,240,13,216,195,213, +176,135,79,193,30,174,134,61,124,22,246,240,81,216,195,229,176,135,79,192,30,62,141,164,226,73,216,67,186,248,214,21,176,135,75,97,15,31,6,199,123,16,246,112,17,236,225,98,216,195,251,97,15,185,175,235, +240,242,61,196,86,108,215,54,148,243,239,194,30,238,132,61,92,9,123,56,113,31,216,195,209,176,135,119,195,30,62,9,123,184,16,246,240,161,8,22,246,240,94,74,180,119,193,30,222,11,123,184,28,246,240,230, +195,133,61,164,101,119,125,0,123,248,50,236,225,172,242,236,161,101,23,181,33,234,187,132,56,42,100,15,199,194,30,142,130,61,156,9,123,56,15,246,240,30,216,67,130,125,251,78,216,195,135,96,15,239,131, +61,156,15,123,56,241,80,179,135,4,187,109,29,236,225,189,21,179,135,106,50,213,88,43,133,80,22,161,86,211,242,170,245,97,233,51,181,208,1,96,250,82,6,246,239,147,238,30,11,123,56,149,226,251,29,176,135, +152,62,110,185,15,246,240,86,216,195,233,176,135,115,96,15,71,30,42,246,240,55,176,135,27,202,179,135,89,243,40,229,15,234,171,131,61,84,163,169,86,115,159,216,195,105,176,135,247,194,30,18,236,186,105, +176,135,160,120,111,77,129,61,156,1,123,120,253,193,102,15,63,134,61,124,229,235,217,67,11,225,170,244,84,212,170,136,85,137,23,65,251,66,44,142,171,241,18,193,43,203,30,22,251,30,78,195,247,112,56,236, +225,68,216,67,130,93,51,9,246,112,2,229,218,9,176,135,55,195,30,94,113,176,216,67,76,30,63,120,177,98,246,80,169,131,26,14,117,27,202,146,148,5,171,201,82,155,21,174,120,97,147,160,64,92,193,139,42,91, +187,187,210,70,133,232,229,124,15,7,195,30,98,12,247,202,120,216,195,177,176,135,208,105,111,142,133,61,28,125,48,216,67,198,236,166,151,75,216,67,5,44,138,87,148,27,218,162,161,189,82,127,229,163,226, +206,160,109,101,133,223,10,211,20,183,168,202,83,163,169,6,36,46,212,183,229,29,199,74,37,84,18,136,228,21,179,135,131,96,15,199,192,30,142,162,68,59,28,246,112,56,236,33,197,188,219,251,87,38,123,248, +249,236,220,4,21,236,161,202,218,8,214,192,21,143,102,113,60,101,72,161,123,86,244,109,247,14,177,184,186,75,181,31,6,171,24,53,16,92,181,34,6,234,221,212,202,161,138,217,195,33,176,135,125,97,15,71,192, +30,142,134,59,28,201,195,165,161,171,134,84,22,123,248,171,123,210,223,255,6,246,240,177,18,223,67,53,88,193,30,42,47,84,131,21,28,83,24,79,133,187,78,224,120,6,44,2,160,154,71,29,165,193,42,95,12,171, +4,199,115,232,190,20,163,149,98,15,135,192,30,222,8,123,56,12,246,144,58,244,242,190,176,135,20,239,102,244,206,55,123,232,58,203,166,66,135,232,44,123,104,235,58,14,237,158,42,236,20,133,134,57,69,88, +139,41,244,182,155,59,142,21,163,25,176,99,88,181,157,19,153,63,67,81,170,147,92,72,22,237,214,234,68,184,150,181,60,123,216,19,246,144,146,236,210,190,176,135,215,195,30,246,129,61,236,159,79,246,144, +131,192,238,29,133,59,40,55,21,89,246,208,9,202,96,12,206,150,53,224,80,197,42,3,246,115,161,112,119,28,43,55,44,203,31,134,89,92,8,82,35,240,112,184,85,35,82,138,61,68,67,114,23,87,191,26,236,226,94, +20,224,41,203,62,215,59,95,236,225,182,41,105,23,39,156,221,28,233,118,224,30,157,101,15,253,133,156,141,157,152,108,213,104,209,8,56,232,52,229,193,126,143,179,182,36,140,221,94,254,80,117,158,227,215, +174,28,118,158,217,160,125,17,14,25,119,102,10,98,228,149,108,245,97,131,96,15,187,224,123,136,194,224,33,12,226,30,160,6,253,204,181,176,135,253,15,148,61,228,60,235,17,207,83,143,7,129,13,108,254,203, +178,135,106,37,13,198,137,202,49,27,126,43,89,20,207,175,41,15,118,242,18,214,16,4,113,24,4,142,151,13,56,192,233,172,236,216,185,161,44,123,56,186,51,236,225,229,167,230,130,93,212,29,246,176,7,236,225, +181,7,194,30,254,229,196,244,211,221,176,135,180,176,71,60,79,61,30,4,178,190,135,202,129,93,114,84,195,6,32,29,206,120,118,101,131,150,92,177,245,13,90,209,168,75,147,196,139,173,235,114,20,130,242,128, +46,253,187,79,24,201,133,241,163,255,111,41,246,176,99,179,116,75,7,216,195,203,97,15,81,24,44,186,2,246,176,251,129,176,135,127,5,123,248,115,216,195,175,96,15,255,18,246,112,107,9,123,24,19,75,168,97, +165,78,156,152,66,6,172,42,214,110,28,16,71,16,167,126,222,153,90,188,199,141,134,45,23,168,128,1,250,119,187,184,154,75,3,13,5,174,75,151,95,11,55,129,240,61,28,208,244,228,52,147,174,61,255,50,196,51, +220,104,252,204,229,176,135,189,247,135,61,36,225,102,14,202,180,140,153,138,93,60,187,95,43,207,30,42,12,117,109,13,69,172,173,237,56,21,189,81,209,110,128,6,29,129,59,198,157,184,156,161,13,208,117, +59,54,45,190,0,103,108,131,244,49,72,199,121,246,81,190,168,162,79,145,91,142,61,172,115,114,26,221,6,246,176,11,236,33,40,222,227,92,207,62,185,207,254,176,135,100,23,77,184,153,131,50,45,99,166,194, +195,123,176,135,158,122,220,19,251,11,42,1,54,112,29,240,226,10,11,65,44,121,68,199,172,45,47,136,25,65,251,50,220,93,217,178,182,164,227,216,181,88,196,214,117,217,205,136,155,151,48,127,116,71,230,223, +221,136,216,165,213,105,58,129,137,201,183,194,6,176,55,34,183,9,109,96,15,59,49,107,107,18,119,253,254,176,135,183,195,30,110,131,61,124,135,86,246,121,11,246,112,89,33,123,232,54,47,142,120,6,237,250, +43,37,238,62,217,93,84,252,217,229,199,9,42,94,130,45,107,176,78,106,6,26,206,90,66,94,26,213,132,231,154,31,133,46,125,220,130,186,132,249,114,212,103,218,165,21,139,27,120,142,61,252,33,236,33,62,75, +131,155,158,146,110,41,128,61,132,39,158,125,221,254,176,135,115,97,15,63,6,193,91,79,43,19,236,182,55,96,15,151,20,178,135,46,17,193,30,250,209,217,214,95,44,248,66,127,81,55,32,254,226,97,30,151,245, +14,119,108,58,190,93,187,237,254,26,76,185,84,249,114,124,105,206,11,190,52,1,204,120,129,142,223,48,136,83,102,44,101,234,56,110,40,123,8,138,215,235,34,216,195,86,176,135,237,97,15,123,237,15,123,72, +146,220,188,177,169,84,179,139,38,220,204,65,133,239,97,176,135,190,121,91,216,128,108,41,183,139,209,29,237,158,118,83,15,19,6,233,246,209,217,215,23,228,86,211,181,218,201,204,113,110,240,118,127,151, +56,231,3,123,69,204,15,126,244,5,216,165,237,206,106,170,99,12,55,60,3,246,16,115,169,43,80,246,13,105,2,123,168,121,235,245,251,203,30,146,36,55,111,108,42,117,27,207,150,167,75,124,15,227,240,110,176, +49,169,56,230,226,168,231,164,227,216,52,208,240,25,54,88,55,17,30,15,29,227,130,28,114,135,46,93,129,204,59,222,125,25,65,154,58,15,196,11,176,229,237,206,165,124,15,145,38,182,193,49,160,43,214,9,125, +47,58,53,205,105,94,35,77,233,123,213,126,248,30,82,254,248,221,46,216,195,205,176,135,108,58,126,205,58,252,229,143,97,15,177,227,205,250,30,58,105,5,107,232,71,131,52,192,56,253,4,119,232,142,204,63, +251,117,215,96,91,208,205,74,224,119,49,147,27,184,45,238,242,102,171,7,104,233,11,146,88,53,88,187,116,177,239,33,130,212,22,248,184,20,96,7,120,21,65,79,171,127,124,26,217,111,127,217,195,143,96,15, +215,193,30,190,2,123,72,222,216,84,234,108,178,139,89,246,208,43,162,194,204,209,224,13,212,150,116,169,137,245,213,191,27,176,95,115,118,118,92,219,77,109,201,178,38,143,6,238,6,197,160,157,217,221,131, +135,141,167,71,198,82,190,135,178,135,136,81,115,230,23,104,52,175,172,85,35,77,168,119,32,236,33,181,30,203,31,86,4,76,146,155,55,126,233,142,210,236,161,199,56,91,212,241,25,151,24,184,23,142,125,177, +31,35,120,185,37,187,191,19,154,24,158,116,105,214,246,47,232,82,95,66,56,205,199,30,220,23,20,198,83,197,190,135,103,193,30,34,32,111,169,40,245,44,216,67,140,48,70,54,59,16,246,144,194,150,181,158,15, +159,129,61,252,17,137,242,39,96,15,239,129,61,28,88,232,123,24,105,86,47,3,179,245,60,207,198,62,216,160,99,127,28,136,94,128,150,46,51,46,89,46,83,89,131,230,184,247,195,201,44,246,229,158,188,220,142, +218,123,202,177,135,167,22,6,219,130,160,91,3,78,119,135,35,30,218,181,173,24,209,31,84,244,41,114,59,230,152,99,94,67,56,211,129,167,97,238,178,238,172,214,130,205,196,77,76,60,155,232,114,187,88,126, +190,234,208,161,32,253,236,21,216,67,224,172,77,79,194,30,82,254,48,73,110,222,56,203,30,218,197,35,1,16,199,186,56,241,4,134,231,11,9,12,207,123,182,156,128,60,27,187,27,19,143,183,69,179,254,227,89, +139,110,151,45,91,215,238,92,204,30,214,133,61,20,227,17,17,64,79,221,6,125,117,15,108,1,251,22,250,30,254,165,242,69,21,125,184,143,44,32,80,109,77,46,204,137,198,179,1,147,50,173,197,47,254,46,199,61, +13,91,183,95,118,217,37,233,149,69,176,135,80,105,6,107,249,195,138,192,234,217,229,217,67,95,128,143,93,60,16,188,160,210,60,32,56,91,59,131,187,124,133,193,163,123,234,48,120,12,31,242,72,28,216,178, +110,112,132,61,92,251,109,93,151,163,98,246,16,210,69,1,185,193,54,39,240,2,62,94,93,255,156,116,41,160,216,129,249,30,82,178,180,138,103,97,203,90,207,246,39,96,15,159,128,61,156,86,154,61,52,33,224, +58,25,86,128,49,142,237,230,177,71,118,252,138,204,71,192,242,195,146,104,46,69,206,216,225,64,237,196,101,176,130,150,193,30,138,252,132,135,90,142,61,172,1,123,8,149,102,176,205,160,92,58,210,194,215, +180,201,23,123,72,201,114,215,83,176,135,24,60,238,124,18,246,144,11,249,172,8,100,217,67,179,139,38,220,68,241,108,17,199,178,221,220,201,204,165,72,160,218,13,137,167,36,3,54,115,233,49,209,137,203, +86,142,43,47,226,60,45,225,102,176,225,165,86,236,123,40,123,120,42,104,15,235,111,99,88,166,134,144,46,205,126,0,123,136,127,211,37,5,249,98,15,39,195,30,190,0,123,248,48,236,97,81,97,203,242,199,242, +113,176,135,67,250,228,46,66,136,214,53,225,102,14,202,22,142,180,171,193,186,116,185,49,113,207,236,229,67,98,119,110,37,131,55,116,137,138,52,144,99,214,159,17,8,173,31,69,129,58,234,123,120,26,236, +33,193,218,157,133,63,26,159,2,123,88,29,246,240,162,124,178,135,20,163,173,207,90,178,140,194,214,250,185,176,135,211,97,15,135,149,247,61,244,20,227,62,87,1,120,172,189,65,134,187,245,12,248,210,160, +221,80,196,174,202,46,238,108,252,181,190,135,53,97,15,51,193,218,149,91,16,112,135,51,43,131,61,164,24,109,125,118,243,221,176,135,4,187,126,54,236,33,181,30,203,31,139,110,40,97,15,109,237,44,123,104, +90,198,19,150,65,198,17,207,83,143,93,213,94,225,161,193,117,217,235,29,35,208,114,236,97,171,86,120,149,2,110,17,96,180,172,193,54,59,133,217,249,84,216,67,110,123,0,241,251,123,236,179,183,113,151,158, +102,54,111,48,254,175,229,209,164,85,201,113,245,152,156,43,84,226,49,157,127,159,177,56,128,245,117,27,227,111,55,191,216,54,166,250,223,223,220,23,246,112,1,236,33,68,90,182,176,181,238,86,216,195,17, +176,135,36,201,245,61,180,101,191,142,61,12,15,68,15,1,62,113,47,71,140,85,241,188,10,217,67,0,174,82,193,178,6,183,98,236,118,106,218,216,179,113,37,250,30,142,133,61,164,62,107,201,210,194,214,134,89, +176,135,211,97,15,41,127,44,232,3,123,216,127,239,236,161,65,122,0,8,146,212,189,177,25,12,105,83,119,80,229,216,195,152,160,224,14,197,240,108,217,166,180,106,75,130,109,15,155,216,4,104,139,151,248, +165,104,15,160,246,142,227,143,63,254,177,76,235,10,108,41,38,63,106,175,45,236,23,253,38,222,116,91,90,250,25,182,140,123,56,14,110,231,23,221,221,65,223,67,138,209,214,103,55,206,130,61,164,117,45,108, +89,235,89,121,35,236,97,95,216,195,107,96,15,175,105,199,149,140,165,217,195,139,27,215,74,189,206,255,94,106,119,230,49,60,71,167,158,181,190,151,186,52,170,149,27,239,185,245,21,178,188,160,109,155, +212,140,77,69,142,61,204,117,225,146,9,170,1,75,81,35,90,218,96,11,206,131,61,108,212,240,32,250,30,142,133,61,188,19,246,112,34,236,33,85,60,11,91,43,134,194,30,14,134,61,164,34,96,146,124,102,183,179, +210,232,206,176,135,29,155,231,216,195,203,90,55,74,67,46,250,126,26,14,141,54,12,252,174,127,221,99,83,187,6,181,83,19,210,53,77,8,178,17,123,227,122,178,135,66,150,153,77,69,33,62,235,152,133,61,60, +17,223,195,243,97,15,9,150,49,255,75,38,200,29,176,18,63,47,50,140,155,76,67,117,230,105,90,164,195,62,177,172,106,247,27,213,180,116,189,211,248,193,19,104,233,183,73,188,125,5,134,183,245,228,147,79, +222,93,167,206,5,127,156,68,45,199,250,172,37,203,21,248,28,26,172,181,30,203,31,75,251,156,145,30,237,125,86,46,111,108,42,181,127,147,26,233,42,46,8,26,126,209,209,105,12,46,150,55,18,240,53,231,29, +197,154,122,92,186,144,245,180,9,199,60,15,2,205,196,240,176,216,141,29,84,4,235,108,220,150,174,236,152,181,27,51,52,254,194,96,81,15,28,100,246,144,98,180,245,217,181,35,97,15,7,195,30,82,216,178,252, +177,4,235,191,197,215,226,123,72,146,220,188,241,172,139,97,15,219,252,32,205,110,121,76,186,189,105,181,52,9,251,206,107,232,210,222,165,211,4,107,206,56,245,52,147,63,228,37,228,90,88,78,24,10,188,29, +79,167,179,74,216,195,195,195,247,176,15,236,33,37,75,171,120,22,182,150,1,90,62,120,13,236,33,21,1,147,228,243,187,193,30,146,74,93,212,233,164,244,124,167,106,233,161,214,213,82,159,218,223,135,53,44, +60,203,118,224,106,153,246,176,134,186,87,182,192,46,187,3,173,221,153,244,205,165,231,194,30,54,109,144,10,90,231,124,15,255,150,52,237,97,198,30,210,205,151,14,128,61,236,11,123,72,173,199,242,199,253, +84,4,238,233,6,123,72,222,120,97,215,83,210,214,43,171,165,117,93,113,178,188,168,122,186,178,246,201,233,154,58,63,72,61,107,243,112,151,78,79,110,91,185,250,44,216,195,186,103,167,235,10,240,61,236, +80,200,30,114,32,248,201,225,239,123,72,97,203,90,207,170,30,176,135,87,192,30,146,36,95,210,181,122,218,217,163,90,218,124,69,181,52,174,225,9,105,124,131,19,211,12,110,72,154,214,160,122,186,169,197, +121,105,100,183,14,105,32,167,174,35,159,61,164,252,97,69,192,36,249,11,61,207,77,171,186,159,157,110,188,180,77,26,209,163,107,26,217,247,58,211,70,255,198,62,252,143,223,89,246,144,237,231,239,216,33, +253,79,214,250,223,82,247,253,130,143,59,121,182,124,103,217,67,42,129,219,56,17,237,162,101,247,32,74,251,20,157,200,79,145,41,125,86,197,30,86,171,214,190,232,16,80,197,30,238,15,251,244,141,59,173, +111,251,67,139,160,203,42,223,67,94,196,97,225,123,248,255,1,153,155,31,95,64,87,180,33,0,0,0,0,73,69,78,68,174,66,96,130,0,0}; + +const char* CompressorAudioProcessorEditor::knobstrip_png = (const char*) resource_CompressorAudioProcessorEditor_knobstrip_png; +const int CompressorAudioProcessorEditor::knobstrip_pngSize = 160459; + +// JUCER_RESOURCE: scaleLr_png, 18298, "../../../AutomaticFaders-Stuart-26July12/Source/Assets/scale LR.png" +static const unsigned char resource_CompressorAudioProcessorEditor_scaleLr_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,64,0,0,1,158,8,6,0,0,0,36,42,7,53,0,0,0,1,115,82,71,66,0,174,206, +28,233,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,9,112,72,89,115,0,0,14,194,0,0,14,194,1,21,40,74,128,0,0,71,15,73,68,65,84,120,94,173,157,121,219,102,85,117,230,247,91,154,196,124,131,104,205, +152,254,2,198,40,131,130,154,63,18,165,138,2,170,138,166,40,40,32,26,7,2,50,53,224,16,211,157,56,225,128,8,18,6,59,105,6,153,41,100,212,255,84,208,48,148,77,236,47,208,17,168,1,190,65,46,99,148,234,179, +206,243,220,231,253,157,251,89,235,60,15,166,235,186,222,122,206,217,103,159,189,215,94,235,94,247,90,123,159,105,237,130,11,46,56,222,236,223,218,218,218,168,68,251,241,155,109,31,63,62,107,34,142,109, +216,176,161,255,141,50,214,215,113,53,172,115,180,255,171,95,253,106,161,109,157,255,155,223,252,102,104,95,101,148,81,219,111,125,235,91,71,114,103,50,176,66,47,175,55,36,225,41,104,52,20,127,111,188, +241,70,251,237,111,127,59,252,198,182,246,117,76,245,52,64,157,235,237,113,32,153,98,51,35,184,66,189,205,80,126,252,189,229,45,111,25,253,201,40,50,144,234,245,191,33,56,7,200,253,227,199,79,106,151, +223,115,121,59,105,222,83,52,176,117,239,245,237,174,187,238,234,255,46,235,14,84,3,140,83,116,140,237,171,60,250,81,95,180,138,203,18,117,216,150,206,227,47,251,97,93,181,235,202,102,127,27,92,200,117, +203,157,212,174,184,231,147,237,79,26,220,97,203,158,246,169,29,175,183,219,47,188,176,93,248,133,167,218,219,63,126,217,160,156,108,176,21,58,178,1,187,98,136,52,161,202,17,56,54,214,216,147,53,232,12, +145,116,199,30,1,180,196,12,122,91,218,57,95,63,179,29,251,155,219,219,191,180,245,134,143,191,227,29,173,61,245,88,59,20,208,57,250,253,246,212,47,222,213,254,244,228,25,47,140,96,53,135,162,151,17,178, +225,215,255,241,31,255,49,252,197,49,193,55,126,195,159,227,47,224,92,149,235,152,250,143,246,254,253,223,255,189,255,83,219,209,143,254,162,44,182,105,152,13,78,128,179,253,195,237,225,107,175,109,15, +189,50,135,223,220,77,54,111,124,123,123,237,216,171,189,194,226,239,200,177,215,91,183,49,236,83,153,132,114,116,170,99,226,13,89,65,254,201,193,56,39,208,135,51,18,22,122,164,196,168,239,178,16,97,82, +64,79,146,231,157,119,222,113,54,58,102,201,83,58,14,248,211,246,191,15,220,212,158,15,92,236,253,90,59,235,216,117,237,230,23,102,110,177,101,207,245,237,146,181,219,218,103,15,30,30,78,11,110,88,229, +223,197,23,95,220,91,86,255,228,235,126,174,147,50,253,154,136,138,237,223,251,189,223,27,34,201,29,119,220,177,138,24,109,144,128,74,88,215,120,23,218,192,1,49,108,237,207,172,212,218,235,175,29,25,194, +157,51,247,148,4,89,93,39,84,13,190,42,103,251,81,135,81,105,165,209,199,120,246,237,219,215,59,121,22,87,215,214,78,105,87,124,239,61,237,208,249,55,182,23,98,192,167,92,209,190,182,241,177,118,221,35, +51,139,159,124,249,61,237,61,47,93,212,110,122,126,61,230,75,121,108,83,241,88,101,209,87,196,253,49,218,198,185,199,42,3,144,204,204,41,196,7,191,255,251,191,63,26,147,35,71,202,237,228,157,197,77,18, +153,39,27,27,230,113,117,195,107,175,183,181,157,103,183,247,197,254,182,115,218,153,127,242,127,218,75,135,102,177,87,231,112,91,3,86,25,149,195,88,237,62,238,228,201,182,121,204,195,27,121,36,139,110, +140,38,34,254,62,12,122,56,113,200,117,1,125,150,8,189,242,112,187,246,246,227,237,227,119,222,217,238,252,251,29,237,181,219,191,221,158,155,39,70,78,114,34,26,103,97,177,51,5,140,129,100,241,157,108, +205,227,30,94,117,204,19,165,58,196,207,16,219,43,254,220,115,207,29,226,156,147,97,230,22,21,108,85,55,172,64,168,135,176,241,207,97,170,125,17,97,212,203,120,97,21,18,12,5,68,61,33,57,250,163,28,153, +59,41,109,94,32,193,140,101,87,241,71,213,17,180,29,158,114,53,197,119,161,206,173,231,231,81,153,238,154,149,11,72,134,232,171,74,131,37,111,175,0,111,200,99,109,197,238,180,170,224,166,68,67,140,236, +48,142,253,168,227,126,78,133,176,93,161,103,89,218,76,184,123,154,172,193,58,10,123,55,224,65,38,47,36,140,138,80,50,254,136,246,56,152,42,67,244,190,100,45,39,196,138,156,73,140,58,55,75,199,179,228, +140,33,179,87,64,54,192,108,146,228,68,85,41,198,217,159,33,145,104,226,249,62,179,116,82,245,190,157,8,99,159,237,85,145,196,17,63,154,13,86,190,78,23,241,48,148,165,169,83,136,201,98,118,150,240,48, +18,85,219,142,94,161,37,56,128,6,116,18,166,12,253,122,128,135,143,41,34,34,73,86,172,157,149,187,82,124,34,147,41,95,3,242,99,67,8,195,2,205,50,87,118,164,15,121,64,6,107,229,229,174,121,135,15,161,46, +100,40,28,137,137,179,248,30,101,132,188,224,235,131,208,185,85,185,218,145,69,213,38,103,154,191,254,245,175,251,153,97,252,102,255,186,36,111,54,221,204,166,174,68,134,172,170,206,60,2,100,141,103,172, +91,33,40,35,212,41,34,118,166,207,140,38,3,73,14,159,10,135,194,74,18,36,155,211,71,9,37,213,241,44,77,217,159,146,155,44,204,82,161,203,56,99,234,184,67,59,67,139,206,23,42,149,147,244,198,207,66,135, +52,239,49,152,86,210,49,13,142,237,16,13,12,67,30,203,227,28,33,79,109,175,146,254,102,161,77,217,32,195,99,54,111,160,108,209,231,218,57,231,156,51,154,13,10,46,28,152,147,26,19,37,50,108,148,223,119, +223,125,35,111,136,121,191,187,143,246,3,41,218,22,132,51,194,163,43,101,46,164,115,185,190,192,62,181,157,173,85,172,237,221,187,119,97,89,156,157,80,160,42,35,164,66,98,81,66,190,231,225,199,219,149, +213,228,74,89,52,226,177,76,174,56,71,138,244,243,189,126,76,145,89,214,35,144,204,201,52,214,153,218,73,199,221,100,202,149,220,61,180,239,72,202,20,150,145,110,229,247,83,92,35,30,115,131,246,235,1, +34,5,37,53,85,100,240,14,178,137,6,93,40,139,12,110,1,42,114,42,219,115,162,37,235,147,140,157,167,50,82,100,146,52,10,131,217,76,46,91,224,240,16,40,139,186,144,85,200,148,144,92,20,233,9,105,158,216, +168,61,247,119,47,231,64,226,220,169,249,68,22,117,162,253,62,10,172,250,175,34,63,66,55,99,253,42,198,51,25,242,40,64,183,145,59,114,192,84,46,207,205,162,8,203,136,136,104,111,20,6,69,94,132,186,251, +12,143,209,85,60,252,104,113,194,133,118,174,112,225,125,224,177,239,19,29,181,41,101,75,145,21,215,104,12,92,154,27,220,222,45,86,205,202,42,18,172,224,74,197,85,49,158,117,60,147,211,57,83,229,84,68, +133,226,48,140,6,206,171,77,74,214,70,147,161,169,5,71,197,216,44,84,177,140,161,146,25,23,175,244,200,247,41,116,181,114,67,196,185,124,142,192,140,155,104,56,95,33,234,149,35,13,101,194,74,104,157,232, +151,170,4,115,182,65,33,24,231,89,71,125,85,144,101,100,240,144,199,132,73,131,99,157,204,229,88,207,137,117,152,11,68,37,191,134,150,45,111,77,45,92,244,164,50,95,34,239,25,182,219,118,171,56,236,233, +130,36,40,14,170,42,247,115,51,126,97,25,47,137,137,88,135,139,163,174,57,250,203,212,118,181,68,237,194,101,49,158,252,145,17,170,19,107,150,135,48,135,169,184,198,73,147,70,25,133,65,29,96,184,115,255, +206,210,225,44,148,178,94,21,227,153,7,208,0,78,104,78,180,68,68,244,163,115,163,189,140,107,84,70,153,6,101,158,121,230,153,105,34,32,161,233,51,46,88,150,202,242,54,21,18,39,115,5,15,179,177,31,11,22, +156,204,188,153,220,164,159,215,227,10,151,15,84,109,253,193,31,252,193,168,217,94,142,80,64,166,25,71,131,231,3,204,25,120,236,161,135,30,26,117,210,93,120,25,246,93,97,228,11,146,155,163,108,153,44, +58,151,237,177,47,157,127,247,221,119,47,232,117,237,172,179,206,234,21,224,22,95,197,2,89,72,212,21,25,41,72,73,140,79,85,163,63,162,69,87,144,28,113,130,120,86,174,50,41,32,218,171,148,229,41,189,228, +25,162,128,163,128,49,215,111,58,138,41,111,252,49,76,50,15,231,93,29,76,68,60,20,202,119,99,32,30,93,42,114,245,84,87,153,162,20,45,163,56,111,120,72,22,41,15,36,232,154,171,194,151,208,162,14,156,237, +9,61,194,218,83,92,143,221,30,234,50,34,204,80,233,114,42,188,121,84,83,88,150,124,50,240,2,7,8,186,21,9,170,60,131,90,52,30,72,32,154,36,72,70,76,20,62,86,110,213,183,195,157,214,243,58,180,180,47,198, +56,231,104,65,36,206,25,92,160,74,30,42,14,88,150,165,233,56,7,94,197,120,90,73,33,204,239,27,152,42,103,221,80,188,16,231,104,99,14,34,165,171,206,48,23,200,72,198,45,233,144,206,98,183,20,224,66,100, +177,156,225,208,19,37,119,49,186,26,149,28,114,15,254,108,55,106,12,48,159,95,58,39,17,14,220,180,123,247,238,52,15,144,175,87,177,191,66,136,179,189,234,101,49,222,221,195,147,39,135,187,120,131,33,56, +206,209,242,59,93,106,213,28,101,3,239,224,240,11,7,25,145,176,147,74,9,234,60,234,250,42,19,163,11,7,232,174,227,36,201,136,145,161,139,199,169,40,34,201,101,239,81,80,105,153,36,232,161,133,2,176,51, +183,76,12,54,155,3,168,140,46,224,115,117,133,197,169,114,46,132,68,223,203,230,19,89,100,25,110,150,166,48,76,112,104,77,134,42,215,44,125,92,202,19,60,167,98,188,206,99,63,36,90,39,173,140,232,116,238, +178,249,68,134,170,206,72,139,215,5,185,116,36,101,84,137,17,103,99,78,50,203,98,185,43,218,121,135,138,36,124,137,78,14,202,17,200,254,221,192,131,172,187,118,237,42,73,48,131,119,22,135,57,16,166,194, +209,73,76,114,50,66,138,50,94,168,168,174,222,174,74,198,161,20,191,240,225,6,240,52,61,142,143,86,132,24,54,24,22,93,123,174,245,44,244,169,140,55,44,121,140,167,107,84,132,90,145,174,135,213,144,145, +124,195,148,153,156,229,4,218,79,134,56,88,193,43,99,204,74,72,114,195,247,191,255,253,81,181,46,204,150,79,142,16,202,255,153,217,160,203,229,89,167,246,31,120,224,129,133,33,172,209,5,120,34,149,226, +219,94,175,234,208,203,169,168,216,230,160,229,90,188,96,42,248,7,114,178,114,71,169,251,60,57,33,182,57,251,28,184,141,240,205,178,173,108,246,229,19,32,198,112,247,119,207,232,200,234,204,65,52,137, +241,80,22,110,25,50,100,229,158,99,208,165,24,70,213,15,93,89,110,188,118,198,25,103,44,220,41,234,68,151,33,163,98,248,152,144,196,32,149,249,241,129,39,119,53,246,195,245,0,87,162,144,82,145,169,6,195, +5,145,12,13,154,168,209,189,135,48,152,17,93,198,248,21,161,168,174,98,113,150,153,17,13,18,218,147,162,12,145,114,5,182,173,243,166,46,228,100,232,99,250,29,237,246,151,199,189,49,135,207,42,157,56,43, +51,97,169,38,77,1,97,45,174,240,246,21,174,37,134,144,132,63,253,154,70,139,115,166,22,104,180,90,228,9,220,218,206,157,59,39,243,128,12,74,21,217,68,185,98,109,116,196,184,235,104,10,165,208,181,120, +147,131,147,174,215,173,92,50,35,93,38,83,204,87,134,62,180,42,92,49,54,5,95,22,26,101,45,65,182,138,22,209,78,44,128,168,189,168,167,25,93,88,210,251,17,167,100,253,51,148,50,19,205,148,207,254,116,222, +232,94,97,247,75,143,10,132,31,211,101,166,201,156,160,48,58,208,205,232,30,3,27,207,23,102,125,242,148,249,61,235,144,51,164,240,40,203,238,118,161,12,58,111,193,5,168,165,41,246,119,70,102,204,118,63, +205,52,175,37,48,89,74,139,154,14,127,41,104,170,92,208,166,213,201,248,85,126,211,159,167,48,168,1,120,71,199,143,111,107,7,110,253,118,219,189,81,71,142,181,71,175,188,180,221,251,202,250,115,70,244, +179,97,173,13,215,8,221,255,99,63,20,64,193,228,2,10,135,84,176,92,132,237,184,188,113,76,33,88,174,72,174,90,28,215,252,142,20,101,130,53,7,156,214,174,251,254,137,237,197,179,191,214,126,26,143,137, +205,255,177,62,147,27,101,91,203,114,135,108,160,153,98,162,44,218,116,133,185,50,98,159,171,78,206,1,148,123,100,48,15,11,11,177,115,235,166,182,233,216,209,246,202,252,217,34,159,112,248,194,197,42, +241,153,97,145,196,166,200,161,41,182,22,68,171,114,191,94,225,198,113,214,39,170,6,14,115,150,39,169,196,177,55,182,108,106,27,55,238,110,55,62,246,88,123,172,251,187,229,252,173,195,147,228,236,176, +79,42,230,12,206,54,60,63,32,107,203,106,113,174,30,107,245,245,137,80,86,245,132,137,30,192,138,169,116,252,73,153,78,156,146,129,202,150,225,70,147,33,135,73,175,156,15,124,182,61,118,210,11,237,172, +235,159,237,246,78,107,159,121,108,111,59,58,231,0,41,143,154,61,120,240,96,230,122,11,101,221,13,154,125,153,98,60,35,67,198,71,82,28,7,225,33,83,196,23,231,63,248,224,131,43,201,49,122,120,58,211,212, +241,103,190,218,206,252,234,51,243,167,49,158,105,15,62,218,218,137,239,223,62,52,206,80,231,215,247,166,36,208,4,69,231,203,242,58,135,49,157,190,205,242,33,150,207,87,181,98,63,100,208,252,99,21,13, +172,237,216,177,99,225,201,81,158,184,253,192,109,237,218,246,245,118,201,247,94,233,139,183,31,184,181,237,59,114,105,11,64,44,35,58,247,73,79,100,120,92,8,208,96,73,84,49,168,172,220,39,90,30,57,178, +68,140,74,235,93,80,190,235,26,151,69,94,249,231,23,91,59,233,212,54,179,249,7,218,190,221,173,29,125,117,81,183,26,156,238,35,90,229,102,5,133,171,168,43,194,202,166,180,10,131,92,33,150,82,124,29,82, +251,68,115,182,61,76,138,170,27,36,52,196,56,121,219,5,255,208,190,61,79,4,14,221,184,171,93,255,211,226,169,251,208,232,252,137,112,13,200,147,32,241,70,182,24,18,231,100,211,103,45,136,232,92,186,9, +81,180,74,226,38,121,6,57,79,63,253,244,222,5,156,80,60,47,32,124,69,82,30,102,216,142,142,177,46,113,227,87,115,170,144,21,231,120,223,106,135,185,132,159,175,60,160,82,138,202,251,245,0,78,55,185,47, +247,160,155,120,166,231,126,39,215,81,185,135,61,231,5,10,238,132,42,200,87,229,217,185,153,178,104,12,110,247,178,178,113,143,159,210,62,27,93,214,1,7,236,40,114,129,233,155,149,144,130,189,31,39,154, +220,250,149,255,115,114,55,44,196,132,11,8,166,85,216,240,129,120,61,143,205,244,209,10,130,130,111,150,178,186,18,213,190,151,251,58,1,229,208,13,81,222,63,17,219,43,87,147,161,202,207,156,120,178,1, +101,68,87,157,199,193,68,29,221,212,144,197,110,186,145,91,60,246,69,164,170,151,93,248,112,57,220,5,71,79,143,179,67,193,136,110,16,29,250,42,177,220,134,2,101,72,82,123,226,147,106,9,140,240,229,250, +93,85,206,1,249,220,192,47,196,136,159,70,229,238,99,158,15,56,105,100,144,82,29,18,160,19,167,242,2,17,174,250,85,30,79,55,204,124,154,114,114,208,140,251,156,19,112,194,53,181,72,179,240,220,32,45,154, +161,128,97,41,179,138,159,31,245,37,128,86,105,244,90,29,37,51,49,96,77,134,50,133,251,67,81,26,52,223,67,196,58,106,75,10,209,190,20,55,226,172,169,140,137,81,129,209,130,16,167,146,124,170,44,151,145, +192,78,142,178,122,252,10,25,124,236,85,3,140,243,179,114,102,157,156,69,102,253,16,97,163,185,5,161,154,109,47,11,79,132,189,114,8,191,95,151,194,113,208,81,238,188,146,93,76,141,58,85,121,182,62,65, +183,112,87,116,126,234,215,4,43,182,205,152,151,48,202,248,224,241,199,31,95,224,192,238,2,108,95,70,232,185,79,43,196,49,67,84,253,80,104,86,94,177,126,150,102,71,127,177,158,145,42,96,161,112,190,244, +37,161,24,127,25,242,220,167,178,124,33,234,19,114,30,150,116,140,139,162,174,216,172,79,42,84,168,210,122,64,54,159,136,250,84,216,144,209,122,20,112,18,170,152,61,171,39,95,166,11,112,141,144,174,160, +109,191,234,36,174,113,110,169,202,179,101,244,172,31,206,56,71,110,43,77,86,100,152,197,253,172,83,157,47,159,150,69,153,248,100,235,133,174,72,213,103,31,156,168,121,57,67,176,198,146,245,195,21,39, +42,179,159,12,185,149,221,247,43,34,20,193,240,56,7,172,142,166,136,148,49,61,182,69,96,204,71,86,41,159,66,50,21,19,219,204,17,22,174,12,45,176,68,87,192,1,120,71,18,206,7,146,181,227,68,200,208,196, +137,138,148,40,37,80,96,42,131,161,217,235,144,112,137,18,55,218,144,8,101,3,35,201,169,51,186,76,150,39,100,201,17,203,168,4,186,141,4,243,243,163,15,185,0,235,107,34,196,193,45,235,39,51,228,104,81, +148,254,229,214,34,123,171,161,106,29,129,203,97,186,137,217,57,134,121,62,209,226,238,168,136,144,149,147,40,137,192,85,140,160,241,245,8,112,127,163,159,80,17,26,184,15,134,3,112,43,209,82,68,25,5,86, +72,138,246,9,101,134,191,170,92,10,162,108,85,63,148,77,253,247,36,232,76,204,112,198,89,27,225,230,231,57,209,209,85,92,72,250,161,210,93,42,196,161,154,17,92,198,49,83,243,9,26,109,196,9,188,71,168, +34,46,146,149,147,139,159,195,188,95,29,233,38,72,158,171,243,120,231,134,208,232,245,98,159,161,80,231,42,180,81,193,228,42,151,237,109,111,123,219,194,16,135,55,73,209,98,94,75,218,115,6,245,122,25, +10,162,142,207,211,57,137,17,239,200,199,73,172,218,214,156,129,172,31,219,190,166,160,182,178,121,131,27,70,243,150,225,102,105,106,221,201,37,246,137,130,106,160,82,34,253,149,196,170,62,60,153,241, +20,85,194,113,237,64,10,226,160,221,0,113,76,151,200,197,99,78,236,238,142,253,27,36,170,139,24,236,148,44,60,5,123,29,243,144,228,60,163,126,85,143,22,202,144,149,185,167,199,119,13,154,229,234,71,138, +241,8,177,112,131,132,44,237,126,239,44,91,185,201,83,79,61,181,32,107,199,51,197,75,91,103,247,6,137,228,228,46,108,32,250,141,201,141,47,158,170,60,147,131,86,86,219,49,240,108,166,90,222,37,86,17,34, +203,51,82,83,72,147,59,100,214,100,120,115,215,202,218,100,29,87,142,250,209,160,137,2,246,19,219,188,155,92,10,29,189,64,129,141,76,65,78,199,220,47,51,178,211,20,117,52,3,67,232,141,182,50,248,11,113, +21,209,102,138,144,252,217,124,34,11,219,125,223,180,84,166,125,63,94,213,145,64,244,117,41,68,109,144,92,37,16,195,214,239,98,125,114,206,212,124,66,138,150,33,228,26,11,79,142,234,128,66,94,150,130, +78,205,30,221,69,184,58,227,4,196,44,81,211,231,12,13,202,3,28,161,188,61,71,145,170,154,55,248,188,69,70,73,223,35,164,1,102,81,32,203,255,179,197,73,214,155,202,32,137,10,134,172,101,247,30,137,60,25, +90,221,53,61,242,56,90,122,197,78,249,58,133,171,248,97,42,243,202,226,126,21,30,21,138,101,41,186,30,39,84,44,231,181,6,174,60,101,243,6,186,33,81,57,122,173,174,87,210,0,40,116,181,237,214,211,218,191, +96,94,145,16,13,192,4,72,131,203,136,86,79,170,251,185,25,15,121,154,44,23,31,208,146,33,192,53,72,171,120,125,183,40,137,72,219,100,103,63,159,245,179,123,140,226,220,170,220,147,51,161,145,161,184,82, +176,214,45,23,94,168,56,176,163,221,55,64,127,242,16,228,164,232,60,145,45,156,168,76,145,162,10,123,110,49,39,89,26,96,106,62,33,69,147,91,250,165,118,94,29,206,252,156,101,218,246,112,229,117,188,29, +250,92,134,56,70,30,79,140,228,150,89,185,183,181,236,46,181,236,58,194,144,8,101,176,225,128,29,234,213,64,4,67,159,4,85,249,3,45,95,17,234,20,209,82,217,83,243,9,34,123,20,229,28,206,25,212,167,178, +56,89,198,99,188,246,25,235,217,182,242,12,191,114,59,165,64,42,213,33,29,251,186,248,154,245,227,168,148,124,11,207,14,79,249,28,67,144,39,76,234,212,103,150,10,97,33,160,251,159,63,37,226,40,203,34, +14,35,149,231,16,146,41,235,199,243,134,33,10,248,133,15,89,128,141,211,42,46,148,167,159,171,64,127,42,207,119,102,207,146,40,26,201,243,254,12,209,153,81,7,148,44,35,193,202,215,25,115,181,29,202,121, +226,137,39,22,78,233,238,69,236,203,196,3,85,82,229,130,210,189,156,104,201,41,238,134,153,108,81,150,78,135,171,135,167,167,6,78,114,92,54,24,198,113,50,185,218,247,155,165,50,95,205,44,72,101,198,118, +156,39,151,10,55,116,210,141,125,190,73,74,253,76,166,194,78,38,14,93,53,82,213,115,203,100,177,216,145,225,46,166,193,103,229,206,7,177,95,205,39,168,48,202,149,42,128,218,171,194,87,85,238,62,28,251, +217,186,160,206,23,105,210,215,169,80,93,213,245,84,154,107,15,126,127,114,54,159,80,52,162,123,244,253,196,189,194,238,79,203,224,191,74,76,207,136,142,231,101,239,13,202,250,205,220,134,168,240,227, +82,120,214,150,148,57,138,96,177,67,237,146,208,184,157,133,36,143,253,140,40,177,173,103,2,60,44,241,210,57,163,8,133,150,178,60,139,100,185,162,147,147,30,199,195,164,71,46,162,54,226,183,191,46,224, +161,48,11,141,84,70,70,124,83,22,119,65,71,22,152,95,158,207,146,23,55,78,212,81,198,202,153,35,87,151,100,20,202,195,182,221,149,134,201,16,9,37,131,143,91,219,243,4,237,83,227,244,77,247,89,13,160,138, +251,28,44,21,230,229,146,53,218,81,127,252,213,54,243,5,166,253,221,246,250,167,178,252,26,1,231,226,217,188,92,179,62,14,142,73,147,144,196,95,185,195,20,207,240,88,21,102,61,2,185,251,72,14,26,138,231, +12,134,98,33,97,46,38,221,122,254,45,45,94,139,17,119,88,125,230,212,245,207,115,86,156,144,101,134,89,76,94,22,214,220,175,57,16,34,130,200,165,235,58,106,232,6,84,214,240,200,12,53,61,84,222,126,65, +187,102,247,209,246,237,238,54,183,179,174,124,180,109,186,242,115,237,212,249,199,23,179,148,55,132,20,68,245,59,154,121,225,118,28,71,64,69,168,78,152,25,170,168,28,201,165,85,35,202,145,145,236,194, +99,115,26,68,175,217,211,62,219,110,221,242,64,251,235,249,3,83,167,125,246,241,118,242,243,187,218,87,159,157,61,65,234,150,141,206,178,116,51,131,123,220,59,200,16,86,133,214,85,92,133,57,133,234,251, +203,92,170,118,134,27,36,124,82,17,194,157,208,61,52,121,244,200,171,131,85,143,28,59,214,221,48,52,254,180,30,45,92,249,107,213,121,230,6,203,92,35,243,233,204,255,87,81,92,31,101,86,21,122,214,113,107, +155,54,111,43,219,126,51,86,116,159,206,8,149,75,107,126,213,73,76,78,136,175,178,242,228,194,247,81,128,105,232,200,103,251,111,108,174,127,136,41,110,32,61,218,61,51,231,49,155,231,175,170,121,114,133, +92,33,35,86,95,160,85,29,114,16,201,59,203,57,166,100,26,45,138,250,138,238,47,15,31,109,155,54,109,29,206,223,186,113,120,134,190,47,203,146,159,85,21,224,28,226,209,195,137,45,115,13,55,4,227,255,170, +114,140,190,56,73,77,246,219,175,30,109,109,247,185,237,212,120,36,117,203,254,182,231,189,135,218,243,63,158,189,116,133,241,158,194,173,218,177,91,214,173,232,237,184,203,176,190,20,193,148,123,85,57, +70,147,33,242,129,252,57,34,193,19,87,190,183,111,47,30,154,252,202,51,179,166,151,37,40,11,202,156,159,163,40,227,254,202,236,204,7,151,41,67,253,143,162,214,252,107,25,81,198,183,70,85,242,246,138,211, +147,163,36,176,55,67,102,18,142,2,177,76,2,186,192,234,163,82,36,101,200,12,147,89,56,148,152,133,102,214,93,200,119,248,22,153,76,155,110,73,17,22,99,56,53,44,33,156,31,188,99,77,135,93,129,20,182,82, +146,15,82,104,210,116,151,8,80,191,149,18,135,59,69,61,195,242,37,104,247,115,183,80,229,163,82,78,21,223,227,184,163,196,173,59,21,170,157,8,213,159,102,185,90,42,247,231,139,196,23,11,175,213,173,252, +141,29,121,232,100,72,115,20,137,44,169,0,191,47,40,206,175,162,64,118,254,20,33,50,76,122,200,204,20,59,204,6,153,104,112,174,173,156,58,155,182,102,13,114,221,79,23,43,178,47,85,56,34,170,125,33,36, +67,144,202,100,128,170,13,206,15,22,94,183,149,49,164,195,42,107,120,42,20,202,39,229,38,217,77,21,190,10,229,46,166,129,51,92,146,143,178,68,104,42,151,112,146,214,138,213,112,135,72,150,106,50,195,243, +108,209,7,229,36,71,2,91,102,25,114,0,149,239,87,142,117,204,209,42,55,161,130,156,40,227,24,13,163,227,163,111,140,84,47,89,230,0,170,105,176,234,100,249,251,50,203,248,85,219,12,13,158,46,211,253,170, +41,55,35,128,19,233,32,103,149,83,103,137,76,21,178,212,184,96,77,38,102,194,51,69,94,36,82,119,143,108,166,234,185,70,102,113,149,145,12,197,254,26,247,240,185,189,108,229,86,161,68,139,18,238,247,78, +120,10,165,14,121,183,144,91,38,155,197,121,30,193,1,87,49,221,185,203,23,64,53,30,242,202,218,217,103,159,221,201,187,252,131,107,14,33,250,56,225,248,232,163,221,123,118,236,159,30,156,156,66,85,150, +173,185,92,78,100,34,74,157,171,244,151,231,113,59,125,112,82,175,213,157,130,80,22,238,88,159,214,98,104,202,34,76,165,132,74,193,222,70,54,56,89,58,67,18,13,197,249,134,234,142,158,23,80,103,14,37,14, +48,35,150,42,132,69,121,127,31,206,124,77,97,1,26,40,200,34,133,228,241,99,42,151,107,9,218,85,180,17,82,40,251,112,23,154,199,91,50,182,147,94,166,24,18,95,86,63,142,79,101,121,110,97,18,42,45,150,149, +83,30,141,195,137,86,33,50,100,112,162,237,21,88,133,10,158,232,151,188,156,48,61,146,168,163,202,130,20,82,16,205,8,149,228,235,215,22,132,46,33,204,9,47,203,25,136,64,201,48,186,87,56,131,90,230,255, +78,88,206,202,98,89,146,214,148,101,226,24,111,173,225,179,199,49,48,79,95,61,215,240,139,45,85,206,192,241,13,97,144,240,148,224,85,188,119,95,202,20,145,197,222,204,117,178,171,73,89,24,205,66,151,163, +147,220,53,149,51,232,60,162,169,159,12,101,215,237,216,144,199,241,12,74,206,254,153,18,167,44,147,161,197,25,223,201,214,35,71,134,86,175,67,215,152,143,107,252,129,133,169,8,224,22,207,82,80,198,102, +42,101,202,50,126,140,161,50,218,112,162,165,59,185,226,156,112,153,244,164,33,148,215,241,253,122,190,191,154,118,170,113,90,156,236,157,133,62,15,139,36,52,18,170,132,247,203,245,158,145,102,134,152, +34,247,145,203,100,179,192,204,90,203,144,177,44,142,79,41,175,18,118,89,185,148,235,86,206,92,133,74,18,137,246,209,170,138,245,149,18,166,44,74,127,163,149,217,121,54,168,202,79,25,78,61,73,83,155,89, +146,85,229,12,60,71,227,24,94,174,238,19,30,103,115,70,128,12,194,30,230,60,52,78,101,115,74,75,171,76,110,89,57,145,192,168,161,240,40,23,115,247,138,253,62,10,112,64,153,224,25,177,177,177,41,1,153, +159,87,150,241,197,21,183,84,53,155,140,126,41,239,84,46,193,140,148,225,126,233,162,168,67,79,251,12,159,238,95,158,168,76,101,121,36,184,12,69,12,157,116,87,185,71,252,210,24,85,46,81,165,227,195,253, +1,212,166,163,128,97,137,233,45,243,120,185,76,118,171,108,55,229,46,175,36,57,97,101,28,51,85,230,252,33,57,178,28,33,157,14,251,227,243,82,4,57,160,74,56,178,114,198,218,129,104,236,61,163,30,231,43, +229,179,222,84,210,195,137,14,221,149,219,149,155,143,30,155,35,172,178,40,144,249,162,135,71,222,104,197,187,64,37,76,22,162,184,38,152,229,235,126,174,195,89,199,125,185,203,211,252,76,241,61,9,234, +207,115,130,169,149,226,44,252,16,170,142,160,169,108,174,34,212,42,206,251,64,220,186,30,142,167,92,104,244,141,145,108,226,225,39,79,197,236,168,155,133,154,101,150,137,54,165,236,44,171,155,138,18, +174,88,39,74,161,218,179,211,161,188,18,152,239,254,211,0,226,250,26,215,2,200,238,98,95,39,76,23,136,251,220,102,54,87,33,34,43,87,152,149,97,166,66,178,135,215,249,60,99,241,37,42,204,13,152,185,121, +185,103,117,14,189,42,75,83,185,4,210,181,66,15,131,66,84,85,238,190,63,53,39,16,209,18,17,125,253,101,154,247,137,7,247,153,105,101,66,178,108,202,50,158,107,144,88,117,201,59,35,91,31,12,199,146,229, +12,146,129,72,26,221,37,230,157,48,42,104,219,33,236,190,85,133,193,169,108,142,249,4,57,103,89,248,205,228,205,152,94,3,103,253,65,30,10,156,229,235,25,179,103,68,195,198,253,248,50,203,100,237,101,49, +156,126,94,133,213,41,52,233,61,67,124,174,121,244,6,9,183,230,178,8,16,10,243,52,87,101,252,165,37,51,87,136,227,25,161,122,251,76,115,51,215,204,172,207,92,128,74,85,249,232,201,81,15,71,89,252,172, +220,68,161,138,112,86,39,203,16,227,153,224,50,242,100,123,36,230,44,223,167,82,56,127,25,66,235,84,66,147,177,170,39,78,220,119,82,242,199,220,179,44,79,131,207,8,85,245,53,85,119,244,112,86,23,3,157, +202,37,220,125,6,89,9,85,79,83,25,58,150,37,64,89,124,151,114,150,89,70,231,86,46,88,149,187,236,203,34,26,209,160,164,111,120,141,78,198,222,132,38,161,77,109,186,127,63,249,228,147,11,158,227,23,71, +157,88,163,13,93,224,200,220,174,42,115,153,171,168,161,113,100,51,213,225,62,65,106,103,21,33,162,51,9,224,9,144,11,166,217,26,73,72,10,85,93,101,116,170,163,246,93,193,85,121,156,231,55,71,18,149,12, +133,52,230,112,175,112,54,195,90,69,17,12,71,177,77,24,102,33,150,109,106,208,36,50,17,21,127,229,175,34,174,236,158,35,37,76,85,228,18,193,251,220,97,52,27,100,174,236,164,225,13,187,191,101,203,235, +131,159,141,238,56,95,191,251,92,66,71,189,236,158,35,39,213,74,81,146,91,150,37,177,203,8,52,6,81,53,92,27,228,73,170,32,1,124,240,108,84,208,202,208,34,84,101,190,201,62,72,182,89,95,217,249,25,121, +251,68,205,73,221,39,83,209,215,240,220,96,53,101,245,44,206,53,41,37,17,166,178,236,170,150,137,122,204,206,92,80,238,87,17,37,228,242,16,157,161,138,185,64,95,223,111,57,19,204,60,7,168,38,37,66,142, +66,149,180,78,184,186,114,37,44,33,235,253,50,166,211,21,170,88,175,119,150,73,30,34,51,219,30,228,228,229,48,249,44,253,217,215,2,170,188,193,179,62,135,95,230,34,21,180,171,144,156,149,139,120,61,89, +34,57,103,110,170,182,122,18,244,48,70,107,208,194,110,237,140,113,179,89,159,206,227,175,47,174,72,72,25,129,215,37,165,116,25,134,190,158,93,191,100,120,102,159,12,245,3,146,92,171,21,116,164,209,42, +92,146,68,25,127,51,1,122,242,177,183,217,102,136,97,89,22,82,93,118,135,63,207,119,35,104,60,163,48,72,95,203,172,157,205,13,50,235,58,162,216,86,150,30,43,81,114,66,101,219,25,42,189,190,43,222,115, +14,42,100,120,5,111,246,217,221,12,21,51,141,213,223,31,37,236,164,221,169,68,202,253,210,243,125,143,54,132,111,214,174,215,207,198,224,134,233,73,56,20,64,11,76,17,77,107,31,108,159,127,242,228,246, +252,174,175,180,103,18,41,170,115,167,20,65,171,113,144,140,20,85,121,212,209,160,92,1,206,109,52,144,218,158,255,206,110,145,113,31,118,109,245,164,241,206,45,253,247,71,227,107,123,83,62,95,89,200,125, +114,74,49,209,126,198,222,85,185,162,65,150,39,56,58,53,182,126,12,113,167,104,165,73,157,168,227,124,130,44,58,60,246,232,21,237,146,123,94,30,69,145,85,159,29,238,222,94,51,26,63,101,160,197,171,80, +41,69,100,199,227,252,108,230,151,41,124,88,21,206,214,251,61,34,244,13,28,186,177,197,123,129,118,237,186,177,29,221,125,77,59,112,194,248,30,163,85,224,30,117,86,33,84,143,20,30,146,253,56,219,92,85, +142,254,109,114,149,22,227,105,241,217,35,131,221,199,150,175,184,164,125,239,149,25,44,85,63,62,196,120,77,251,198,240,116,121,79,42,128,174,251,39,161,72,210,211,57,78,116,46,151,67,153,131,244,48,57, +133,28,242,78,255,205,81,10,42,171,103,62,126,194,133,183,245,3,254,212,221,191,236,7,26,223,35,61,239,200,167,218,151,127,50,107,146,157,58,164,43,130,172,148,191,106,20,112,174,82,191,154,106,103,36, +73,89,123,23,80,54,229,107,108,209,24,73,229,255,62,251,66,247,201,217,247,181,237,253,147,228,31,104,231,237,57,222,142,188,18,219,179,63,46,106,100,164,202,233,182,111,187,34,152,3,208,210,44,247,115, +162,77,190,56,97,138,48,7,52,197,135,150,220,95,168,53,239,100,219,5,183,182,155,246,204,30,162,62,244,173,157,237,75,115,235,19,86,222,94,22,163,121,73,60,115,27,135,247,20,82,86,65,145,203,55,40,114, +138,3,86,37,146,140,193,227,92,135,61,125,56,115,151,204,237,42,191,207,92,132,79,163,82,193,142,160,145,11,16,230,114,1,206,10,171,155,20,9,123,181,225,81,131,112,245,121,184,19,158,20,230,115,127,246, +227,235,4,126,204,7,90,185,220,8,113,122,155,156,179,104,166,181,140,117,57,104,13,66,214,117,43,51,74,232,203,18,153,34,88,207,35,132,246,151,145,155,178,219,33,135,73,30,11,234,13,196,119,137,177,51, +194,218,33,30,154,149,194,28,162,92,1,166,27,72,81,92,56,137,227,218,215,37,242,85,221,142,74,210,57,148,203,87,136,41,167,198,19,227,93,248,228,38,147,9,65,184,90,176,236,27,176,87,97,105,208,142,12, +10,76,229,121,228,113,148,49,178,16,45,190,0,227,231,41,177,211,130,15,207,37,215,140,30,152,80,163,238,247,83,251,126,204,253,158,236,235,174,33,5,70,29,46,117,113,153,142,175,194,242,114,63,198,190, +166,248,136,70,170,191,161,61,111,205,137,134,3,206,8,146,121,3,103,153,82,140,175,253,113,209,149,36,156,161,132,104,201,72,88,40,203,20,237,92,163,246,23,22,68,28,214,153,75,168,163,12,254,142,34,15, +109,158,200,168,141,76,209,188,96,202,118,9,111,70,49,71,31,199,162,246,25,177,122,3,77,125,103,200,73,145,16,91,70,86,25,75,123,94,32,232,187,117,60,177,121,51,185,64,85,183,146,119,164,0,105,208,5,245, +16,201,193,145,81,163,19,159,134,250,180,183,18,36,75,92,60,114,80,81,128,240,208,36,111,182,242,126,178,139,182,61,146,253,173,178,85,124,165,18,170,58,206,180,174,156,101,168,241,112,235,237,101,231, +123,184,174,250,240,37,55,133,204,129,3,200,200,209,136,47,66,102,92,192,249,184,179,189,4,91,54,239,215,121,83,132,154,93,25,82,182,202,99,206,47,220,167,98,232,218,11,183,200,100,179,180,140,236,124, +192,170,147,133,162,42,189,37,170,170,62,100,152,138,76,105,4,87,118,70,138,140,16,163,68,136,44,73,166,36,203,106,155,113,180,10,147,26,156,231,239,12,123,25,41,186,98,29,210,84,132,147,229,148,162,25, +86,57,214,133,119,138,58,211,211,143,29,98,153,191,121,24,172,194,143,202,179,59,191,188,221,169,108,145,199,60,7,97,223,204,67,70,168,89,101,134,197,134,104,125,247,171,216,143,111,122,13,159,175,152, +63,39,192,122,68,20,209,64,168,187,2,36,112,166,112,30,35,26,29,197,142,100,181,85,126,105,202,125,206,7,225,251,25,156,53,5,230,84,88,207,16,80,73,149,159,47,115,135,62,140,21,143,230,187,162,157,100, +53,71,232,151,197,213,144,172,59,181,95,133,25,149,123,206,192,89,30,195,231,84,186,186,172,15,246,69,30,224,76,84,114,232,184,194,30,93,33,218,41,159,30,167,63,17,78,78,98,78,60,46,60,45,225,87,117,195, +10,78,190,89,253,140,104,201,29,153,124,78,212,110,84,201,157,126,101,198,125,201,247,253,26,130,132,113,152,69,167,130,124,112,131,254,226,171,111,218,38,234,166,24,223,249,198,35,64,28,175,230,11,84, +52,39,92,177,61,124,108,141,90,172,252,157,176,162,0,206,176,217,93,28,244,85,186,137,234,102,132,154,41,164,170,23,237,7,175,84,138,86,63,11,111,154,102,131,158,46,102,201,71,38,128,50,43,134,182,10, +21,78,150,222,135,218,112,100,84,229,132,186,103,166,83,121,198,64,160,49,23,160,53,171,147,50,200,101,66,74,25,250,37,49,101,200,210,36,40,155,12,49,101,117,197,103,114,78,45,171,209,184,202,109,122, +37,84,223,23,88,69,41,25,243,251,197,81,206,6,233,66,62,0,95,36,93,53,18,176,94,166,0,245,147,125,10,180,87,64,245,34,37,87,128,135,55,65,40,179,132,135,166,106,48,81,207,17,34,235,120,24,171,202,133, +194,204,96,68,144,95,136,145,76,11,81,192,195,156,19,31,211,225,101,86,210,0,43,183,34,20,213,22,9,149,252,144,149,11,214,25,87,49,207,136,122,254,234,253,129,168,99,192,85,136,89,133,15,50,33,169,164, +169,52,150,237,83,96,17,158,71,26,47,151,236,36,225,204,40,138,112,126,44,202,71,107,130,46,172,179,59,153,120,42,46,171,67,193,187,34,80,42,202,21,89,69,155,170,95,71,129,19,174,100,208,24,164,252,94, +1,83,8,200,184,128,110,194,48,196,92,34,182,131,148,8,221,108,81,165,26,56,17,225,72,16,255,240,215,183,125,76,85,198,58,124,95,32,91,76,240,50,174,203,123,178,195,219,213,161,221,209,165,115,173,226, +48,71,200,66,163,151,101,174,168,50,119,163,106,81,68,229,186,200,51,34,193,138,248,100,93,183,178,91,154,190,201,239,138,56,186,100,37,90,151,125,44,35,213,101,199,233,122,188,63,153,219,62,214,209,23, +38,168,189,236,42,12,95,113,21,41,167,35,194,153,150,10,112,30,136,125,207,220,50,66,205,148,230,46,145,113,140,183,149,241,91,47,131,135,53,146,132,19,6,145,144,161,198,23,87,100,49,146,167,231,19,78, +172,89,72,115,37,76,41,165,82,116,25,206,119,239,222,221,29,91,191,73,164,98,122,117,154,9,156,49,118,69,74,138,44,82,38,195,48,153,58,107,51,227,2,103,119,42,157,202,8,196,82,166,33,135,56,231,156,115, +6,5,84,2,40,97,169,44,153,249,166,16,82,133,192,129,132,146,101,179,56,198,24,207,54,60,246,103,60,67,99,57,199,56,226,135,24,88,65,95,90,119,129,178,24,46,191,214,18,88,104,93,204,239,17,192,23,92,188, +127,181,63,85,46,52,169,14,93,144,107,19,50,32,151,222,71,81,32,243,85,250,59,161,83,197,117,15,51,34,76,250,235,104,53,118,126,187,188,24,58,35,84,205,239,51,66,230,226,171,250,98,120,245,197,25,95,60, +149,92,195,35,51,124,105,33,23,15,188,156,131,200,80,192,21,151,88,137,113,238,16,156,29,81,110,105,39,212,101,86,102,214,153,41,218,203,6,52,236,221,187,119,129,3,136,8,247,111,193,41,43,143,99,254,90, +93,125,110,83,136,154,226,132,236,216,84,127,25,247,144,237,217,103,117,15,243,90,144,96,214,208,42,44,76,114,116,165,201,63,181,30,231,237,185,160,21,153,45,147,141,36,39,84,101,74,83,20,240,72,82,126, +114,147,28,64,194,34,196,149,121,49,58,136,8,157,137,57,144,42,156,185,75,145,180,120,172,74,209,213,135,103,154,131,191,207,239,103,162,139,15,203,226,180,224,20,227,79,113,128,147,229,50,171,210,239, +125,80,191,203,126,230,150,94,198,80,223,175,10,107,114,64,118,167,6,151,133,59,23,52,179,130,183,55,132,32,123,112,202,251,98,91,30,191,137,208,169,228,77,245,34,42,248,219,243,227,206,210,97,89,60,75, +130,60,221,165,43,100,2,84,25,101,150,222,58,76,61,134,103,143,195,105,16,62,185,241,164,203,251,83,94,66,99,41,196,174,41,21,118,6,118,63,205,246,117,14,215,219,162,19,213,141,95,133,194,204,239,67,137, +170,31,36,37,226,204,96,91,241,6,251,10,197,84,253,132,140,60,38,217,255,191,205,6,53,19,100,54,232,179,75,119,179,216,39,202,124,161,69,138,168,202,25,73,60,43,244,188,34,100,201,114,157,94,1,241,69, +230,248,227,85,21,101,90,226,8,78,133,57,237,229,43,237,181,40,50,76,52,240,244,136,66,147,4,149,50,196,200,111,214,255,171,136,33,25,100,8,119,7,15,199,163,79,108,120,182,117,252,248,201,237,234,7,174, +110,167,204,207,138,227,91,206,189,161,61,240,192,3,253,223,213,243,3,206,31,132,90,92,7,228,181,192,80,88,236,123,212,249,93,88,223,231,248,146,95,131,166,210,153,47,104,123,136,2,121,168,56,165,27,252, +165,237,221,109,150,39,245,131,218,122,110,187,124,215,107,237,150,125,251,218,190,207,60,209,222,113,233,186,114,4,103,39,74,194,222,73,72,72,10,180,57,100,165,196,106,181,42,35,104,161,52,218,115,197, +211,72,228,141,209,23,39,215,5,220,214,246,125,107,119,123,237,179,183,182,151,218,250,13,209,27,182,108,108,107,79,62,218,94,136,132,226,200,195,237,241,151,222,221,61,65,179,254,70,8,79,56,170,112,74, +235,123,50,197,104,160,1,169,142,142,241,230,10,38,53,58,206,57,8,13,144,205,113,250,68,200,225,183,182,118,164,61,114,237,181,237,225,35,115,81,227,75,139,221,191,45,155,54,182,99,71,15,15,128,57,242, +218,235,246,65,198,153,50,248,143,3,164,213,60,38,235,50,58,127,21,238,124,169,45,11,131,140,243,213,37,50,185,132,126,123,23,58,247,220,115,143,51,140,141,147,138,83,218,85,247,191,183,189,184,239,134, +246,207,157,162,182,238,251,86,219,115,228,170,118,195,63,207,134,24,251,151,183,155,218,85,15,196,179,164,179,144,118,255,253,247,187,71,165,251,221,36,108,20,46,117,109,48,160,75,248,199,201,49,160, +172,220,243,14,62,50,179,242,71,87,163,241,147,175,184,183,221,123,111,252,125,163,253,215,45,139,115,163,33,145,232,239,199,193,251,7,59,225,94,59,114,120,244,9,206,149,70,63,0,107,236,62,209,79,22,242, +170,114,70,2,201,152,221,111,48,37,83,63,27,204,102,74,179,112,117,114,187,242,190,247,180,159,239,191,177,71,64,59,229,170,246,205,205,143,118,228,248,74,223,230,41,87,63,208,78,124,113,95,187,225,185, +245,46,178,68,196,203,162,109,93,52,209,153,66,33,235,42,156,142,81,185,254,148,137,15,76,208,87,251,226,36,70,7,149,13,137,80,20,68,5,101,81,36,33,77,138,222,232,80,210,151,31,238,62,187,123,198,238, +89,88,236,34,194,217,239,126,169,189,216,13,158,2,102,147,37,15,87,113,186,207,65,156,59,92,80,14,214,115,0,134,61,113,142,207,36,41,151,198,220,243,95,252,23,194,248,18,211,12,74,29,220,35,10,116,177, +187,103,222,99,143,180,107,110,109,237,210,200,3,174,223,213,94,187,245,198,89,68,152,255,169,97,183,140,199,103,249,53,223,28,19,131,96,18,35,43,134,97,170,114,46,123,241,166,41,25,78,74,156,202,49,122, +18,140,44,80,255,24,35,57,144,12,218,62,208,24,144,79,129,179,76,44,218,242,47,78,102,119,136,168,207,44,178,100,74,230,164,40,12,150,161,202,199,215,231,1,217,44,79,218,163,85,189,65,66,81,245,221,133, +194,50,254,181,71,173,18,113,113,37,131,181,6,89,165,201,46,27,149,237,185,67,244,229,11,165,131,11,208,250,30,90,120,44,203,202,152,193,201,175,233,111,21,252,60,87,151,226,40,164,6,232,194,211,135,157, +27,200,55,84,136,247,55,35,249,249,253,1,149,2,42,226,161,96,82,138,16,32,37,48,161,25,45,65,205,63,234,226,33,44,35,61,39,50,201,179,152,184,141,19,176,138,36,57,158,161,141,170,178,11,184,172,94,102, +149,169,52,215,221,78,174,72,88,43,182,139,212,132,78,143,249,82,48,97,175,200,230,200,34,98,163,175,126,73,140,190,189,10,225,56,156,100,61,165,152,14,61,42,207,167,191,18,154,131,112,223,207,22,51,36, +167,183,237,23,100,250,65,206,81,231,200,233,143,69,3,132,113,182,64,81,205,200,50,150,117,141,51,191,96,190,206,171,61,228,14,194,94,214,162,224,242,93,90,146,150,207,230,9,254,126,4,134,229,209,23,38, +50,162,200,18,27,10,225,60,65,8,235,88,53,121,241,235,119,81,159,138,161,97,170,114,207,18,41,79,198,25,30,41,70,159,219,251,207,90,95,131,207,92,42,67,11,133,117,50,37,180,153,15,120,232,205,162,128, +67,158,134,93,136,80,89,140,93,150,244,120,110,205,40,226,131,207,246,37,16,5,37,137,122,251,14,247,204,255,25,69,252,56,57,197,235,173,93,124,241,197,93,251,179,119,128,8,218,28,16,53,236,138,201,178, +198,152,85,250,191,243,206,59,47,67,230,168,76,150,97,31,84,94,85,78,89,61,135,161,34,50,185,122,101,28,56,112,96,152,255,74,9,210,82,230,207,83,10,201,234,47,243,81,70,14,215,82,40,37,59,95,229,110,40, +17,110,230,130,225,98,110,224,62,10,84,2,78,9,46,183,201,178,60,103,244,216,23,9,78,77,94,136,66,181,79,132,101,156,64,25,51,180,100,238,173,178,97,89,141,254,152,77,91,221,127,100,229,42,45,166,143,241, +92,178,175,91,174,34,182,101,229,52,128,203,41,229,40,44,231,179,221,183,172,95,26,227,128,166,136,81,49,151,177,151,19,32,95,235,211,2,101,54,104,18,159,43,40,218,103,78,192,243,43,228,169,142,27,50, +131,190,228,92,120,108,110,89,184,202,16,227,137,138,187,8,7,74,63,167,160,106,131,176,102,34,148,149,103,209,129,196,167,190,52,153,146,43,106,29,162,87,50,137,43,10,178,164,197,201,137,214,226,96,151, +41,39,155,220,184,194,169,76,33,171,39,43,44,188,248,148,91,3,100,178,84,205,23,212,206,112,41,47,194,160,51,59,33,83,33,194,195,146,172,161,117,185,101,97,203,93,66,245,181,62,73,212,68,155,89,185,203, +150,133,101,141,133,171,68,140,114,11,119,136,100,185,0,27,246,92,192,67,95,53,85,245,228,196,247,57,25,114,118,215,100,200,203,133,56,70,13,102,148,83,97,124,112,47,103,203,138,221,9,59,95,89,225,212, +150,36,233,138,163,207,186,160,156,250,170,61,41,51,20,192,254,51,246,247,193,170,125,253,58,177,15,174,91,29,200,66,144,251,176,115,129,135,61,146,80,133,162,76,17,234,199,9,211,203,51,52,82,6,207,35, +216,222,160,0,65,111,138,52,124,117,135,151,202,179,137,71,22,255,43,46,161,203,133,192,132,53,145,149,149,59,242,220,173,20,101,226,151,249,73,212,27,80,70,166,37,241,100,240,117,246,165,5,180,205,72, +224,40,170,246,67,64,194,222,21,24,199,52,8,79,180,50,197,146,43,52,166,44,114,244,237,102,126,73,94,32,140,171,70,220,223,60,73,242,48,202,8,64,197,185,31,43,173,174,202,61,237,118,151,32,159,177,174, +16,29,72,94,80,64,150,7,100,196,152,149,249,64,57,247,246,80,203,125,133,40,34,129,86,172,202,51,150,95,149,211,6,62,243,60,160,178,86,21,82,60,108,222,121,231,157,11,77,92,112,193,5,125,89,149,27,68, +185,226,124,40,67,109,210,167,179,114,34,137,238,235,50,197,177,239,125,239,123,233,208,250,245,0,249,149,72,136,194,102,101,18,204,19,143,106,191,242,83,10,170,43,67,242,117,185,145,100,203,202,125,68, +85,98,20,245,252,14,178,33,15,168,22,39,61,173,140,198,25,49,200,254,172,75,18,244,250,140,223,188,126,16,229,132,188,20,169,62,92,177,30,121,178,121,132,20,39,37,121,148,27,100,145,166,121,113,145,36, +230,36,69,216,121,122,73,134,38,74,72,180,220,86,91,84,26,9,85,72,20,7,16,21,78,222,34,232,234,82,28,215,36,120,3,119,239,2,130,226,84,98,145,113,64,229,211,206,242,89,187,30,170,116,187,29,97,173,155, +167,124,74,173,114,231,0,191,53,134,253,186,11,12,200,112,43,76,197,213,202,146,154,141,233,151,159,237,136,115,152,144,48,189,245,132,202,231,17,140,14,60,150,33,207,209,151,185,34,159,105,28,50,65,54, +204,147,188,60,59,198,107,126,188,145,201,87,95,40,28,67,35,132,24,12,207,28,68,23,82,200,240,84,178,62,146,32,120,211,152,76,211,167,148,211,201,51,254,230,40,83,78,54,152,109,123,194,83,37,68,84,38, +33,206,152,77,82,116,2,206,210,244,140,8,43,215,11,57,121,117,136,147,185,62,17,242,156,218,39,40,180,20,133,166,96,82,164,51,54,7,236,92,224,68,150,5,234,204,37,51,178,117,148,120,214,202,118,152,95, +12,87,134,120,130,11,198,65,57,121,101,177,216,81,148,205,33,28,61,188,110,232,211,109,255,20,144,27,172,146,193,221,192,35,80,207,79,217,128,220,202,14,219,108,118,165,65,103,131,165,32,110,9,29,115, +223,151,175,251,197,85,150,19,214,154,48,13,41,46,94,177,69,226,245,171,211,61,7,120,130,226,176,227,190,44,231,17,65,16,228,96,85,199,147,158,140,96,51,66,229,29,235,254,224,118,22,65,178,136,70,215, +244,176,221,27,205,99,169,35,130,254,146,69,2,71,139,43,211,175,237,187,16,20,208,209,83,173,60,101,73,219,178,85,170,42,129,27,221,46,191,202,76,48,131,184,243,7,103,138,203,234,235,120,70,168,82,56, +83,234,44,116,170,158,71,1,18,99,229,214,107,23,93,116,209,104,50,84,49,113,197,21,158,33,222,117,215,93,11,77,92,120,225,133,89,179,163,50,77,134,40,244,144,173,205,87,116,86,33,224,170,163,108,150,218, +71,19,78,135,163,3,65,222,161,90,117,158,165,185,46,132,135,200,76,72,17,43,21,170,182,117,172,10,177,89,57,199,18,109,250,133,83,29,95,32,65,66,140,140,154,93,116,16,108,249,44,142,147,42,133,39,211, +115,242,226,139,43,142,42,42,159,10,119,163,248,250,102,69,240,36,234,209,7,23,221,95,185,239,36,35,141,50,158,103,249,67,148,77,101,121,92,170,114,63,229,126,149,140,177,14,163,64,150,3,100,249,195,104, +73,140,254,231,97,174,130,153,91,132,49,87,66,172,50,121,97,26,45,65,171,236,206,17,162,125,94,251,227,244,87,179,68,166,207,114,245,209,247,5,122,82,176,15,164,210,95,229,55,158,39,120,134,229,86,33, +74,52,80,135,103,166,112,119,13,186,80,150,135,80,249,62,22,114,204,40,156,123,232,112,75,103,10,201,96,167,14,51,22,119,133,57,9,86,3,83,189,140,35,166,194,10,137,124,138,164,123,131,122,20,240,129,80, +65,209,240,170,209,33,131,41,133,166,69,162,156,233,181,163,142,50,81,30,250,124,108,203,213,66,70,173,250,84,202,215,88,250,40,224,228,145,105,119,202,138,36,168,12,154,25,188,171,50,18,85,150,80,201, +157,156,112,179,217,223,148,171,170,237,20,1,161,128,205,187,191,218,254,126,199,31,205,116,241,139,59,218,69,55,119,95,153,234,254,109,217,19,229,111,239,183,255,229,246,3,237,166,231,103,85,180,164, +229,132,231,161,74,154,103,226,67,180,100,138,246,152,78,3,101,121,139,16,32,228,56,114,169,188,254,14,17,191,194,242,150,109,123,219,37,59,94,111,255,248,177,143,181,143,126,244,127,180,31,188,227,19, +237,242,83,186,251,105,182,206,202,239,184,232,162,118,209,223,62,221,222,241,201,43,218,201,115,210,244,16,67,75,57,84,171,125,41,34,139,251,78,180,25,241,106,166,232,232,242,16,46,55,158,147,225,134, +133,7,9,126,251,246,206,242,79,63,214,158,235,159,21,122,181,29,122,233,245,246,71,111,223,216,222,120,199,219,219,241,167,30,107,207,199,34,202,43,15,183,39,254,229,93,237,79,79,90,255,206,88,182,166, +224,254,172,206,149,29,46,35,84,71,132,246,25,231,53,96,177,59,127,71,140,143,213,175,33,10,177,131,97,251,133,239,180,207,28,92,127,64,114,99,55,240,215,143,29,110,91,54,118,191,175,29,25,66,229,177, +238,193,201,120,140,206,211,88,89,223,45,90,249,125,166,36,250,63,219,201,120,129,46,68,116,57,209,122,63,209,214,218,71,63,250,209,126,50,228,9,205,80,249,196,203,218,255,58,227,181,246,223,63,247,104, +107,187,191,210,206,60,246,185,246,157,23,103,71,55,119,251,159,106,183,181,207,118,202,82,178,113,207,61,247,176,159,114,251,47,255,242,47,211,121,7,173,201,193,100,229,132,178,203,127,247,221,119,175, +36,71,159,10,191,231,175,255,177,253,211,63,253,83,247,247,229,118,214,198,55,214,175,210,196,224,63,222,218,119,187,193,31,238,111,167,157,181,185,158,43,116,15,78,118,200,136,125,101,89,43,245,58,175, +228,60,193,104,226,249,135,195,154,208,214,246,155,233,123,80,110,103,137,254,171,179,11,255,78,186,172,221,25,131,191,248,59,45,248,191,31,244,73,159,110,215,111,124,188,119,143,232,244,164,203,238,108, +239,126,233,226,118,203,139,179,7,33,125,214,38,101,209,205,164,60,61,213,165,125,191,168,241,102,6,35,62,225,56,178,104,196,136,161,237,225,233,241,17,23,108,217,211,190,250,241,181,241,224,67,162,99, +175,181,227,59,206,108,39,133,66,54,239,110,59,223,245,139,246,243,231,242,167,177,60,158,139,161,201,212,83,147,175,55,123,140,119,167,133,82,125,113,71,104,243,57,199,218,199,62,246,177,227,124,134, +47,20,49,202,1,230,166,120,253,233,191,109,159,121,228,213,182,118,242,229,237,174,79,188,171,47,253,197,29,23,181,72,15,228,2,81,86,77,124,220,162,89,146,66,247,98,125,143,227,21,58,72,122,254,92,162, +183,61,112,202,95,253,213,95,29,255,245,175,127,221,183,201,16,67,82,201,58,244,227,218,151,134,179,1,176,125,103,232,85,21,151,201,194,118,117,188,146,67,138,24,38,101,236,88,90,113,248,41,145,224,20, +147,117,162,156,215,247,179,203,226,62,239,175,22,47,184,118,224,47,74,200,22,96,244,216,125,200,206,69,27,15,151,114,1,174,99,132,50,134,23,40,44,100,131,253,179,195,227,63,127,11,11,95,89,33,4,101,236, +157,89,205,21,40,34,35,18,135,124,125,254,82,6,89,154,126,44,247,139,243,213,166,248,192,145,193,104,161,254,70,95,152,112,216,50,44,249,49,206,222,84,79,4,87,173,46,115,208,149,79,146,44,157,72,179,165, +111,69,31,102,134,218,14,229,48,92,106,12,52,210,194,154,160,96,230,36,229,161,140,16,203,146,20,34,130,151,165,117,135,150,35,166,135,35,94,118,22,219,58,175,42,215,133,19,245,79,244,172,231,42,235,215, +62,41,179,148,185,112,183,184,44,67,146,35,148,60,183,102,78,207,84,87,218,246,12,141,201,15,67,19,209,35,203,243,154,32,173,175,114,93,30,151,242,168,8,146,29,9,81,109,75,190,209,133,145,76,8,194,176, +34,73,13,68,232,225,245,183,193,215,240,105,206,108,34,228,136,35,66,156,67,12,194,195,123,75,105,60,189,175,72,47,137,210,107,117,232,30,49,182,158,3,20,103,51,33,232,171,158,76,208,226,106,199,9,74, +8,32,159,248,0,156,79,42,66,205,202,9,123,162,174,66,154,220,105,64,114,22,67,73,40,25,131,179,204,59,162,21,156,233,151,101,119,217,210,187,95,1,22,74,249,104,14,21,227,3,244,168,68,190,154,215,29,95, +29,38,60,135,57,243,124,30,189,236,226,136,35,66,138,90,54,240,30,138,118,149,90,130,123,120,246,242,216,151,82,92,17,25,210,124,76,27,124,253,124,74,216,101,23,71,66,128,44,9,90,5,81,174,60,178,120,166, +88,186,150,6,149,133,80,31,143,218,210,184,215,186,11,151,163,71,102,196,7,21,244,171,227,42,207,46,142,118,15,103,46,243,164,133,153,164,243,17,7,236,141,57,251,79,117,230,235,21,189,2,86,37,65,38,18, +36,71,231,4,90,143,217,23,251,169,8,215,219,85,166,151,149,171,76,109,177,223,74,9,124,207,88,31,62,3,34,34,26,191,23,199,111,68,16,225,185,219,196,126,117,31,143,222,44,227,100,235,209,34,11,183,26,80, +150,116,113,128,114,129,85,144,224,215,41,211,47,76,100,33,203,73,138,251,202,238,180,200,193,193,70,61,230,15,85,58,171,65,114,178,194,8,147,149,83,137,36,210,108,66,165,121,139,218,145,17,187,119,36, +189,117,97,210,147,37,42,132,127,197,216,14,69,194,124,89,58,75,198,166,117,167,202,197,250,82,196,212,132,138,217,32,145,220,71,129,44,3,244,114,79,63,249,214,87,90,85,66,49,3,156,74,115,153,206,122, +204,166,210,51,69,184,161,86,65,154,163,115,225,171,179,67,134,52,143,253,28,136,132,96,88,146,239,250,12,144,60,145,17,158,199,104,70,23,207,30,157,220,178,176,170,62,150,33,77,25,171,148,187,240,78, +209,108,42,43,1,28,154,61,139,218,173,182,66,128,71,12,10,157,89,218,137,213,17,166,227,89,185,148,183,10,210,156,140,71,211,97,23,204,43,79,161,195,145,66,158,200,18,20,70,14,69,10,77,166,178,123,0,73, +180,158,29,14,73,141,189,205,146,153,33,195,113,148,15,188,33,75,101,33,36,83,8,45,73,100,8,90,241,75,20,105,193,194,83,208,104,71,3,113,197,58,196,51,148,101,97,144,3,246,193,103,4,221,203,196,248,171, +196,194,227,47,73,142,131,19,155,122,76,207,184,98,89,58,75,23,96,250,234,10,165,188,218,158,74,133,29,105,36,202,62,116,86,108,94,13,52,83,24,19,21,159,11,172,154,83,80,153,25,15,101,254,237,4,188,108, +66,149,33,58,253,190,128,19,88,150,86,74,147,14,45,127,117,30,93,128,144,103,100,16,226,170,133,146,169,114,37,90,89,182,152,69,15,166,212,125,154,77,216,19,30,206,13,76,36,252,24,149,64,139,19,154,171, +164,179,21,23,84,229,106,159,209,168,154,206,171,174,203,183,118,254,249,231,15,87,135,125,32,217,228,130,241,90,68,67,50,188,239,190,251,22,0,19,179,65,157,151,89,222,17,71,66,101,88,245,114,63,207,111, +183,165,161,100,104,191,106,220,43,192,7,229,157,122,67,220,119,23,200,142,249,133,80,106,72,131,10,132,252,46,255,122,24,35,23,201,140,66,153,194,69,25,241,210,239,14,59,187,243,4,90,155,214,164,53,4, +217,101,201,15,161,43,11,185,171,76,149,115,176,36,231,85,38,78,26,211,232,70,201,42,17,98,8,139,78,167,24,57,75,147,137,48,79,115,151,161,41,250,202,80,150,69,35,202,79,52,101,9,221,16,173,166,6,147, +17,95,214,176,202,2,138,25,169,174,146,230,86,81,197,185,195,21,40,25,57,200,76,17,114,19,157,175,220,166,79,133,253,26,96,150,181,177,108,234,226,39,249,67,66,113,130,82,61,44,153,241,76,229,122,68,153, +20,228,4,57,133,52,186,248,176,40,234,139,11,132,152,78,112,75,122,157,42,155,243,16,148,113,135,51,58,145,68,165,122,57,17,185,10,210,194,120,209,255,48,159,200,6,199,84,212,211,82,146,32,195,164,234, +57,143,196,224,167,210,92,158,231,81,128,36,234,174,231,126,45,66,157,154,80,41,105,226,24,122,167,101,71,60,88,133,37,193,141,240,243,232,224,138,242,180,213,149,156,45,149,49,49,171,12,33,89,168,128, +138,12,69,224,250,237,67,168,195,145,39,59,251,115,223,217,158,228,162,48,36,161,25,238,50,132,136,160,168,240,172,44,11,155,148,99,21,164,49,29,239,219,115,75,208,37,72,76,30,159,233,255,14,85,71,17, +215,10,60,175,247,9,140,32,188,106,185,27,108,25,210,24,177,250,62,148,180,100,29,58,123,123,36,200,102,95,217,165,44,119,7,79,135,201,202,178,168,207,8,151,149,171,143,85,38,78,68,77,249,200,140,252, +132,209,129,62,233,139,166,190,100,229,239,16,32,98,50,52,101,132,74,23,162,146,156,15,16,211,71,119,132,16,29,50,150,198,32,238,27,56,32,235,192,125,62,35,69,159,125,101,157,42,116,101,105,46,73,216, +57,71,199,170,114,79,126,86,65,26,219,236,167,234,58,137,176,116,162,162,144,238,50,94,215,93,64,161,103,89,58,75,116,113,32,142,64,25,129,190,46,180,185,43,101,72,147,49,134,49,237,219,183,111,244,86, +217,44,33,169,202,156,236,98,63,190,64,229,255,246,239,223,191,144,207,83,225,74,199,37,148,159,207,80,151,29,83,153,190,68,227,245,217,151,191,79,104,173,123,231,111,87,127,118,207,255,212,191,42,123, +243,243,248,194,19,157,51,245,37,57,90,148,10,240,118,51,4,41,15,25,252,121,62,45,14,133,102,109,69,125,221,65,170,49,15,107,130,89,246,71,72,101,47,75,245,105,167,52,63,149,193,49,180,58,212,61,149,213, +130,102,85,30,131,81,29,206,243,93,89,146,71,138,145,156,61,49,58,113,208,23,43,210,170,66,82,166,144,10,190,84,146,4,206,150,179,124,29,145,161,153,23,65,53,19,165,143,107,91,242,70,63,46,227,232,54, +57,186,64,150,33,122,227,30,207,99,223,103,150,177,239,232,9,33,200,224,209,110,21,191,157,128,51,197,169,223,140,171,220,189,253,150,221,209,157,162,142,6,42,196,227,103,197,23,34,180,204,165,152,59, +168,47,213,95,22,121,124,224,84,32,45,236,114,249,121,158,67,140,150,196,8,153,216,166,11,76,17,20,221,166,74,144,28,122,153,2,61,222,115,159,6,200,202,189,253,95,253,234,87,205,255,254,237,223,254,109, +120,64,108,72,158,20,215,179,59,192,184,120,177,112,103,69,242,238,17,182,193,124,65,86,32,194,220,151,51,254,112,14,162,162,93,89,68,80,40,119,106,145,103,180,62,177,103,207,158,209,187,196,72,90,83, +4,230,97,138,17,32,243,69,183,56,223,29,22,231,6,139,19,174,171,132,65,175,163,15,70,69,185,158,129,96,212,201,182,7,23,144,182,157,57,51,88,86,150,169,162,0,231,1,10,173,78,78,25,161,122,56,245,48,155, +161,72,178,177,61,231,151,209,36,78,90,97,225,105,215,61,218,127,68,61,190,217,119,221,105,235,55,82,110,219,127,115,95,30,127,42,87,227,113,62,31,94,208,64,51,101,57,185,86,73,150,71,29,63,79,251,82, +176,187,1,247,179,20,189,119,211,5,1,223,127,77,251,116,187,185,117,174,209,246,252,183,199,218,198,79,95,211,222,31,153,226,214,243,218,149,103,29,109,55,207,203,55,69,121,39,129,124,221,45,152,41,150, +2,57,145,121,130,196,104,66,84,178,92,9,146,206,205,110,159,117,98,119,30,25,190,51,36,4,180,159,126,189,237,253,198,207,102,113,250,149,231,218,207,95,235,71,217,61,53,189,177,181,199,30,110,207,134, +50,94,190,183,61,242,243,247,116,223,27,157,61,99,200,137,9,7,194,80,229,48,164,2,226,124,95,107,208,13,17,145,70,59,212,3,105,250,68,48,185,36,155,153,250,202,18,17,219,31,11,18,20,153,196,65,249,89, +95,182,109,127,187,233,156,35,237,242,175,255,180,219,188,169,157,115,228,242,214,109,246,255,124,95,231,29,60,120,176,74,17,70,229,221,36,108,216,143,126,73,90,35,25,230,40,147,37,37,35,27,147,18,56, +216,85,63,253,185,144,10,71,195,97,145,247,95,123,176,29,252,230,89,109,227,198,77,109,171,158,26,157,79,152,102,214,107,109,227,166,173,233,187,64,87,209,0,161,152,145,39,23,73,137,22,150,103,203,224, +186,60,191,138,12,81,103,237,198,23,143,31,191,226,189,177,121,172,125,255,170,203,218,189,175,172,159,122,252,248,214,118,254,45,55,182,77,143,156,213,30,220,124,75,59,247,200,165,237,250,103,103,199, +183,158,127,75,219,119,248,146,246,213,103,23,63,116,166,22,50,38,214,49,93,201,21,250,24,133,122,193,236,109,21,108,51,11,193,113,156,175,218,228,140,176,10,217,113,206,134,159,124,101,87,59,243,204, +51,187,191,191,110,247,252,242,141,182,101,255,119,218,119,246,111,153,91,246,229,246,179,23,143,181,77,155,183,182,95,30,62,218,255,202,223,183,118,159,224,213,63,39,52,223,23,113,113,217,204,125,81, +131,38,140,201,27,85,57,73,56,182,197,246,222,103,121,209,70,86,146,208,47,255,172,123,52,252,196,247,183,109,189,21,182,183,83,79,108,237,208,115,135,219,134,78,1,109,247,190,246,193,200,0,79,56,208, +206,121,239,161,246,252,51,139,64,115,114,99,148,33,131,251,130,170,234,145,80,37,180,19,173,67,159,136,81,255,140,8,217,116,90,101,107,103,157,117,86,159,9,198,63,145,207,214,46,222,127,235,236,153,133, +127,126,211,238,246,181,57,241,181,83,175,107,143,94,254,158,190,252,208,77,103,183,175,205,221,193,213,224,144,147,128,172,247,182,183,189,109,116,90,70,130,148,41,219,102,3,178,190,250,246,71,103,153, +68,141,206,219,189,123,119,186,20,196,65,100,3,90,180,253,186,2,233,26,12,133,60,135,119,115,68,121,88,228,119,253,167,62,216,166,22,72,164,56,25,193,121,105,116,113,212,167,138,203,124,59,59,238,51,72, +178,61,83,98,42,41,234,248,117,0,202,66,230,207,166,217,234,131,80,231,128,61,165,150,82,250,252,131,254,149,53,94,229,253,217,121,25,212,249,120,173,18,24,38,47,116,63,9,230,138,173,202,125,224,188,108, +207,103,32,196,61,25,47,140,190,55,56,5,193,85,208,64,230,149,50,171,54,221,173,166,230,3,85,27,174,60,246,169,231,5,131,107,98,59,126,255,240,15,255,112,33,227,156,188,93,222,87,112,50,161,171,9,136, +163,193,19,31,42,43,234,78,93,154,171,142,137,248,150,41,143,114,171,173,225,201,116,250,10,23,22,167,226,174,199,112,10,232,57,255,84,142,175,103,127,217,175,115,131,18,154,172,92,22,31,230,49,243,74, +83,202,246,99,253,100,40,26,240,59,39,164,93,191,29,70,130,84,90,119,87,33,49,209,47,149,178,170,108,21,23,171,234,72,166,85,148,237,138,28,189,85,182,98,117,79,36,178,204,78,238,226,225,51,83,136,39, +59,21,161,202,53,72,206,62,88,165,204,140,36,188,158,16,10,166,178,37,207,128,98,134,31,53,226,209,128,176,201,148,20,66,49,196,177,190,79,81,249,140,18,223,16,225,237,82,73,60,198,114,102,150,89,180, +202,38,78,158,249,174,157,113,198,25,11,223,26,139,14,153,192,200,170,250,117,246,37,75,63,245,212,83,35,210,222,187,119,111,191,95,77,110,84,121,106,13,143,238,230,68,204,206,130,237,121,60,235,211,167, +235,107,187,118,237,42,239,21,102,227,82,74,54,120,239,84,3,14,171,232,54,89,198,114,15,107,209,102,70,118,25,223,100,10,80,89,92,28,93,166,108,62,56,217,79,164,178,151,20,184,79,50,28,50,153,200,96,239, +3,117,178,28,45,73,227,245,157,83,57,200,178,99,106,115,106,66,229,174,62,68,16,134,173,241,192,183,181,11,110,125,178,125,238,180,217,99,117,241,183,237,192,109,45,32,30,127,95,248,224,248,194,9,253, +158,9,9,253,183,66,1,9,108,234,113,249,44,37,206,208,151,17,37,211,225,17,71,81,187,163,24,254,161,253,109,239,166,217,209,30,42,127,124,113,187,110,239,177,246,173,157,59,219,206,203,15,182,141,87,127, +161,125,40,121,72,137,100,84,205,193,157,100,185,34,68,66,101,91,89,185,71,163,85,148,237,235,139,11,23,71,103,74,56,161,93,248,95,91,59,120,240,88,255,186,188,190,108,219,230,174,224,254,246,147,80,200, +203,247,180,135,15,189,183,157,210,161,192,19,31,207,27,72,160,83,177,62,51,196,212,130,102,111,148,249,213,41,181,59,53,161,162,187,18,137,93,27,179,117,127,250,234,246,3,215,182,147,94,184,191,253,108, +102,254,254,216,246,205,155,218,177,195,191,236,229,140,14,95,137,5,18,172,8,103,19,41,70,147,204,143,25,105,178,251,143,105,173,169,84,89,109,175,162,108,159,24,141,238,20,157,133,141,15,180,243,246, +28,109,15,223,243,114,191,26,222,105,96,110,229,216,92,87,214,134,13,107,109,211,214,119,142,190,32,163,108,146,214,153,18,92,217,102,212,169,242,136,101,229,113,92,202,155,154,19,232,152,79,210,54,156, +250,185,39,218,19,79,196,223,63,180,11,182,254,182,125,224,243,87,181,227,55,252,125,251,81,215,240,111,223,232,86,127,223,248,205,108,174,222,109,183,55,102,143,201,203,55,143,190,250,175,195,182,55, +44,88,186,229,43,178,204,18,153,41,151,241,72,21,231,175,170,236,209,220,101,199,142,29,93,91,202,133,58,223,191,253,230,129,252,36,252,209,71,62,221,62,121,120,127,187,125,203,125,237,147,119,207,220, +224,67,95,120,186,157,242,220,206,246,229,103,214,223,53,76,166,149,171,248,202,79,150,84,197,121,188,183,136,74,171,220,136,237,168,95,126,152,85,253,243,151,253,12,220,117,250,233,167,167,119,137,197, +137,39,92,116,71,219,127,248,19,237,75,63,233,124,225,132,11,219,237,55,111,110,15,157,254,197,246,147,119,94,212,109,111,105,15,237,232,182,231,81,34,243,241,40,243,153,30,253,158,190,27,40,115,8,87, +25,167,103,134,82,6,23,90,42,5,40,59,212,239,194,157,162,62,144,142,1,102,233,229,47,239,110,159,188,97,173,93,253,131,31,180,167,111,222,219,142,118,110,242,227,249,221,101,14,85,117,174,78,120,60,203, +229,51,183,200,72,181,34,218,25,87,175,127,70,115,193,207,65,244,124,80,52,234,173,133,11,72,208,41,166,206,124,57,179,144,44,94,181,153,165,178,172,43,200,251,249,85,121,200,165,52,58,91,87,144,220,222, +71,63,248,8,165,21,116,221,159,61,212,176,51,230,2,62,67,91,101,165,135,214,35,185,17,25,89,185,148,185,74,122,237,138,151,252,195,162,40,125,166,82,138,67,57,99,105,42,42,179,118,133,50,133,78,42,83, +219,156,82,103,199,135,188,222,110,219,201,148,239,185,194,154,72,208,217,150,240,118,210,145,207,101,110,241,244,211,79,143,138,187,233,118,191,95,177,185,160,41,24,59,17,74,224,101,229,113,188,138,56, +20,232,241,199,31,31,201,183,246,225,15,127,184,252,202,140,251,184,11,81,41,66,229,62,104,34,130,62,41,23,200,218,91,166,0,158,35,88,79,41,91,209,70,99,25,61,50,147,105,153,144,33,11,203,39,125,185,204, +227,51,213,237,144,166,239,50,155,35,204,185,94,233,229,62,23,144,75,138,24,153,69,138,155,220,157,134,84,88,154,28,101,73,152,237,201,71,41,116,230,99,20,50,218,156,202,241,121,62,217,218,253,92,178, +101,229,236,99,21,101,59,71,45,60,51,196,41,166,210,83,143,0,222,17,5,164,134,105,137,44,23,144,133,34,54,103,132,154,205,3,60,26,80,150,85,148,45,174,209,121,253,139,148,178,119,126,102,55,73,102,108, +236,126,235,3,153,202,241,61,97,225,96,170,8,226,229,153,98,167,148,29,199,184,176,178,246,23,127,241,23,61,9,198,224,214,27,63,161,93,244,221,91,218,57,243,5,145,214,186,217,225,165,31,111,119,117,211, +128,19,46,250,110,187,101,126,224,197,111,126,164,125,177,75,147,73,104,36,162,41,146,36,87,104,54,152,145,236,136,178,139,157,42,98,101,10,245,72,81,68,129,15,181,191,253,225,251,218,207,62,252,119,237, +199,108,229,132,139,219,255,252,135,45,237,129,40,159,111,63,248,145,46,37,158,215,201,6,224,107,13,21,98,170,201,208,148,2,212,159,243,142,159,67,101,75,1,67,34,148,178,239,59,183,182,77,71,143,180,195, +246,54,169,181,237,91,90,123,248,222,246,147,88,36,121,249,174,246,224,139,39,182,247,125,104,189,59,135,123,28,161,207,86,185,124,212,201,8,85,183,202,249,49,149,75,118,241,86,70,150,138,34,170,187,64, +130,100,223,161,163,110,160,155,54,237,109,223,233,38,62,63,252,225,15,187,111,138,188,179,103,243,255,178,173,91,21,58,250,234,192,236,135,143,28,237,151,204,120,121,141,218,231,28,93,81,132,139,38,178, +156,172,226,22,149,2,171,242,129,200,176,52,54,53,137,146,162,213,111,239,250,153,214,250,232,119,232,91,45,178,184,51,206,184,177,29,219,123,109,187,240,132,190,230,236,166,201,216,234,151,202,186,91, +229,186,85,33,182,33,141,235,215,99,113,134,18,77,76,50,206,224,224,169,92,242,142,206,243,16,157,41,155,253,247,10,8,173,156,246,249,39,219,147,79,198,223,173,237,130,109,221,18,248,143,190,216,118,124, +241,199,243,101,170,31,181,251,187,123,31,79,122,127,175,129,126,29,112,253,223,90,59,118,36,150,206,102,74,233,27,132,219,72,128,101,185,124,156,199,144,155,205,57,102,93,207,30,238,146,91,169,76,253, +175,170,108,162,164,87,192,143,254,238,35,237,35,31,249,72,59,253,244,79,180,187,254,245,120,219,126,225,237,237,246,3,219,240,192,68,23,7,186,229,175,127,125,245,104,219,184,121,123,47,64,132,146,45, +155,187,27,169,186,105,37,73,70,23,38,253,89,62,41,136,3,160,192,26,204,155,81,132,206,87,88,147,155,121,194,52,149,88,141,158,29,86,197,151,127,214,125,53,225,228,211,218,31,247,190,245,103,109,255,222, +181,118,228,112,55,119,62,220,125,97,102,239,254,246,103,113,57,189,187,78,112,110,220,42,247,236,250,221,228,34,154,169,139,158,85,158,64,120,199,53,62,189,9,58,251,141,227,186,87,56,126,163,142,110, +146,100,162,147,41,91,10,30,110,147,211,108,144,48,142,237,237,7,110,109,55,237,153,37,2,135,110,60,163,125,57,214,190,226,223,7,63,223,158,188,178,191,181,180,47,255,210,143,215,47,164,70,89,184,18,255, +113,54,56,58,96,59,62,233,201,66,170,44,236,208,87,83,254,161,8,162,78,219,63,232,136,157,255,214,58,232,15,78,45,4,120,182,149,37,26,81,71,68,228,28,80,101,113,174,0,213,83,34,196,227,108,35,75,180,60, +161,137,115,117,171,221,84,255,174,232,97,54,168,78,170,193,71,7,21,217,233,88,28,159,74,125,29,146,234,75,81,128,225,73,219,36,85,101,171,226,32,193,88,235,124,82,96,198,1,58,182,48,187,252,243,63,255, +243,133,15,45,9,98,62,104,15,73,66,1,17,66,33,98,123,149,69,10,135,187,178,52,239,159,86,206,208,148,185,141,35,105,97,76,116,1,111,148,13,58,228,181,95,193,86,29,101,245,42,87,80,127,84,128,215,213,49, +159,169,102,252,50,229,10,131,49,119,238,220,153,222,42,235,137,6,81,65,45,50,4,70,249,120,82,213,202,11,30,110,9,10,235,235,251,236,123,200,225,231,47,109,226,177,112,133,12,5,35,210,67,34,215,103,134, +62,24,37,25,217,203,75,153,64,240,78,110,18,139,251,223,84,142,207,121,72,182,56,34,193,169,100,89,94,151,232,200,57,92,203,200,110,236,242,181,128,62,170,112,80,140,209,25,161,100,131,201,224,172,118, +156,15,72,114,25,60,201,49,36,65,41,74,153,165,218,117,194,93,85,217,148,99,184,50,68,97,53,185,97,10,59,149,206,186,165,156,205,51,50,163,139,121,253,106,66,147,33,173,226,173,74,217,68,211,60,175,152, +223,0,49,191,15,64,194,186,54,9,237,140,152,56,17,25,105,56,121,215,95,28,231,125,71,158,18,207,5,27,110,222,100,223,114,209,12,161,30,165,88,199,149,55,204,83,156,220,180,79,119,152,218,118,152,103,108, +76,56,51,58,176,47,109,11,214,84,10,93,74,138,246,156,66,254,175,243,104,64,41,148,134,81,63,93,189,197,59,68,162,241,15,14,51,196,39,219,231,187,91,97,250,127,219,15,180,91,187,84,119,118,163,212,109, +243,41,242,250,162,71,84,225,77,78,178,150,251,170,79,127,157,185,179,68,70,101,26,160,187,169,162,131,20,147,133,210,52,95,225,141,146,3,49,69,190,127,242,243,237,140,152,0,116,131,190,237,166,61,237, +248,209,238,161,169,77,155,186,101,130,157,221,229,242,110,164,31,252,155,246,212,85,173,221,120,198,151,251,75,228,206,3,25,18,136,54,31,180,167,168,60,223,143,137,63,156,72,179,164,135,237,80,1,131, +146,191,217,61,54,119,117,63,183,57,218,30,185,236,19,125,253,231,62,240,221,118,77,251,70,187,164,187,77,102,176,252,183,119,183,246,232,21,235,101,109,123,59,112,235,53,173,125,227,146,166,106,81,55, +238,54,89,229,159,95,50,163,240,171,12,140,254,78,5,9,1,126,137,174,146,105,195,51,95,218,217,186,75,228,221,223,39,219,221,47,191,179,255,123,185,187,1,42,30,138,28,13,254,216,177,126,55,75,52,24,33, +86,25,124,134,150,41,216,211,159,157,143,24,219,229,235,83,153,164,203,55,92,28,117,120,198,45,48,87,205,102,189,237,208,13,59,186,229,239,217,237,51,91,30,218,209,190,212,221,22,19,119,140,220,118,211, +230,246,200,132,11,100,48,87,153,207,219,61,7,112,65,221,13,248,144,85,230,219,89,54,41,3,142,92,37,155,11,100,147,145,56,41,238,31,60,112,219,77,109,79,255,68,221,177,118,240,242,79,245,240,231,64,157, +140,178,78,169,236,5,139,216,125,195,238,215,238,199,110,56,71,87,74,124,12,249,217,29,34,34,25,14,44,203,220,188,76,48,118,159,204,220,34,115,165,153,146,215,111,186,154,202,22,125,206,81,41,58,235,135, +74,75,239,16,161,63,170,178,251,232,194,188,26,147,12,250,44,211,88,110,123,14,159,229,26,83,124,82,173,59,16,1,25,95,112,29,49,220,232,255,1,91,79,99,204,179,97,196,216,0,0,0,0,73,69,78,68,174,66,96, +130,0,0}; + +const char* CompressorAudioProcessorEditor::scaleLr_png = (const char*) resource_CompressorAudioProcessorEditor_scaleLr_png; +const int CompressorAudioProcessorEditor::scaleLr_pngSize = 18298;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/compressor/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,124 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Compressor: dynamic range compression effect + See textbook Chapter 6: Dynamics Processing + + Code by Joshua Reiss, Brecht de Man and Andrew McPherson + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __JUCER_HEADER_COMPRESSORAUDIOPROCESSOREDITOR_PLUGINEDITOR_75AA535A__ +#define __JUCER_HEADER_COMPRESSORAUDIOPROCESSOREDITOR_PLUGINEDITOR_75AA535A__ + +//[Headers] -- You can add your own extra header files here -- +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class CompressorAudioProcessorEditor : public AudioProcessorEditor, + public Timer, + public ButtonListener, + public SliderListener +{ +public: + //============================================================================== + CompressorAudioProcessorEditor (CompressorAudioProcessor* ownerFilter); + ~CompressorAudioProcessorEditor(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + void timerCallback(); + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void buttonClicked (Button* buttonThatWasClicked); + void sliderValueChanged (Slider* sliderThatWasMoved); + + // Binary resources: + static const char* brushedMetalDark_jpg; + static const int brushedMetalDark_jpgSize; + static const char* c4dm_png2; + static const int c4dm_png2Size; + static const char* qmul_png2; + static const int qmul_png2Size; + static const char* knobstrip_png; + static const int knobstrip_pngSize; + static const char* scaleLr_png; + static const int scaleLr_pngSize; + + + //============================================================================== + juce_UseDebuggingNewOperator + +private: + //[UserVariables] -- You can add your own custom variables in this section. + + ScopedPointer<ResizableCornerComponent> resizer; + ComponentBoundsConstrainer resizeLimits; + + + + AudioPlayHead::CurrentPositionInfo lastDisplayedPosition; + + CompressorAudioProcessor* getProcessor() const + { + return static_cast <CompressorAudioProcessor*> (getAudioProcessor()); + } + + void displayPositionInfo (const AudioPlayHead::CurrentPositionInfo& pos); + + //[/UserVariables] + + //============================================================================== + TextButton* buttonONOFF; + Label* label; + Slider* sliderThreshold; + Label* label2; + Slider* sliderRatio; + Label* label3; + Slider* sliderGain; + Label* label7; + Slider* sliderAttack; + Label* label5; + Slider* sliderRelease; + Label* label6; + Image cachedImage_brushedMetalDark_jpg; + + + //============================================================================== + // (prevent copy constructor and operator= being generated..) + CompressorAudioProcessorEditor (const CompressorAudioProcessorEditor&); + const CompressorAudioProcessorEditor& operator= (const CompressorAudioProcessorEditor&); +}; + + +#endif // __JUCER_HEADER_COMPRESSORAUDIOPROCESSOREDITOR_PLUGINEDITOR_75AA535A__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/compressor/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,293 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Compressor: dynamic range compression effect + See textbook Chapter 6: Dynamics Processing + + Code by Joshua Reiss, Brecht de Man and Andrew McPherson + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +const float tau = 200; +CompressorAudioProcessor::CompressorAudioProcessor() + // Initializer List + : + inputBuffer(1,1), + nhost(0) +{ + lastUIWidth = 850; + lastUIHeight = 650; + lastPosInfo.resetToDefault(); +} +CompressorAudioProcessor::~CompressorAudioProcessor() +{ +} +//============================================================================== +void CompressorAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback initialisation that you need. + M = round(getNumInputChannels()/2); + samplerate = (float)getSampleRate(); + bufferSize = getBlockSize(); + // Allocate a lot of dynamic memory here + x_g .allocate(bufferSize, true); + x_l .allocate(bufferSize, true); + y_g .allocate(bufferSize, true); + y_l .allocate(bufferSize, true); + c .allocate(bufferSize, true); + yL_prev=0; + autoTime = false; + compressorONOFF = false; + resetAll(); +} +void CompressorAudioProcessor::releaseResources() +{ + // When playback stops, you can use this to free up any spare memory, etc. +} +void CompressorAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + if (compressorONOFF) + { + inputBuffer.setSize(M,bufferSize); + inputBuffer.clear(); + for (int m = 0 ; m < M ; ++m) + { + if ( (threshold< 0) ) + { + inputBuffer.clear(m,0,bufferSize); + // Mix down left-right to analyse the input + inputBuffer.addFrom(m,0,buffer,m*2,0,bufferSize,0.5); + inputBuffer.addFrom(m,0,buffer,m*2+1,0,bufferSize,0.5); + // compression : calculates the control voltage + compressor(inputBuffer,m); + // apply control voltage to the audio signal + for (int i = 0 ; i < bufferSize ; ++i) + { + buffer.getSampleData(2*m+0)[i] *= c[i]; + buffer.getSampleData(2*m+1)[i] *= c[i]; + } + inputBuffer.clear(m,0,bufferSize); + // Mix down left-right to analyse the output + inputBuffer.addFrom(m,0,buffer,m*2,0,bufferSize,0.5); + inputBuffer.addFrom(m,0,buffer,m*2+1,0,bufferSize,0.5); + } + } + } +} +// compressor functions +void CompressorAudioProcessor::compressor(AudioSampleBuffer &buffer, int m) +{ + alphaAttack = exp(-1/(0.001 * samplerate * tauAttack)); + alphaRelease= exp(-1/(0.001 * samplerate * tauRelease)); + for (int i = 0 ; i < bufferSize ; ++i) + { + //Level detection- estimate level using peak detector + if (fabs(buffer.getSampleData(m)[i]) < 0.000001) x_g[i] =-120; + else x_g[i] =20*log10(fabs(buffer.getSampleData(m)[i])); + //Gain computer- static apply input/output curve + if (x_g[i] >= threshold) y_g[i] = threshold+ (x_g[i] - threshold) / ratio; + else y_g[i] = x_g[i]; + x_l[i] = x_g[i] - y_g[i]; + //Ballistics- smoothing of the gain + if (x_l[0]>yL_prev) y_l[i]=alphaAttack * yL_prev+(1 - alphaAttack ) * x_l[i] ; + else y_l[i]=alphaRelease* yL_prev+(1 - alphaRelease) * x_l[i] ; + //find control + c[i] = pow(10,(makeUpGain - y_l[i])/20); + yL_prev=y_l[i]; + } +} +template <class T> const T& CompressorAudioProcessor::max( const T& a, const T& b ) +{ + return (a < b) ? b : a; +} +void CompressorAudioProcessor::resetAll() +{ + tauAttack=0;tauRelease = 0; + alphaAttack=0;alphaRelease = 0; + threshold = 0; + ratio= 1; + makeUpGain= 0; + yL_prev=0; + for (int i = 0 ; i < bufferSize ; ++i) + { + x_g[i] = 0; y_g[i] = 0; + x_l[i] = 0; y_l[i] = 0; + c[i] = 0; + } +} +////////////////////////////////////////////// +float CompressorAudioProcessor::getThreshold() +{ + return threshold; +} +float CompressorAudioProcessor::getRatio() +{ + return ratio; +} +float CompressorAudioProcessor::getGain() +{ + return makeUpGain;//problem? +} +float CompressorAudioProcessor::getAttackTime() +{ + return tauAttack; +} +float CompressorAudioProcessor::getReleaseTime() +{ + return tauRelease; +} +//////////////////////////////////////////////////////// +void CompressorAudioProcessor::setThreshold(float T) +{ + threshold= T; +} +void CompressorAudioProcessor::setGain(float G) +{ + makeUpGain= G; +} +void CompressorAudioProcessor::setRatio(float R) +{ + ratio= R; +} +void CompressorAudioProcessor::setAttackTime(float A) +{ + tauAttack = A; +} +void CompressorAudioProcessor::setReleaseTime(float R) +{ + tauRelease = R; +} +bool CompressorAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} +AudioProcessorEditor* CompressorAudioProcessor::createEditor() +{ + return new CompressorAudioProcessorEditor (this); +} +//============================================================================== +void CompressorAudioProcessor::getStateInformation (MemoryBlock& destData) +{ +//Use this to store your parameters in memory block, either as raw data, or use XML or ValueTree classes as intermediaries to make it easy to save and load complex data. +} +void CompressorAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ +// Use this to restore your parameters from this memory block, whose contents will have been created by the getStateInformation() call. +} +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new CompressorAudioProcessor(); +} +int CompressorAudioProcessor::round(float inn) +{ + if (inn > 0) return (int) (inn + 0.5); + else return (int) (inn - 0.5); +} +const String CompressorAudioProcessor::getName() const +{ + return JucePlugin_Name; +} +int CompressorAudioProcessor::getNumParameters() +{ + return 0; +} +float CompressorAudioProcessor::getParameter (int index) +{ + return 0.0f; +} +void CompressorAudioProcessor::setParameter (int index, float newValue) +{ +} +const String CompressorAudioProcessor::getParameterName (int index) +{ + return String::empty; +} +const String CompressorAudioProcessor::getParameterText (int index) +{ + return String::empty; +} +const String CompressorAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} +const String CompressorAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} +bool CompressorAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} +bool CompressorAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} +bool CompressorAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double CompressorAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} +bool CompressorAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} +bool CompressorAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} +int CompressorAudioProcessor::getNumPrograms() +{ + return 0; +} +int CompressorAudioProcessor::getCurrentProgram() +{ + return 0; +} +void CompressorAudioProcessor::setCurrentProgram (int index) +{ +} +const String CompressorAudioProcessor::getProgramName (int index) +{ + return String::empty; +} +void CompressorAudioProcessor::changeProgramName (int index, const String& newName) +{ +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/compressor/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,122 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Compressor: dynamic range compression effect + See textbook Chapter 6: Dynamics Processing + + Code by Joshua Reiss, Brecht de Man and Andrew McPherson + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_88534BAA__ +#define __PLUGINPROCESSOR_H_88534BAA__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include <math.h> +class CompressorAudioProcessor : public AudioProcessor +{ +public: + CompressorAudioProcessor(); + ~CompressorAudioProcessor(); + + int bufferSize; + + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + void compressor(AudioSampleBuffer &buffer, int m);// compressor functions + + template <class T> const T& max ( const T& a, const T& b ); + + AudioProcessorEditor* createEditor(); + + bool hasEditor() const; + + AudioPlayHead::CurrentPositionInfo lastPosInfo; + + int round(float inn); + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + float getThreshold(); + float getRatio(); + float getGain(); + float getAttackTime(); + float getReleaseTime(); + void setThreshold(float T); + void setGain(float G); + void setRatio(float R); + void setAttackTime(float A); + void setReleaseTime(float R); + void resetAll(); + + // parameters + + bool compressorONOFF; + int M; + bool autoTime; + +private: + AudioSampleBuffer inputBuffer; + +// int bufferSize; + //these are used to persist UI's size- values are stored along with filter's other parameters, and UI component will update them when it gets resized. + int lastUIWidth, lastUIHeight; + + HeapBlock <float> x_g, x_l,y_g, y_l,c;// input, output, control + // parameters + float ratio,threshold,makeUpGain,tauAttack,tauRelease,alphaAttack,alphaRelease,yL_prev; + int nhost; + int samplerate; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CompressorAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_88534BAA__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/delay/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,149 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Delay: basic delay effect with feedback + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +DelayAudioProcessorEditor::DelayAudioProcessorEditor (DelayAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + delayLengthLabel_("", "Delay (sec):"), + feedbackLabel_("", "Feedback:"), + dryMixLabel_("", "Dry Mix Level:"), + wetMixLabel_("", "Delayed Mix Level:") +{ + + // Set up the sliders + addAndMakeVisible (&delayLengthSlider_); + delayLengthSlider_.setSliderStyle (Slider::Rotary); + delayLengthSlider_.addListener (this); + delayLengthSlider_.setRange (0.01, 2.0, 0.01); + + addAndMakeVisible (&feedbackSlider_); + feedbackSlider_.setSliderStyle (Slider::Rotary); + feedbackSlider_.addListener (this); + feedbackSlider_.setRange (0.0, 0.995, 0.005); + + addAndMakeVisible (&dryMixSlider_); + dryMixSlider_.setSliderStyle (Slider::Rotary); + dryMixSlider_.addListener (this); + dryMixSlider_.setRange (0.0, 1.0, 0.01); + + addAndMakeVisible (&wetMixSlider_); + wetMixSlider_.setSliderStyle (Slider::Rotary); + wetMixSlider_.addListener (this); + wetMixSlider_.setRange (0.0, 1.0, 0.01); + + delayLengthLabel_.attachToComponent(&delayLengthSlider_, false); + delayLengthLabel_.setFont(Font (11.0f)); + + feedbackLabel_.attachToComponent(&feedbackSlider_, false); + feedbackLabel_.setFont(Font (11.0f)); + + dryMixLabel_.attachToComponent(&dryMixSlider_, false); + dryMixLabel_.setFont(Font (11.0f)); + + wetMixLabel_.attachToComponent(&wetMixSlider_, false); + wetMixLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 140, 500, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +DelayAudioProcessorEditor::~DelayAudioProcessorEditor() +{ +} + +//============================================================================== +void DelayAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void DelayAudioProcessorEditor::resized() +{ + delayLengthSlider_.setBounds (20, 20, 150, 40); + feedbackSlider_.setBounds (200, 20, 150, 40); + dryMixSlider_.setBounds(20, 80, 150, 40); + wetMixSlider_.setBounds(200, 80, 150, 40); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void DelayAudioProcessorEditor::timerCallback() +{ + DelayAudioProcessor* ourProcessor = getProcessor(); + + delayLengthSlider_.setValue(ourProcessor->delayLength_, dontSendNotification); + feedbackSlider_.setValue(ourProcessor->feedback_, dontSendNotification); + dryMixSlider_.setValue(ourProcessor->dryMix_, dontSendNotification); + wetMixSlider_.setValue(ourProcessor->wetMix_, dontSendNotification); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void DelayAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &delayLengthSlider_) + { + getProcessor()->setParameterNotifyingHost (DelayAudioProcessor::kDelayLengthParam, + (float)delayLengthSlider_.getValue()); + } + else if (slider == &feedbackSlider_) + { + getProcessor()->setParameterNotifyingHost (DelayAudioProcessor::kFeedbackParam, + (float)feedbackSlider_.getValue()); + } + else if (slider == &dryMixSlider_) + { + getProcessor()->setParameterNotifyingHost (DelayAudioProcessor::kDryMixParam, + (float)dryMixSlider_.getValue()); + } + else if (slider == &wetMixSlider_) + { + getProcessor()->setParameterNotifyingHost (DelayAudioProcessor::kWetMixParam, + (float)wetMixSlider_.getValue()); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/delay/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,68 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Delay: basic delay effect with feedback + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class DelayAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public Timer +{ +public: + DelayAudioProcessorEditor (DelayAudioProcessor* ownerFilter); + ~DelayAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + +private: + Label delayLengthLabel_, feedbackLabel_, dryMixLabel_, wetMixLabel_; + Slider delayLengthSlider_, feedbackSlider_, dryMixSlider_, wetMixSlider_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + DelayAudioProcessor* getProcessor() const + { + return static_cast <DelayAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/delay/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,366 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Delay: basic delay effect with feedback + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +//============================================================================== +DelayAudioProcessor::DelayAudioProcessor() : delayBuffer_ (2, 1) +{ + // Set default values: + delayLength_ = 0.5; + dryMix_ = 1.0; + wetMix_ = 0.5; + feedback_ = 0.75; + delayBufferLength_ = 1; + + // Start the circular buffer pointers at the beginning + delayReadPosition_ = 0; + delayWritePosition_ = 0; + + lastUIWidth_ = 370; + lastUIHeight_ = 140; +} + +DelayAudioProcessor::~DelayAudioProcessor() +{ +} + +//============================================================================== +const String DelayAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int DelayAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float DelayAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kDryMixParam: return dryMix_; + case kWetMixParam: return wetMix_; + case kFeedbackParam: return feedback_; + case kDelayLengthParam:return delayLength_; + default: return 0.0f; + } +} + +void DelayAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kDryMixParam: + dryMix_ = newValue; + break; + case kWetMixParam: + wetMix_ = newValue; + break; + case kFeedbackParam: + feedback_ = newValue; + break; + case kDelayLengthParam: + delayLength_ = newValue; + delayReadPosition_ = (int)(delayWritePosition_ - (delayLength_ * getSampleRate()) + + delayBufferLength_) % delayBufferLength_; + break; + default: + break; + } +} + +const String DelayAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kDryMixParam: return "dry mix"; + case kWetMixParam: return "wet mix"; + case kFeedbackParam: return "feedback"; + case kDelayLengthParam:return "delay"; + default: break; + } + + return String::empty; +} + +const String DelayAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String DelayAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String DelayAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool DelayAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool DelayAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool DelayAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} +double DelayAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} +bool DelayAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool DelayAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int DelayAudioProcessor::getNumPrograms() +{ + return 0; +} + +int DelayAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void DelayAudioProcessor::setCurrentProgram (int index) +{ +} + +const String DelayAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void DelayAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void DelayAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Allocate and zero the delay buffer (size will depend on current sample rate) + // Sanity check the result so we don't end up with any zero-length calculations + delayBufferLength_ = (int)(2.0*sampleRate); + if(delayBufferLength_ < 1) + delayBufferLength_ = 1; + delayBuffer_.setSize(2, delayBufferLength_); + delayBuffer_.clear(); + + // This method gives us the sample rate. Use this to figure out what the delay position + // offset should be (since it is specified in seconds, and we need to convert it to a number + // of samples) + delayReadPosition_ = (int)(delayWritePosition_ - (delayLength_ * getSampleRate()) + + delayBufferLength_) % delayBufferLength_; +} + +void DelayAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + // The delay buffer will stay in memory until the effect is unloaded. +} + +void DelayAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + delayBuffer_.clear(); +} + + +void DelayAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel, dpr, dpw; // dpr = delay read pointer; dpw = delay write pointer + + // Go through each channel of audio that's passed in. In this example we apply identical + // effects to each channel, regardless of how many input channels there are. For some effects, like + // a stereo chorus or panner, you might do something different for each channel. + + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // delayData is the circular buffer for implementing delay on this channel + float* delayData = delayBuffer_.getSampleData (jmin (channel, delayBuffer_.getNumChannels() - 1)); + + // Make a temporary copy of any state variables declared in PluginProcessor.h which need to be + // maintained between calls to processBlock(). Each channel needs to be processed identically + // which means that the activity of processing one channel can't affect the state variable for + // the next channel. + + dpr = delayReadPosition_; + dpw = delayWritePosition_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + float out = 0.0; + + // In this example, the output is the input plus the contents of the delay buffer (weighted by delayMix) + // The last term implements a tremolo (variable amplitude) on the whole thing. + + out = (dryMix_ * in + wetMix_ * delayData[dpr]); + + // Store the current information in the delay buffer. delayData[dpr] is the delay sample we just read, + // i.e. what came out of the buffer. delayData[dpw] is what we write to the buffer, i.e. what goes in + + delayData[dpw] = in + (delayData[dpr] * feedback_); + + if (++dpr >= delayBufferLength_) + dpr = 0; + if (++dpw >= delayBufferLength_) + dpw = 0; + + // Store the output sample in the buffer, replacing the input + channelData[i] = out; + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + + delayReadPosition_ = dpr; + delayWritePosition_ = dpw; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool DelayAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* DelayAudioProcessor::createEditor() +{ + return new DelayAudioProcessorEditor (this); +} + +//============================================================================== +void DelayAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("delayLength", delayLength_); + xml.setAttribute("feedback", feedback_); + xml.setAttribute("dryMix", dryMix_); + xml.setAttribute("wetMix", wetMix_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void DelayAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + delayLength_ = (float)xmlState->getDoubleAttribute("delayLength", delayLength_); + feedback_ = (float)xmlState->getDoubleAttribute("feedback", feedback_); + dryMix_ = (float)xmlState->getDoubleAttribute("dryMix", dryMix_); + wetMix_ = (float)xmlState->getDoubleAttribute("wetMix", wetMix_); + } + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new DelayAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/delay/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,121 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Delay: basic delay effect with feedback + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht de Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class DelayAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + DelayAudioProcessor(); + ~DelayAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kDelayLengthParam = 0, + kDryMixParam, + kWetMixParam, + kFeedbackParam, + kNumParameters + }; + + // Adjustable parameters: + float delayLength_; // Length of delay line in seconds + float dryMix_; // Mix level of original signal (0-1) + float wetMix_; // Mix level of delayed signal (0-1) + float feedback_; // Feedback level (0-just less than 1) + +private: + // Circular buffer variables for implementing delay + AudioSampleBuffer delayBuffer_; + int delayBufferLength_; + int delayReadPosition_, delayWritePosition_; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DelayAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/delay/delay.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="UxOELr" name="delay" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.delayeffect" buildVST="1" buildRTAS="0" + buildAU="1" pluginName="Delay" pluginDesc="Delay / Echo effect" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="dlay" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="0" + pluginTailLength="2" pluginEditorRequiresKeys="0" pluginAUExportPrefix="delayAU" + pluginAUViewClass="delayAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.delay" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="qIfIvz" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="delay" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="delay" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="WThLq7" name="delay"> + <GROUP id="{1ED19952-C421-BB14-95E5-0E0A816C5FEF}" name="Source"> + <FILE id="U2h43O" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="efSU0L" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="Z7JA2w" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="vSXXUr" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/distortion/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,317 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +#include "PluginProcessor.h" +//[/Headers] + +#include "PluginEditor.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... + +//LookAndFeelCustom* DistortionAudioProcessorEditor::customLookAndFeel = NULL; + +//[/MiscUserDefs] + +//============================================================================== +DistortionAudioProcessorEditor::DistortionAudioProcessorEditor (DistortionAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter) +{ + addAndMakeVisible (resetButton = new TextButton ("on off button")); + resetButton->setButtonText (TRANS("RESET")); + resetButton->addListener (this); + resetButton->setColour (TextButton::buttonColourId, Colour (0xffad8585)); + resetButton->setColour (TextButton::buttonOnColourId, Colours::red); + + addAndMakeVisible (gainSlider = new Slider ("new slider")); + gainSlider->setRange (-24, 24, 0.01); + gainSlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + gainSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + gainSlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + gainSlider->setColour (Slider::textBoxTextColourId, Colours::white); + gainSlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + gainSlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + gainSlider->addListener (this); + + addAndMakeVisible (typeComboBox = new ComboBox ("new combo box")); + typeComboBox->setEditableText (false); + typeComboBox->setJustificationType (Justification::centredLeft); + typeComboBox->setTextWhenNothingSelected (String::empty); + typeComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + typeComboBox->addItem (TRANS("Hard clipping"), 1); + typeComboBox->addItem (TRANS("Soft clipping (poly)"), 2); + typeComboBox->addItem (TRANS("Soft clipping (exp)"), 3); + typeComboBox->addItem (TRANS("Full-wave rectifier"), 4); + typeComboBox->addItem (TRANS("Half-wave rectifier"), 5); + typeComboBox->addListener (this); + + + //[UserPreSize] + addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits)); + resizeLimits.setSizeLimits (150, 150, 850, 290); + //[/UserPreSize] + + setSize (280, 320); + + + //[Constructor] You can add your own custom stuff here.. + + UpdateInterfaceValues(); + + //************************************ SET LOOKANDFEEL ********************************** +// if( customLookAndFeel == NULL ) +// { +// customLookAndFeel = new LookAndFeelCustom(); +// LookAndFeel::setDefaultLookAndFeel (/*&*/customLookAndFeel); +// } + + //*************************************************************************************** + + startTimer (50); + + //[/Constructor] +} + +DistortionAudioProcessorEditor::~DistortionAudioProcessorEditor() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + //[/Destructor_pre] + + resetButton = nullptr; + gainSlider = nullptr; + typeComboBox = nullptr; + + + //[Destructor]. You can add your own custom destruction code here.. + + //[/Destructor] +} + +//============================================================================== +void DistortionAudioProcessorEditor::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colour (0xff880909)); + + g.setColour (Colours::red); + g.fillEllipse (96.0f, 158.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (112.0f, 174.0f, 56.0f, 56.0f); + + g.setColour (Colour (0xff650000)); + g.fillRoundedRectangle (54.0f, 6.0f, 175.0f, 37.0f, 10.000f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 22.30f, Font::bold)); + g.drawText (TRANS("distortion"), + 6, 13, 277, 24, + Justification::centredTop, true); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("GAIN"), + 3, 133, 275, 30, + Justification::centred, true); + + //[UserPaint] Add your own custom painting code here.. + + // Knob bounds + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 11.00f, Font::plain)); + g.drawText (String(gainSlider->getMinimum()), + 59, 229, 54, 30, + Justification::centredRight, true); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 11.00f, Font::plain)); + g.drawText (String(gainSlider->getMaximum()), + 168, 229, 54, 30, + Justification::centredLeft, true); + + // Version number + String str("v "); + str.append(JucePlugin_VersionString, 4); + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 11.00f, Font::plain)); + g.drawText (str, + 189, 37, 54, 30, + Justification::centredLeft, true); + + //[/UserPaint] +} + +void DistortionAudioProcessorEditor::resized() +{ + resetButton->setBounds (236, 5, 39, 23); + gainSlider->setBounds (58, 162, 164, 102); + typeComboBox->setBounds (69, 77, 150, 24); + //[UserResized] Add your own custom resize handling here.. + getProcessor()->_lastUIWidth = getWidth(); + getProcessor()->_lastUIHeight = getHeight(); + //[/UserResized] +} + +void DistortionAudioProcessorEditor::buttonClicked (Button* buttonThatWasClicked) +{ + //[UserbuttonClicked_Pre] + DistortionAudioProcessor* ourProcessor = getProcessor(); + + //[/UserbuttonClicked_Pre] + + if (buttonThatWasClicked == resetButton) + { + //[UserButtonCode_resetButton] -- add your button handler code here.. + ourProcessor->Reset(); + //[/UserButtonCode_resetButton] + } + + //[UserbuttonClicked_Post] + UpdateInterfaceValues(); + //[/UserbuttonClicked_Post] +} + +void DistortionAudioProcessorEditor::sliderValueChanged (Slider* sliderThatWasMoved) +{ + //[UsersliderValueChanged_Pre] + DistortionAudioProcessor* ourProcessor = getProcessor(); + //[/UsersliderValueChanged_Pre] + + if (sliderThatWasMoved == gainSlider) + { + //[UserSliderCode_gainSlider] -- add your slider handling code here.. + ourProcessor->SetGainIndB(gainSlider->getValue()); + //[/UserSliderCode_gainSlider] + } + + //[UsersliderValueChanged_Post] + //[/UsersliderValueChanged_Post] +} + +void DistortionAudioProcessorEditor::comboBoxChanged (ComboBox* comboBoxThatHasChanged) +{ + //[UsercomboBoxChanged_Pre] + DistortionAudioProcessor* ourProcessor = getProcessor(); + //[/UsercomboBoxChanged_Pre] + + if (comboBoxThatHasChanged == typeComboBox) + { + //[UserComboBoxCode_typeComboBox] -- add your combo box handling code here.. + ourProcessor->SetType((DistortionAudioProcessor::Types) typeComboBox->getSelectedItemIndex()); + //[/UserComboBoxCode_typeComboBox] + } + + //[UsercomboBoxChanged_Post] + //[/UsercomboBoxChanged_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +void DistortionAudioProcessorEditor::SetComboBoxActivity(ComboBox * comboBox, bool active) +{ + if (active){ + comboBox->setColour(ComboBox::backgroundColourId, Colours::white); + }else{ + comboBox->setColour(ComboBox::backgroundColourId, Colours::grey); + } +} + +void DistortionAudioProcessorEditor::SetSliderActivity(Slider * slider, bool active) +{ + if (active){ + slider->setColour (Slider::rotarySliderFillColourId, Colour (0xffff5c00)); + slider->addListener (this); + }else{ + slider->setColour (Slider::rotarySliderFillColourId, Colours::grey); + slider->removeListener(this); + } +} + +void DistortionAudioProcessorEditor::UpdateInterfaceValues() +{ + DistortionAudioProcessor* ourProcessor = getProcessor(); + + // Update Sliders + gainSlider ->setValue(ourProcessor->_gainIndB,dontSendNotification); + typeComboBox->setItemEnabled((int) ourProcessor->GetType(), true); +} + +// This timer periodically checks whether any of the parameters have changed... +void DistortionAudioProcessorEditor::timerCallback() +{ + //DistortionAudioProcessor* ourProcessor = getProcessor(); + + +} + +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Introjucer information section -- + + This is where the Introjucer stores the metadata that describe this GUI layout, so + make changes in here at your peril! + +BEGIN_JUCER_METADATA + +<JUCER_COMPONENT documentType="Component" className="DistortionAudioProcessorEditor" + componentName="" parentClasses="public AudioProcessorEditor, public Timer" + constructorParams="DistortionAudioProcessor* ownerFilter" variableInitialisers="AudioProcessorEditor (ownerFilter)" + snapPixels="8" snapActive="0" snapShown="1" overlayOpacity="0.330" + fixedSize="1" initialWidth="280" initialHeight="320"> + <BACKGROUND backgroundColour="ff880909"> + <ELLIPSE pos="96 158 88 88" fill="solid: ffff0000" hasStroke="0"/> + <ELLIPSE pos="112 174 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <ROUNDRECT pos="54 6 175 37" cornerSize="10" fill="solid: ff650000" hasStroke="0"/> + <TEXT pos="6 13 277 24" fill="solid: ffffffff" hasStroke="0" text="distortion" + fontname="Default monospaced font" fontsize="22.300000000000000711" + bold="1" italic="0" justification="12"/> + <TEXT pos="3 133 275 30" fill="solid: ffffffff" hasStroke="0" text="GAIN" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + </BACKGROUND> + <TEXTBUTTON name="on off button" id="85bb206557e8f33d" memberName="resetButton" + virtualName="" explicitFocusOrder="0" pos="236 5 39 23" bgColOff="ffad8585" + bgColOn="ffff0000" buttonText="RESET" connectedEdges="0" needsCallback="1" + radioGroupId="0"/> + <SLIDER name="new slider" id="b7cd5ae6d0a3bfc6" memberName="gainSlider" + virtualName="" explicitFocusOrder="0" pos="58 162 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="-24" max="24" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <COMBOBOX name="new combo box" id="c80cc28cc68984e4" memberName="typeComboBox" + virtualName="" explicitFocusOrder="0" pos="69 77 150 24" editable="0" + layout="33" items="Hard clipping Soft clipping (poly) Soft clipping (exp) Full-wave rectifier Half-wave rectifier" + textWhenNonSelected="" textWhenNoItems="(no choices)"/> +</JUCER_COMPONENT> + +END_JUCER_METADATA +*/ +#endif + + +//[EndFile] You can add extra defines here... +//[/EndFile]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/distortion/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,100 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +#ifndef __JUCE_HEADER_4586FE55775717B6__ +#define __JUCE_HEADER_4586FE55775717B6__ + +//[Headers] -- You can add your own extra header files here -- + +//#include "../../Shared/LookAndFeelCustom.h" //used to be _nographics +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class DistortionAudioProcessorEditor : public AudioProcessorEditor, + public Timer, + public ButtonListener, + public SliderListener, + public ComboBoxListener +{ +public: + //============================================================================== + DistortionAudioProcessorEditor (DistortionAudioProcessor* ownerFilter); + ~DistortionAudioProcessorEditor(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + void timerCallback(); + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void buttonClicked (Button* buttonThatWasClicked); + void sliderValueChanged (Slider* sliderThatWasMoved); + void comboBoxChanged (ComboBox* comboBoxThatHasChanged); + + + +private: + //[UserVariables] -- You can add your own custom variables in this section. + + ScopedPointer<ResizableCornerComponent> resizer; + ComponentBoundsConstrainer resizeLimits; + + //static LookAndFeelCustom* customLookAndFeel; + + AudioPlayHead::CurrentPositionInfo lastDisplayedPosition; + + DistortionAudioProcessor* getProcessor() const + { + return static_cast <DistortionAudioProcessor*> (getAudioProcessor()); + } + + void displayPositionInfo (const AudioPlayHead::CurrentPositionInfo& pos); + + void UpdateInterfaceValues(); + + void SetComboBoxActivity(ComboBox * comboBox, bool active); + void SetSliderActivity(Slider * slider, bool active); + + + //[/UserVariables] + + //============================================================================== + ScopedPointer<TextButton> resetButton; + ScopedPointer<Slider> gainSlider; + ScopedPointer<ComboBox> typeComboBox; + + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DistortionAudioProcessorEditor) +}; + +//[EndFile] You can add extra defines here... +//[/EndFile] + +#endif // __JUCE_HEADER_4586FE55775717B6__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/distortion/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,386 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Distortion: distortion effect using different characteristic curves + See textbook Chapter 7: Overdrive, Distortion and Fuzz + + Code by Brecht De Man, Joshua Reiss and Andrew McPherson + + When using this code (or a modified version thereof), please cite: + + Brecht De Man and Joshua D. Reiss, "Adaptive Control of Amplitude + Distortion Effects," 53rd Conference of the Audio Engineering Society, + 2014. + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +const float DENORMAL_THRESH = 1e-6f; + +#if JUCE_INTEL + #define JUCE_SNAP_TO_ZERO(n) if (! (n < -1.0e-8 || n > 1.0e-8)) n = 0; +#else + #define JUCE_SNAP_TO_ZERO(n) +#endif + +DistortionAudioProcessor::DistortionAudioProcessor() +: + _numChannels (1) + ,_numSamples (1) // dummy - will be set in prepareToPlay + ,_sampleRate (1) // dummy - will be set in prepareToPlay + ,_typeNumber (_hardClipping) // standard + ,_currentTrackBuffer (1,1) + ,_lastUIWidth (850) + ,_lastUIHeight (650) + +{ + Reset(); +} + +DistortionAudioProcessor::~DistortionAudioProcessor() +{ +} + +//----------------------------------------------------------------------------- +// P R E P A R E T O P L A Y +void DistortionAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // If sample rate/block size changes or straight after construction + if (_numSamples != samplesPerBlock || _sampleRate != sampleRate) + { + _sampleRate = sampleRate; + _numSamples = samplesPerBlock; + _numChannels = getNumInputChannels(); + } +} + + +//----------------------------------------------------------------------------- +// P R O C E S S B L O C K +void DistortionAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + float gain = powf(10.0f, _gainIndB/20.f); + + + for (int channel = 0; channel < _numChannels; ++channel) + { + // Apply gain + buffer.applyGain(channel, 0, buffer.getNumSamples(), gain); + + // Put track audio data into _currentTrackBuffer + float * originalData = new float; + originalData = buffer.getSampleData(channel); + + // Apply distortion (sample per sample) + switch (_typeNumber) { + case _hardClipping: + { + float threshold = 0.5f; + for (int sample = 0; sample < buffer.getNumSamples(); ++sample) + { + if(originalData[sample] > threshold) // positive hard clipping + { + originalData[sample] = threshold; + } + else + { + if(originalData[sample] < - threshold) // negative hard clipping + { + originalData[sample] = - threshold; + } + } + } + break; + } + + case _softClipping: + { + float threshold1 = 1.0f/3.0f; + float threshold2 = 2.0f/3.0f; + for (int sample = 0; sample < buffer.getNumSamples(); ++sample) + { + if(originalData[sample] > threshold1) + { + if(originalData[sample] > threshold2) // positive clipping + { + originalData[sample] = 1.0f; + } + else // soft knee (positive) + { + originalData[sample] = (3.0f - (2.0f - 3.0f*originalData[sample])*(2.0f - 3.0f*originalData[sample]))/3.0f; + } + } + else + { + if(originalData[sample] < -threshold1) + { + if(originalData[sample] < -threshold2) // negative clipping + { + originalData[sample] = -1.0f; + } + else // soft knee (negative) + { + originalData[sample] = - (3.0f - (2.0f + 3.0f*originalData[sample])*(2.0f + 3.0f*originalData[sample]))/3.0f; + } + } + else // linear region (-1/3..1/3) + { + originalData[sample] *= 2.0f; + } + } + + originalData[sample] /= 2.0f; // divide all by 2 to compensate for extra 6 dB gain boost + } + break; + } + + case _softClippingExp: + { + for (int sample = 0; sample < buffer.getNumSamples(); ++sample) + { + if (originalData[sample] > 0.0f) // positive + { + originalData[sample] = 1.0f - expf(-originalData[sample]); + } + else // negative + { + originalData[sample] = - 1.0f + expf(originalData[sample]); + } + } + break; + } + + case _fullWaveRectifier: + { + for (int sample = 0; sample < buffer.getNumSamples(); ++sample) + { + originalData[sample] = fabs(originalData[sample]); + } + break; + } + + case _halfWaveRectifier: + { + for (int sample = 0; sample < buffer.getNumSamples(); ++sample) + { + originalData[sample] = 0.5f*(fabs(originalData[sample])+originalData[sample]); + } + break; + } + + default: + break; + } + } +} + + +//----------------------------------------------------------------------------- +// R E S E T +void DistortionAudioProcessor::Reset() +{ + _gainIndB = 0.0f; + _typeNumber = _hardClipping; +} + + +//----------------------------------------------------------------------------- +// +void DistortionAudioProcessor::releaseResources() +{ + // When playback stops, you can use this to free up any spare memory, etc. +} + + +bool DistortionAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* DistortionAudioProcessor::createEditor() +{ + return new DistortionAudioProcessorEditor (this); +} + + +//============================================================================== +void DistortionAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // SAVE STATE INFO + XmlElement xml("Distortion_XML"); + + // Knobs + xml.setAttribute("_gain" ,_gainIndB); + + // Combo box + xml.setAttribute("_type" ,(int) _typeNumber); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void DistortionAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // LOAD STATE INFO + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("Distortion_XML")) + { + + // Knobs + _gainIndB = (float) xmlState->getDoubleAttribute("_gain",true); + + //Combo box + _typeNumber = (DistortionAudioProcessor::Types) xmlState->getIntAttribute("_type",true); + } +} + +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new DistortionAudioProcessor(); +} + +const String DistortionAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +bool DistortionAudioProcessor::silenceInProducesSilenceOut() const +{ + return true; +} + +int DistortionAudioProcessor::getNumParameters() +{ + return _PARAMtotalNumParams; +} + +float DistortionAudioProcessor::getParameter (int index) // externally accessible +{ + switch (index) + { + case _PARAMdeviceReset: return 0.0f; + case _PARAMgain: return (GetGainIndB()); + case _PARAMtype: return (GetType()); + default: return 0.0f; + } +} + +void DistortionAudioProcessor::setParameter (int index, float newValue) // externally accessible +{ + switch (index) + { + case _PARAMdeviceReset: + Reset(); + break; + case _PARAMgain: + SetGainIndB(newValue); + break; + case _PARAMtype: + SetType((DistortionAudioProcessor::Types) roundFloatToInt(newValue*_numberOfTypes)); + break; + default: + break; + } +} + +const String DistortionAudioProcessor::getParameterName (int index) // externally accessible +{ + switch (index) + { + case _PARAMdeviceReset: return "Reset"; + case _PARAMgain: return "Gain (dB)"; + case _PARAMtype: return "Type"; + default: break; + } + return String::empty; +} + +const String DistortionAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String DistortionAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String DistortionAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool DistortionAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool DistortionAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool DistortionAudioProcessor::acceptsMidi() const +{ + #if JucePlugin_WantsMidiInput + return true; + #else + return false; + #endif +} + +bool DistortionAudioProcessor::producesMidi() const +{ + #if JucePlugin_ProducesMidiOutput + return true; + #else + return false; + #endif +} + +int DistortionAudioProcessor::getNumPrograms() +{ + return 0; +} + +int DistortionAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void DistortionAudioProcessor::setCurrentProgram (int index) +{ +} + +const String DistortionAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void DistortionAudioProcessor::changeProgramName (int index, const String& newName) +{ +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/distortion/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,172 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Distortion: distortion effect using different characteristic curves + See textbook Chapter 7: Overdrive, Distortion and Fuzz + + Code by Brecht De Man, Joshua Reiss and Andrew McPherson + + When using this code (or a modified version thereof), please cite: + + Brecht De Man and Joshua D. Reiss, "Adaptive Control of Amplitude + Distortion Effects," 53rd Conference of the Audio Engineering Society, + 2014. + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_88534BAA__ +#define __PLUGINPROCESSOR_H_88534BAA__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include <math.h> + +class DistortionAudioProcessor : public AudioProcessor +{ +public: + DistortionAudioProcessor(); + ~DistortionAudioProcessor(); + + //============================================================================== + // V S T M E T H O D S + + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + AudioProcessorEditor* createEditor(); + bool silenceInProducesSilenceOut() const; + virtual double getTailLengthSeconds() const {return 0;}; + bool hasEditor() const; + const String getName() const; + int getNumParameters(); + float getParameter (int index); + void setParameter (int index, float newValue); + const String getParameterName (int index); + const String getParameterText (int index); + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + bool acceptsMidi() const; + bool producesMidi() const; + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + // E N U M S + + enum Parameters + { + _PARAMdeviceReset, + _PARAMgain, + _PARAMtype, + // add other parameters + _PARAMtotalNumParams + }; + + + enum Types + { + _hardClipping = 0, + _softClipping, + _softClippingExp, + _fullWaveRectifier, + _halfWaveRectifier, + _numberOfTypes + }; + + //============================================================================== + // O U R M E T H O D S + + void Reset(); + +private: + + // Accessors and mutators + inline float GetGainIndB(); + inline void SetGainIndB(float gainIndB); + inline DistortionAudioProcessor::Types GetType(); + inline void SetType(Types type); + + int _numChannels; + int _numSamples; + int _sampleRate; + float _gainIndB; + + Types _typeNumber; + + bool _isFirstFrame; + + // Buffers + AudioSampleBuffer _currentTrackBuffer; + + int _lastUIWidth, _lastUIHeight; + + friend class DistortionAudioProcessorEditor; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DistortionAudioProcessor); +}; + +//============================================================================= +// I N L I N E F U N C T I O N S C O D E S E C T I O N + + +//----------------------------------------------------------------------------- +// +inline float +DistortionAudioProcessor::GetGainIndB() +{ + return _gainIndB; +} + + +//----------------------------------------------------------------------------- +// +inline void +DistortionAudioProcessor::SetGainIndB(float gainIndB) +{ + _gainIndB = gainIndB; +} + + +//----------------------------------------------------------------------------- +// +inline DistortionAudioProcessor::Types +DistortionAudioProcessor::GetType() +{ + return _typeNumber; +} + + +//----------------------------------------------------------------------------- +// +inline void +DistortionAudioProcessor::SetType(Types type) +{ + _typeNumber = type; +} + +#endif // __PLUGINPROCESSOR_H_88534BAA__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/distortion/distortion.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="MBaMzn" name="distortion" projectType="audioplug" version="0.1" + bundleIdentifier="uk.ac.qmul.eecs.distortioneffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Distortion" pluginDesc="Distortion" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="dist" pluginChannelConfigs="{2,2},{1,1}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="distortionAU" + pluginAUViewClass="MasterCompressorAU_V1" pluginRTASCategory="" + jucerVersion="3.1.0" aaxIdentifier="uk.ac.qmul.eecs.distortioneffect" + pluginAAXCategory="" includeBinaryInAppConfig="1" buildVST3="0" + buildAAX="0" companyName="Reiss and McPherson"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="../../vstsdk2.4" postbuildCommand=" # This script takes the build product and copies it to the AU, VST, and RTAS folders, depending on # which plugin types you've built original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME # this looks inside the binary to detect which platforms are needed.. copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l` copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l` copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l` copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l` if [ $copyAU -gt 0 ]; then echo "Copying to AudioUnit folder..." AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component if [ -d "$AU" ]; then rm -r "$AU" fi cp -r "$original" "$AU" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE" # Fix info.plist for AUs built with Xcode 3 if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then echo else echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU" /usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist" fi fi if [ $copyVST -gt 0 ]; then echo "Copying to VST folder..." VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst if [ -d "$VST" ]; then rm -r "$VST" fi cp -r "$original" "$VST" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE" fi if [ $copyRTAS -gt 0 ]; then echo "Copying to RTAS folder..." RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm if [ -d "$RTAS" ]; then rm -r "$RTAS" fi cp -r "$original" "$RTAS" fi if [ $copyAAX -gt 0 ]; then echo "Copying to AAX folder..." if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX1" ]; then rm -r "$AAX1" fi cp -r "$original" "$AAX1" fi if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX2" ]; then rm -r "$AAX2" fi cp -r "$original" "$AAX2" fi fi "> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + isDebug="1" optimisation="1" targetName="distortion"/> + <CONFIGURATION name="Release" osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + isDebug="0" optimisation="2" targetName="distortion"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="R56iUz" name="distortion"> + <GROUP id="{839367BB-53A9-7137-E15E-D2DD800BA26D}" name="Source"> + <FILE id="RUKlAk" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="uEbtTW" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="vo9R27" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="IiR9iQ" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/empty/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,103 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Empty: template for an effect; passes input to output unmodified + See textbook Chapter 13: Building Audio Effect Plug-Ins + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +EmptyAudioProcessorEditor::EmptyAudioProcessorEditor (EmptyAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + volumeLabel_("", "Volume:"), + volumeSlider_("volume") +{ + // This is where our plugin's editor size is set. + // setSize(170, 80); + + // Set up the sliders + addAndMakeVisible(&volumeSlider_); + volumeSlider_.setSliderStyle(Slider::Rotary); + volumeSlider_.addListener(this); + volumeSlider_.setRange(0.0, 2.0, 0.01); + + volumeLabel_.attachToComponent(&volumeSlider_, false); + volumeLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(170, 100, 400, 160); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +EmptyAudioProcessorEditor::~EmptyAudioProcessorEditor() +{ +} + +//============================================================================== +void EmptyAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void EmptyAudioProcessorEditor::resized() +{ + volumeSlider_.setBounds(20, 20, 150, 40); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void EmptyAudioProcessorEditor::timerCallback() +{ + EmptyAudioProcessor* ourProcessor = getProcessor(); + + volumeSlider_.setValue(ourProcessor->volume_, dontSendNotification); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void EmptyAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + if (slider == &volumeSlider_) + { + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + getProcessor()->setParameterNotifyingHost (EmptyAudioProcessor::kVolumeParam, + (float)volumeSlider_.getValue()); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/empty/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,68 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Empty: template for an effect; passes input to output unmodified + See textbook Chapter 13: Building Audio Effect Plug-Ins + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class EmptyAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public Timer +{ +public: + EmptyAudioProcessorEditor (EmptyAudioProcessor* ownerFilter); + ~EmptyAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + +private: + Label volumeLabel_; + Slider volumeSlider_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + EmptyAudioProcessor* getProcessor() const + { + return static_cast <EmptyAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/empty/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,279 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Empty: template for an effect; passes input to output unmodified + See textbook Chapter 13: Building Audio Effect Plug-Ins + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +EmptyAudioProcessor::EmptyAudioProcessor() +{ + // Set default values: + + volume_ = 1.0; + lastUIWidth_ = 170; + lastUIHeight_ = 100; +} + +EmptyAudioProcessor::~EmptyAudioProcessor() +{ +} + +//============================================================================== +const String EmptyAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int EmptyAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float EmptyAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kVolumeParam: return volume_; + default: return 0.0f; + } +} + +void EmptyAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kVolumeParam: + volume_ = newValue; + break; + default: + break; + } +} + +const String EmptyAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kVolumeParam: return "volume"; + default: break; + } + + return String::empty; +} + +const String EmptyAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String EmptyAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String EmptyAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool EmptyAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool EmptyAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool EmptyAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double EmptyAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool EmptyAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool EmptyAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int EmptyAudioProcessor::getNumPrograms() +{ + return 0; +} + +int EmptyAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void EmptyAudioProcessor::setCurrentProgram (int index) +{ +} + +const String EmptyAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void EmptyAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void EmptyAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. +} + +void EmptyAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. +} + +void EmptyAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + // Go through each channel of audio that's passed in + + for (int channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + + // Store the output sample back in the buffer + channelData[i] = in * volume_; + } + } + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool EmptyAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* EmptyAudioProcessor::createEditor() +{ + return new EmptyAudioProcessorEditor (this); +} + +//============================================================================== +void EmptyAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("volume", volume_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void EmptyAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + volume_ = (float)xmlState->getDoubleAttribute("volume", volume_); + } + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new EmptyAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/empty/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,107 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Empty: template for an effect; passes input to output unmodified + See textbook Chapter 13: Building Audio Effect Plug-Ins + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class EmptyAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + EmptyAudioProcessor(); + ~EmptyAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kVolumeParam = 0, + kNumParameters + }; + + float volume_; +private: + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EmptyAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/empty/empty.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="AC7ScK" name="empty" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.emptyeffect" buildVST="1" buildRTAS="0" + buildAU="1" pluginName="Empty" pluginDesc="Blank pass-through effect" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="empt" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="emptyAU" + pluginAUViewClass="emptyAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.empty" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="RZnSpY" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="empty" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="empty" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="oVUVUz" name="empty"> + <GROUP id="{F4483B04-0E7A-D77C-795E-A491F61E239B}" name="Source"> + <FILE id="d7EIMU" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="YDAD0P" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="VTO1E6" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="mhOgcd" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/flanger/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,229 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Flanger: flanging effect using time-varying delay + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +FlangerAudioProcessorEditor::FlangerAudioProcessorEditor (FlangerAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + delayLabel_("", "Min. Delay (sec):"), + sweepWidthLabel_("", "Sweep Width (sec.):"), + depthLabel_("", "Depth:"), + feedbackLabel_("", "Feedback:"), + frequencyLabel_("", "LFO Frequency:"), + waveformLabel_("", "LFO Waveform:"), + interpolationLabel_("", "Interpolation Type:") +{ + + // Set up the sliders + addAndMakeVisible (&delaySlider_); + delaySlider_.setSliderStyle (Slider::Rotary); + delaySlider_.addListener (this); + delaySlider_.setRange (0.001, FlangerAudioProcessor::kMaximumDelay, 0.0005); + + addAndMakeVisible (&sweepWidthSlider_); + sweepWidthSlider_.setSliderStyle (Slider::Rotary); + sweepWidthSlider_.addListener (this); + sweepWidthSlider_.setRange (.001, FlangerAudioProcessor::kMaximumSweepWidth, 0.0005); + + addAndMakeVisible (&depthSlider_); + depthSlider_.setSliderStyle (Slider::Rotary); + depthSlider_.addListener (this); + depthSlider_.setRange (0.0, 1.0, 0.01); + + addAndMakeVisible (&feedbackSlider_); + feedbackSlider_.setSliderStyle (Slider::Rotary); + feedbackSlider_.addListener (this); + feedbackSlider_.setRange (0.0, 0.5, 0.01); + + addAndMakeVisible (&frequencySlider_); + frequencySlider_.setSliderStyle (Slider::Rotary); + frequencySlider_.addListener (this); + frequencySlider_.setRange (0.05, 2.0, 0.025); + + addAndMakeVisible(&waveformComboBox_); + waveformComboBox_.setEditableText(false); + waveformComboBox_.setJustificationType(Justification::left); + waveformComboBox_.addItem("Sine", FlangerAudioProcessor::kWaveformSine); + waveformComboBox_.addItem("Triangle", FlangerAudioProcessor::kWaveformTriangle); + waveformComboBox_.addItem("Square", FlangerAudioProcessor::kWaveformSquare); + waveformComboBox_.addItem("Sawtooth", FlangerAudioProcessor::kWaveformSawtooth); + waveformComboBox_.addListener(this); + + addAndMakeVisible(&interpolationComboBox_); + interpolationComboBox_.setEditableText(false); + interpolationComboBox_.setJustificationType(Justification::left); + interpolationComboBox_.addItem("None", FlangerAudioProcessor::kInterpolationNearestNeighbour); + interpolationComboBox_.addItem("Linear", FlangerAudioProcessor::kInterpolationLinear); + interpolationComboBox_.addItem("Cubic", FlangerAudioProcessor::kInterpolationCubic); + interpolationComboBox_.addListener(this); + + addAndMakeVisible(&stereoToggleButton_); + stereoToggleButton_.setName("Stereo"); + stereoToggleButton_.setButtonText("Stereo"); + stereoToggleButton_.addListener(this); + + delayLabel_.attachToComponent(&delaySlider_, false); + delayLabel_.setFont(Font (11.0f)); + + sweepWidthLabel_.attachToComponent(&sweepWidthSlider_, false); + sweepWidthLabel_.setFont(Font (11.0f)); + + depthLabel_.attachToComponent(&depthSlider_, false); + depthLabel_.setFont(Font (11.0f)); + + feedbackLabel_.attachToComponent(&feedbackSlider_, false); + feedbackLabel_.setFont(Font (11.0f)); + + frequencyLabel_.attachToComponent(&frequencySlider_, false); + frequencyLabel_.setFont(Font (11.0f)); + + waveformLabel_.attachToComponent(&waveformComboBox_, false); + waveformLabel_.setFont(Font (11.0f)); + + interpolationLabel_.attachToComponent(&interpolationComboBox_, false); + interpolationLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(550, 200, 600, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +FlangerAudioProcessorEditor::~FlangerAudioProcessorEditor() +{ +} + +//============================================================================== +void FlangerAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void FlangerAudioProcessorEditor::resized() +{ + delaySlider_.setBounds (20, 20, 150, 40); + sweepWidthSlider_.setBounds (200, 20, 150, 40); + depthSlider_.setBounds(380, 20, 150, 40); + feedbackSlider_.setBounds(20, 80, 150, 40); + frequencySlider_.setBounds(200, 80, 150, 40); + waveformComboBox_.setBounds(20, 140, 200, 30); + interpolationComboBox_.setBounds(250, 140, 200, 30); + stereoToggleButton_.setBounds(380, 80, 150, 40); + stereoToggleButton_.changeWidthToFitText(); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void FlangerAudioProcessorEditor::timerCallback() +{ + FlangerAudioProcessor* ourProcessor = getProcessor(); + + delaySlider_.setValue(ourProcessor->delay_, dontSendNotification); + sweepWidthSlider_.setValue(ourProcessor->sweepWidth_, dontSendNotification); + depthSlider_.setValue(ourProcessor->depth_, dontSendNotification); + feedbackSlider_.setValue(ourProcessor->feedback_, dontSendNotification); + frequencySlider_.setValue(ourProcessor->frequency_, dontSendNotification); + waveformComboBox_.setSelectedId(ourProcessor->waveform_, false); + interpolationComboBox_.setSelectedId(ourProcessor->interpolation_, false); + stereoToggleButton_.setToggleState((ourProcessor->stereo_ != 0), false); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void FlangerAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &delaySlider_) + { + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kDelayParam, + (float)delaySlider_.getValue()); + } + else if (slider == &sweepWidthSlider_) + { + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kSweepWidthParam, + (float)sweepWidthSlider_.getValue()); + } + else if (slider == &depthSlider_) + { + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kDepthParam, + (float)depthSlider_.getValue()); + } + else if (slider == &feedbackSlider_) + { + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kFeedbackParam, + (float)feedbackSlider_.getValue()); + } + else if (slider == &frequencySlider_) + { + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kFrequencyParam, + (float)frequencySlider_.getValue()); + } +} + +// Similar callback to sliderValueChanged for ComboBox updates +void FlangerAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &waveformComboBox_) + { + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kWaveformParam, + (float)waveformComboBox_.getSelectedId()); + } + else if(comboBox == &interpolationComboBox_) + { + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kInterpolationParam, + (float)interpolationComboBox_.getSelectedId()); + } +} + +// Callback for toggle button +void FlangerAudioProcessorEditor::buttonClicked (Button *button) +{ + if(button == &stereoToggleButton_) + { + if(button->getToggleState()) + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kStereoParam, 1.0); + else + getProcessor()->setParameterNotifyingHost (FlangerAudioProcessor::kStereoParam, 0.0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/flanger/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,77 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Flanger: flanging effect using time-varying delay + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class FlangerAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Button::Listener, + public Timer +{ +public: + FlangerAudioProcessorEditor (FlangerAudioProcessor* ownerFilter); + ~FlangerAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + void buttonClicked (Button *); + +private: + Label delayLabel_, sweepWidthLabel_, depthLabel_; + Label feedbackLabel_, frequencyLabel_, waveformLabel_; + Label interpolationLabel_; + Slider delaySlider_, sweepWidthSlider_, depthSlider_; + Slider feedbackSlider_, frequencySlider_; + ComboBox waveformComboBox_, interpolationComboBox_; + ToggleButton stereoToggleButton_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + FlangerAudioProcessor* getProcessor() const + { + return static_cast <FlangerAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/flanger/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,499 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Flanger: flanging effect using time-varying delay + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <math.h> + +const float FlangerAudioProcessor::kMaximumDelay = 0.02; +const float FlangerAudioProcessor::kMaximumSweepWidth = 0.02; + +//============================================================================== +FlangerAudioProcessor::FlangerAudioProcessor() : delayBuffer_ (2, 1) +{ + // Set default values: + delay_ = .0025; + sweepWidth_ = .010; + depth_ = 1.0; + feedback_ = 0.0; + frequency_ = 0.2; + waveform_ = kWaveformSine; + interpolation_ = kInterpolationLinear; + stereo_ = 0; + + delayBufferLength_ = 1; + lfoPhase_ = 0.0; + inverseSampleRate_ = 1.0/44100.0; + + // Start the circular buffer pointer at the beginning + delayWritePosition_ = 0; + + lastUIWidth_ = 550; + lastUIHeight_ = 200; +} + +FlangerAudioProcessor::~FlangerAudioProcessor() +{ +} + +//============================================================================== +const String FlangerAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int FlangerAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float FlangerAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kDelayParam: return delay_; + case kSweepWidthParam: return sweepWidth_; + case kDepthParam: return depth_; + case kFeedbackParam: return feedback_; + case kFrequencyParam: return frequency_; + case kWaveformParam: return (float)waveform_; + case kInterpolationParam: return (float)interpolation_; + case kStereoParam: return (float)stereo_; + default: return 0.0f; + } +} + +void FlangerAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + + switch (index) + { + case kDelayParam: + delay_ = newValue; + break; + case kSweepWidthParam: + sweepWidth_ = newValue; + break; + case kDepthParam: + depth_ = newValue; + break; + case kFeedbackParam: + feedback_ = newValue; + break; + case kFrequencyParam: + frequency_ = newValue; + break; + case kWaveformParam: + waveform_ = (int)newValue; + break; + case kInterpolationParam: + interpolation_ = (int)newValue; + break; + case kStereoParam: + stereo_ = (int)newValue; + break; + default: + break; + } +} + +const String FlangerAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kDelayParam: return "delay"; + case kSweepWidthParam: return "sweep width"; + case kDepthParam: return "depth"; + case kFeedbackParam: return "feedback"; + case kFrequencyParam: return "frequency"; + case kWaveformParam: return "waveform"; + case kInterpolationParam: return "interpolation"; + case kStereoParam: return "stereo"; + default: break; + } + + return String::empty; +} + +const String FlangerAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String FlangerAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String FlangerAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool FlangerAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool FlangerAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool FlangerAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double FlangerAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool FlangerAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool FlangerAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int FlangerAudioProcessor::getNumPrograms() +{ + return 0; +} + +int FlangerAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void FlangerAudioProcessor::setCurrentProgram (int index) +{ +} + +const String FlangerAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void FlangerAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void FlangerAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Allocate and zero the delay buffer (size will depend on current sample rate) + // Add 3 extra samples to allow cubic interpolation even at maximum delay + delayBufferLength_ = (int)((kMaximumDelay + kMaximumSweepWidth)*sampleRate) + 3; + delayBuffer_.setSize(2, delayBufferLength_); + delayBuffer_.clear(); + lfoPhase_ = 0.0; + + inverseSampleRate_ = 1.0/sampleRate; +} + +void FlangerAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + // The delay buffer will stay in memory until the effect is unloaded. +} + +void FlangerAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + delayBuffer_.clear(); +} + + +void FlangerAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel, dpw; // dpr = delay read pointer; dpw = delay write pointer + float dpr, currentDelay, ph; + float channel0EndPhase = lfoPhase_; + + // Go through each channel of audio that's passed in. In this example we apply identical + // effects to each channel, regardless of how many input channels there are. For some effects, like + // a stereo chorus or panner, you might do something different for each channel. + + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // delayData is the circular buffer for implementing delay on this channel + float* delayData = delayBuffer_.getSampleData (jmin (channel, delayBuffer_.getNumChannels() - 1)); + + // Make a temporary copy of any state variables declared in PluginProcessor.h which need to be + // maintained between calls to processBlock(). Each channel needs to be processed identically + // which means that the activity of processing one channel can't affect the state variable for + // the next channel. + + dpw = delayWritePosition_; + ph = lfoPhase_; + + // For stereo flanging, keep the channels 90 degrees out of phase with each other + if(stereo_ != 0 && channel != 0) + ph = fmodf(ph + 0.25, 1.0); + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + float interpolatedSample = 0.0; + + // Recalculate the read pointer position with respect to the write pointer. A more efficient + // implementation might increment the read pointer based on the derivative of the LFO without + // running the whole equation again, but this format makes the operation clearer. + + currentDelay = delay_ + sweepWidth_*lfo(ph, waveform_); + dpr = fmodf((float)dpw - (float)(currentDelay * getSampleRate()) + (float)delayBufferLength_, + (float)delayBufferLength_); + + // In this example, the output is the input plus the contents of the delay buffer (weighted by delayMix) + // The last term implements a tremolo (variable amplitude) on the whole thing. + + if(interpolation_ == kInterpolationLinear) + { + // Find the fraction by which the read pointer sits between two + // samples and use this to adjust weights of the samples + float fraction = dpr - floorf(dpr); + int previousSample = (int)floorf(dpr); + int nextSample = (previousSample + 1) % delayBufferLength_; + interpolatedSample = fraction*delayData[nextSample] + + (1.0f-fraction)*delayData[previousSample]; + } + else if(interpolation_ == kInterpolationCubic) + { + // Cubic interpolation will produce cleaner results at the expense + // of more computation. This code uses the Catmull-Rom variant of + // cubic interpolation. To reduce the load, calculate a few quantities + // in advance that will be used several times in the equation: + + int sample1 = (int)floorf(dpr); + int sample2 = (sample1 + 1) % delayBufferLength_; + int sample3 = (sample2 + 1) % delayBufferLength_; + int sample0 = (sample1 - 1 + delayBufferLength_) % delayBufferLength_; + + float fraction = dpr - floorf(dpr); + float frsq = fraction*fraction; + + float a0 = -0.5f*delayData[sample0] + 1.5f*delayData[sample1] + - 1.5f*delayData[sample2] + 0.5f*delayData[sample3]; + float a1 = delayData[sample0] - 2.5f*delayData[sample1] + + 2.0f*delayData[sample2] - 0.5f*delayData[sample3]; + float a2 = -0.5f*delayData[sample0] + 0.5f*delayData[sample2]; + float a3 = delayData[sample1]; + + interpolatedSample = a0*fraction*frsq + a1*frsq + a2*fraction + a3; + } + else // Nearest neighbour interpolation + { + // Find the nearest input sample by rounding the fractional index to the + // nearest integer. It's possible this will round it to the end of the buffer, + // in which case we need to roll it back to the beginning. + int closestSample = (int)floorf(dpr + 0.5f); + if(closestSample == delayBufferLength_) + closestSample = 0; + interpolatedSample = delayData[closestSample]; + } + + // Store the current information in the delay buffer. With feedback, what we read is + // included in what gets stored in the buffer, otherwise it's just a simple delay line + // of the input signal. + + delayData[dpw] = in + (interpolatedSample * feedback_); + + // Increment the write pointer at a constant rate. The read pointer will move at different + // rates depending on the settings of the LFO, the delay and the sweep width. + + if (++dpw >= delayBufferLength_) + dpw = 0; + + // Store the output sample in the buffer, replacing the input + channelData[i] = in + depth_ * interpolatedSample; + + // Update the LFO phase, keeping it in the range 0-1 + ph += frequency_*inverseSampleRate_; + if(ph >= 1.0) + ph -= 1.0; + } + + // Use channel 0 only to keep the phase in sync between calls to processBlock() + // Otherwise quadrature phase on multiple channels will create problems. + if(channel == 0) + channel0EndPhase = ph; + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + + delayWritePosition_ = dpw; + lfoPhase_ = channel0EndPhase; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool FlangerAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* FlangerAudioProcessor::createEditor() +{ + return new FlangerAudioProcessorEditor (this); +} + +//============================================================================== +void FlangerAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("delay", delay_); + xml.setAttribute("feedback", feedback_); + xml.setAttribute("sweepWidth", sweepWidth_); + xml.setAttribute("depth", depth_); + xml.setAttribute("frequency", frequency_); + xml.setAttribute("waveform", waveform_); + xml.setAttribute("interpolation", interpolation_); + xml.setAttribute("stereo", stereo_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void FlangerAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + delay_ = (float)xmlState->getDoubleAttribute("delay", delay_); + feedback_ = (float)xmlState->getDoubleAttribute("feedback", feedback_); + sweepWidth_ = (float)xmlState->getDoubleAttribute("sweepWidth", sweepWidth_); + depth_ = (float)xmlState->getDoubleAttribute("depth", depth_); + frequency_ = (float)xmlState->getDoubleAttribute("frequency", frequency_); + waveform_ = xmlState->getIntAttribute("waveform", waveform_); + interpolation_ = xmlState->getIntAttribute("interpolation", interpolation_); + stereo_ = xmlState->getIntAttribute("stereo", stereo_); + } + } +} + +//============================================================================== +// Function for calculating LFO waveforms. Phase runs from 0-1, output is scaled +// from 0 to 1 (note: not -1 to 1 as would be typical of sine). +float FlangerAudioProcessor::lfo(float phase, int waveform) +{ + switch(waveform) + { + case kWaveformTriangle: + if(phase < 0.25f) + return 0.5f + 2.0f*phase; + else if(phase < 0.75f) + return 1.0f - 2.0f*(phase - 0.25f); + else + return 2.0f*(phase-0.75f); + case kWaveformSquare: + if(phase < 0.5f) + return 1.0f; + else + return 0.0f; + case kWaveformSawtooth: + if(phase < 0.5f) + return 0.5f + phase; + else + return phase - 0.5f; + case kWaveformSine: + default: + return 0.5f + 0.5f*sinf(2.0 * M_PI * phase); + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new FlangerAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/flanger/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,156 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Flanger: flanging effect using time-varying delay + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class FlangerAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + FlangerAudioProcessor(); + ~FlangerAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kDelayParam = 0, + kSweepWidthParam, + kDepthParam, + kFeedbackParam, + kFrequencyParam, + kWaveformParam, + kInterpolationParam, + kStereoParam, + kNumParameters + }; + + enum Waveforms + { + kWaveformSine = 1, + kWaveformTriangle, + kWaveformSquare, + kWaveformSawtooth, + kNumWaveforms + }; + + enum Interpolation + { + kInterpolationNearestNeighbour = 1, + kInterpolationLinear, + kInterpolationCubic, + kNumInterpolations + }; + + static const float kMaximumDelay; + static const float kMaximumSweepWidth; + + // Adjustable parameters: + float delay_; // Minimum length of delay line in seconds + float sweepWidth_; // Amount of change from min to max delay + float depth_; // Mix level of delayed signal (0-1) + float feedback_; // Feedback level for feedback flanger (0-<1) + float frequency_; // LFO frequency (Hz) + int waveform_; // What shape should be used for the LFO + int interpolation_; // What type of interpolation to use + int stereo_; // Whether to use stereo (quadrature-phase) flanging + +private: + float lfo(float phase, int waveform); + + // Circular buffer variables for implementing delay + AudioSampleBuffer delayBuffer_; + int delayBufferLength_; + int delayWritePosition_; + + float lfoPhase_; // Phase of the low-frequency oscillator + double inverseSampleRate_; // It's more efficient to multiply than divide, so + // cache the inverse of the sample rate + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FlangerAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/flanger/flanger.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="J2jhCa" name="flanger" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.flangereffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Flanger" pluginDesc="Flanger effect" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="flng" pluginChannelConfigs="{2,2},{1,1}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="flangerAU" + pluginAUViewClass="flangerAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.flanger" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="H2wt9A" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="flanger" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="flanger" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="mBnp0h" name="flanger"> + <GROUP id="{D791512A-8100-6BAB-86FE-70EB782F30EF}" name="Source"> + <FILE id="nrGjlE" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="BfiFTi" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="mQL9Zw" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="Eg6NHS" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/parametriceq/Source/ParametricEQFilter.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,72 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Parametric EQ: parametric equaliser adjusting frequency, Q and gain + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "ParametricEQFilter.h" + +/* The actual audio processing is handled by the Juce IIRFilter parent + * class. This subclass is used to define the coefficients for our + * implementation of a parametric equaliser. + */ + +void ParametricEQFilter::makeParametric(const double discreteFrequency, + const double Q, + const double gainFactor) noexcept +{ + jassert (discreteFrequency > 0); + jassert (Q > 0); + + /* Limit the bandwidth so we don't get a nonsense result from tan(B/2) */ + const double bandwidth = jmin(discreteFrequency / Q, M_PI * 0.99); + const double two_cos_wc = -2.0*cos(discreteFrequency); + const double tan_half_bw = tan(bandwidth / 2.0); + const double g_tan_half_bw = gainFactor * tan_half_bw; + const double sqrt_g = sqrt(gainFactor); + + /* setCoefficients() takes arguments: b0, b1, b2, a0, a1, a2 + * It will normalise the filter according to the value of a0 + * to allow standard time-domain implementations + */ + + coefficients = IIRCoefficients(sqrt_g + g_tan_half_bw, /* b0 */ + sqrt_g * two_cos_wc, /* b1 */ + sqrt_g - g_tan_half_bw, /* b2 */ + sqrt_g + tan_half_bw, /* a0 */ + sqrt_g * two_cos_wc, /* a1 */ + sqrt_g - tan_half_bw /* a2 */); + + setCoefficients(coefficients); +} + +/* Copy coefficients from another object of the same class */ + +void ParametricEQFilter::copyCoefficientsFrom (const ParametricEQFilter& other) noexcept +{ + setCoefficients(other.coefficients); + active = other.active; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/parametriceq/Source/ParametricEQFilter.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,64 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Parametric EQ: parametric equaliser adjusting frequency, Q and gain + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PARAMETRICEQFILTER_H_6E48F605__ +#define __PARAMETRICEQFILTER_H_6E48F605__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + +//============================================================================== +/** + * This class implements a biquad parametric EQ section according + * to the equations in the Reiss and McPherson text. + */ + +class ParametricEQFilter : public IIRFilter +{ +public: + //============================================================================== + + /* Makes a parametric EQ section entirely from discrete-time parameters. + * Frequency here is specified from 0 to M_PI. + */ + void makeParametric (const double discreteFrequency, + const double Q, + const double gainFactor) noexcept; + + /** Makes this filter duplicate the set-up of another one. + */ + void copyCoefficientsFrom (const ParametricEQFilter& other) noexcept; + +private: + //============================================================================== + JUCE_LEAK_DETECTOR (ParametricEQFilter); +}; + + +#endif // __PARAMETRICEQFILTER_H_6E48F605__ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/parametriceq/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,161 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Parametric EQ: parametric equaliser adjusting frequency, Q and gain + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <cstring> + +#ifdef _MSC_VER +#define snprintf _snprintf_s //support for pre-2014 versions of Visual Studio +#endif // _MSC_VER + +//============================================================================== +ParametricEQAudioProcessorEditor::ParametricEQAudioProcessorEditor (ParametricEQAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + centreFrequencyLabel_("", "Centre frequency (Hz):"), + qLabel_("", "Q:"), + gainDecibelsLabel_("", "Gain (dB):"), + bandwidthLabel_("", "Bandwidth:") +{ + // Set up the sliders + + addAndMakeVisible(¢reFrequencySlider_); + centreFrequencySlider_.setSliderStyle(Slider::Rotary); + centreFrequencySlider_.addListener(this); + centreFrequencySlider_.setRange(10.0, 20000.0, 0.1); + + // Make the centre frequency slider (approximately) logarithmic for a + // more natural feel + centreFrequencySlider_.setSkewFactorFromMidPoint(sqrt(10.0 * 20000.0)); + + addAndMakeVisible(&qSlider_); + qSlider_.setSliderStyle(Slider::Rotary); + qSlider_.addListener(this); + qSlider_.setRange(0.1, 20.0, 0.01); + + addAndMakeVisible(&gainDecibelsSlider_); + gainDecibelsSlider_.setSliderStyle(Slider::Rotary); + gainDecibelsSlider_.addListener(this); + gainDecibelsSlider_.setRange(-12.0, 12.0, 0.1); + + // This label is informational and exists apart from other controls + // The other labels are attached to sliders and combo boxes + addAndMakeVisible(&bandwidthLabel_); + bandwidthLabel_.setFont(Font (12.0f)); + + centreFrequencyLabel_.attachToComponent(¢reFrequencySlider_, false); + centreFrequencyLabel_.setFont(Font (11.0f)); + + qLabel_.attachToComponent(&qSlider_, false); + qLabel_.setFont(Font (11.0f)); + + gainDecibelsLabel_.attachToComponent(&gainDecibelsSlider_, false); + gainDecibelsLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(550, 100, 550, 160); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +ParametricEQAudioProcessorEditor::~ParametricEQAudioProcessorEditor() +{ +} + +//============================================================================== +void ParametricEQAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void ParametricEQAudioProcessorEditor::resized() +{ + centreFrequencySlider_.setBounds(20, 20, 150, 40); + qSlider_.setBounds(200, 20, 150, 40); + gainDecibelsSlider_.setBounds(380, 20, 150, 40); + bandwidthLabel_.setBounds(20, 70, 350, 20); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void ParametricEQAudioProcessorEditor::timerCallback() +{ + ParametricEQAudioProcessor* ourProcessor = getProcessor(); + + centreFrequencySlider_.setValue(ourProcessor->centreFrequency_, dontSendNotification); + qSlider_.setValue(ourProcessor->q_, dontSendNotification); + gainDecibelsSlider_.setValue(ourProcessor->gainDecibels_, dontSendNotification); + updateBandwidthLabel(); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void ParametricEQAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == ¢reFrequencySlider_) + { + getProcessor()->setParameterNotifyingHost (ParametricEQAudioProcessor::kCentreFrequencyParam, + (float)centreFrequencySlider_.getValue()); + updateBandwidthLabel(); + } + else if (slider == &qSlider_) + { + getProcessor()->setParameterNotifyingHost (ParametricEQAudioProcessor::kQParam, + (float)qSlider_.getValue()); + updateBandwidthLabel(); + } + else if (slider == &gainDecibelsSlider_) + { + getProcessor()->setParameterNotifyingHost (ParametricEQAudioProcessor::kGainDecibelsParam, + (float)gainDecibelsSlider_.getValue()); + } +} + +void ParametricEQAudioProcessorEditor::updateBandwidthLabel() +{ + char str[64]; + ParametricEQAudioProcessor* ourProcessor = getProcessor(); + + snprintf(str, 64, "Bandwidth: %.1f Hz", ourProcessor->centreFrequency_ / ourProcessor->q_); + + bandwidthLabel_.setText(str, dontSendNotification); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/parametriceq/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,71 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Parametric EQ: parametric equaliser adjusting frequency, Q and gain + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class ParametricEQAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public Timer +{ +public: + ParametricEQAudioProcessorEditor (ParametricEQAudioProcessor* ownerFilter); + ~ParametricEQAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + +private: + void updateBandwidthLabel(); + + Label centreFrequencyLabel_, qLabel_, gainDecibelsLabel_; + Label bandwidthLabel_; + Slider centreFrequencySlider_, qSlider_, gainDecibelsSlider_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + ParametricEQAudioProcessor* getProcessor() const + { + return static_cast <ParametricEQAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/parametriceq/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,328 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Parametric EQ: parametric equaliser adjusting frequency, Q and gain + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +ParametricEQAudioProcessor::ParametricEQAudioProcessor() +{ + // Set default values: + centreFrequency_ = 1000.0; + q_ = 2.0; + gainDecibels_ = 0.0; + + // Initialise the filters later when we know how many channels + eqFilters_ = 0; + numEqFilters_ = 0; + + lastUIWidth_ = 550; + lastUIHeight_ = 100; +} + +ParametricEQAudioProcessor::~ParametricEQAudioProcessor() +{ +} + +//============================================================================== +const String ParametricEQAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int ParametricEQAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float ParametricEQAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kCentreFrequencyParam: return centreFrequency_; + case kQParam: return q_; + case kGainDecibelsParam: return gainDecibels_; + default: return 0.0f; + } +} + +void ParametricEQAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kCentreFrequencyParam: + centreFrequency_ = newValue; + updateEQFilter(getSampleRate()); + break; + case kQParam: + q_ = newValue; + updateEQFilter(getSampleRate()); + break; + case kGainDecibelsParam: + gainDecibels_ = newValue; + updateEQFilter(getSampleRate()); + break; + default: + break; + } +} + +const String ParametricEQAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kCentreFrequencyParam: return "centre frequency"; + case kQParam: return "Q"; + case kGainDecibelsParam: return "gain (dB)"; + default: break; + } + + return String::empty; +} + +const String ParametricEQAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String ParametricEQAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String ParametricEQAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool ParametricEQAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool ParametricEQAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool ParametricEQAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double ParametricEQAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool ParametricEQAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool ParametricEQAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int ParametricEQAudioProcessor::getNumPrograms() +{ + return 0; +} + +int ParametricEQAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void ParametricEQAudioProcessor::setCurrentProgram (int index) +{ +} + +const String ParametricEQAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void ParametricEQAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void ParametricEQAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. + + // Create as many filters as we have input channels + numEqFilters_ = getNumInputChannels(); + eqFilters_ = (ParametricEQFilter**)malloc(numEqFilters_ * sizeof(ParametricEQFilter*)); + if(eqFilters_ == 0) + numEqFilters_ = 0; + else { + for(int i = 0; i < numEqFilters_; i++) + eqFilters_[i] = new ParametricEQFilter; + } + + // Update the filter settings to work with the current parameters and sample rate + updateEQFilter(sampleRate); +} + +void ParametricEQAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + for(int i = 0; i < numEqFilters_; i++) + delete eqFilters_[i]; + if(numEqFilters_ != 0) + free(eqFilters_); + numEqFilters_ = 0; + eqFilters_ = 0; +} + +void ParametricEQAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + int channel; + + // Go through each channel of audio that's passed in + + for (channel = 0; channel < jmin((int32)numInputChannels, numEqFilters_); ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // Run the samples through the IIR filter whose coefficients define the parametric + // equaliser. See juce_IIRFilter.cpp for the implementation. + eqFilters_[channel]->processSamples(channelData, numSamples); + } + + // Go through the remaining channels. In case we have more outputs + // than inputs, or there aren't enough filters, we'll clear any + // remaining output channels (which could otherwise contain garbage) + while(channel < numOutputChannels) + { + buffer.clear (channel++, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool ParametricEQAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* ParametricEQAudioProcessor::createEditor() +{ + return new ParametricEQAudioProcessorEditor (this); +} + +//============================================================================== +void ParametricEQAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("centreFrequency", centreFrequency_); + xml.setAttribute("q", q_); + xml.setAttribute("gainDecibels", gainDecibels_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void ParametricEQAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + centreFrequency_ = (float)xmlState->getDoubleAttribute("centreFrequency", centreFrequency_); + q_ = (float)xmlState->getDoubleAttribute("q", q_); + gainDecibels_ = (float)xmlState->getDoubleAttribute("gainDecibels", gainDecibels_); + updateEQFilter(getSampleRate()); + } + } +} + +//============================================================================== +// Update the coefficients of the parametric equaliser filter +void ParametricEQAudioProcessor::updateEQFilter(float sampleRate) +{ + for(int i = 0; i < numEqFilters_; i++) + eqFilters_[i]->makeParametric(2.0 * M_PI * centreFrequency_ / sampleRate, + q_, powf(10.0f, gainDecibels_ / 20.0f)); +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new ParametricEQAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/parametriceq/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,115 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Parametric EQ: parametric equaliser adjusting frequency, Q and gain + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" +#include "ParametricEQFilter.h" + +//============================================================================== +/** +*/ +class ParametricEQAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + ParametricEQAudioProcessor(); + ~ParametricEQAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kCentreFrequencyParam = 0, /* Centre frequency in Hz */ + kQParam, /* Filter Q */ + kGainDecibelsParam, /* Boost/cut in decibels */ + kNumParameters + }; + + float centreFrequency_, q_, gainDecibels_; +private: + void updateEQFilter(float sampleRate); + + ParametricEQFilter **eqFilters_; + int numEqFilters_; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ParametricEQAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/parametriceq/parametriceq.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="sBispa" name="parametriceq" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.parametriceqeffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Parametric EQ" pluginDesc="Parametric equaliser" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="pmeq" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="parametriceqAU" + pluginAUViewClass="parametriceqAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.parametriceq" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="o4V0Px" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="parametriceq" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="parametriceq" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="NgOLZY" name="parametriceq"> + <GROUP id="{0C07FF12-723D-A478-E620-A8578F15E1A1}" name="Source"> + <FILE id="TAIiLn" name="ParametricEQFilter.cpp" compile="1" resource="0" + file="Source/ParametricEQFilter.cpp"/> + <FILE id="bI9Gvz" name="ParametricEQFilter.h" compile="0" resource="0" + file="Source/ParametricEQFilter.h"/> + <FILE id="TfjZoz" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="ZVQHXT" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="YJOzch" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="vSsRaf" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/OnePoleAllpassFilter.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,83 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "OnePoleAllpassFilter.h" + +// Constructor: set defaults that do nothing +OnePoleAllpassFilter::OnePoleAllpassFilter() noexcept +: x1 (0.0f), y1 (0.0f), b0 (1.0f), b1 (0.0f), a1 (0.0f) +{ +} + +OnePoleAllpassFilter::~OnePoleAllpassFilter() noexcept +{ +} + +float OnePoleAllpassFilter::processSingleSampleRaw (const float sampleToProcess) noexcept +{ + // Process one sample, storing the last input and output + y1 = (b0 * sampleToProcess) + (b1 * x1) + (a1 * y1); + x1 = sampleToProcess; + return y1; +} + +void OnePoleAllpassFilter::processSamples (float* const samples, + const int numSamples) noexcept +{ + // Process a buffer of samples all at once + // make sure sample values are locked + const ScopedLock sl (lock); + + for (int i = 0; i < numSamples; ++i) + { + y1 = (b0 * samples[i]) + (b1 * x1) + (a1 * y1); + x1 = samples[i]; + samples[i] = y1; + } +} + +// Set the coefficients for a one-pole allpass filter +// according to cutoff frequency relative to sample rate +// The first parameter is inverse because it is a faster +// calculation. +void OnePoleAllpassFilter::makeAllpass (const double inverseSampleRate, + const double centreFrequency) noexcept +{ + // This code based on calculations by Julius O. Smith: + // https://ccrma.stanford.edu/~jos/pasp/Classic_Virtual_Analog_Phase.html + + // Avoid passing pi/2 to the tan function... + const double w0 = jmin(centreFrequency * inverseSampleRate, 0.99*M_PI); + const double tan_half_w0 = tan(0.5 * w0); + + const ScopedLock sl (lock); + + b0 = a1 = (float)((1.0 - tan_half_w0) / (1.0 + tan_half_w0)); + b1 = -1.0f; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/OnePoleAllpassFilter.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,77 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __ONEPOLEALLPASSFILTER_H_6E48F605__ +#define __ONEPOLEALLPASSFILTER_H_6E48F605__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + +/** + * This class implements a 1st-order allpass filter used in the phaser effect. + * Unlike TwoPoleAllpassFilter, it does not extend IIRFilter which is two-pole. + * Loosely modelled after OnePoleFilter.cpp by dRowAudio. + */ + +class OnePoleAllpassFilter +{ +public: + //============================================================================== + // Create an unititialised filter. + // This will not perform any filtering until the allpass coefficients have been set. + OnePoleAllpassFilter() noexcept; + + // Destructor. + ~OnePoleAllpassFilter() noexcept; + + //Process a number of samples in one go. + // This is the most effecient method of filtering. + // Note that the samples passed to it actually get changed. + void processSamples (float* const samples, + const int numSamples) noexcept; + + // Process a single sample. + // Less efficient method but leaves the sample unchanged, + // returning a filtered copy of it. + float processSingleSampleRaw (const float sampleToProcess) noexcept; + + // Set the centre frequency of the allpass with respect to the sample rate + void makeAllpass (const double inverseSampleRate, + const double centreFrequency) noexcept; + +private: + //============================================================================== + CriticalSection lock; + float x1, y1, b0, b1, a1; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OnePoleAllpassFilter); +}; + +#endif /* __ONEPOLEALLPASSFILTER_H_6E48F605__ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,231 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +PhaserAudioProcessorEditor::PhaserAudioProcessorEditor (PhaserAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + baseFrequencyLabel_("", "Base Frequency (Hz):"), + sweepWidthLabel_("", "Sweep Width (Hz):"), + depthLabel_("", "Depth:"), + feedbackLabel_("", "Feedback:"), + lfoFrequencyLabel_("", "LFO Frequency:"), + waveformLabel_("", "LFO Waveform:"), + filtersLabel_("", "Number of Filters:") +{ + + // Set up the sliders + addAndMakeVisible (&baseFrequencySlider_); + baseFrequencySlider_.setSliderStyle (Slider::Rotary); + baseFrequencySlider_.addListener (this); + baseFrequencySlider_.setRange (50.0, 1000.0, 0.5); + + addAndMakeVisible (&sweepWidthSlider_); + sweepWidthSlider_.setSliderStyle (Slider::Rotary); + sweepWidthSlider_.addListener (this); + sweepWidthSlider_.setRange (50.0, 5000.0, 0.5); + + addAndMakeVisible (&depthSlider_); + depthSlider_.setSliderStyle (Slider::Rotary); + depthSlider_.addListener (this); + depthSlider_.setRange (0.0, 1.0, 0.01); + + addAndMakeVisible (&feedbackSlider_); + feedbackSlider_.setSliderStyle (Slider::Rotary); + feedbackSlider_.addListener (this); + feedbackSlider_.setRange (0.0, 0.99, 0.01); + + addAndMakeVisible (&lfoFrequencySlider_); + lfoFrequencySlider_.setSliderStyle (Slider::Rotary); + lfoFrequencySlider_.addListener (this); + lfoFrequencySlider_.setRange (0.05, 2.0, 0.025); + + addAndMakeVisible(&waveformComboBox_); + waveformComboBox_.setEditableText(false); + waveformComboBox_.setJustificationType(Justification::left); + waveformComboBox_.addItem("Sine", PhaserAudioProcessor::kWaveformSine); + waveformComboBox_.addItem("Triangle", PhaserAudioProcessor::kWaveformTriangle); + waveformComboBox_.addItem("Square", PhaserAudioProcessor::kWaveformSquare); + waveformComboBox_.addItem("Sawtooth", PhaserAudioProcessor::kWaveformSawtooth); + waveformComboBox_.addListener(this); + + addAndMakeVisible(&filtersComboBox_); + filtersComboBox_.setEditableText(false); + filtersComboBox_.setJustificationType(Justification::left); + filtersComboBox_.addItem("2", 2); + filtersComboBox_.addItem("4", 4); + filtersComboBox_.addItem("6", 6); + filtersComboBox_.addItem("8", 8); + filtersComboBox_.addItem("10", 10); + filtersComboBox_.addListener(this); + + addAndMakeVisible(&stereoToggleButton_); + stereoToggleButton_.setName("Stereo"); + stereoToggleButton_.setButtonText("Stereo"); + stereoToggleButton_.addListener(this); + + baseFrequencyLabel_.attachToComponent(&baseFrequencySlider_, false); + baseFrequencyLabel_.setFont(Font (11.0f)); + + sweepWidthLabel_.attachToComponent(&sweepWidthSlider_, false); + sweepWidthLabel_.setFont(Font (11.0f)); + + depthLabel_.attachToComponent(&depthSlider_, false); + depthLabel_.setFont(Font (11.0f)); + + feedbackLabel_.attachToComponent(&feedbackSlider_, false); + feedbackLabel_.setFont(Font (11.0f)); + + lfoFrequencyLabel_.attachToComponent(&lfoFrequencySlider_, false); + lfoFrequencyLabel_.setFont(Font (11.0f)); + + waveformLabel_.attachToComponent(&waveformComboBox_, false); + waveformLabel_.setFont(Font (11.0f)); + + filtersLabel_.attachToComponent(&filtersComboBox_, false); + filtersLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(550, 200, 600, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +PhaserAudioProcessorEditor::~PhaserAudioProcessorEditor() +{ +} + +//============================================================================== +void PhaserAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void PhaserAudioProcessorEditor::resized() +{ + baseFrequencySlider_.setBounds (20, 20, 150, 40); + sweepWidthSlider_.setBounds (200, 20, 150, 40); + depthSlider_.setBounds(380, 20, 150, 40); + feedbackSlider_.setBounds(20, 80, 150, 40); + lfoFrequencySlider_.setBounds(200, 80, 150, 40); + waveformComboBox_.setBounds(20, 140, 200, 30); + filtersComboBox_.setBounds(250, 140, 200, 30); + stereoToggleButton_.setBounds(380, 80, 150, 40); + stereoToggleButton_.changeWidthToFitText(); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void PhaserAudioProcessorEditor::timerCallback() +{ + PhaserAudioProcessor* ourProcessor = getProcessor(); + + baseFrequencySlider_.setValue(ourProcessor->baseFrequency_, dontSendNotification); + sweepWidthSlider_.setValue(ourProcessor->sweepWidth_, dontSendNotification); + depthSlider_.setValue(ourProcessor->depth_, dontSendNotification); + feedbackSlider_.setValue(ourProcessor->feedback_, dontSendNotification); + lfoFrequencySlider_.setValue(ourProcessor->lfoFrequency_, dontSendNotification); + waveformComboBox_.setSelectedId(ourProcessor->waveform_, false); + filtersComboBox_.setSelectedId(ourProcessor->filtersPerChannel_, false); + stereoToggleButton_.setToggleState((ourProcessor->stereo_ != 0), false); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void PhaserAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &baseFrequencySlider_) + { + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kBaseFrequencyParam, + (float)baseFrequencySlider_.getValue()); + } + else if (slider == &sweepWidthSlider_) + { + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kSweepWidthParam, + (float)sweepWidthSlider_.getValue()); + } + else if (slider == &depthSlider_) + { + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kDepthParam, + (float)depthSlider_.getValue()); + } + else if (slider == &feedbackSlider_) + { + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kFeedbackParam, + (float)feedbackSlider_.getValue()); + } + else if (slider == &lfoFrequencySlider_) + { + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kLFOFrequencyParam, + (float)lfoFrequencySlider_.getValue()); + } +} + +// Similar callback to sliderValueChanged for ComboBox updates +void PhaserAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &waveformComboBox_) + { + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kWaveformParam, + (float)waveformComboBox_.getSelectedId()); + } + else if(comboBox == &filtersComboBox_) + { + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kFiltersParam, + (float)filtersComboBox_.getSelectedId()); + } +} + +// Callback for toggle button +void PhaserAudioProcessorEditor::buttonClicked (Button *button) +{ + if(button == &stereoToggleButton_) + { + if(button->getToggleState()) + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kStereoParam, 1.0); + else + getProcessor()->setParameterNotifyingHost (PhaserAudioProcessor::kStereoParam, 0.0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,77 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class PhaserAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Button::Listener, + public Timer +{ +public: + PhaserAudioProcessorEditor (PhaserAudioProcessor* ownerFilter); + ~PhaserAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + void buttonClicked (Button *); + +private: + Label baseFrequencyLabel_, sweepWidthLabel_, depthLabel_; + Label feedbackLabel_, lfoFrequencyLabel_, waveformLabel_; + Label filtersLabel_; + Slider baseFrequencySlider_, sweepWidthSlider_, depthSlider_; + Slider feedbackSlider_, lfoFrequencySlider_; + ComboBox waveformComboBox_, filtersComboBox_; + ToggleButton stereoToggleButton_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + PhaserAudioProcessor* getProcessor() const + { + return static_cast <PhaserAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,514 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <math.h> + +//============================================================================== +PhaserAudioProcessor::PhaserAudioProcessor() +{ + // Set default values: + baseFrequency_ = 200.0; + sweepWidth_ = 2000.0; + depth_ = 1.0; + feedback_ = 0.0; + lfoFrequency_ = 0.5; + waveform_ = kWaveformSine; + stereo_ = 0; + + // Start with no filters (at least until we have some channels) + allpassFilters_ = 0; + filtersPerChannel_ = 4; + totalNumFilters_ = 0; + lastFilterOutputs_ = 0; + numLastFilterOutputs_ = 0; + + lfoPhase_ = 0.0; + inverseSampleRate_ = 1.0/44100.0; + sampleCount_ = 0; + filterUpdateInterval_ = 8; + + lastUIWidth_ = 550; + lastUIHeight_ = 200; +} + +PhaserAudioProcessor::~PhaserAudioProcessor() +{ + deallocateFilters(); +} + +//============================================================================== +const String PhaserAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int PhaserAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float PhaserAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kBaseFrequencyParam: return baseFrequency_; + case kSweepWidthParam: return sweepWidth_; + case kDepthParam: return depth_; + case kFeedbackParam: return feedback_; + case kLFOFrequencyParam: return lfoFrequency_; + case kFiltersParam: return (float)filtersPerChannel_; + case kWaveformParam: return (float)waveform_; + case kStereoParam: return (float)stereo_; + default: return 0.0f; + } +} + +void PhaserAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + + switch (index) + { + case kBaseFrequencyParam: + baseFrequency_ = newValue; + break; + case kSweepWidthParam: + sweepWidth_ = newValue; + break; + case kDepthParam: + depth_ = newValue; + break; + case kFeedbackParam: + feedback_ = newValue; + break; + case kLFOFrequencyParam: + lfoFrequency_ = newValue; + break; + case kFiltersParam: + if(filtersPerChannel_ != (int)newValue) { + filtersPerChannel_ = (int)newValue; + reallocateFilters(); + } + break; + case kWaveformParam: + waveform_ = (int)newValue; + break; + case kStereoParam: + stereo_ = (int)newValue; + break; + default: + break; + } +} + +const String PhaserAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kBaseFrequencyParam: return "base frequency"; + case kSweepWidthParam: return "sweep width"; + case kDepthParam: return "depth"; + case kFeedbackParam: return "feedback"; + case kLFOFrequencyParam: return "LFO frequency"; + case kWaveformParam: return "waveform"; + case kStereoParam: return "stereo"; + default: break; + } + + return String::empty; +} + +const String PhaserAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String PhaserAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String PhaserAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool PhaserAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool PhaserAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool PhaserAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double PhaserAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool PhaserAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool PhaserAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int PhaserAudioProcessor::getNumPrograms() +{ + return 0; +} + +int PhaserAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void PhaserAudioProcessor::setCurrentProgram (int index) +{ +} + +const String PhaserAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void PhaserAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void PhaserAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + lfoPhase_ = 0.0; + inverseSampleRate_ = 1.0/sampleRate; + sampleCount_ = 0; + + const ScopedLock sl (lock_); + allocateFilters(); +} + +void PhaserAudioProcessor::releaseResources() +{ + const ScopedLock sl (lock_); + deallocateFilters(); +} + +void PhaserAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + lfoPhase_ = 0.0; + sampleCount_ = 0; + for(int i = 0; i < numLastFilterOutputs_; i++) + lastFilterOutputs_[i] = 0.0f; +} + + +void PhaserAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + const ScopedLock sl (lock_); + + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + float ph, channel0EndPhase = lfoPhase_; + unsigned int sc; + + // Go through each channel of audio that's passed in, applying one or more allpass filters + // to each. Each channel will be treated identically in a (non-stereo) phaser, but we have + // to have separate filter objects for each channel since the filters store the last few samples + // passed through them. + + // Filters are stored with all channel 0 filters first, then all channel 1 filters, etc. + + for(int channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + ph = lfoPhase_; + sc = sampleCount_; + + // For stereo phasing, keep the channels 90 degrees out of phase with each other + if(stereo_ != 0 && channel != 0) + ph = fmodf(ph + 0.25, 1.0); + + for (int sample = 0; sample < numSamples; ++sample) + { + float out = channelData[sample]; + + // If feedback is enabled, include the feedback from the last sample in the + // input of the allpass filter chain. This is actually not accurate to how + // analog phasers work because there is a sample of delay between output and + // input, which adds a further phase shift of up to 180 degrees at half the + // sampling frequency. To truly model an analog phaser with feedback involves + // modelling a delay-free loop, which is beyond the scope of this example. + + if(feedback_ != 0.0 && channel < numLastFilterOutputs_) + out += feedback_ * lastFilterOutputs_[channel]; + + // See OnePoleAllpassFilter.cpp for calculation of coefficients and application + // of filter to audio data. The filter processes the audio buffer in place, + // putting the output sample in place of the input. + + for(int j = 0; j < filtersPerChannel_; ++j) + { + // Safety check + if(channel * filtersPerChannel_ + j >= totalNumFilters_) + continue; + + // First, update the current allpass filter coefficients depending on the parameter + // settings and the LFO phase + + // Recalculating the filter coefficients is much more expensive than calculating + // a sample. Only update the coefficients at a fraction of the sample rate; since + // the LFO moves slowly, the difference won't generally be audible. + if(sc % filterUpdateInterval_ == 0) + { + allpassFilters_[channel * filtersPerChannel_ + j]->makeAllpass(inverseSampleRate_, + baseFrequency_ + sweepWidth_*lfo(ph, waveform_)); + } + out = allpassFilters_[channel * filtersPerChannel_ + j]->processSingleSampleRaw(out); + } + + if(channel < numLastFilterOutputs_) + lastFilterOutputs_[channel] = out; + + // Add the allpass signal to the output, though maintaining constant level + // depth = 0 --> input only ; depth = 1 --> evenly balanced input and output + channelData[sample] = (1.0f-0.5f*depth_)*channelData[sample] + 0.5f*depth_*out; + + // Update the LFO phase, keeping it in the range 0-1 + ph += lfoFrequency_*inverseSampleRate_; + if(ph >= 1.0) + ph -= 1.0; + sc++; + } + + // Use channel 0 only to keep the phase in sync between calls to processBlock() + // Otherwise quadrature phase on multiple channels will create problems. + if(channel == 0) + channel0EndPhase = ph; + } + + lfoPhase_ = channel0EndPhase; + sampleCount_ = sc; + + // Go through the remaining channels. In case we have more outputs + // than inputs, or there aren't enough filters, we'll clear any + // remaining output channels (which could otherwise contain garbage) + for(int channel = numInputChannels; channel < numOutputChannels; ++channel) + { + buffer.clear (channel++, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool PhaserAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* PhaserAudioProcessor::createEditor() +{ + return new PhaserAudioProcessorEditor (this); +} + +//============================================================================== +void PhaserAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("baseFrequency_", baseFrequency_); + xml.setAttribute("feedback", feedback_); + xml.setAttribute("sweepWidth", sweepWidth_); + xml.setAttribute("depth", depth_); + xml.setAttribute("lfoFrequency", lfoFrequency_); + xml.setAttribute("filtersPerChannel", filtersPerChannel_); + xml.setAttribute("waveform", waveform_); + xml.setAttribute("stereo", stereo_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void PhaserAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + baseFrequency_ = (float)xmlState->getDoubleAttribute("baseFrequency", baseFrequency_); + feedback_ = (float)xmlState->getDoubleAttribute("feedback", feedback_); + sweepWidth_ = (float)xmlState->getDoubleAttribute("sweepWidth", sweepWidth_); + depth_ = (float)xmlState->getDoubleAttribute("depth", depth_); + lfoFrequency_ = (float)xmlState->getDoubleAttribute("lfoFrequency", lfoFrequency_); + filtersPerChannel_ = xmlState->getIntAttribute("filtersPerChannel", filtersPerChannel_); + waveform_ = xmlState->getIntAttribute("waveform", waveform_); + stereo_ = xmlState->getIntAttribute("stereo", stereo_); + } + } +} + +//============================================================================== +// Function for calculating LFO waveforms. Phase runs from 0-1, output is scaled +// from 0 to 1 (note: not -1 to 1 as would be typical of sine). +float PhaserAudioProcessor::lfo(float phase, int waveform) +{ + switch(waveform) + { + case kWaveformTriangle: + if(phase < 0.25f) + return 0.5f + 2.0f*phase; + else if(phase < 0.75f) + return 1.0f - 2.0f*(phase - 0.25f); + else + return 2.0f*(phase-0.75f); + case kWaveformSquare: + if(phase < 0.5f) + return 1.0f; + else + return 0.0f; + case kWaveformSawtooth: + if(phase < 0.5f) + return 0.5f + phase; + else + return phase - 0.5f; + case kWaveformSine: + default: + return 0.5f + 0.5f*sinf(2.0 * M_PI * phase); + } +} + +void PhaserAudioProcessor::allocateFilters() +{ + // Create any filters we need; depends on number of channels and number of + // filters per channel + totalNumFilters_ = getNumInputChannels() * filtersPerChannel_; + if(totalNumFilters_ > 0) { + allpassFilters_ = (OnePoleAllpassFilter**)malloc(totalNumFilters_ * sizeof(OnePoleAllpassFilter*)); + if(allpassFilters_ == 0) + totalNumFilters_ = 0; + else { + for(int i = 0; i < totalNumFilters_; i++) + allpassFilters_[i] = new OnePoleAllpassFilter; + } + } + + numLastFilterOutputs_ = getNumInputChannels(); + lastFilterOutputs_ = (float *)malloc(numLastFilterOutputs_ * sizeof(float)); + for(int i = 0; i < numLastFilterOutputs_; i++) + lastFilterOutputs_[i] = 0.0f; + + // Coefficients of allpass filters will get updated in processBlock() +} + +void PhaserAudioProcessor::deallocateFilters() +{ + // Release the filters that were created in prepareToPlay() + + for(int i = 0; i < totalNumFilters_; i++) + delete allpassFilters_[i]; + if(totalNumFilters_ != 0) + free(allpassFilters_); + totalNumFilters_ = 0; + allpassFilters_ = 0; + + if(numLastFilterOutputs_ != 0) + free(lastFilterOutputs_); + numLastFilterOutputs_ = 0; + lastFilterOutputs_ = 0; +} + +// Release and recreate the filters in one atomic operation: +// the ScopedLock will not let the audio thread run between +// release and allocation +void PhaserAudioProcessor::reallocateFilters() +{ + const ScopedLock sl (lock_); + deallocateFilters(); + allocateFilters(); +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new PhaserAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,159 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" +#include "OnePoleAllpassFilter.h" +#include "TwoPoleAllpassFilter.h" + +//============================================================================== +/** +*/ +class PhaserAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + PhaserAudioProcessor(); + ~PhaserAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kBaseFrequencyParam = 0, + kSweepWidthParam, + kDepthParam, + kFeedbackParam, + kLFOFrequencyParam, + kFiltersParam, + kWaveformParam, + kStereoParam, + kNumParameters + }; + + enum Waveforms + { + kWaveformSine = 1, + kWaveformTriangle, + kWaveformSquare, + kWaveformSawtooth, + kNumWaveforms + }; + + // Adjustable parameters: + float baseFrequency_; // Lowest frequency of allpass filters + float sweepWidth_; // Amount of change from min to max delay + float depth_; // Mix level for phase-shifted signal (0-1) + float feedback_; // Feedback level for feedback phaser (0-<1) + float lfoFrequency_; // LFO frequency (Hz) + int filtersPerChannel_; // How many allpass filters to use + int waveform_; // What shape should be used for the LFO + int stereo_; // Whether to use stereo phasing + +private: + float lfo(float phase, int waveform); + void allocateFilters(); // Create the filter objects... + void deallocateFilters(); // Delete them... + void reallocateFilters(); // Delete and rebuild in one combined operation + + CriticalSection lock_; // Lock for updating number of filters + + float lfoPhase_; // Phase of the low-frequency oscillator + double inverseSampleRate_; // It's more efficient to multiply than divide, so + // cache the inverse of the sample rate + unsigned int sampleCount_; // Counter to keep track of samples elapsed, to + // keep track of filter updates + unsigned int filterUpdateInterval_; // How often to update filter coefficients + + // Bank of allpass filters that do the phasing; N filters x M channels + OnePoleAllpassFilter **allpassFilters_; + + // Storage of the last output sample from each bank of filters, for use in + // feedback loop + float *lastFilterOutputs_; + int numLastFilterOutputs_; + + int totalNumFilters_; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PhaserAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/TwoPoleAllpassFilter.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,67 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "TwoPoleAllpassFilter.h" + +/* The actual audio processing is handled by the Juce IIRFilter parent + * class. This subclass is used to define the coefficients for our + * implementation of an allpass filter + */ + +void TwoPoleAllpassFilter::makeAllpass (const double inverseSampleRate, + const double centreFrequency, + const double Q) noexcept +{ + jassert (Q > 0); + + const double discreteFrequency = 2.0 * M_PI * centreFrequency * inverseSampleRate; + const double alpha = sin(discreteFrequency) / (2.0 * Q); + const double cos_w0 = -2.0 * cos(discreteFrequency); + + // setCoefficients() takes arguments: b0, b1, b2, a0, a1, a2 + // It will normalise the filter according to the value of a0 + // to allow standard time-domain implementations + + coefficients = IIRCoefficients(1.0 - alpha, /* b0 */ + cos_w0, /* b1 */ + 1.0 + alpha, /* b2 */ + 1.0 + alpha, /* a0 */ + cos_w0, /* a1 */ + 1.0 - alpha /* a2 */); + + setCoefficients(coefficients); +} + +/* Copy coefficients from another object of the same class */ + +void TwoPoleAllpassFilter::copyCoefficientsFrom (const TwoPoleAllpassFilter& other) noexcept +{ + setCoefficients(other.coefficients); + active = other.active; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/Source/TwoPoleAllpassFilter.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,62 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Phaser: phasing effect using time-varying allpass filters + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#ifndef __TWOPOLEALLPASSFILTER_H_6E48F605__ +#define __TWOPOLEALLPASSFILTER_H_6E48F605__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + +//============================================================================== +/** + * This class implements a 2nd-order allpass filter used in the phaser effect. + */ + +class TwoPoleAllpassFilter : public IIRFilter +{ +public: + //============================================================================== + + /* Makes an allpass section at the given centre frequency and Q */ + void makeAllpass (const double inverseSampleRate, + const double centreFrequency, + const double Q) noexcept; + + /** Makes this filter duplicate the set-up of another one. + */ + void copyCoefficientsFrom (const TwoPoleAllpassFilter& other) noexcept; + +private: + //============================================================================== + JUCE_LEAK_DETECTOR (TwoPoleAllpassFilter); +}; + + +#endif // __TWOPOLEALLPASSFILTER_H_6E48F605__ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/phaser/phaser.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="p9bx7W" name="phaser" projectType="audioplug" version="1.0.0" + bundleIdentifier="com.yourcompany.phaser" buildVST="1" buildRTAS="0" + buildAU="1" pluginName="Phaser" pluginDesc="Phaser effect" pluginManufacturer="Reiss and McPherson" + pluginManufacturerCode="JRAM" pluginCode="phsr" pluginChannelConfigs="{2, 2}, {1, 1}" + pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0" + pluginSilenceInIsSilenceOut="1" pluginTailLength="0" pluginEditorRequiresKeys="0" + pluginAUExportPrefix="phaserAU" pluginAUViewClass="phaserAU_V1" + pluginRTASCategory="" jucerVersion="3.1.0" companyName="Reiss and McPherson" + buildVST3="0" buildAAX="0" aaxIdentifier="com.yourcompany.phaser" + pluginAAXCategory="AAX_ePlugInCategory_Dynamics" includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="OPpZYD" vstFolder="../../vstsdk2.4" + postbuildCommand=" # This script takes the build product and copies it to the AU, VST, VST3, RTAS and AAX folders, depending on # which plugin types you've built original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME # this looks inside the binary to detect which platforms are needed.. copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l` copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l` copyVST3=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'GetPluginFactory' | wc -l` copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l` copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l` if [ $copyAU -gt 0 ]; then echo "Copying to AudioUnit folder..." AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component if [ -d "$AU" ]; then rm -r "$AU" fi cp -r "$original" "$AU" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE" # Fix info.plist for AUs built with Xcode 3 if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then echo else echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU" /usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist" fi fi if [ $copyVST -gt 0 ]; then echo "Copying to VST folder..." VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst if [ -d "$VST" ]; then rm -r "$VST" fi cp -r "$original" "$VST" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE" fi if [ $copyVST3 -gt 0 ]; then echo "Copying to VST3 folder..." VST3=~/Library/Audio/Plug-Ins/VST3/$PRODUCT_NAME.vst3 if [ -d "$VST3" ]; then rm -r "$VST3" fi cp -r "$original" "$VST3" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST3/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST3/Contents/$INFOPLIST_FILE" fi if [ $copyRTAS -gt 0 ]; then echo "Copying to RTAS folder..." RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm if [ -d "$RTAS" ]; then rm -r "$RTAS" fi cp -r "$original" "$RTAS" fi if [ $copyAAX -gt 0 ]; then echo "Copying to AAX folder..." if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX1" ]; then rm -r "$AAX1" fi cp -r "$original" "$AAX1" fi if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX2" ]; then rm -r "$AAX2" fi cp -r "$original" "$AAX2" fi fi "> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="phaser" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="phaser" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="xI3BOV" name="phaser"> + <GROUP id="{83C99C23-D182-3F87-CAB8-70052BC4150E}" name="Source"> + <FILE id="H227jl" name="OnePoleAllpassFilter.cpp" compile="1" resource="0" + file="Source/OnePoleAllpassFilter.cpp"/> + <FILE id="rrV2Pq" name="OnePoleAllpassFilter.h" compile="0" resource="0" + file="Source/OnePoleAllpassFilter.h"/> + <FILE id="SfuYFA" name="TwoPoleAllpassFilter.cpp" compile="1" resource="0" + file="Source/TwoPoleAllpassFilter.cpp"/> + <FILE id="DPEnYt" name="TwoPoleAllpassFilter.h" compile="0" resource="0" + file="Source/TwoPoleAllpassFilter.h"/> + <FILE id="Q9JkNj" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="vXspVq" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="HUshwg" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="nnFaFM" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pingpongdelay/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,211 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ping-Pong Delay: stereo delay alternating between channels + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +PingPongDelayAudioProcessorEditor::PingPongDelayAudioProcessorEditor (PingPongDelayAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + delayLengthLeftLabel_("", "L-R Delay (sec):"), + delayLengthRightLabel_("", "R-L Delay (sec):"), + feedbackLabel_("", "Feedback:"), + wetMixLabel_("", "Delayed Mix Level:") +{ + + // Set up the sliders + addAndMakeVisible (&delayLengthLeftSlider_); + delayLengthLeftSlider_.setSliderStyle (Slider::Rotary); + delayLengthLeftSlider_.addListener (this); + delayLengthLeftSlider_.setRange (0.01, 2.0, 0.01); + + addAndMakeVisible (&delayLengthRightSlider_); + delayLengthRightSlider_.setSliderStyle (Slider::Rotary); + delayLengthRightSlider_.addListener (this); + delayLengthRightSlider_.setRange (0.01, 2.0, 0.01); + + addAndMakeVisible (&feedbackSlider_); + feedbackSlider_.setSliderStyle (Slider::Rotary); + feedbackSlider_.addListener (this); + feedbackSlider_.setRange (0.0, 0.995, 0.005); + + addAndMakeVisible (&wetMixSlider_); + wetMixSlider_.setSliderStyle (Slider::Rotary); + wetMixSlider_.addListener (this); + wetMixSlider_.setRange (0.0, 1.0, 0.01); + + addAndMakeVisible(&linkDelaysButton_); + linkDelaysButton_.setName("Link Delays"); + linkDelaysButton_.setButtonText("Link Delays"); + linkDelaysButton_.setToggleState(true, dontSendNotification); + linkDelaysButton_.addListener(this); + + addAndMakeVisible(&reverseChannelsButton_); + reverseChannelsButton_.setName("Reverse Output Channels"); + reverseChannelsButton_.setButtonText("Reverse Output Channels"); + reverseChannelsButton_.setToggleState(false, dontSendNotification); + reverseChannelsButton_.addListener(this); + + linkDelays_ = true; + + delayLengthLeftLabel_.attachToComponent(&delayLengthLeftSlider_, false); + delayLengthLeftLabel_.setFont(Font (11.0f)); + + delayLengthRightLabel_.attachToComponent(&delayLengthRightSlider_, false); + delayLengthRightLabel_.setFont(Font (11.0f)); + + feedbackLabel_.attachToComponent(&feedbackSlider_, false); + feedbackLabel_.setFont(Font (11.0f)); + + wetMixLabel_.attachToComponent(&wetMixSlider_, false); + wetMixLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(500, 140, 500, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +PingPongDelayAudioProcessorEditor::~PingPongDelayAudioProcessorEditor() +{ +} + +//============================================================================== +void PingPongDelayAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void PingPongDelayAudioProcessorEditor::resized() +{ + delayLengthLeftSlider_.setBounds (20, 20, 150, 40); + delayLengthRightSlider_.setBounds (200, 20, 150, 40); + feedbackSlider_.setBounds (20, 80, 150, 40); + wetMixSlider_.setBounds(200, 80, 150, 40); + linkDelaysButton_.setBounds(380, 20, 100, 40); + linkDelaysButton_.changeWidthToFitText(); + reverseChannelsButton_.setBounds(380, 80, 100, 40); + reverseChannelsButton_.changeWidthToFitText(); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void PingPongDelayAudioProcessorEditor::timerCallback() +{ + PingPongDelayAudioProcessor* ourProcessor = getProcessor(); + + delayLengthLeftSlider_.setValue(ourProcessor->delayLengthLeft_, dontSendNotification); + delayLengthRightSlider_.setValue(ourProcessor->delayLengthRight_, dontSendNotification); + feedbackSlider_.setValue(ourProcessor->feedback_, dontSendNotification); + wetMixSlider_.setValue(ourProcessor->wetMix_, dontSendNotification); + reverseChannelsButton_.setToggleState(ourProcessor->reverseChannels_, dontSendNotification); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void PingPongDelayAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &delayLengthLeftSlider_) + { + getProcessor()->setParameterNotifyingHost (PingPongDelayAudioProcessor::kDelayLengthLeftParam, + (float)delayLengthLeftSlider_.getValue()); + if(linkDelays_) + { + // Set the other slider to match this value + getProcessor()->setParameterNotifyingHost (PingPongDelayAudioProcessor::kDelayLengthRightParam, + (float)delayLengthLeftSlider_.getValue()); + delayLengthRightSlider_.setValue(delayLengthLeftSlider_.getValue(), dontSendNotification); + } + } + else if (slider == &delayLengthRightSlider_) + { + getProcessor()->setParameterNotifyingHost (PingPongDelayAudioProcessor::kDelayLengthRightParam, + (float)delayLengthRightSlider_.getValue()); + + if(linkDelays_) + { + // Set the other slider to match this value + getProcessor()->setParameterNotifyingHost (PingPongDelayAudioProcessor::kDelayLengthLeftParam, + (float)delayLengthRightSlider_.getValue()); + delayLengthLeftSlider_.setValue(delayLengthRightSlider_.getValue(), dontSendNotification); + } + } + else if (slider == &feedbackSlider_) + { + getProcessor()->setParameterNotifyingHost (PingPongDelayAudioProcessor::kFeedbackParam, + (float)feedbackSlider_.getValue()); + } + else if (slider == &wetMixSlider_) + { + getProcessor()->setParameterNotifyingHost (PingPongDelayAudioProcessor::kWetMixParam, + (float)wetMixSlider_.getValue()); + } +} + +// Callback for toggle button +void PingPongDelayAudioProcessorEditor::buttonClicked (Button *button) +{ + if(button == &linkDelaysButton_) + { + linkDelays_ = button->getToggleState(); + + if(linkDelays_) + { + // Keep L and R delays equal, setting them to be if they aren't already + PingPongDelayAudioProcessor* ourProcessor = getProcessor(); + + delayLengthRightSlider_.setValue(ourProcessor->delayLengthLeft_, dontSendNotification); + ourProcessor->setParameterNotifyingHost(PingPongDelayAudioProcessor::kDelayLengthRightParam, + ourProcessor->delayLengthLeft_); + } + } + else if(button == &reverseChannelsButton_) + { + bool reverse = button->getToggleState(); + + if(reverse) + getProcessor()->setParameterNotifyingHost(PingPongDelayAudioProcessor::kReverseChannelsParam, 1.0); + else + getProcessor()->setParameterNotifyingHost(PingPongDelayAudioProcessor::kReverseChannelsParam, 0.0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pingpongdelay/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,76 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ping-Pong Delay: stereo delay alternating between channels + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class PingPongDelayAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public Button::Listener, + public Timer +{ +public: + PingPongDelayAudioProcessorEditor (PingPongDelayAudioProcessor* ownerFilter); + ~PingPongDelayAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void buttonClicked (Button *); + +private: + Label delayLengthLeftLabel_, delayLengthRightLabel_; + Label feedbackLabel_, wetMixLabel_; + Slider delayLengthLeftSlider_, delayLengthRightSlider_; + Slider feedbackSlider_, wetMixSlider_; + ToggleButton linkDelaysButton_; + ToggleButton reverseChannelsButton_; + + bool linkDelays_, reverseChannels_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + PingPongDelayAudioProcessor* getProcessor() const + { + return static_cast <PingPongDelayAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pingpongdelay/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,375 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ping-Pong Delay: stereo delay alternating between channels + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +//============================================================================== +PingPongDelayAudioProcessor::PingPongDelayAudioProcessor() : delayBuffer_ (2, 1) +{ + // Set default values: + delayLengthLeft_ = delayLengthRight_ = 0.5; + wetMix_ = 0.5; + feedback_ = 0.75; + delayBufferLength_ = 1; + reverseChannels_ = false; + + // Start the circular buffer pointers at the beginning + delayReadPositionLeft_ = delayReadPositionRight_ = 0; + delayWritePosition_ = 0; + + lastUIWidth_ = 500; + lastUIHeight_ = 140; +} + +PingPongDelayAudioProcessor::~PingPongDelayAudioProcessor() +{ +} + +//============================================================================== +const String PingPongDelayAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int PingPongDelayAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float PingPongDelayAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kWetMixParam: return wetMix_; + case kFeedbackParam: return feedback_; + case kDelayLengthLeftParam: return delayLengthLeft_; + case kDelayLengthRightParam: return delayLengthRight_; + case kReverseChannelsParam: return (reverseChannels_ ? 1.0f : 0.0f); + default: return 0.0f; + } +} + +void PingPongDelayAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kWetMixParam: + wetMix_ = newValue; + break; + case kFeedbackParam: + feedback_ = newValue; + break; + case kDelayLengthLeftParam: + delayLengthLeft_ = newValue; + delayReadPositionLeft_ = (int)(delayWritePosition_ - (delayLengthLeft_ * getSampleRate()) + + delayBufferLength_) % delayBufferLength_; + break; + case kDelayLengthRightParam: + delayLengthRight_ = newValue; + delayReadPositionRight_ = (int)(delayWritePosition_ - (delayLengthRight_ * getSampleRate()) + + delayBufferLength_) % delayBufferLength_; + break; + case kReverseChannelsParam: + reverseChannels_ = (newValue != 0.0f); + break; + default: + break; + } +} + +const String PingPongDelayAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kWetMixParam: return "wet mix"; + case kFeedbackParam: return "feedback"; + case kDelayLengthLeftParam: return "delay left"; + case kDelayLengthRightParam: return "delay right"; + case kReverseChannelsParam: return "reverse channels"; + default: break; + } + + return String::empty; +} + +const String PingPongDelayAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String PingPongDelayAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String PingPongDelayAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool PingPongDelayAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool PingPongDelayAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool PingPongDelayAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double PingPongDelayAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool PingPongDelayAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool PingPongDelayAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int PingPongDelayAudioProcessor::getNumPrograms() +{ + return 0; +} + +int PingPongDelayAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void PingPongDelayAudioProcessor::setCurrentProgram (int index) +{ +} + +const String PingPongDelayAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void PingPongDelayAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void PingPongDelayAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Allocate and zero the delay buffer (size will depend on current sample rate) + // Sanity check the result so we don't end up with any zero-length calculations + delayBufferLength_ = (int)(2.0*sampleRate); + if(delayBufferLength_ < 1) + delayBufferLength_ = 1; + delayBuffer_.setSize(2, delayBufferLength_); + delayBuffer_.clear(); + + // This method gives us the sample rate. Use this to figure out what the delay position + // offset should be (since it is specified in seconds, and we need to convert it to a number + // of samples) + delayReadPositionLeft_ = (int)(delayWritePosition_ - (delayLengthLeft_ * getSampleRate()) + + delayBufferLength_) % delayBufferLength_; + delayReadPositionRight_ = (int)(delayWritePosition_ - (delayLengthRight_ * getSampleRate()) + + delayBufferLength_) % delayBufferLength_; +} + +void PingPongDelayAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + // The delay buffer will stay in memory until the effect is unloaded. +} + +void PingPongDelayAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + delayBuffer_.clear(); +} + + +void PingPongDelayAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + // This shouldn't happen, but we need a sanity check: this effect only makes sense + // if there are at least 2 channels to work with (and in this case only 2...) + if(buffer.getNumChannels() < 2) + return; + + // If there is one input only, the second channel may not contain anything useful. + // start with a blank buffer in this case + if(numInputChannels < 2) + buffer.clear(1, 0, numSamples); + + // channelDataL and channelDataR are arrays of length numSamples which contain + // the audio for one channel + float *channelDataL = buffer.getSampleData(0); + float *channelDataR = buffer.getSampleData(1); + + // delayDataL and delayDataR are the circular buffers for implementing delay + float* delayDataL = delayBuffer_.getSampleData(0); + float* delayDataR = delayBuffer_.getSampleData(1); + + for (int i = 0; i < numSamples; ++i) + { + const float inL = channelDataL[i]; + const float inR = channelDataR[i]; + float outL, outR; + + if(reverseChannels_) + { + outL = (inL + wetMix_ * delayDataR[delayReadPositionLeft_]); + outR = (inR + wetMix_ * delayDataL[delayReadPositionRight_]); + } + else + { + outL = (inL + wetMix_ * delayDataL[delayReadPositionLeft_]); + outR = (inR + wetMix_ * delayDataR[delayReadPositionRight_]); + } + + // Store the output of one delay buffer into the other, producing + // the ping-pong effect + delayDataR[delayWritePosition_] = inR + (delayDataL[delayReadPositionLeft_] * feedback_); + delayDataL[delayWritePosition_] = inL + (delayDataR[delayReadPositionRight_] * feedback_); + + if (++delayReadPositionLeft_ >= delayBufferLength_) + delayReadPositionLeft_ = 0; + if (++delayReadPositionRight_ >= delayBufferLength_) + delayReadPositionRight_ = 0; + if (++delayWritePosition_ >= delayBufferLength_) + delayWritePosition_ = 0; + + // Store the output samples in the buffer, replacing the input + channelDataL[i] = outL; + channelDataR[i] = outR; + } + + // Clear any channels above 2 (stereo) + for (int i = 2; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool PingPongDelayAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* PingPongDelayAudioProcessor::createEditor() +{ + return new PingPongDelayAudioProcessorEditor (this); +} + +//============================================================================== +void PingPongDelayAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("delayLengthLeft", delayLengthLeft_); + xml.setAttribute("delayLengthRight", delayLengthRight_); + xml.setAttribute("feedback", feedback_); + xml.setAttribute("wetMix", wetMix_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void PingPongDelayAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + delayLengthLeft_ = (float)xmlState->getDoubleAttribute("delayLengthLeft", delayLengthLeft_); + delayLengthRight_ = (float)xmlState->getDoubleAttribute("delayLengthRight", delayLengthRight_); + feedback_ = (float)xmlState->getDoubleAttribute("feedback", feedback_); + wetMix_ = (float)xmlState->getDoubleAttribute("wetMix", wetMix_); + } + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new PingPongDelayAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pingpongdelay/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,124 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ping-Pong Delay: stereo delay alternating between channels + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class PingPongDelayAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + PingPongDelayAudioProcessor(); + ~PingPongDelayAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kDelayLengthLeftParam = 0, + kDelayLengthRightParam, + kWetMixParam, + kFeedbackParam, + kReverseChannelsParam, + kNumParameters + }; + + // Adjustable parameters: + float delayLengthLeft_; // Length of left->right delay line in seconds + float delayLengthRight_; // Length of right->left delay line in seconds + float wetMix_; // Mix level of delayed signal (0-1) + float feedback_; // Feedback level (0-just less than 1) + bool reverseChannels_; // Whether to reverse the outputs from the delays + +private: + // Circular buffer variables for implementing delay + AudioSampleBuffer delayBuffer_; + int delayBufferLength_; + int delayReadPositionLeft_, delayReadPositionRight_; + int delayWritePosition_; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PingPongDelayAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pingpongdelay/pingpongdelay.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="PToC6p" name="pingpongdelay" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.pingpongdelayeffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Ping-Pong Delay" pluginDesc="Stereo ping-pong delay" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="ppdl" pluginChannelConfigs="{2,2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="0" + pluginTailLength="2" pluginEditorRequiresKeys="0" pluginAUExportPrefix="pingpongdelayAU" + pluginAUViewClass="pingpongdelayAU_V1" pluginRTASCategory="" + jucerVersion="3.1.0" companyName="Reiss and McPherson" buildVST3="0" + buildAAX="0" aaxIdentifier="com.yourcompany.pingpongdelay" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="PhfvaT" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="pingpongdelay" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="pingpongdelay" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="ta1Nc1" name="pingpongdelay"> + <GROUP id="{C0B449BE-299E-DD4A-8F5E-FF2821BC0211}" name="Source"> + <FILE id="doXhtM" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="AAZGed" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="oSou0y" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="VlrG11" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_passthrough/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,156 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Passthrough: phase vocoder structure which passes input + to output without performing any processing + + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +PVOCPassthroughAudioProcessorEditor::PVOCPassthroughAudioProcessorEditor (PVOCPassthroughAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + fftSizeLabel_("", "FFT Size:"), + hopSizeLabel_("", "Hop Size:"), + windowTypeLabel_("", "Window Type:") +{ + // This is where our plugin's editor size is set. + // setSize(170, 80); + + // Set up the selection boxes + + addAndMakeVisible(&fftSizeComboBox_); + fftSizeComboBox_.setEditableText(false); + fftSizeComboBox_.setJustificationType(Justification::left); + fftSizeComboBox_.addItem("64", 64); + fftSizeComboBox_.addItem("128", 128); + fftSizeComboBox_.addItem("256", 256); + fftSizeComboBox_.addItem("512", 512); + fftSizeComboBox_.addItem("1024", 1024); + fftSizeComboBox_.addItem("2048", 2048); + fftSizeComboBox_.addListener(this); + + addAndMakeVisible(&hopSizeComboBox_); + hopSizeComboBox_.setEditableText(false); + hopSizeComboBox_.setJustificationType(Justification::left); + hopSizeComboBox_.addItem("1 Window", PVOCPassthroughAudioProcessor::kHopSize1Window); + hopSizeComboBox_.addItem("1/2 Window", PVOCPassthroughAudioProcessor::kHopSize1_2Window); + hopSizeComboBox_.addItem("1/4 Window", PVOCPassthroughAudioProcessor::kHopSize1_4Window); + hopSizeComboBox_.addItem("1/8 Window", PVOCPassthroughAudioProcessor::kHopSize1_8Window); + hopSizeComboBox_.addListener(this); + + addAndMakeVisible(&windowTypeComboBox_); + windowTypeComboBox_.setEditableText(false); + windowTypeComboBox_.setJustificationType(Justification::left); + windowTypeComboBox_.addItem("Rectangular", PVOCPassthroughAudioProcessor::kWindowRectangular); + windowTypeComboBox_.addItem("Bartlett", PVOCPassthroughAudioProcessor::kWindowBartlett); + windowTypeComboBox_.addItem("Hann", PVOCPassthroughAudioProcessor::kWindowHann); + windowTypeComboBox_.addItem("Hamming", PVOCPassthroughAudioProcessor::kWindowHamming); + windowTypeComboBox_.addListener(this); + + fftSizeLabel_.attachToComponent(&fftSizeComboBox_, false); + fftSizeLabel_.setFont(Font (11.0f)); + + hopSizeLabel_.attachToComponent(&hopSizeComboBox_, false); + hopSizeLabel_.setFont(Font (11.0f)); + + windowTypeLabel_.attachToComponent(&windowTypeComboBox_, false); + windowTypeLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 120, 400, 160); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +PVOCPassthroughAudioProcessorEditor::~PVOCPassthroughAudioProcessorEditor() +{ +} + +//============================================================================== +void PVOCPassthroughAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void PVOCPassthroughAudioProcessorEditor::resized() +{ + fftSizeComboBox_.setBounds(20, 20, 150, 30); + hopSizeComboBox_.setBounds(200, 20, 150, 30); + windowTypeComboBox_.setBounds(20, 70, 150, 30); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void PVOCPassthroughAudioProcessorEditor::timerCallback() +{ + PVOCPassthroughAudioProcessor* ourProcessor = getProcessor(); + + fftSizeComboBox_.setSelectedId(ourProcessor->fftSelectedSize_, false); + hopSizeComboBox_.setSelectedId(ourProcessor->hopSelectedSize_, false); + windowTypeComboBox_.setSelectedId(ourProcessor->windowType_, false); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void PVOCPassthroughAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ +} + +// Similar callback to sliderValueChanged for ComboBox updates +void PVOCPassthroughAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &fftSizeComboBox_) + { + getProcessor()->setParameterNotifyingHost (PVOCPassthroughAudioProcessor::kFFTSizeParam, + (float)fftSizeComboBox_.getSelectedId()); + } + else if(comboBox == &hopSizeComboBox_) + { + getProcessor()->setParameterNotifyingHost (PVOCPassthroughAudioProcessor::kHopSizeParam, + (float)hopSizeComboBox_.getSelectedId()); + } + else if(comboBox == &windowTypeComboBox_) + { + getProcessor()->setParameterNotifyingHost (PVOCPassthroughAudioProcessor::kWindowTypeParam, + (float)windowTypeComboBox_.getSelectedId()); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_passthrough/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,76 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Passthrough: phase vocoder structure which passes input + to output without performing any processing + + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class PVOCPassthroughAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Timer +{ +public: + PVOCPassthroughAudioProcessorEditor (PVOCPassthroughAudioProcessor* ownerFilter); + ~PVOCPassthroughAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + +private: + Label fftSizeLabel_, hopSizeLabel_, windowTypeLabel_; + ComboBox fftSizeComboBox_, hopSizeComboBox_, windowTypeComboBox_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + PVOCPassthroughAudioProcessor* getProcessor() const + { + return static_cast <PVOCPassthroughAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_passthrough/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,655 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Passthrough: phase vocoder structure which passes input + to output without performing any processing + + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +PVOCPassthroughAudioProcessor::PVOCPassthroughAudioProcessor() : inputBuffer_(2, 1), outputBuffer_(2, 1) +{ + // Set default values: + fftSelectedSize_ = 512; + hopSelectedSize_ = kHopSize1_2Window; + windowType_ = kWindowRectangular; + + fftInitialised_ = false; + fftActualTransformSize_ = 0; + inputBufferLength_ = 1; + outputBufferLength_ = 1; + inputBufferWritePosition_ = outputBufferWritePosition_ = outputBufferReadPosition_ = 0; + samplesSinceLastFFT_ = 0; + windowBuffer_ = 0; + windowBufferLength_ = 0; + preparedToPlay_ = false; + fftScaleFactor_ = 0.0; + + lastUIWidth_ = 370; + lastUIHeight_ = 120; +} + +PVOCPassthroughAudioProcessor::~PVOCPassthroughAudioProcessor() +{ + // Release FFT resources if allocated. This should be handled by + // releaseResources() but in the event it doesn't happen, this avoids + // a leak. Harmless to call it twice. + deinitFFT(); + deinitWindow(); +} + +//============================================================================== +const String PVOCPassthroughAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int PVOCPassthroughAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float PVOCPassthroughAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kFFTSizeParam: return (float)fftSelectedSize_; + case kHopSizeParam: return (float)hopSelectedSize_; + case kWindowTypeParam: return (float)windowType_; + default: return 0.0f; + } +} + +void PVOCPassthroughAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kFFTSizeParam: + if((int)newValue != fftSelectedSize_) + { + fftSelectedSize_ = (int)newValue; + if(preparedToPlay_) + { + // Update settings if currently playing, else wait until prepareToPlay() called + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + } + } + break; + case kHopSizeParam: + hopSelectedSize_ = (int)newValue; + if(preparedToPlay_) + updateHopSize(); + break; + case kWindowTypeParam: + // Recalculate window if needed + if((int)newValue != windowType_) + { + windowType_ = (int)newValue; + if(preparedToPlay_) + initWindow(fftActualTransformSize_, (int)newValue); + } + break; + default: + break; + } +} + +const String PVOCPassthroughAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kFFTSizeParam: return "FFT size"; + case kHopSizeParam: return "hop size"; + case kWindowTypeParam: return "window type"; + default: break; + } + + return String::empty; +} + +const String PVOCPassthroughAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String PVOCPassthroughAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String PVOCPassthroughAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool PVOCPassthroughAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool PVOCPassthroughAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool PVOCPassthroughAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double PVOCPassthroughAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool PVOCPassthroughAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool PVOCPassthroughAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int PVOCPassthroughAudioProcessor::getNumPrograms() +{ + return 0; +} + +int PVOCPassthroughAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void PVOCPassthroughAudioProcessor::setCurrentProgram (int index) +{ +} + +const String PVOCPassthroughAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void PVOCPassthroughAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void PVOCPassthroughAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. + + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + preparedToPlay_ = true; +} + +void PVOCPassthroughAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + deinitFFT(); + deinitWindow(); + preparedToPlay_ = false; +} + +void PVOCPassthroughAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel, inwritepos, sampsincefft; + int outreadpos, outwritepos; + + // Grab the lock that prevents the FFT settings from changing + fftSpinLock_.enter(); + + // Check that we're initialised and ready to go. If not, set output to 0 + if(!fftInitialised_) + { + for (channel = 0; channel < numOutputChannels; ++channel) + { + buffer.clear (channel, 0, buffer.getNumSamples()); + } + + fftSpinLock_.exit(); + return; + } + + // Go through each channel of audio that's passed in. Collect the samples in the input + // buffer. When we've reached the next hop interval, calculate the FFT. + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // inputBufferData is the circular buffer for collecting input samples for the FFT + float* inputBufferData = inputBuffer_.getSampleData(jmin (channel, inputBuffer_.getNumChannels() - 1)); + float* outputBufferData = outputBuffer_.getSampleData(jmin (channel, inputBuffer_.getNumChannels() - 1)); + + // State variables need to be temporarily cached for each channel. We don't want the + // operations on one channel to affect the identical behaviour of the next channel + inwritepos = inputBufferWritePosition_; + outwritepos = outputBufferWritePosition_; + outreadpos = outputBufferReadPosition_; + sampsincefft = samplesSinceLastFFT_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + + // Store the next buffered sample in the output. Do this first before anything + // changes the output buffer-- we will have at least one FFT size worth of data + // stored and ready to go. Set the result to 0 when finished in preparation for the + // next overlap/add procedure. + channelData[i] = outputBufferData[outreadpos]; + outputBufferData[outreadpos] = 0.0; + if(++outreadpos >= outputBufferLength_) + outreadpos = 0; + + // Store the current sample in the input buffer, incrementing the write pointer. Also + // increment how many samples we've stored since the last transform. If it reaches the + // hop size, perform an FFT and any frequency-domain processing. + inputBufferData[inwritepos] = in; + if (++inwritepos >= inputBufferLength_) + inwritepos = 0; + if (++sampsincefft >= hopActualSize_) + { + sampsincefft = 0; + + // Find the index of the starting sample in the buffer. When the buffer length + // is equal to the transform size, this will be the current write position but + // this code is more general for larger buffers. + int inputBufferStartPosition = (inwritepos + inputBufferLength_ + - fftActualTransformSize_) % inputBufferLength_; + + // Window the buffer and copy it into the FFT input + int inputBufferIndex = inputBufferStartPosition; + for(int fftBufferIndex = 0; fftBufferIndex < fftActualTransformSize_; fftBufferIndex++) + { + // Set real part to windowed signal; imaginary part to 0. + fftTimeDomain_[fftBufferIndex][1] = 0.0; + if(fftBufferIndex >= windowBufferLength_) // Safety check, in case window isn't ready + fftTimeDomain_[fftBufferIndex][0] = 0.0; + else + fftTimeDomain_[fftBufferIndex][0] = windowBuffer_[fftBufferIndex] + * inputBufferData[inputBufferIndex]; + inputBufferIndex++; + if(inputBufferIndex >= inputBufferLength_) + inputBufferIndex = 0; + } + + // Perform the FFT on the windowed data, going into the frequency domain. + // Result will be in fftFrequencyDomain_ + fftw_execute(fftForwardPlan_); + + // ********** PHASE VOCODER PROCESSING GOES HERE ************** + // This is the place where frequency-domain calculations are made + // on the transformed signal. Put the result back into fftFrequencyDomain_ + // before transforming back. + // + // In this example, we don't do anything except reconstruct the original + // signal to show that the whole infrastructure works. + // ************************************************************ + + // Perform the inverse FFT to get back to the time domain. Result wll be + // in fftTimeDomain_. If we've done it right (kept the frequency domain + // symmetric), the time domain resuld should be strictly real allowing us + // to ignore the imaginary part. + fftw_execute(fftBackwardPlan_); + + // Add the result to the output buffer, starting at the current write position + // (Output buffer will have been zeroed after reading the last time around) + // Output needs to be scaled by the transform size to get back to original amplitude: + // this is a property of how fftw is implemented. Scaling will also need to be adjusted + // based on hop size to get the same output level (smaller hop size produces more overlap + // and hence higher signal level) + int outputBufferIndex = outwritepos; + for(int fftBufferIndex = 0; fftBufferIndex < fftActualTransformSize_; fftBufferIndex++) + { + outputBufferData[outputBufferIndex] += fftTimeDomain_[fftBufferIndex][0] * fftScaleFactor_; + if(++outputBufferIndex >= outputBufferLength_) + outputBufferIndex = 0; + } + + // Advance the write position within the buffer by the hop size + outwritepos = (outwritepos + hopActualSize_) % outputBufferLength_; + } + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + inputBufferWritePosition_ = inwritepos; + outputBufferWritePosition_ = outwritepos; + outputBufferReadPosition_ = outreadpos; + samplesSinceLastFFT_ = sampsincefft; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } + + fftSpinLock_.exit(); +} + +//============================================================================== +bool PVOCPassthroughAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* PVOCPassthroughAudioProcessor::createEditor() +{ + return new PVOCPassthroughAudioProcessorEditor (this); +} + +//============================================================================== +void PVOCPassthroughAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("fftSize", fftSelectedSize_); + xml.setAttribute("hopSize", hopSelectedSize_); + xml.setAttribute("windowType", windowType_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void PVOCPassthroughAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + fftSelectedSize_ = (int)xmlState->getDoubleAttribute("fftSize", fftSelectedSize_); + hopSelectedSize_ = (int)xmlState->getDoubleAttribute("hopSize", hopSelectedSize_); + windowType_ = (int)xmlState->getDoubleAttribute("windowType", windowType_); + + if(preparedToPlay_) + { + // Update settings if currently playing, else wait until prepareToPlay() called + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + } + } + } +} + +//============================================================================== +// Initialise the FFT data structures for a given length transform +void PVOCPassthroughAudioProcessor::initFFT(int length) +{ + if(fftInitialised_) + deinitFFT(); + + // Save the current length so we know how big our results are later + fftActualTransformSize_ = length; + + // Here we allocate the complex-number buffers for the FFT. This uses + // a convenient wrapper on the more general fftw_malloc() + fftTimeDomain_ = fftw_alloc_complex(length); + fftFrequencyDomain_ = fftw_alloc_complex(length); + + // FFTW_ESTIMATE doesn't necessarily produce the fastest executing code (FFTW_MEASURE + // will get closer) but it carries a minimum startup cost. FFTW_MEASURE might stall for + // several seconds which would be annoying in an audio plug-in context. + fftForwardPlan_ = fftw_plan_dft_1d(fftActualTransformSize_, fftTimeDomain_, + fftFrequencyDomain_, FFTW_FORWARD, FFTW_ESTIMATE); + fftBackwardPlan_ = fftw_plan_dft_1d(fftActualTransformSize_, fftFrequencyDomain_, + fftTimeDomain_, FFTW_BACKWARD, FFTW_ESTIMATE); + + // Allocate the buffer that the samples will be collected in + inputBufferLength_ = fftActualTransformSize_; + inputBuffer_.setSize(2, inputBufferLength_); + inputBuffer_.clear(); + inputBufferWritePosition_ = 0; + samplesSinceLastFFT_ = 0; + + // Allocate the output buffer to be twice the size of the FFT + // This will be enough for all hop size cases + outputBufferLength_ = 2*fftActualTransformSize_; + outputBuffer_.setSize(2, outputBufferLength_); + outputBuffer_.clear(); + outputBufferReadPosition_ = 0; + + updateHopSize(); + + fftInitialised_ = true; +} + +// Free the FFT data structures +void PVOCPassthroughAudioProcessor::deinitFFT() +{ + if(!fftInitialised_) + return; + + // Prevent this variable from changing while an audio callback is running. + // Once it has changed, the next audio callback will find that it's not + // initialised and will return silence instead of attempting to work with the + // (invalid) FFT structures. This produces an audible glitch but no crash, + // and is the simplest way to handle parameter changes in this example code. + fftSpinLock_.enter(); + fftInitialised_ = false; + fftSpinLock_.exit(); + + fftw_destroy_plan(fftForwardPlan_); + fftw_destroy_plan(fftBackwardPlan_); + fftw_free(fftTimeDomain_); + fftw_free(fftFrequencyDomain_); + + // Leave the input buffer in memory until the plugin is released +} + +//============================================================================== +// Create a new window of a given length and type +void PVOCPassthroughAudioProcessor::initWindow(int length, int windowType) +{ + if(windowBuffer_ != 0) + deinitWindow(); + if(length == 0) // Sanity check + return; + + // Allocate memory for the window + windowBuffer_ = (double *)malloc(length * sizeof(double)); + + // Write the length as a double here to simplify the code below (otherwise + // typecasts would be wise) + double windowLength = length; + + // Set values for the window, depending on its type + for(int i = 0; i < length; i++) + { + // Window functions are typically defined to be symmetrical. This will cause a + // problem in the overlap-add process: the windows instead need to be periodic + // when arranged end-to-end. As a result we calculate the window of one sample + // larger than usual, and drop the last sample. (This works as long as N is even.) + // See Julius Smith, "Spectral Audio Signal Processing" for details. + switch(windowType) + { + case kWindowBartlett: + windowBuffer_[i] = (2.0/(windowLength + 2.0))* + (0.5*(windowLength + 2.0) - abs((double)i - 0.5*windowLength)); + break; + case kWindowHann: + windowBuffer_[i] = 0.5*(1.0 - cos(2.0*M_PI*(double)i/windowLength)); + break; + case kWindowHamming: + windowBuffer_[i] = 0.54 - 0.46*cos(2.0*M_PI*(double)i/windowLength); + break; + case kWindowRectangular: + default: + windowBuffer_[i] = 1.0; + break; + } + } + + windowBufferLength_ = length; + updateScaleFactor(); +} + +// Free the window buffer +void PVOCPassthroughAudioProcessor::deinitWindow() +{ + if(windowBuffer_ == 0) + return; + + // Delay clearing the window until the audio thread is not running + // to avoid a crash if the code tries to access an invalid window + fftSpinLock_.enter(); + windowBufferLength_ = 0; + fftSpinLock_.exit(); + + free(windowBuffer_); + windowBuffer_ = 0; +} + +// Update the actual hop size depending on the window size and hop size settings +// Hop size is expressed as a fraction of a window in the parameters. +void PVOCPassthroughAudioProcessor::updateHopSize() +{ + switch(hopSelectedSize_) + { + case kHopSize1Window: + hopActualSize_ = fftActualTransformSize_; + break; + case kHopSize1_2Window: + hopActualSize_ = fftActualTransformSize_ / 2; + break; + case kHopSize1_4Window: + hopActualSize_ = fftActualTransformSize_ / 4; + break; + case kHopSize1_8Window: + hopActualSize_ = fftActualTransformSize_ / 8; + break; + } + + // Update the factor by which samples are scaled to preserve unity gain + updateScaleFactor(); + + // Read pointer lags the write pointer to allow for FFT buffers to accumulate and + // be processed. Total latency is sum of the FFT size and the hop size. + outputBufferWritePosition_ = hopActualSize_ + fftActualTransformSize_; +} + +// Update the factor by which each output sample is scaled. This needs to update +// every time FFT size, hop size, and window type are changed. +void PVOCPassthroughAudioProcessor::updateScaleFactor() +{ + // The gain needs to be normalised by the sum of the window, which implicitly + // accounts for the length of the transform and the window type. From there + // we also update based on hop size: smaller hop means more overlap means the + // overall gain should be reduced. + double windowSum = 0.0; + + for(int i = 0; i < windowBufferLength_; i++) + { + windowSum += windowBuffer_[i]; + } + + if(windowSum == 0.0) + fftScaleFactor_ = 0.0; // Catch invalid cases and mute output + else + { + switch(hopSelectedSize_) + { + case kHopSize1Window: // 0dB + fftScaleFactor_ = 1.0/(double)windowSum; + break; + case kHopSize1_2Window: // -6dB + fftScaleFactor_ = 0.5/(double)windowSum; + break; + case kHopSize1_4Window: // -12dB + fftScaleFactor_ = 0.25/(double)windowSum; + break; + case kHopSize1_8Window: // -18dB + fftScaleFactor_ = 0.125/(double)windowSum; + break; + } + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new PVOCPassthroughAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_passthrough/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,189 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Passthrough: phase vocoder structure which passes input + to output without performing any processing + + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include <fftw3.h> + +//============================================================================== +/** +*/ +class PVOCPassthroughAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + PVOCPassthroughAudioProcessor(); + ~PVOCPassthroughAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kFFTSizeParam = 0, + kHopSizeParam, + kWindowTypeParam, + kNumParameters + }; + + enum Window + { + kWindowRectangular = 1, + kWindowBartlett, + kWindowHann, + kWindowHamming + }; + + enum HopSize + { + kHopSize1Window = 1, + kHopSize1_2Window, + kHopSize1_4Window, + kHopSize1_8Window + }; + + // This parameter indicates the FFT size for phase vocoder computation. It is selected + // by the GUI and may temporarily differ from the actual size used in calculations. + int fftSelectedSize_; + int hopSelectedSize_; // Hop size, chosen from one of the options above + int windowType_; // Type of window used + +private: + // Methods to initialise and de-initialise the FFT machinery + void initFFT(int length); + void deinitFFT(); + + // Methods to initialise and de-initialise the window + void initWindow(int length, int windowType); + void deinitWindow(); + + // Methods to update the buffering for the given hop size and the output scaling + void updateHopSize(); + void updateScaleFactor(); + + // Whether the FFT has been initialised and is therefore ready to go + bool fftInitialised_; + + // Variables for calculating the FFT and IFFT: complex data structures and the + // "plan" used by the fftw library to calculate the transforms. + fftw_complex *fftTimeDomain_, *fftFrequencyDomain_; + fftw_plan fftForwardPlan_, fftBackwardPlan_; + + // Size of the FFT (generally a power of two) and the hop size (in samples, generally a fraction of FFT size) + int fftActualTransformSize_; + int hopActualSize_; + + // Amount by which to scale the inverse FFT to return to original amplitude: depends on the + // transform size (because of fftw implementation) and the hop size (because of inherent overlap) + double fftScaleFactor_; + + // Circular buffer gathers audio samples from the input until enough are available + // for the FFT calculation + AudioSampleBuffer inputBuffer_; + int inputBufferLength_; + int inputBufferWritePosition_; + + // Circular buffer that collects output samples from the FFT overlap-add process + // before they are ready to be sent to the output stream + AudioSampleBuffer outputBuffer_; + int outputBufferLength_; + int outputBufferReadPosition_, outputBufferWritePosition_; + + // How many samples since the last FFT? + int samplesSinceLastFFT_; + + // Stored window function for pre-processing input frames + double *windowBuffer_; + int windowBufferLength_; + + // Whether or not prepareToPlay() has been called, i.e. that resources are in use + bool preparedToPlay_; + + // Spin lock that prevents the FFT settings from changing in the middle of the audio + // thread. + SpinLock fftSpinLock_; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PVOCPassthroughAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_passthrough/pvoc_passthrough.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="AC7ScK" name="pvoc_passthrough" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.pvocpassthrough" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Phase Vocoder Passthrough" + pluginDesc="Blank pass-through effect using phase vocoder" pluginManufacturer="Reiss and McPherson" + pluginManufacturerCode="JRAM" pluginCode="pvpt" pluginChannelConfigs="{1, 1}, {2, 2}" + pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0" + pluginSilenceInIsSilenceOut="1" pluginTailLength="0" pluginEditorRequiresKeys="0" + pluginAUExportPrefix="pvoc_passthroughAU" pluginAUViewClass="pvoc_passthroughAU_V1" + pluginRTASCategory="" jucerVersion="3.1.0" companyName="Reiss and McPherson" + buildVST3="0" buildAAX="0" aaxIdentifier="com.yourcompany.pvoc_passthrough" + pluginAAXCategory="AAX_ePlugInCategory_Dynamics" includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="RZnSpY" vstFolder="../../vstsdk2.4" + extraLinkerFlags="-lfftw3 -lm"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="empty" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + libraryPath="/usr/local/lib" headerPath="/usr/local/include"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="empty" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + libraryPath="/usr/local/lib" headerPath="/usr/local/include"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="oVUVUz" name="pvoc_passthrough"> + <GROUP id="{F4483B04-0E7A-D77C-795E-A491F61E239B}" name="Source"> + <FILE id="d7EIMU" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="YDAD0P" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="VTO1E6" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="mhOgcd" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_pitchshift/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,186 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Pitch Shift: pitch shifter using phase vocoder + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + Based on a project by Xinyuan Lai + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +//============================================================================== +PVOCPitchShiftAudioProcessorEditor::PVOCPitchShiftAudioProcessorEditor (PVOCPitchShiftAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + fftSizeLabel_("", "FFT Size:"), + hopSizeLabel_("", "Hop Size:"), + windowTypeLabel_("", "Window Type:"), + pitchShiftLabel_("", "Pitch Shift:") // (⊙_⊙) +{ + // This is where our plugin's editor size is set. + // setSize(170, 80); + + // Set up the selection boxes + + addAndMakeVisible(&fftSizeComboBox_); + fftSizeComboBox_.setEditableText(false); + fftSizeComboBox_.setJustificationType(Justification::left); + fftSizeComboBox_.addItem("64", 64); + fftSizeComboBox_.addItem("128", 128); + fftSizeComboBox_.addItem("256", 256); + fftSizeComboBox_.addItem("512", 512); + fftSizeComboBox_.addItem("1024", 1024); + fftSizeComboBox_.addItem("2048", 2048); + fftSizeComboBox_.addListener(this); + + addAndMakeVisible(&hopSizeComboBox_); + hopSizeComboBox_.setEditableText(false); + hopSizeComboBox_.setJustificationType(Justification::left); + hopSizeComboBox_.addItem("1 Window", PVOCPitchShiftAudioProcessor::kHopSize1Window); + hopSizeComboBox_.addItem("1/2 Window", PVOCPitchShiftAudioProcessor::kHopSize1_2Window); + hopSizeComboBox_.addItem("1/4 Window", PVOCPitchShiftAudioProcessor::kHopSize1_4Window); + hopSizeComboBox_.addItem("1/8 Window", PVOCPitchShiftAudioProcessor::kHopSize1_8Window); + hopSizeComboBox_.addListener(this); + + addAndMakeVisible(&windowTypeComboBox_); + windowTypeComboBox_.setEditableText(false); + windowTypeComboBox_.setJustificationType(Justification::left); + windowTypeComboBox_.addItem("Rectangular", PVOCPitchShiftAudioProcessor::kWindowRectangular); + windowTypeComboBox_.addItem("Bartlett", PVOCPitchShiftAudioProcessor::kWindowBartlett); + windowTypeComboBox_.addItem("Hann", PVOCPitchShiftAudioProcessor::kWindowHann); + windowTypeComboBox_.addItem("Hamming", PVOCPitchShiftAudioProcessor::kWindowHamming); + windowTypeComboBox_.addListener(this); + + // (⊙_⊙) + addAndMakeVisible(&pitchShiftComboBox_); + pitchShiftComboBox_.setEditableText(false); + pitchShiftComboBox_.setJustificationType(Justification::left); + pitchShiftComboBox_.addItem("+6", PVOCPitchShiftAudioProcessor::kShiftP6); + pitchShiftComboBox_.addItem("+5", PVOCPitchShiftAudioProcessor::kShiftP5); + pitchShiftComboBox_.addItem("+4", PVOCPitchShiftAudioProcessor::kShiftP4); + pitchShiftComboBox_.addItem("+3", PVOCPitchShiftAudioProcessor::kShiftP3); + pitchShiftComboBox_.addItem("+2", PVOCPitchShiftAudioProcessor::kShiftP2); + pitchShiftComboBox_.addItem("+1", PVOCPitchShiftAudioProcessor::kShiftP1); + pitchShiftComboBox_.addItem("0", PVOCPitchShiftAudioProcessor::kShift0); + pitchShiftComboBox_.addItem("-1", PVOCPitchShiftAudioProcessor::kShiftM1); + pitchShiftComboBox_.addItem("-2", PVOCPitchShiftAudioProcessor::kShiftM2); + pitchShiftComboBox_.addItem("-3", PVOCPitchShiftAudioProcessor::kShiftM3); + pitchShiftComboBox_.addItem("-4", PVOCPitchShiftAudioProcessor::kShiftM4); + pitchShiftComboBox_.addItem("-5", PVOCPitchShiftAudioProcessor::kShiftM5); + pitchShiftComboBox_.addItem("-6", PVOCPitchShiftAudioProcessor::kShiftM6); + pitchShiftComboBox_.addListener(this); + + fftSizeLabel_.attachToComponent(&fftSizeComboBox_, false); + fftSizeLabel_.setFont(Font (11.0f)); + + hopSizeLabel_.attachToComponent(&hopSizeComboBox_, false); + hopSizeLabel_.setFont(Font (11.0f)); + + windowTypeLabel_.attachToComponent(&windowTypeComboBox_, false); + windowTypeLabel_.setFont(Font (11.0f)); + + // (⊙_⊙) + pitchShiftLabel_.attachToComponent(&pitchShiftComboBox_, false); + pitchShiftLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 120, 400, 160); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +PVOCPitchShiftAudioProcessorEditor::~PVOCPitchShiftAudioProcessorEditor() +{ +} + +//============================================================================== +void PVOCPitchShiftAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void PVOCPitchShiftAudioProcessorEditor::resized() +{ + fftSizeComboBox_.setBounds(20, 20, 150, 30); + hopSizeComboBox_.setBounds(200, 20, 150, 30); + windowTypeComboBox_.setBounds(20, 70, 150, 30); + pitchShiftComboBox_.setBounds(200, 70, 150, 30); //(⊙_⊙) + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void PVOCPitchShiftAudioProcessorEditor::timerCallback() +{ + PVOCPitchShiftAudioProcessor* ourProcessor = getProcessor(); + + fftSizeComboBox_.setSelectedId(ourProcessor->fftSelectedSize_, false); + hopSizeComboBox_.setSelectedId(ourProcessor->hopSelectedSize_, false); + windowTypeComboBox_.setSelectedId(ourProcessor->windowType_, false); + pitchShiftComboBox_.setSelectedId(ourProcessor->pitchSelectedShift_, false); // (⊙_⊙) +} + +// This is our Slider::Listener callback, when the user drags a slider. +void PVOCPitchShiftAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ +} + +// Similar callback to sliderValueChanged for ComboBox updates +void PVOCPitchShiftAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &fftSizeComboBox_) + { + getProcessor()->setParameterNotifyingHost (PVOCPitchShiftAudioProcessor::kFFTSizeParam, + (float)fftSizeComboBox_.getSelectedId()); + } + else if(comboBox == &hopSizeComboBox_) + { + getProcessor()->setParameterNotifyingHost (PVOCPitchShiftAudioProcessor::kHopSizeParam, + (float)hopSizeComboBox_.getSelectedId()); + } + else if(comboBox == &windowTypeComboBox_) + { + getProcessor()->setParameterNotifyingHost (PVOCPitchShiftAudioProcessor::kWindowTypeParam, + (float)windowTypeComboBox_.getSelectedId()); + } + // (⊙_⊙) + else if(comboBox == &pitchShiftComboBox_) + { + getProcessor()->setParameterNotifyingHost (PVOCPitchShiftAudioProcessor::kPitchShiftParam, + (float)pitchShiftComboBox_.getSelectedId()); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_pitchshift/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,75 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Pitch Shift: pitch shifter using phase vocoder + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + Based on a project by Xinyuan Lai + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class PVOCPitchShiftAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Timer +{ +public: + PVOCPitchShiftAudioProcessorEditor (PVOCPitchShiftAudioProcessor* ownerFilter); + ~PVOCPitchShiftAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + +private: + Label fftSizeLabel_, hopSizeLabel_, windowTypeLabel_, pitchShiftLabel_; //(⊙_⊙) + ComboBox fftSizeComboBox_, hopSizeComboBox_, windowTypeComboBox_, pitchShiftComboBox_; //(⊙_⊙) + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + PVOCPitchShiftAudioProcessor* getProcessor() const + { + return static_cast <PVOCPitchShiftAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_pitchshift/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,904 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Pitch Shift: pitch shifter using phase vocoder + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + Based on a project by Xinyuan Lai + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +PVOCPitchShiftAudioProcessor::PVOCPitchShiftAudioProcessor() : inputBuffer_(2, 1), outputBuffer_(2, 1) +{ + // Set default values: + fftSelectedSize_ = 1024; + hopSelectedSize_ = kHopSize1_8Window; + windowType_ = kWindowHann; + + // (⊙_⊙) + pitchSelectedShift_ = kShift0; + pitchActualShift_ = 1.0; + pitchActualShiftRec_ = 1.0; + actualRatio_ = 1.0; + synthesisWindowBufferLength_ = 1024; + for (int i = 0; i<2048; i++) + { + omega_[i] = 0.25*M_PI*i; // 0.25 corresponding to 1/8 window (2*hopsize/windowlength) + } + + fftInitialised_ = false; + fftActualTransformSize_ = 0; + inputBufferLength_ = 1; + outputBufferLength_ = 1; + inputBufferWritePosition_ = outputBufferWritePosition_ = outputBufferReadPosition_ = 0; + samplesSinceLastFFT_ = 0; + windowBuffer_ = 0; + synthesisWindowBuffer_ = 0; + windowBufferLength_ = 0; + synthesisWindowBufferLength_ = 0; + preparedToPlay_ = false; + fftScaleFactor_ = 0.0; + + lastUIWidth_ = 370; + lastUIHeight_ = 120; +} + +PVOCPitchShiftAudioProcessor::~PVOCPitchShiftAudioProcessor() +{ + // Release FFT resources if allocated. This should be handled by + // releaseResources() but in the event it doesn't happen, this avoids + // a leak. Harmless to call it twice. + deinitFFT(); + deinitWindow(); + deinitSynthesisWindow(); +} + +//============================================================================== +const String PVOCPitchShiftAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int PVOCPitchShiftAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float PVOCPitchShiftAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kFFTSizeParam: return (float)fftSelectedSize_; + case kHopSizeParam: return (float)hopSelectedSize_; + case kWindowTypeParam: return (float)windowType_; + case kPitchShiftParam: return (float)pitchSelectedShift_; // (⊙_⊙) + default: return 0.0f; + } +} + +void PVOCPitchShiftAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kFFTSizeParam: + if((int)newValue != fftSelectedSize_) + { + fftSelectedSize_ = (int)newValue; + // (⊙_⊙) + synthesisWindowBufferLength_ = floor(fftSelectedSize_*pitchActualShiftRec_); + + if(preparedToPlay_) + { + // Update settings if currently playing, else wait until prepareToPlay() called + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + initSynthesisWindow(floor(fftSelectedSize_*pitchActualShiftRec_), windowType_); + } + } + break; + case kHopSizeParam: + hopSelectedSize_ = (int)newValue; + if(preparedToPlay_) + { + updateHopSize(); + initWindow(fftSelectedSize_, windowType_); + initSynthesisWindow(floor(fftSelectedSize_*pitchActualShiftRec_), windowType_); + } + break; + case kWindowTypeParam: + // Recalculate window if needed + if((int)newValue != windowType_) + { + windowType_ = (int)newValue; + if(preparedToPlay_) + { + initWindow(fftActualTransformSize_, (int)newValue); + initSynthesisWindow(floor(fftSelectedSize_*pitchActualShiftRec_), windowType_); + } + } + break; + case kPitchShiftParam: + // (⊙_⊙) + + if((int)newValue != pitchSelectedShift_) + { + pitchSelectedShift_ = (int)newValue; + if(preparedToPlay_) + { + updatePitchShift(); + initWindow(fftSelectedSize_, windowType_); + initSynthesisWindow(floor(fftSelectedSize_*pitchActualShiftRec_), windowType_); + } + } + break; + default: + break; + } + + // (⊙_⊙) reset the arrays containing the phase information + for (int i = 0; i<2048; i++) + { + omega_[i] = 2*M_PI*i* hopActualSize_/fftActualTransformSize_; + for (int j=0; j<2; j++) + { + phi0_[i][j] = 0; + dphi_[i][j] = 0; + psi_[i][j] = 0; + } + + } + +} + +const String PVOCPitchShiftAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kFFTSizeParam: return "FFT size"; + case kHopSizeParam: return "hop size"; + case kWindowTypeParam: return "window type"; + case kPitchShiftParam: return "pitch shift"; // (⊙_⊙) + default: break; + } + + return String::empty; +} + +const String PVOCPitchShiftAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String PVOCPitchShiftAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String PVOCPitchShiftAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool PVOCPitchShiftAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool PVOCPitchShiftAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool PVOCPitchShiftAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double PVOCPitchShiftAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool PVOCPitchShiftAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool PVOCPitchShiftAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int PVOCPitchShiftAudioProcessor::getNumPrograms() +{ + return 0; +} + +int PVOCPitchShiftAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void PVOCPitchShiftAudioProcessor::setCurrentProgram (int index) +{ +} + +const String PVOCPitchShiftAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void PVOCPitchShiftAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void PVOCPitchShiftAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. + + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + initSynthesisWindow(floor(fftSelectedSize_*pitchActualShiftRec_), windowType_); + preparedToPlay_ = true; +} + +void PVOCPitchShiftAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + deinitFFT(); + deinitWindow(); + deinitSynthesisWindow(); + preparedToPlay_ = false; +} + +void PVOCPitchShiftAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel, inwritepos, sampsincefft; + int outreadpos, outwritepos; + + // Grab the lock that prevents the FFT settings from changing + fftSpinLock_.enter(); + + // Check that we're initialised and ready to go. If not, set output to 0 + if(!fftInitialised_) + { + for (channel = 0; channel < numOutputChannels; ++channel) + { + buffer.clear (channel, 0, buffer.getNumSamples()); + } + + fftSpinLock_.exit(); + return; + } + + // Go through each channel of audio that's passed in. Collect the samples in the input + // buffer. When we've reached the next hop interval, calculate the FFT. + for (channel = 0; channel < numInputChannels; ++channel) + { + // (⊙_⊙) + //double amplitude[fftActualTransformSize_]; + +// double phi[fftActualTransformSize_]; +// double phi0[fftActualTransformSize_]; +// double dphi[fftActualTransformSize_]; +// double psi[fftActualTransformSize_]; +// double omega[fftActualTransformSize_]; +// for (int i = 0; i<fftActualTransformSize_; i++) +// { +// omega[i] = 2*M_PI*hopActualSize_*i/fftActualTransformSize_; +// } + + // (⊙_⊙) variables prepared for resampling + double grain2[fftActualTransformSize_ + 1]; + double grain3[(int)floor(pitchActualShiftRec_*fftActualTransformSize_)]; + double lx; + double x; + int ix; + double dx; + + + + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // inputBufferData is the circular buffer for collecting input samples for the FFT + float* inputBufferData = inputBuffer_.getSampleData(jmin (channel, inputBuffer_.getNumChannels() - 1)); + float* outputBufferData = outputBuffer_.getSampleData(jmin (channel, inputBuffer_.getNumChannels() - 1)); + + // State variables need to be temporarily cached for each channel. We don't want the + // operations on one channel to affect the identical behaviour of the next channel + inwritepos = inputBufferWritePosition_; + outwritepos = outputBufferWritePosition_; + outreadpos = outputBufferReadPosition_; + sampsincefft = samplesSinceLastFFT_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + + // Store the next buffered sample in the output. Do this first before anything + // changes the output buffer-- we will have at least one FFT size worth of data + // stored and ready to go. Set the result to 0 when finished in preparation for the + // next overlap/add procedure. + channelData[i] = outputBufferData[outreadpos]; + outputBufferData[outreadpos] = 0.0; + if(++outreadpos >= outputBufferLength_) + outreadpos = 0; + + // Store the current sample in the input buffer, incrementing the write pointer. Also + // increment how many samples we've stored since the last transform. If it reaches the + // hop size, perform an FFT and any frequency-domain processing. + inputBufferData[inwritepos] = in; + if (++inwritepos >= inputBufferLength_) + inwritepos = 0; + if (++sampsincefft >= hopActualSize_) + { + sampsincefft = 0; + + // Find the index of the starting sample in the buffer. When the buffer length + // is equal to the transform size, this will be the current write position but + // this code is more general for larger buffers. + int inputBufferStartPosition = (inwritepos + inputBufferLength_ + - fftActualTransformSize_) % inputBufferLength_; + + // Window the buffer and copy it into the FFT input + int inputBufferIndex = inputBufferStartPosition; + for(int fftBufferIndex = 0; fftBufferIndex < fftActualTransformSize_; fftBufferIndex++) + { + // Set real part to windowed signal; imaginary part to 0. + fftTimeDomain_[fftBufferIndex][1] = 0.0; + if(fftBufferIndex >= windowBufferLength_) // Safety check, in case window isn't ready + fftTimeDomain_[fftBufferIndex][0] = 0.0; + else + fftTimeDomain_[fftBufferIndex][0] = windowBuffer_[fftBufferIndex] + * inputBufferData[inputBufferIndex]; + inputBufferIndex++; + if(inputBufferIndex >= inputBufferLength_) + inputBufferIndex = 0; + } + + // Perform the FFT on the windowed data, going into the frequency domain. + // Result will be in fftFrequencyDomain_ + fftw_execute(fftForwardPlan_); + + // ********** PHASE VOCODER PROCESSING GOES HERE ************** + // This is the place where frequency-domain calculations are made + // on the transformed signal. Put the result back into fftFrequencyDomain_ + // before transforming back. + + // (⊙_⊙) + + for (int i = 0; i<fftActualTransformSize_; i++) + { + // (⊙_⊙) first turn the fft from real-imaginary to amplitude-phase + double amplitude = sqrt(fftFrequencyDomain_[i][0]*fftFrequencyDomain_[i][0]+fftFrequencyDomain_[i][1]*fftFrequencyDomain_[i][1]); + double phase = atan2(fftFrequencyDomain_[i][1], fftFrequencyDomain_[i][0]); + + // (⊙_⊙) change the phase + dphi_[i][channel]= /*princArg(phase - phi0_[i][channel]);*/omega_[i]+ princArg(phase - phi0_[i][channel] - omega_[i]); + phi0_[i][channel] = phase; + psi_[i][channel] = princArg(psi_[i][channel] + dphi_[i][channel]*actualRatio_); + + // (⊙_⊙) turn back to real-imaginary form + fftFrequencyDomain_[i][0] = amplitude*cos(psi_[i][channel]); + fftFrequencyDomain_[i][1] = amplitude*sin(psi_[i][channel]); + + } + + // In this example, we don't do anything except reconstruct the original + // signal to show that the whole infrastructure works. + // ************************************************************ + + // Perform the inverse FFT to get back to the time domain. Result wll be + // in fftTimeDomain_. If we've done it right (kept the frequency domain + // symmetric), the time domain resuld should be strictly real allowing us + // to ignore the imaginary part. + fftw_execute(fftBackwardPlan_); + + // (⊙_⊙) gain2 is actually same with the ifft frame except that it is one element longer + for (int i = 0;i<fftActualTransformSize_; i++) + grain2[i] = fftTimeDomain_[i][0]; + + // (⊙_⊙) resampling using linear interpolation and get grain3 + for (int i = 0; i<floor(pitchActualShiftRec_*fftActualTransformSize_); i++) + { + lx = floor(pitchActualShiftRec_*fftActualTransformSize_); + x = i*fftActualTransformSize_/lx; + ix = floor(x); + dx = x - (double)ix; + grain3 [i] = grain2[ix]*(1.0 - dx) + grain2[ix+1]*dx; + } + + // Add the result to the output buffer, starting at the current write position + // (Output buffer will have been zeroed after reading the last time around) + // Output needs to be scaled by the transform size to get back to original amplitude: + // this is a property of how fftw is implemented. Scaling will also need to be adjusted + // based on hop size to get the same output level (smaller hop size produces more overlap + // and hence higher signal level) + int outputBufferIndex = outwritepos; + + + // (⊙_⊙) Synthesizing + //for(int fftBufferIndex = 0; fftBufferIndex < fftActualTransformSize_; fftBufferIndex++) + for(int fftBufferIndex = 0; fftBufferIndex < floor(pitchActualShiftRec_*fftActualTransformSize_); fftBufferIndex++) + { + if (fftBufferIndex > synthesisWindowBufferLength_) + outputBufferData[outputBufferIndex] += 0; + else + outputBufferData[outputBufferIndex] += grain3[fftBufferIndex] * fftScaleFactor_ *synthesisWindowBuffer_[fftBufferIndex]; + + if(++outputBufferIndex >= outputBufferLength_) + outputBufferIndex = 0; + } + + // Advance the write position within the buffer by the hop size + outwritepos = (outwritepos + hopActualSize_) % outputBufferLength_; + } + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + inputBufferWritePosition_ = inwritepos; + outputBufferWritePosition_ = outwritepos; + outputBufferReadPosition_ = outreadpos; + samplesSinceLastFFT_ = sampsincefft; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } + + fftSpinLock_.exit(); +} + +//============================================================================== +bool PVOCPitchShiftAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* PVOCPitchShiftAudioProcessor::createEditor() +{ + return new PVOCPitchShiftAudioProcessorEditor (this); +} + +//============================================================================== +void PVOCPitchShiftAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("fftSize", fftSelectedSize_); + xml.setAttribute("hopSize", hopSelectedSize_); + xml.setAttribute("windowType", windowType_); + xml.setAttribute("pitchShift", pitchSelectedShift_); // (⊙_⊙) + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void PVOCPitchShiftAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + fftSelectedSize_ = (int)xmlState->getDoubleAttribute("fftSize", fftSelectedSize_); + hopSelectedSize_ = (int)xmlState->getDoubleAttribute("hopSize", hopSelectedSize_); + windowType_ = (int)xmlState->getDoubleAttribute("windowType", windowType_); + // (⊙_⊙) + pitchSelectedShift_ = (int)xmlState->getDoubleAttribute("pitchShift", pitchSelectedShift_); + + + if(preparedToPlay_) + { + // Update settings if currently playing, else wait until prepareToPlay() called + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + initSynthesisWindow(floor(fftSelectedSize_*pitchActualShiftRec_), windowType_); + } + } + } +} + +//============================================================================== +// Initialise the FFT data structures for a given length transform +void PVOCPitchShiftAudioProcessor::initFFT(int length) +{ + if(fftInitialised_) + deinitFFT(); + + // Save the current length so we know how big our results are later + fftActualTransformSize_ = length; + + // Here we allocate the complex-number buffers for the FFT. This uses + // a convenient wrapper on the more general fftw_malloc() + fftTimeDomain_ = fftw_alloc_complex(length); + fftFrequencyDomain_ = fftw_alloc_complex(length); + + // FFTW_ESTIMATE doesn't necessarily produce the fastest executing code (FFTW_MEASURE + // will get closer) but it carries a minimum startup cost. FFTW_MEASURE might stall for + // several seconds which would be annoying in an audio plug-in context. + fftForwardPlan_ = fftw_plan_dft_1d(fftActualTransformSize_, fftTimeDomain_, + fftFrequencyDomain_, FFTW_FORWARD, FFTW_ESTIMATE); + fftBackwardPlan_ = fftw_plan_dft_1d(fftActualTransformSize_, fftFrequencyDomain_, + fftTimeDomain_, FFTW_BACKWARD, FFTW_ESTIMATE); + + // Allocate the buffer that the samples will be collected in + inputBufferLength_ = fftActualTransformSize_; + inputBuffer_.setSize(2, inputBufferLength_); + inputBuffer_.clear(); + inputBufferWritePosition_ = 0; + samplesSinceLastFFT_ = 0; + + // Allocate the output buffer to be twice the size of the FFT + // This will be enough for all hop size cases + outputBufferLength_ = 2*fftActualTransformSize_; + outputBuffer_.setSize(2, outputBufferLength_); + outputBuffer_.clear(); + outputBufferReadPosition_ = 0; + + updateHopSize(); + + //(⊙_⊙) + updatePitchShift(); + + fftInitialised_ = true; +} + +// Free the FFT data structures +void PVOCPitchShiftAudioProcessor::deinitFFT() +{ + if(!fftInitialised_) + return; + + // Prevent this variable from changing while an audio callback is running. + // Once it has changed, the next audio callback will find that it's not + // initialised and will return silence instead of attempting to work with the + // (invalid) FFT structures. This produces an audible glitch but no crash, + // and is the simplest way to handle parameter changes in this example code. + fftSpinLock_.enter(); + fftInitialised_ = false; + fftSpinLock_.exit(); + + fftw_destroy_plan(fftForwardPlan_); + fftw_destroy_plan(fftBackwardPlan_); + fftw_free(fftTimeDomain_); + fftw_free(fftFrequencyDomain_); + + // Leave the input buffer in memory until the plugin is released +} + +//============================================================================== +// Create a new window of a given length and type +void PVOCPitchShiftAudioProcessor::initWindow(int length, int windowType) +{ + if(windowBuffer_ != 0) + deinitWindow(); + if(length == 0) // Sanity check + return; + + // Allocate memory for the window + windowBuffer_ = (double *)malloc(length * sizeof(double)); + + // Write the length as a double here to simplify the code below (otherwise + // typecasts would be wise) + double windowLength = length; + + // Set values for the window, depending on its type + for(int i = 0; i < length; i++) + { + // Window functions are typically defined to be symmetrical. This will cause a + // problem in the overlap-add process: the windows instead need to be periodic + // when arranged end-to-end. As a result we calculate the window of one sample + // larger than usual, and drop the last sample. (This works as long as N is even.) + // See Julius Smith, "Spectral Audio Signal Processing" for details. + switch(windowType) + { + case kWindowBartlett: + windowBuffer_[i] = (2.0/(windowLength + 2.0))* + (0.5*(windowLength + 2.0) - abs((double)i - 0.5*windowLength)); + break; + case kWindowHann: + windowBuffer_[i] = 0.5*(1.0 - cos(2.0*M_PI*(double)i/windowLength)); + break; + case kWindowHamming: + windowBuffer_[i] = 0.54 - 0.46*cos(2.0*M_PI*(double)i/windowLength); + break; + case kWindowRectangular: + default: + windowBuffer_[i] = 1.0; + break; + } + } + + windowBufferLength_ = length; + updateScaleFactor(); +} + +//============================================================================== +// Create a new synthesis window of a given length and type +void PVOCPitchShiftAudioProcessor::initSynthesisWindow(int length, int windowType) +{ + if(synthesisWindowBuffer_ != 0) + deinitSynthesisWindow(); + if(length == 0) // Sanity check + return; + + // Allocate memory for the window + synthesisWindowBuffer_ = (double *)malloc(length * sizeof(double)); + + // Write the length as a double here to simplify the code below (otherwise + // typecasts would be wise) + double windowLength = length; + + // Set values for the window, depending on its type + for(int i = 0; i < length; i++) + { + // Window functions are typically defined to be symmetrical. This will cause a + // problem in the overlap-add process: the windows instead need to be periodic + // when arranged end-to-end. As a result we calculate the window of one sample + // larger than usual, and drop the last sample. (This works as long as N is even.) + // See Julius Smith, "Spectral Audio Signal Processing" for details. + switch(windowType) + { + case kWindowBartlett: + synthesisWindowBuffer_[i] = (2.0/(windowLength + 2.0))* + (0.5*(windowLength + 2.0) - abs((double)i - 0.5*windowLength)); + break; + case kWindowHann: + synthesisWindowBuffer_[i] = 0.5*(1.0 - cos(2.0*M_PI*(double)i/windowLength)); + break; + case kWindowHamming: + synthesisWindowBuffer_[i] = 0.54 - 0.46*cos(2.0*M_PI*(double)i/windowLength); + break; + case kWindowRectangular: + default: + synthesisWindowBuffer_[i] = 1.0; + break; + } + } + + synthesisWindowBufferLength_ = length; + updateScaleFactor(); +} + +// Free the window buffer +void PVOCPitchShiftAudioProcessor::deinitWindow() +{ + if(windowBuffer_ == 0) + return; + + // Delay clearing the window until the audio thread is not running + // to avoid a crash if the code tries to access an invalid window + fftSpinLock_.enter(); + windowBufferLength_ = 0; + fftSpinLock_.exit(); + + free(windowBuffer_); + windowBuffer_ = 0; +} + +// Free the synthesis window buffer +void PVOCPitchShiftAudioProcessor::deinitSynthesisWindow() +{ + if(synthesisWindowBuffer_ == 0) + return; + + // Delay clearing the window until the audio thread is not running + // to avoid a crash if the code tries to access an invalid window + fftSpinLock_.enter(); + synthesisWindowBufferLength_ = 0; + fftSpinLock_.exit(); + + free(synthesisWindowBuffer_); + synthesisWindowBuffer_ = 0; +} + +// Update the actual hop size depending on the window size and hop size settings +// Hop size is expressed as a fraction of a window in the parameters. +void PVOCPitchShiftAudioProcessor::updateHopSize() +{ + switch(hopSelectedSize_) + { + case kHopSize1Window: + hopActualSize_ = fftActualTransformSize_; + break; + case kHopSize1_2Window: + hopActualSize_ = fftActualTransformSize_ / 2; + break; + case kHopSize1_4Window: + hopActualSize_ = fftActualTransformSize_ / 4; + break; + case kHopSize1_8Window: + hopActualSize_ = fftActualTransformSize_ / 8; + break; + } + + // Update the factor by which samples are scaled to preserve unity gain + updateScaleFactor(); + + // Read pointer lags the write pointer to allow for FFT buffers to accumulate and + // be processed. Total latency is sum of the FFT size and the hop size. + outputBufferWritePosition_ = hopActualSize_ + fftActualTransformSize_; +} + + +// (⊙_⊙) Update the pitch shift +void PVOCPitchShiftAudioProcessor::updatePitchShift() +{ + switch(pitchSelectedShift_) + { + case kShift0: + pitchActualShift_ = 1.0; + break; + case kShiftP1: + pitchActualShift_ = pow(2.0, 1.0/12.0 ); + break; + case kShiftP2: + pitchActualShift_ = pow(2.0, 2.0/12.0 ); + break; + case kShiftP3: + pitchActualShift_ = pow(2.0, 3.0/12.0 ); + break; + case kShiftP4: + pitchActualShift_ = pow(2.0, 4.0/12.0 ); + break; + case kShiftP5: + pitchActualShift_ = pow(2.0, 5.0/12.0 ); + break; + case kShiftP6: + pitchActualShift_ = pow(2.0, 6.0/12.0 ); + break; + case kShiftM1: + pitchActualShift_ = pow(2.0, -1.0/12.0 ); + break; + case kShiftM2: + pitchActualShift_ = pow(2.0, -2.0/12.0 ); + break; + case kShiftM3: + pitchActualShift_ = pow(2.0, -3.0/12.0 ); + break; + case kShiftM4: + pitchActualShift_ = pow(2.0, -4.0/12.0 ); + break; + case kShiftM5: + pitchActualShift_ = pow(2.0, -5.0/12.0 ); + break; + case kShiftM6: + pitchActualShift_ = pow(2.0, -6.0/12.0 ); + break; + } + actualRatio_ = round(pitchActualShift_*hopActualSize_)/hopActualSize_; + pitchActualShiftRec_ = 1/pitchActualShift_; +} + +// (⊙_⊙) principle phase argument mod(phasein+pi,-2*pi)+pi; +double PVOCPitchShiftAudioProcessor::princArg(double phaseIn) +{ + if (phaseIn >= 0) + return fmod(phaseIn + M_PI, 2*M_PI) - M_PI; + else + return fmod(phaseIn + M_PI, -2*M_PI) + M_PI; +} + +// Update the factor by which each output sample is scaled. This needs to update +// every time FFT size, hop size, and window type are changed. +void PVOCPitchShiftAudioProcessor::updateScaleFactor() +{ + // The gain needs to be normalised by the sum of the window, which implicitly + // accounts for the length of the transform and the window type. From there + // we also update based on hop size: smaller hop means more overlap means the + // overall gain should be reduced. + double windowSum = 0.0; + + for(int i = 0; i < windowBufferLength_; i++) + { + windowSum += windowBuffer_[i]; + } + + if(windowSum == 0.0) + fftScaleFactor_ = 0.0; // Catch invalid cases and mute output + else + { + switch(hopSelectedSize_) + { + case kHopSize1Window: // 0dB + fftScaleFactor_ = 1.0/(double)windowSum; + break; + case kHopSize1_2Window: // -6dB + fftScaleFactor_ = 0.5/(double)windowSum; + break; + case kHopSize1_4Window: // -12dB + fftScaleFactor_ = 0.25/(double)windowSum; + break; + case kHopSize1_8Window: // -18dB + fftScaleFactor_ = 0.125/(double)windowSum; + break; + } + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new PVOCPitchShiftAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_pitchshift/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,230 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + PVOC Pitch Shift: pitch shifter using phase vocoder + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + Based on a project by Xinyuan Lai + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include <fftw3.h> + +//============================================================================== +/** +*/ +class PVOCPitchShiftAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + PVOCPitchShiftAudioProcessor(); + ~PVOCPitchShiftAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kFFTSizeParam = 0, + kHopSizeParam, + kWindowTypeParam, + kPitchShiftParam, // (⊙_⊙) + kNumParameters + }; + + enum Window + { + kWindowRectangular = 1, + kWindowBartlett, + kWindowHann, + kWindowHamming + }; + + enum HopSize + { + kHopSize1Window = 1, + kHopSize1_2Window, + kHopSize1_4Window, + kHopSize1_8Window + }; + + enum PitchShift // (⊙_⊙) pitch shift from 6 semitones rise to 6 semitones drop + { + kShift0 = 1, + kShiftP1, + kShiftP2, + kShiftP3, + kShiftP4, + kShiftP5, + kShiftP6, + kShiftM1, + kShiftM2, + kShiftM3, + kShiftM4, + kShiftM5, + kShiftM6 + + }; + + // This parameter indicates the FFT size for phase vocoder computation. It is selected + // by the GUI and may temporarily differ from the actual size used in calculations. + int fftSelectedSize_; + int hopSelectedSize_; // Hop size, chosen from one of the options above + int windowType_; // Type of window used + int pitchSelectedShift_; // (⊙_⊙)semitones of pitch rise or drop + +private: + // Methods to initialise and de-initialise the FFT machinery + void initFFT(int length); + void deinitFFT(); + + // Methods to initialise and de-initialise the window + void initWindow(int length, int windowType); + void deinitWindow(); + void initSynthesisWindow(int length, int windowType); + void deinitSynthesisWindow(); + + // Methods to update the buffering for the given hop size and the output scaling + void updateHopSize(); + void updateScaleFactor(); + + + // (⊙_⊙)Method to update the pitch shift + void updatePitchShift(); + + // (⊙_⊙)Method to compute the priciple phase argument + double princArg(double phaseIn); + + + // Whether the FFT has been initialised and is therefore ready to go + bool fftInitialised_; + + // Variables for calculating the FFT and IFFT: complex data structures and the + // "plan" used by the fftw library to calculate the transforms. + fftw_complex *fftTimeDomain_, *fftFrequencyDomain_; + fftw_plan fftForwardPlan_, fftBackwardPlan_; + + // Size of the FFT (generally a power of two) and the hop size (in samples, generally a fraction of FFT size) + int fftActualTransformSize_; + int hopActualSize_; + + // (⊙_⊙) The actual pitch shift by ratios + double pitchActualShift_; // the frequency ratio of original and shifted pitch + double pitchActualShiftRec_; // the reciprocal of of pitchActualShift_, just for computing efficiency + double actualRatio_; + double omega_[2048]; // the arrays for storing the phases + double phi_[2048][2]; + double phi0_[2048][2]; + double dphi_[2048][2]; + double psi_[2048][2]; + + // Amount by which to scale the inverse FFT to return to original amplitude: depends on the + // transform size (because of fftw implementation) and the hop size (because of inherent overlap) + double fftScaleFactor_; + + // Circular buffer gathers audio samples from the input until enough are available + // for the FFT calculation + AudioSampleBuffer inputBuffer_; + int inputBufferLength_; + int inputBufferWritePosition_; + + // Circular buffer that collects output samples from the FFT overlap-add process + // before they are ready to be sent to the output stream + AudioSampleBuffer outputBuffer_; + int outputBufferLength_; + int outputBufferReadPosition_, outputBufferWritePosition_; + + // How many samples since the last FFT? + int samplesSinceLastFFT_; + + // Stored window function for pre-processing input frames + double *windowBuffer_; + double *synthesisWindowBuffer_; + int windowBufferLength_; + int synthesisWindowBufferLength_; + + // Whether or not prepareToPlay() has been called, i.e. that resources are in use + bool preparedToPlay_; + + // Spin lock that prevents the FFT settings from changing in the middle of the audio + // thread. + SpinLock fftSpinLock_; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PVOCPitchShiftAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/pvoc_pitchshift/pvoc_pitchshift.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="AC7ScK" name="pvoc_pitchshift" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.pvocpitchshift" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Pitch Shifter" pluginDesc="Pitch shift using phase vocoder" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="pvps" pluginChannelConfigs="{2,2},{1,1}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="pvoc_pitchshiftAU" + pluginAUViewClass="pvoc_passthroughAU_V1" pluginRTASCategory="" + jucerVersion="3.1.0" companyName="Reiss and McPherson" buildVST3="0" + buildAAX="0" aaxIdentifier="uk.ac.qmul.eecs.pvocpitchshift" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="RZnSpY" vstFolder="../../vstsdk2.4" + extraLinkerFlags="-lfftw3 -lm" postbuildCommand=" # This script takes the build product and copies it to the AU, VST, VST3, RTAS and AAX folders, depending on # which plugin types you've built original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME # this looks inside the binary to detect which platforms are needed.. copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l` copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l` copyVST3=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'GetPluginFactory' | wc -l` copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l` copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l` if [ $copyAU -gt 0 ]; then echo "Copying to AudioUnit folder..." AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component if [ -d "$AU" ]; then rm -r "$AU" fi cp -r "$original" "$AU" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE" # Fix info.plist for AUs built with Xcode 3 if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then echo else echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU" /usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist" fi fi if [ $copyVST -gt 0 ]; then echo "Copying to VST folder..." VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst if [ -d "$VST" ]; then rm -r "$VST" fi cp -r "$original" "$VST" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE" fi if [ $copyVST3 -gt 0 ]; then echo "Copying to VST3 folder..." VST3=~/Library/Audio/Plug-Ins/VST3/$PRODUCT_NAME.vst3 if [ -d "$VST3" ]; then rm -r "$VST3" fi cp -r "$original" "$VST3" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST3/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST3/Contents/$INFOPLIST_FILE" fi if [ $copyRTAS -gt 0 ]; then echo "Copying to RTAS folder..." RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm if [ -d "$RTAS" ]; then rm -r "$RTAS" fi cp -r "$original" "$RTAS" fi if [ $copyAAX -gt 0 ]; then echo "Copying to AAX folder..." if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX1" ]; then rm -r "$AAX1" fi cp -r "$original" "$AAX1" fi if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX2" ]; then rm -r "$AAX2" fi cp -r "$original" "$AAX2" fi fi "> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="pitchshift" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + headerPath="/usr/local/include" libraryPath="/usr/local/lib"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="pitchshift" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + headerPath="/usr/local/include" libraryPath="/usr/local/lib"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="oVUVUz" name="pvoc_pitchshift"> + <GROUP id="{F4483B04-0E7A-D77C-795E-A491F61E239B}" name="Source"> + <FILE id="d7EIMU" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="YDAD0P" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="VTO1E6" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="mhOgcd" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/reverb/Source/MVerb.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,848 @@ +// Copyright (c) 2010 Martin Eastwood +// This code is distributed under the terms of the GNU General Public License + +// MVerb 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. +// +// MVerb 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 MVerb. If not, see <http://www.gnu.org/licenses/>. + +#ifndef EMVERB_H +#define EMVERB_H + +//forward declaration +template<typename T, int maxLength> class Allpass; +template<typename T, int maxLength> class StaticAllpassFourTap; +template<typename T, int maxLength> class StaticDelayLine; +template<typename T, int maxLength> class StaticDelayLineFourTap; +template<typename T, int maxLength> class StaticDelayLineEightTap; +template<typename T, int OverSampleCount> class StateVariable; + +template<typename T> +class MVerb +{ +private: + Allpass<T, 96000> allpass[4]; + StaticAllpassFourTap<T, 96000> allpassFourTap[4]; + StateVariable<T,4> bandwidthFilter[2]; + StateVariable<T,4> damping[2]; + StaticDelayLine<T, 96000> predelay; + StaticDelayLineFourTap<T, 96000> staticDelayLine[4]; + StaticDelayLineEightTap<T, 96000> earlyReflectionsDelayLine[2]; + T SampleRate, DampingFreq, Density1, Density2, BandwidthFreq, PreDelayTime, Decay, Gain, Mix, EarlyMix, Size; + T MixSmooth, EarlyLateSmooth, BandwidthSmooth, DampingSmooth, PredelaySmooth, SizeSmooth, DensitySmooth, DecaySmooth; + T PreviousLeftTank, PreviousRightTank; + int ControlRate, ControlRateCounter; + +public: + enum + { + DAMPINGFREQ=0, + DENSITY, + BANDWIDTHFREQ, + DECAY, + PREDELAY, + SIZE, + GAIN, + MIX, + EARLYMIX, + NUM_PARAMS + }; + + MVerb(){ + setParameter (DAMPINGFREQ, 0.0); + setParameter (DENSITY, 0.5); + setParameter (BANDWIDTHFREQ, 1.0); + setParameter (DECAY, 0.5); + setParameter (PREDELAY, 0.0); + setParameter (SIZE, 0.5); + setParameter (GAIN, 1.0); + setParameter (MIX, 0.15); + setParameter (EARLYMIX, 0.75); + + SampleRate = 44100.; + PreviousLeftTank = 0.; + PreviousRightTank = 0.; + PreDelayTime = 100 * (SampleRate / 1000); + MixSmooth = EarlyLateSmooth = BandwidthSmooth = DampingSmooth = PredelaySmooth = SizeSmooth = DecaySmooth = DensitySmooth = 0.; + ControlRate = SampleRate / 1000; + ControlRateCounter = 0; + reset(); + } + + ~MVerb(){ + //nowt to do here + } + + void process(T **inputs, T **outputs, int sampleFrames){ + T OneOverSampleFrames = 1. / sampleFrames; + T MixDelta = (Mix - MixSmooth) * OneOverSampleFrames; + T EarlyLateDelta = (EarlyMix - EarlyLateSmooth) * OneOverSampleFrames; + T BandwidthDelta = (((BandwidthFreq * 18400.) + 100.) - BandwidthSmooth) * OneOverSampleFrames; + T DampingDelta = (((DampingFreq * 18400.) + 100.) - DampingSmooth) * OneOverSampleFrames; + T PredelayDelta = ((PreDelayTime * 200 * (SampleRate / 1000)) - PredelaySmooth) * OneOverSampleFrames; + T SizeDelta = (Size - SizeSmooth) * OneOverSampleFrames; + T DecayDelta = (((0.7995f * Decay) + 0.005) - DecaySmooth) * OneOverSampleFrames; + T DensityDelta = (((0.7995f * Density1) + 0.005) - DensitySmooth) * OneOverSampleFrames; + for(int i=0;i<sampleFrames;++i){ + T left = inputs[0][i]; + T right = inputs[1][i]; + MixSmooth += MixDelta; + EarlyLateSmooth += EarlyLateDelta; + BandwidthSmooth += BandwidthDelta; + DampingSmooth += DampingDelta; + PredelaySmooth += PredelayDelta; + SizeSmooth += SizeDelta; + DecaySmooth += DecayDelta; + DensitySmooth += DensityDelta; + if (ControlRateCounter >= ControlRate){ + ControlRateCounter = 0; + bandwidthFilter[0].Frequency(BandwidthSmooth); + bandwidthFilter[1].Frequency(BandwidthSmooth); + damping[0].Frequency(DampingSmooth); + damping[1].Frequency(DampingSmooth); + } + ++ControlRateCounter; + predelay.SetLength(PredelaySmooth); + Density2 = DecaySmooth + 0.15; + if (Density2 > 0.5) + Density2 = 0.5; + if (Density2 < 0.25) + Density2 = 0.25; + allpassFourTap[1].SetFeedback(Density2); + allpassFourTap[3].SetFeedback(Density2); + allpassFourTap[0].SetFeedback(Density1); + allpassFourTap[2].SetFeedback(Density1); + T bandwidthLeft = bandwidthFilter[0](left) ; + T bandwidthRight = bandwidthFilter[1](right) ; + T earlyReflectionsL = earlyReflectionsDelayLine[0] ( bandwidthLeft * 0.5 + bandwidthRight * 0.3 ) + + earlyReflectionsDelayLine[0].GetIndex(2) * 0.6 + + earlyReflectionsDelayLine[0].GetIndex(3) * 0.4 + + earlyReflectionsDelayLine[0].GetIndex(4) * 0.3 + + earlyReflectionsDelayLine[0].GetIndex(5) * 0.3 + + earlyReflectionsDelayLine[0].GetIndex(6) * 0.1 + + earlyReflectionsDelayLine[0].GetIndex(7) * 0.1 + + ( bandwidthLeft * 0.4 + bandwidthRight * 0.2 ) * 0.5 ; + T earlyReflectionsR = earlyReflectionsDelayLine[1] ( bandwidthLeft * 0.3 + bandwidthRight * 0.5 ) + + earlyReflectionsDelayLine[1].GetIndex(2) * 0.6 + + earlyReflectionsDelayLine[1].GetIndex(3) * 0.4 + + earlyReflectionsDelayLine[1].GetIndex(4) * 0.3 + + earlyReflectionsDelayLine[1].GetIndex(5) * 0.3 + + earlyReflectionsDelayLine[1].GetIndex(6) * 0.1 + + earlyReflectionsDelayLine[1].GetIndex(7) * 0.1 + + ( bandwidthLeft * 0.2 + bandwidthRight * 0.4 ) * 0.5 ; + T predelayMonoInput = predelay(( bandwidthRight + bandwidthLeft ) * 0.5f); + T smearedInput = predelayMonoInput; + for(int j=0;j<4;j++) + smearedInput = allpass[j] ( smearedInput ); + T leftTank = allpassFourTap[0] ( smearedInput + PreviousRightTank ) ; + leftTank = staticDelayLine[0] (leftTank); + leftTank = damping[0](leftTank); + leftTank = allpassFourTap[1](leftTank); + leftTank = staticDelayLine[1](leftTank); + T rightTank = allpassFourTap[2] (smearedInput + PreviousLeftTank) ; + rightTank = staticDelayLine[2](rightTank); + rightTank = damping[1] (rightTank); + rightTank = allpassFourTap[3](rightTank); + rightTank = staticDelayLine[3](rightTank); + PreviousLeftTank = leftTank * DecaySmooth; + PreviousRightTank = rightTank * DecaySmooth; + T accumulatorL = (0.6*staticDelayLine[2].GetIndex(1)) + +(0.6*staticDelayLine[2].GetIndex(2)) + -(0.6*allpassFourTap[3].GetIndex(1)) + +(0.6*staticDelayLine[3].GetIndex(1)) + -(0.6*staticDelayLine[0].GetIndex(1)) + -(0.6*allpassFourTap[1].GetIndex(1)) + -(0.6*staticDelayLine[1].GetIndex(1)); + T accumulatorR = (0.6*staticDelayLine[0].GetIndex(2)) + +(0.6*staticDelayLine[0].GetIndex(3)) + -(0.6*allpassFourTap[1].GetIndex(2)) + +(0.6*staticDelayLine[1].GetIndex(2)) + -(0.6*staticDelayLine[2].GetIndex(3)) + -(0.6*allpassFourTap[3].GetIndex(2)) + -(0.6*staticDelayLine[3].GetIndex(2)); + accumulatorL = ((accumulatorL * EarlyMix) + ((1 - EarlyMix) * earlyReflectionsL)); + accumulatorR = ((accumulatorR * EarlyMix) + ((1 - EarlyMix) * earlyReflectionsR)); + left = ( left + MixSmooth * ( accumulatorL - left ) ) * Gain; + right = ( right + MixSmooth * ( accumulatorR - right ) ) * Gain; + outputs[0][i] = left; + outputs[1][i] = right; + } + } + + void reset(){ + ControlRateCounter = 0; + bandwidthFilter[0].SetSampleRate (SampleRate ); + bandwidthFilter[1].SetSampleRate (SampleRate ); + bandwidthFilter[0].Reset(); + bandwidthFilter[1].Reset(); + damping[0].SetSampleRate (SampleRate ); + damping[1].SetSampleRate (SampleRate ); + damping[0].Reset(); + damping[1].Reset(); + predelay.Clear(); + predelay.SetLength(PreDelayTime); + allpass[0].Clear(); + allpass[1].Clear(); + allpass[2].Clear(); + allpass[3].Clear(); + allpass[0].SetLength (0.0048 * SampleRate); + allpass[1].SetLength (0.0036 * SampleRate); + allpass[2].SetLength (0.0127 * SampleRate); + allpass[3].SetLength (0.0093 * SampleRate); + allpass[0].SetFeedback (0.75); + allpass[1].SetFeedback (0.75); + allpass[2].SetFeedback (0.625); + allpass[3].SetFeedback (0.625); + allpassFourTap[0].Clear(); + allpassFourTap[1].Clear(); + allpassFourTap[2].Clear(); + allpassFourTap[3].Clear(); + allpassFourTap[0].SetLength(0.020 * SampleRate * Size); + allpassFourTap[1].SetLength(0.060 * SampleRate * Size); + allpassFourTap[2].SetLength(0.030 * SampleRate * Size); + allpassFourTap[3].SetLength(0.089 * SampleRate * Size); + allpassFourTap[0].SetFeedback(Density1); + allpassFourTap[1].SetFeedback(Density2); + allpassFourTap[2].SetFeedback(Density1); + allpassFourTap[3].SetFeedback(Density2); + allpassFourTap[0].SetIndex(0,0,0,0); + allpassFourTap[1].SetIndex(0,0.006 * SampleRate * Size, 0.041 * SampleRate * Size, 0); + allpassFourTap[2].SetIndex(0,0,0,0); + allpassFourTap[3].SetIndex(0,0.031 * SampleRate * Size, 0.011 * SampleRate * Size, 0); + staticDelayLine[0].Clear(); + staticDelayLine[1].Clear(); + staticDelayLine[2].Clear(); + staticDelayLine[3].Clear(); + staticDelayLine[0].SetLength(0.15 * SampleRate * Size); + staticDelayLine[1].SetLength(0.12 * SampleRate * Size); + staticDelayLine[2].SetLength(0.14 * SampleRate * Size); + staticDelayLine[3].SetLength(0.11 * SampleRate * Size); + staticDelayLine[0].SetIndex(0, 0.067 * SampleRate * Size, 0.011 * SampleRate * Size , 0.121 * SampleRate * Size); + staticDelayLine[1].SetIndex(0, 0.036 * SampleRate * Size, 0.089 * SampleRate * Size , 0); + staticDelayLine[2].SetIndex(0, 0.0089 * SampleRate * Size, 0.099 * SampleRate * Size , 0); + staticDelayLine[3].SetIndex(0, 0.067 * SampleRate * Size, 0.0041 * SampleRate * Size , 0); + earlyReflectionsDelayLine[0].Clear(); + earlyReflectionsDelayLine[1].Clear(); + earlyReflectionsDelayLine[0].SetLength(0.089 * SampleRate); + earlyReflectionsDelayLine[0].SetIndex (0, 0.0199*SampleRate, 0.0219*SampleRate, 0.0354*SampleRate,0.0389*SampleRate, 0.0414*SampleRate, 0.0692*SampleRate, 0); + earlyReflectionsDelayLine[1].SetLength(0.069 * SampleRate); + earlyReflectionsDelayLine[1].SetIndex (0, 0.0099*SampleRate, 0.011*SampleRate, 0.0182*SampleRate,0.0189*SampleRate, 0.0213*SampleRate, 0.0431*SampleRate, 0); + } + + void setParameter(int index, T value){ + switch(index){ + case DAMPINGFREQ: + DampingFreq = 1. - value; + break; + case DENSITY: + Density1 = value; + break; + case BANDWIDTHFREQ: + BandwidthFreq = value; + break; + case PREDELAY: + PreDelayTime = value; + break; + case SIZE: + Size = (0.95 * value) + 0.05; + allpassFourTap[0].Clear(); + allpassFourTap[1].Clear(); + allpassFourTap[2].Clear(); + allpassFourTap[3].Clear(); + allpassFourTap[0].SetLength(0.020 * SampleRate * Size); + allpassFourTap[1].SetLength(0.060 * SampleRate * Size); + allpassFourTap[2].SetLength(0.030 * SampleRate * Size); + allpassFourTap[3].SetLength(0.089 * SampleRate * Size); + allpassFourTap[1].SetIndex(0,0.006 * SampleRate * Size, 0.041 * SampleRate * Size, 0); + allpassFourTap[3].SetIndex(0,0.031 * SampleRate * Size, 0.011 * SampleRate * Size, 0); + staticDelayLine[0].Clear(); + staticDelayLine[1].Clear(); + staticDelayLine[2].Clear(); + staticDelayLine[3].Clear(); + staticDelayLine[0].SetLength(0.15 * SampleRate * Size); + staticDelayLine[1].SetLength(0.12 * SampleRate * Size); + staticDelayLine[2].SetLength(0.14 * SampleRate * Size); + staticDelayLine[3].SetLength(0.11 * SampleRate * Size); + staticDelayLine[0].SetIndex(0, 0.067 * SampleRate * Size, 0.011 * SampleRate * Size , 0.121 * SampleRate * Size); + staticDelayLine[1].SetIndex(0, 0.036 * SampleRate * Size, 0.089 * SampleRate * Size , 0); + staticDelayLine[2].SetIndex(0, 0.0089 * SampleRate * Size, 0.099 * SampleRate * Size , 0); + staticDelayLine[3].SetIndex(0, 0.067 * SampleRate * Size, 0.0041 * SampleRate * Size , 0); + break; + case DECAY: + Decay = value; + break; + case GAIN: + Gain = value; + break; + case MIX: + Mix = value; + break; + case EARLYMIX: + EarlyMix = value; + break; + } + } + + float getParameter(int index){ + switch(index){ + case DAMPINGFREQ: + return DampingFreq * 100.; + break; + case DENSITY: + return Density1 * 100.f; + break; + case BANDWIDTHFREQ: + return BandwidthFreq * 100.; + break; + case PREDELAY: + return PreDelayTime * 100.; + break; + case SIZE: + return (((0.95 * Size) + 0.05)*100.); + break; + case DECAY: + return Decay * 100.f; + break; + case GAIN: + return Gain * 100.f; + break; + case MIX: + return Mix * 100.f; + break; + case EARLYMIX: + return EarlyMix * 100.f; + break; + default: return 0.f; + break; + + } + } + + void setSampleRate(T sr){ + SampleRate = sr; + ControlRate = SampleRate / 1000; + reset(); + } +}; + + + +template<typename T, int maxLength> +class Allpass +{ +private: + T buffer[maxLength]; + int index; + int Length; + T Feedback; + +public: + Allpass() + { + SetLength ( maxLength - 1 ); + Clear(); + Feedback = 0.5; + } + + T operator()(T input) + { + T output; + T bufout; + bufout = buffer[index]; + T temp = input * -Feedback; + output = bufout + temp; + buffer[index] = input + ((bufout+temp)*Feedback); + if(++index>=Length) index = 0; + return output; + + } + + void SetLength (int Length) + { + if( Length >= maxLength ) + Length = maxLength; + if( Length < 0 ) + Length = 0; + + this->Length = Length; + } + + void SetFeedback(T feedback) + { + Feedback = feedback; + } + + void Clear() + { + memset(buffer, 0, sizeof(buffer)); + index = 0; + } + + int GetLength() const + { + return Length; + } +}; + +template<typename T, int maxLength> +class StaticAllpassFourTap +{ +private: + T buffer[maxLength]; + int index1, index2, index3, index4; + int Length; + T Feedback; + +public: + StaticAllpassFourTap() + { + SetLength ( maxLength - 1 ); + Clear(); + Feedback = 0.5; + } + + T operator()(T input) + { + T output; + T bufout; + + bufout = buffer[index1]; + T temp = input * -Feedback; + output = bufout + temp; + buffer[index1] = input + ((bufout+temp)*Feedback); + + if(++index1>=Length) + index1 = 0; + if(++index2 >= Length) + index2 = 0; + if(++index3 >= Length) + index3 = 0; + if(++index4 >= Length) + index4 = 0; + + return output; + + } + + void SetIndex (int Index1, int Index2, int Index3, int Index4) + { + index1 = Index1; + index2 = Index2; + index3 = Index3; + index4 = Index4; + } + + T GetIndex (int Index) + { + switch (Index) + { + case 0: + return buffer[index1]; + break; + case 1: + return buffer[index2]; + break; + case 2: + return buffer[index3]; + break; + case 3: + return buffer[index4]; + break; + default: + return buffer[index1]; + break; + } + } + + void SetLength (int Length) + { + if( Length >= maxLength ) + Length = maxLength; + if( Length < 0 ) + Length = 0; + + this->Length = Length; + } + + + void Clear() + { + memset(buffer, 0, sizeof(buffer)); + index1 = index2 = index3 = index4 = 0; + } + + void SetFeedback(T feedback) + { + Feedback = feedback; + } + + + int GetLength() const + { + return Length; + } +}; + +template<typename T, int maxLength> +class StaticDelayLine +{ +private: + T buffer[maxLength]; + int index; + int Length; + T Feedback; + +public: + StaticDelayLine() + { + SetLength ( maxLength - 1 ); + Clear(); + } + + T operator()(T input) + { + T output = buffer[index]; + buffer[index++] = input; + if(index >= Length) + index = 0; + return output; + + } + + void SetLength (int Length) + { + if( Length >= maxLength ) + Length = maxLength; + if( Length < 0 ) + Length = 0; + + this->Length = Length; + } + + void Clear() + { + memset(buffer, 0, sizeof(buffer)); + index = 0; + } + + int GetLength() const + { + return Length; + } +}; + +template<typename T, int maxLength> +class StaticDelayLineFourTap +{ +private: + T buffer[maxLength]; + int index1, index2, index3, index4; + int Length; + T Feedback; + +public: + StaticDelayLineFourTap() + { + SetLength ( maxLength - 1 ); + Clear(); + } + + //get ouput and iterate + T operator()(T input) + { + T output = buffer[index1]; + buffer[index1++] = input; + if(index1 >= Length) + index1 = 0; + if(++index2 >= Length) + index2 = 0; + if(++index3 >= Length) + index3 = 0; + if(++index4 >= Length) + index4 = 0; + return output; + + } + + void SetIndex (int Index1, int Index2, int Index3, int Index4) + { + index1 = Index1; + index2 = Index2; + index3 = Index3; + index4 = Index4; + } + + + T GetIndex (int Index) + { + switch (Index) + { + case 0: + return buffer[index1]; + break; + case 1: + return buffer[index2]; + break; + case 2: + return buffer[index3]; + break; + case 3: + return buffer[index4]; + break; + default: + return buffer[index1]; + break; + } + } + + + void SetLength (int Length) + { + if( Length >= maxLength ) + Length = maxLength; + if( Length < 0 ) + Length = 0; + + this->Length = Length; + } + + + void Clear() + { + memset(buffer, 0, sizeof(buffer)); + index1 = index2 = index3 = index4 = 0; + } + + + int GetLength() const + { + return Length; + } +}; + +template<typename T, int maxLength> +class StaticDelayLineEightTap +{ +private: + T buffer[maxLength]; + int index1, index2, index3, index4, index5, index6, index7, index8; + int Length; + T Feedback; + +public: + StaticDelayLineEightTap() + { + SetLength ( maxLength - 1 ); + Clear(); + } + + //get ouput and iterate + T operator()(T input) + { + T output = buffer[index1]; + buffer[index1++] = input; + if(index1 >= Length) + index1 = 0; + if(++index2 >= Length) + index2 = 0; + if(++index3 >= Length) + index3 = 0; + if(++index4 >= Length) + index4 = 0; + if(++index5 >= Length) + index5 = 0; + if(++index6 >= Length) + index6 = 0; + if(++index7 >= Length) + index7 = 0; + if(++index8 >= Length) + index8 = 0; + return output; + + } + + void SetIndex (int Index1, int Index2, int Index3, int Index4, int Index5, int Index6, int Index7, int Index8) + { + index1 = Index1; + index2 = Index2; + index3 = Index3; + index4 = Index4; + index5 = Index5; + index6 = Index6; + index7 = Index7; + index8 = Index8; + } + + + T GetIndex (int Index) + { + switch (Index) + { + case 0: + return buffer[index1]; + break; + case 1: + return buffer[index2]; + break; + case 2: + return buffer[index3]; + break; + case 3: + return buffer[index4]; + break; + case 4: + return buffer[index5]; + break; + case 5: + return buffer[index6]; + break; + case 6: + return buffer[index7]; + break; + case 7: + return buffer[index8]; + break; + default: + return buffer[index1]; + break; + } + } + + + void SetLength (int Length) + { + if( Length >= maxLength ) + Length = maxLength; + if( Length < 0 ) + Length = 0; + + this->Length = Length; + } + + + void Clear() + { + memset(buffer, 0, sizeof(buffer)); + index1 = index2 = index3 = index4 = index5 = index6 = index7 = index8 = 0; + } + + + int GetLength() const + { + return Length; + } +}; + +template<typename T, int OverSampleCount> + class StateVariable + { + public: + + enum FilterType + { + LOWPASS, + HIGHPASS, + BANDPASS, + NOTCH, + FilterTypeCount + }; + + private: + + T sampleRate; + T frequency; + T q; + T f; + + T low; + T high; + T band; + T notch; + + T *out; + + public: + StateVariable() + { + SetSampleRate(44100.); + Frequency(1000.); + Resonance(0); + Type(LOWPASS); + Reset(); + } + + T operator()(T input) + { + for(unsigned int i = 0; i < OverSampleCount; i++) + { + low += f * band + 1e-25; + high = input - low - q * band; + band += f * high; + notch = low + high; + } + return *out; + } + + void Reset() + { + low = high = band = notch = 0; + } + + void SetSampleRate(T sampleRate) + { + this->sampleRate = sampleRate * OverSampleCount; + UpdateCoefficient(); + } + + void Frequency(T frequency) + { + this->frequency = frequency; + UpdateCoefficient(); + } + + void Resonance(T resonance) + { + this->q = 2 - 2 * resonance; + } + + void Type(int type) + { + switch(type) + { + case LOWPASS: + out = &low; + break; + + case HIGHPASS: + out = &high; + break; + + case BANDPASS: + out = &band; + break; + + case NOTCH: + out = ¬ch; + break; + + default: + out = &low; + break; + } + } + + private: + void UpdateCoefficient() + { + f = 2. * sinf(3.141592654 * frequency / sampleRate); + } + }; +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/reverb/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,563 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +#include "PluginProcessor.h" +#include "MVerb.h" +//[/Headers] + +#include "PluginEditor.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... + +//LookAndFeelCustom* ReverbAudioProcessorEditor::customLookAndFeel = NULL; + +//[/MiscUserDefs] + +//============================================================================== +ReverbAudioProcessorEditor::ReverbAudioProcessorEditor (ReverbAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter) +{ + addAndMakeVisible (lateEarlySlider = new Slider ("new slider")); + lateEarlySlider->setRange (0, 1, 0.01); + lateEarlySlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + lateEarlySlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + lateEarlySlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + lateEarlySlider->setColour (Slider::textBoxTextColourId, Colours::white); + lateEarlySlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + lateEarlySlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + lateEarlySlider->addListener (this); + + addAndMakeVisible (mixSlider = new Slider ("new slider")); + mixSlider->setRange (0, 1, 0.01); + mixSlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + mixSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + mixSlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + mixSlider->setColour (Slider::textBoxTextColourId, Colours::white); + mixSlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + mixSlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + mixSlider->addListener (this); + + addAndMakeVisible (gainSlider = new Slider ("new slider")); + gainSlider->setRange (0, 1, 0.01); + gainSlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + gainSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + gainSlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + gainSlider->setColour (Slider::textBoxTextColourId, Colours::white); + gainSlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + gainSlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + gainSlider->addListener (this); + + addAndMakeVisible (preDelaySlider = new Slider ("new slider")); + preDelaySlider->setRange (0, 1, 0.01); + preDelaySlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + preDelaySlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + preDelaySlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + preDelaySlider->setColour (Slider::textBoxTextColourId, Colours::white); + preDelaySlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + preDelaySlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + preDelaySlider->addListener (this); + + addAndMakeVisible (bandWidthSlider = new Slider ("new slider")); + bandWidthSlider->setRange (0, 1, 0.01); + bandWidthSlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + bandWidthSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + bandWidthSlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + bandWidthSlider->setColour (Slider::textBoxTextColourId, Colours::white); + bandWidthSlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + bandWidthSlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + bandWidthSlider->addListener (this); + + addAndMakeVisible (dampSlider = new Slider ("new slider")); + dampSlider->setRange (0, 1, 0.01); + dampSlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + dampSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + dampSlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + dampSlider->setColour (Slider::textBoxTextColourId, Colours::white); + dampSlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + dampSlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + dampSlider->addListener (this); + + addAndMakeVisible (sizeSlider = new Slider ("new slider")); + sizeSlider->setRange (0, 1, 0.01); + sizeSlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + sizeSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + sizeSlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + sizeSlider->setColour (Slider::textBoxTextColourId, Colours::white); + sizeSlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + sizeSlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + sizeSlider->addListener (this); + + addAndMakeVisible (decaySlider = new Slider ("new slider")); + decaySlider->setRange (0, 1, 0.01); + decaySlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + decaySlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + decaySlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + decaySlider->setColour (Slider::textBoxTextColourId, Colours::white); + decaySlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + decaySlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + decaySlider->addListener (this); + + addAndMakeVisible (densitySlider = new Slider ("new slider")); + densitySlider->setRange (0, 1, 0.01); + densitySlider->setSliderStyle (Slider::RotaryHorizontalVerticalDrag); + densitySlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20); + densitySlider->setColour (Slider::rotarySliderFillColourId, Colour (0x7fffffff)); + densitySlider->setColour (Slider::textBoxTextColourId, Colours::white); + densitySlider->setColour (Slider::textBoxBackgroundColourId, Colour (0x00ffffff)); + densitySlider->setColour (Slider::textBoxOutlineColourId, Colour (0x00808080)); + densitySlider->addListener (this); + + + //[UserPreSize] + addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits)); + resizeLimits.setSizeLimits (150, 150, 850, 290); + //[/UserPreSize] + + setSize (470, 470); + + + //[Constructor] You can add your own custom stuff here.. + + UpdateInterfaceValues(); + + //************************************ SET LOOKANDFEEL ********************************** +// if( customLookAndFeel == NULL ) +// { +// customLookAndFeel = new LookAndFeelCustom(); +// LookAndFeel::setDefaultLookAndFeel (/*&*/customLookAndFeel); +// } + + //*************************************************************************************** + + startTimer (50); + + //[/Constructor] +} + +ReverbAudioProcessorEditor::~ReverbAudioProcessorEditor() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + //[/Destructor_pre] + + lateEarlySlider = nullptr; + mixSlider = nullptr; + gainSlider = nullptr; + preDelaySlider = nullptr; + bandWidthSlider = nullptr; + dampSlider = nullptr; + sizeSlider = nullptr; + decaySlider = nullptr; + densitySlider = nullptr; + + + //[Destructor]. You can add your own custom destruction code here.. + + //[/Destructor] +} + +//============================================================================== +void ReverbAudioProcessorEditor::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colour (0xff000a39)); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (332.0f, 204.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (348.0f, 220.0f, 56.0f, 56.0f); + + g.setColour (Colour (0xff2f3d6a)); + g.fillRoundedRectangle (136.0f, 5.0f, 175.0f, 37.0f, 10.000f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 22.30f, Font::bold)); + g.drawText (TRANS("reverb"), + 1, 13, 446, 24, + Justification::centredTop, true); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("MIX"), + 346, 183, 59, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (332.0f, 337.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (348.0f, 353.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("LATE/EARLY"), + 333, 316, 83, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (332.0f, 78.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (348.0f, 94.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("GAIN"), + 346, 57, 59, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (190.0f, 204.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (206.0f, 220.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("BANDWITH"), + 201, 183, 65, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (190.0f, 337.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (206.0f, 353.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("PREDELAY"), + 202, 316, 64, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (190.0f, 78.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (206.0f, 94.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("DAMP"), + 204, 57, 59, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (48.0f, 204.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (64.0f, 220.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("DECAY"), + 62, 183, 59, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (48.0f, 337.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (64.0f, 353.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("SIZE"), + 62, 316, 59, 30, + Justification::centred, true); + + g.setColour (Colour (0xff315d9d)); + g.fillEllipse (48.0f, 78.0f, 88.0f, 88.0f); + + g.setColour (Colour (0xff2c333b)); + g.fillEllipse (64.0f, 94.0f, 56.0f, 56.0f); + + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (TRANS("DENSITY"), + 63, 57, 59, 30, + Justification::centred, true); + + //[UserPaint] Add your own custom painting code here.. + + // Version number + String str("v "); + str.append(JucePlugin_VersionString, 4); + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 11.00f, Font::plain)); + g.drawText (str, + 189, 37, 54, 30, + Justification::centredLeft, true); + + //[/UserPaint] +} + +void ReverbAudioProcessorEditor::resized() +{ + lateEarlySlider->setBounds (294, 339, 164, 102); + mixSlider->setBounds (294, 207, 164, 102); + gainSlider->setBounds (294, 81, 164, 102); + preDelaySlider->setBounds (152, 340, 164, 102); + bandWidthSlider->setBounds (152, 207, 164, 102); + dampSlider->setBounds (152, 80, 164, 102); + sizeSlider->setBounds (11, 340, 164, 102); + decaySlider->setBounds (10, 207, 164, 102); + densitySlider->setBounds (10, 81, 164, 102); + //[UserResized] Add your own custom resize handling here.. + getProcessor()->_lastUIWidth = getWidth(); + getProcessor()->_lastUIHeight = getHeight(); + //[/UserResized] +} + +void ReverbAudioProcessorEditor::sliderValueChanged (Slider* sliderThatWasMoved) +{ + //[UsersliderValueChanged_Pre] + ReverbAudioProcessor* ourProcessor = getProcessor(); + //[/UsersliderValueChanged_Pre] + + if (sliderThatWasMoved == lateEarlySlider) + { + //[UserSliderCode_lateEarlySlider] -- add your slider handling code here.. + ourProcessor->SetLateEarly(lateEarlySlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::EARLYMIX); + //[/UserSliderCode_lateEarlySlider] + } + else if (sliderThatWasMoved == mixSlider) + { + //[UserSliderCode_mixSlider] -- add your slider handling code here.. + ourProcessor->SetMix(mixSlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::MIX); + //[/UserSliderCode_mixSlider] + } + else if (sliderThatWasMoved == gainSlider) + { + //[UserSliderCode_gainSlider] -- add your slider handling code here.. + ourProcessor->SetGain(gainSlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::GAIN); + //[/UserSliderCode_gainSlider] + } + else if (sliderThatWasMoved == preDelaySlider) + { + //[UserSliderCode_preDelaySlider] -- add your slider handling code here.. + ourProcessor->SetPredelay(preDelaySlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::PREDELAY); + //[/UserSliderCode_preDelaySlider] + } + else if (sliderThatWasMoved == bandWidthSlider) + { + //[UserSliderCode_bandWidthSlider] -- add your slider handling code here.. + ourProcessor->SetBandwidth(bandWidthSlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::BANDWIDTHFREQ); + //[/UserSliderCode_bandWidthSlider] + } + else if (sliderThatWasMoved == dampSlider) + { + //[UserSliderCode_dampSlider] -- add your slider handling code here.. + ourProcessor->SetDamp(dampSlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::DAMPINGFREQ); + //[/UserSliderCode_dampSlider] + } + else if (sliderThatWasMoved == sizeSlider) + { + //[UserSliderCode_sizeSlider] -- add your slider handling code here.. + ourProcessor->SetSize(sizeSlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::SIZE); + //[/UserSliderCode_sizeSlider] + } + else if (sliderThatWasMoved == decaySlider) + { + //[UserSliderCode_decaySlider] -- add your slider handling code here.. + ourProcessor->SetDecay(decaySlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::DECAY); + //[/UserSliderCode_decaySlider] + } + else if (sliderThatWasMoved == densitySlider) + { + //[UserSliderCode_densitySlider] -- add your slider handling code here.. + ourProcessor->SetDensity(densitySlider->getValue()); + ourProcessor->updateParameters(MVerb<float>::DENSITY); + //[/UserSliderCode_densitySlider] + } + + //[UsersliderValueChanged_Post] + //[/UsersliderValueChanged_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... + +void ReverbAudioProcessorEditor::UpdateInterfaceValues() +{ + ReverbAudioProcessor* ourProcessor = getProcessor(); + + // Update Sliders + lateEarlySlider ->setValue(ourProcessor->_lateEarly,dontSendNotification); + densitySlider ->setValue(ourProcessor->_density,dontSendNotification); + mixSlider ->setValue(ourProcessor->_mix,dontSendNotification); + preDelaySlider ->setValue(ourProcessor->_predelay,dontSendNotification); + dampSlider ->setValue(ourProcessor->_damp,dontSendNotification); + sizeSlider ->setValue(ourProcessor->_size,dontSendNotification); + decaySlider ->setValue(ourProcessor->_decay,dontSendNotification); + bandWidthSlider ->setValue(ourProcessor->_bandwidth,dontSendNotification); + gainSlider ->setValue(ourProcessor->_gain,dontSendNotification); +} + +void ReverbAudioProcessorEditor::timerCallback() +{ + //DistortionAudioProcessor* ourProcessor = getProcessor(); + + +} + +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Introjucer information section -- + + This is where the Introjucer stores the metadata that describe this GUI layout, so + make changes in here at your peril! + +BEGIN_JUCER_METADATA + +<JUCER_COMPONENT documentType="Component" className="ReverbAudioProcessorEditor" + componentName="" parentClasses="public AudioProcessorEditor, public Timer" + constructorParams="ReverbAudioProcessor* ownerFilter" variableInitialisers="AudioProcessorEditor (ownerFilter)" + snapPixels="8" snapActive="0" snapShown="1" overlayOpacity="0.330" + fixedSize="1" initialWidth="470" initialHeight="470"> + <BACKGROUND backgroundColour="ff000a39"> + <ELLIPSE pos="332 204 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="348 220 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <ROUNDRECT pos="136 5 175 37" cornerSize="10" fill="solid: ff2f3d6a" hasStroke="0"/> + <TEXT pos="1 13 446 24" fill="solid: ffffffff" hasStroke="0" text="reverb" + fontname="Default monospaced font" fontsize="22.300000000000000711" + bold="1" italic="0" justification="12"/> + <TEXT pos="346 183 59 30" fill="solid: ffffffff" hasStroke="0" text="MIX" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="332 337 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="348 353 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="333 316 83 30" fill="solid: ffffffff" hasStroke="0" text="LATE/EARLY" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="332 78 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="348 94 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="346 57 59 30" fill="solid: ffffffff" hasStroke="0" text="GAIN" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="190 204 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="206 220 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="201 183 65 30" fill="solid: ffffffff" hasStroke="0" text="BANDWITH" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="190 337 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="206 353 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="202 316 64 30" fill="solid: ffffffff" hasStroke="0" text="PREDELAY" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="190 78 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="206 94 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="204 57 59 30" fill="solid: ffffffff" hasStroke="0" text="DAMP" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="48 204 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="64 220 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="62 183 59 30" fill="solid: ffffffff" hasStroke="0" text="DECAY" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="48 337 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="64 353 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="62 316 59 30" fill="solid: ffffffff" hasStroke="0" text="SIZE" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + <ELLIPSE pos="48 78 88 88" fill="solid: ff315d9d" hasStroke="0"/> + <ELLIPSE pos="64 94 56 56" fill="solid: ff2c333b" hasStroke="0"/> + <TEXT pos="63 57 59 30" fill="solid: ffffffff" hasStroke="0" text="DENSITY" + fontname="Default monospaced font" fontsize="15" bold="0" italic="0" + justification="36"/> + </BACKGROUND> + <SLIDER name="new slider" id="b7cd5ae6d0a3bfc6" memberName="lateEarlySlider" + virtualName="" explicitFocusOrder="0" pos="294 339 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="8312c8e1102eca31" memberName="mixSlider" + virtualName="" explicitFocusOrder="0" pos="294 207 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="a0cf664fb4a85f44" memberName="gainSlider" + virtualName="" explicitFocusOrder="0" pos="294 81 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="55b568b536e67525" memberName="preDelaySlider" + virtualName="" explicitFocusOrder="0" pos="152 340 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="391314f65024cc7c" memberName="bandWidthSlider" + virtualName="" explicitFocusOrder="0" pos="152 207 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="8ec0d4dbfb348651" memberName="dampSlider" + virtualName="" explicitFocusOrder="0" pos="152 80 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="6120b55e7065ff03" memberName="sizeSlider" + virtualName="" explicitFocusOrder="0" pos="11 340 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="5aa10525b640e47e" memberName="decaySlider" + virtualName="" explicitFocusOrder="0" pos="10 207 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> + <SLIDER name="new slider" id="4aebd74c8aeafbac" memberName="densitySlider" + virtualName="" explicitFocusOrder="0" pos="10 81 164 102" rotarysliderfill="7fffffff" + textboxtext="ffffffff" textboxbkgd="ffffff" textboxoutline="808080" + min="0" max="1" int="0.010000000000000000208" style="RotaryHorizontalVerticalDrag" + textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40" + textBoxHeight="20" skewFactor="1"/> +</JUCER_COMPONENT> + +END_JUCER_METADATA +*/ +#endif + + +//[EndFile] You can add extra defines here... +//[/EndFile]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/reverb/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,102 @@ +/* + ============================================================================== + + This is an automatically generated GUI class created by the Introjucer! + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Created with Introjucer version: 3.1.0 + + ------------------------------------------------------------------------------ + + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. + + ============================================================================== +*/ + +#ifndef __JUCE_HEADER_3DB9693590AE4D1__ +#define __JUCE_HEADER_3DB9693590AE4D1__ + +//[Headers] -- You can add your own extra header files here -- + +//#include "../../Shared/LookAndFeelCustom.h" //used to be _nographics +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class ReverbAudioProcessorEditor : public AudioProcessorEditor, + public Timer, + public SliderListener +{ +public: + //============================================================================== + ReverbAudioProcessorEditor (ReverbAudioProcessor* ownerFilter); + ~ReverbAudioProcessorEditor(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + void timerCallback(); + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider* sliderThatWasMoved); + + + +private: + //[UserVariables] -- You can add your own custom variables in this section. + + ScopedPointer<ResizableCornerComponent> resizer; + ComponentBoundsConstrainer resizeLimits; + + //static LookAndFeelCustom* customLookAndFeel; + + AudioPlayHead::CurrentPositionInfo lastDisplayedPosition; + + ReverbAudioProcessor* getProcessor() const + { + return static_cast <ReverbAudioProcessor*> (getAudioProcessor()); + } + + void displayPositionInfo (const AudioPlayHead::CurrentPositionInfo& pos); + + void UpdateInterfaceValues(); + + void SetComboBoxActivity(ComboBox * comboBox, bool active); + void SetSliderActivity(Slider * slider, bool active); + + + //[/UserVariables] + + //============================================================================== + ScopedPointer<Slider> lateEarlySlider; + ScopedPointer<Slider> mixSlider; + ScopedPointer<Slider> gainSlider; + ScopedPointer<Slider> preDelaySlider; + ScopedPointer<Slider> bandWidthSlider; + ScopedPointer<Slider> dampSlider; + ScopedPointer<Slider> sizeSlider; + ScopedPointer<Slider> decaySlider; + ScopedPointer<Slider> densitySlider; + + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ReverbAudioProcessorEditor) +}; + +//[EndFile] You can add extra defines here... +//[/EndFile] + +#endif // __JUCE_HEADER_3DB9693590AE4D1__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/reverb/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,396 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Reverb: algorithmic reverb effect based on MVerb + See textbook Chapter 11: Reverberation + + Original code by Martin Eastwood: MVerb (see MVerb.h) + Adapted for JUCE by Brecht De Man + + When using this code (or a modified version thereof) please cite: + + R. Stables, S. Enderby, B. De Man, G. Fazekas, J. D. Reiss, "SAFE: + A System for the Extraction and Retrieval of Semantic Audio + Descriptors," 15th International Society for Music Information + Retrieval Conference (ISMIR 2014), 2014. + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +#if JUCE_INTEL + #define JUCE_SNAP_TO_ZERO(n) if (! (n < -1.0e-8 || n > 1.0e-8)) n = 0; +#else + #define JUCE_SNAP_TO_ZERO(n) +#endif + +ReverbAudioProcessor::ReverbAudioProcessor() +: + _numChannels (1) + ,_numSamples (1) // dummy - will be set in prepareToPlay + ,_sampleRate (1) // dummy - will be set in prepareToPlay + ,_density (1.0) + ,_decay (1.0) + ,_size (1.0) + ,_damp (1.0) + ,_bandwidth (1.0) + ,_predelay (0.0) + ,_gain (1.0) + ,_mix (0.5) + ,_lateEarly (0.5) + ,tempInput (1,1)// dummy - will be set in prepareToPlay + ,tempOutput (1,1)// dummy - will be set in prepareToPlay + ,_lastUIWidth (850) + ,_lastUIHeight (650) + +{ + // Update all parameters + for (int index = 0; index < MVerb<float>::NUM_PARAMS; ++index) + { + updateParameters(index); + } +} + +ReverbAudioProcessor::~ReverbAudioProcessor() +{ +} + +//----------------------------------------------------------------------------- +// P R E P A R E T O P L A Y +void ReverbAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // If sample rate/block size changes or straight after construction + if (_numSamples != samplesPerBlock || _sampleRate != sampleRate) + { + _sampleRate = sampleRate; + _numSamples = samplesPerBlock; + _numChannels = getNumInputChannels(); + + tempInput.setSize (_numChannels,_numSamples); + tempOutput.setSize(_numChannels,_numSamples); + tempInput.clear(); + tempOutput.clear(); + + _mverb.reset(); + _mverb.setSampleRate (_sampleRate); // set reverb sample rate + } +} + + +//----------------------------------------------------------------------------- +// P R O C E S S B L O C K +void ReverbAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + int numSamples = buffer.getNumSamples(); + int numChannels = buffer.getNumChannels(); + + for(int channel = 0; channel < numChannels; channel++) + { + tempInput.copyFrom (channel, 0, buffer, channel, 0, numSamples); + } + + float** input = tempInput.getArrayOfWritePointers(); + float** output = tempOutput.getArrayOfWritePointers(); + + _mverb.process (input, output, numSamples); // processing by MVerb + + for(int channel = 0; channel < numChannels; channel++) + { + buffer.copyFrom (channel, 0, output [channel], numSamples); + } +} + + +//----------------------------------------------------------------------------- +// U P D A T E P A R A M E T E R S +void ReverbAudioProcessor::updateParameters (int index) +{ + switch(index) + { + case MVerb<float>::DAMPINGFREQ: + _mverb.setParameter (index, _damp); + break; + + case MVerb<float>::DENSITY: + _mverb.setParameter (index, _density); + break; + + case MVerb<float>::BANDWIDTHFREQ: + _mverb.setParameter (index, _bandwidth); + break; + + case MVerb<float>::PREDELAY: + _mverb.setParameter (index, _predelay); + break; + + case MVerb<float>::DECAY: + _mverb.setParameter (index, _decay); + break; + + case MVerb<float>::SIZE: + _mverb.setParameter (index, _size); + break; + + case MVerb<float>::GAIN: + _mverb.setParameter (index, _gain); + break; + + case MVerb<float>::MIX: + _mverb.setParameter (index, _mix); + break; + + case MVerb<float>::EARLYMIX: + _mverb.setParameter (index, _lateEarly); + break; + } +} + + +//----------------------------------------------------------------------------- +// R E S E T +void ReverbAudioProcessor::Reset() +{ + _mverb.reset(); // not used +} + + +//----------------------------------------------------------------------------- +// +void ReverbAudioProcessor::releaseResources() +{ + // When playback stops, you can use this to free up any spare memory, etc. +} + + +bool ReverbAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* ReverbAudioProcessor::createEditor() +{ + return new ReverbAudioProcessorEditor (this); +} + + +//============================================================================== +void ReverbAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // SAVE STATE INFO + XmlElement xml("JRAMReverb_XML"); + + // Knobs + xml.setAttribute("_density" ,_density); + xml.setAttribute("_decay" ,_decay); + xml.setAttribute("_size" ,_size); + xml.setAttribute("_damp" ,_damp); + xml.setAttribute("_bandwidth" ,_bandwidth); + xml.setAttribute("_predelay" ,_predelay); + xml.setAttribute("_gain" ,_gain); + xml.setAttribute("_mix" ,_mix); + xml.setAttribute("_lateEarly" ,_lateEarly); + + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void ReverbAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // LOAD STATE INFO + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("JRAMReverb_XML")) + { + // Knobs + _density = (float) xmlState->getDoubleAttribute("_density",true); + _decay = (float) xmlState->getDoubleAttribute("_decay",true); + _size = (float) xmlState->getDoubleAttribute("_size",true); + _damp = (float) xmlState->getDoubleAttribute("_damp",true); + _bandwidth = (float) xmlState->getDoubleAttribute("_bandwidth",true); + _predelay = (float) xmlState->getDoubleAttribute("_predelay",true); + _gain = (float) xmlState->getDoubleAttribute("_gain",true); + _mix = (float) xmlState->getDoubleAttribute("_mix",true); + _lateEarly = (float) xmlState->getDoubleAttribute("_lateEarly",true); + } +} + +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new ReverbAudioProcessor(); +} + +const String ReverbAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +bool ReverbAudioProcessor::silenceInProducesSilenceOut() const +{ + return true; +} + +int ReverbAudioProcessor::getNumParameters() +{ + return MVerb<float>::NUM_PARAMS; +} + +float ReverbAudioProcessor::getParameter (int index) // externally accessible +{ + switch (index) + { + case MVerb<float>::DENSITY: return GetDensity(); + case MVerb<float>::DECAY: return GetDecay(); + case MVerb<float>::SIZE: return GetSize(); + case MVerb<float>::DAMPINGFREQ: return GetDamp(); + case MVerb<float>::BANDWIDTHFREQ: return GetBandwidth(); + case MVerb<float>::PREDELAY: return GetPredelay(); + case MVerb<float>::GAIN: return GetGain(); + case MVerb<float>::MIX: return GetMix(); + case MVerb<float>::EARLYMIX: return GetLateEarly(); + default: return 0.0f; + } +} + +void ReverbAudioProcessor::setParameter (int index, float newValue) // externally accessible +{ + switch (index) + { + case MVerb<float>::DENSITY: + SetDensity(newValue); + break; + case MVerb<float>::DECAY: + SetDecay(newValue); + break; + case MVerb<float>::SIZE: + SetSize(newValue); + break; + case MVerb<float>::DAMPINGFREQ: + SetDamp(newValue); + break; + case MVerb<float>::BANDWIDTHFREQ: + SetBandwidth(newValue); + break; + case MVerb<float>::PREDELAY: + SetPredelay(newValue); + break; + case MVerb<float>::GAIN: + SetGain(newValue); + break; + case MVerb<float>::MIX: + SetMix(newValue); + break; + case MVerb<float>::EARLYMIX: + SetLateEarly(newValue); + break; + default: + break; + } +} + +const String ReverbAudioProcessor::getParameterName (int index) // externally accessible +{ + switch (index) + { + case MVerb<float>::DENSITY: return "Density"; + case MVerb<float>::DECAY: return "Decay"; + case MVerb<float>::SIZE: return "Size"; + case MVerb<float>::DAMPINGFREQ: return "Damp"; + case MVerb<float>::BANDWIDTHFREQ: return "Bandwidth"; + case MVerb<float>::PREDELAY: return "Predelay"; + case MVerb<float>::GAIN: return "Gain"; + case MVerb<float>::MIX: return "Mix"; + case MVerb<float>::EARLYMIX: return "Late vs. early reflections"; + default: break; + } + return String::empty; +} + +const String ReverbAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String ReverbAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String ReverbAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool ReverbAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool ReverbAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool ReverbAudioProcessor::acceptsMidi() const +{ + #if JucePlugin_WantsMidiInput + return true; + #else + return false; + #endif +} + +bool ReverbAudioProcessor::producesMidi() const +{ + #if JucePlugin_ProducesMidiOutput + return true; + #else + return false; + #endif +} + +int ReverbAudioProcessor::getNumPrograms() +{ + return 0; +} + +int ReverbAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void ReverbAudioProcessor::setCurrentProgram (int index) +{ +} + +const String ReverbAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void ReverbAudioProcessor::changeProgramName (int index, const String& newName) +{ +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/reverb/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,297 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Reverb: algorithmic reverb effect based on MVerb + See textbook Chapter 11: Reverberation + + Original code by Martin Eastwood: MVerb (see MVerb.h) + Adapted for JUCE by Brecht De Man + + When using this code (or a modified version thereof) please cite: + + R. Stables, S. Enderby, B. De Man, G. Fazekas, J. D. Reiss, "SAFE: + A System for the Extraction and Retrieval of Semantic Audio + Descriptors," 15th International Society for Music Information + Retrieval Conference (ISMIR 2014), 2014. + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#ifndef __PLUGINPROCESSOR_H_88534BAA__ +#define __PLUGINPROCESSOR_H_88534BAA__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "MVerb.h" +#include <math.h> + +class ReverbAudioProcessor : public AudioProcessor +{ +public: + ReverbAudioProcessor(); + ~ReverbAudioProcessor(); + + //============================================================================== + // V S T M E T H O D S + + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + void updateParameters(int index); + AudioProcessorEditor* createEditor(); + bool silenceInProducesSilenceOut() const; + virtual double getTailLengthSeconds() const {return 0;}; + bool hasEditor() const; + const String getName() const; + int getNumParameters(); + float getParameter (int index); + void setParameter (int index, float newValue); + const String getParameterName (int index); + const String getParameterText (int index); + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + bool acceptsMidi() const; + bool producesMidi() const; + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + + //============================================================================== + // O U R M E T H O D S + + void Reset(); + +private: + + // Accessors and mutators + inline float GetDensity(); + inline void SetDensity(float density); + inline float GetDecay(); + inline void SetDecay(float decay); + inline float GetSize(); + inline void SetSize(float size); + inline float GetDamp(); + inline void SetDamp(float damp); + inline float GetBandwidth(); + inline void SetBandwidth(float bandwith); + inline float GetPredelay(); + inline void SetPredelay(float predelay); + inline float GetGain(); + inline void SetGain(float gain); + inline float GetMix(); + inline void SetMix(float mix); + inline float GetLateEarly(); + inline void SetLateEarly(float lateEarly); + + int _numChannels; + int _numSamples; + int _sampleRate; + + // parameters + float _density; + float _decay; + float _size; + float _damp; + float _bandwidth; + float _predelay; + float _gain; + float _mix; + float _lateEarly; + + MVerb<float> _mverb; + + + bool _isFirstFrame; + + // Buffers + AudioSampleBuffer tempInput, tempOutput; + + int _lastUIWidth, _lastUIHeight; + + friend class ReverbAudioProcessorEditor; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ReverbAudioProcessor); +}; + +//============================================================================= +// I N L I N E F U N C T I O N S C O D E S E C T I O N + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetDensity() +{ + return _density; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetDensity(float density) +{ + _density = density; +} + + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetDecay() +{ + return _decay; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetDecay(float decay) +{ + _decay = decay; +} + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetSize() +{ + return _size; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetSize(float size) +{ + _size = size; +} + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetDamp() +{ + return _damp; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetDamp(float damp) +{ + _damp = damp; +} + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetBandwidth() +{ + return _bandwidth; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetBandwidth(float bandwidth) +{ + _bandwidth = bandwidth; +} + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetPredelay() +{ + return _predelay; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetPredelay(float predelay) +{ + _predelay = predelay; +} + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetGain() +{ + return _gain; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetGain(float gain) +{ + _gain = gain; +} + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetMix() +{ + return _mix; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetMix(float mix) +{ + _mix = mix; +} + +//----------------------------------------------------------------------------- +// +inline float +ReverbAudioProcessor::GetLateEarly() +{ + return _lateEarly; +} + + +//----------------------------------------------------------------------------- +// +inline void +ReverbAudioProcessor::SetLateEarly(float lateEarly) +{ + _lateEarly = lateEarly; +} +#endif // __PLUGINPROCESSOR_H_88534BAA__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/reverb/Source/gpl-3.0.txt Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + 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 <http://www.gnu.org/licenses/>. + +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: + + <program> Copyright (C) <year> <name of author> + 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 +<http://www.gnu.org/licenses/>. + + 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 +<http://www.gnu.org/philosophy/why-not-lgpl.html>.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/reverb/reverb.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="MBaMzn" name="algoreverb" projectType="audioplug" version="0.1" + bundleIdentifier="uk.ac.qmul.eecs.reverb" buildVST="1" buildRTAS="0" + buildAU="1" pluginName="Algorithmic Reverb" pluginDesc="Algorithmic Reverb" + pluginManufacturer="Brecht De Man" pluginManufacturerCode="BDM" + pluginCode="rev" pluginChannelConfigs="{2,2},{1,1}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="reverbAU" + pluginAUViewClass="MasterCompressorAU_V1" pluginRTASCategory="" + jucerVersion="3.1.0" aaxIdentifier="uk.ac.qmul.eecs.reverb" pluginAAXCategory="" + includeBinaryInAppConfig="1" buildVST3="0" buildAAX="0" companyName="Brecht De Man"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="../../vstsdk2.4" postbuildCommand=" # This script takes the build product and copies it to the AU, VST, and RTAS folders, depending on # which plugin types you've built original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME # this looks inside the binary to detect which platforms are needed.. copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l` copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l` copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l` copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l` if [ $copyAU -gt 0 ]; then echo "Copying to AudioUnit folder..." AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component if [ -d "$AU" ]; then rm -r "$AU" fi cp -r "$original" "$AU" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE" # Fix info.plist for AUs built with Xcode 3 if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then echo else echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU" /usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist" fi fi if [ $copyVST -gt 0 ]; then echo "Copying to VST folder..." VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst if [ -d "$VST" ]; then rm -r "$VST" fi cp -r "$original" "$VST" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE" fi if [ $copyRTAS -gt 0 ]; then echo "Copying to RTAS folder..." RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm if [ -d "$RTAS" ]; then rm -r "$RTAS" fi cp -r "$original" "$RTAS" fi if [ $copyAAX -gt 0 ]; then echo "Copying to AAX folder..." if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX1" ]; then rm -r "$AAX1" fi cp -r "$original" "$AAX1" fi if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX2" ]; then rm -r "$AAX2" fi cp -r "$original" "$AAX2" fi fi "> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + isDebug="1" optimisation="1" targetName="algoreverb"/> + <CONFIGURATION name="Release" osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + isDebug="0" optimisation="2" targetName="algoreverb"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_gui_extra" path="../../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="R56iUz" name="algoreverb"> + <GROUP id="{839367BB-53A9-7137-E15E-D2DD800BA26D}" name="Source"> + <FILE id="RUKlAk" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="uEbtTW" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="vo9R27" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="IiR9iQ" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + <FILE id="rNIElM" name="MVerb.h" compile="0" resource="0" file="Source/MVerb.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/ringmod/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,157 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ring Modulator: modulation using a carrier oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +//============================================================================== +RingModulatorAudioProcessorEditor::RingModulatorAudioProcessorEditor (RingModulatorAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + sweepWidthLabel_("", "LFO Sweep Width (Hz):"), + lfoFrequencyLabel_("", "LFO Frequency:"), + carrierFrequencyLabel_("", "Carrier Frequency:"), + waveformLabel_("", "LFO Waveform:") +{ + // Set up the sliders + addAndMakeVisible (&carrierFrequencySlider_); + carrierFrequencySlider_.setSliderStyle (Slider::Rotary); + carrierFrequencySlider_.addListener (this); + carrierFrequencySlider_.setRange (1.0, 1000.0, 1.0); + + addAndMakeVisible (&sweepWidthSlider_); + sweepWidthSlider_.setSliderStyle (Slider::Rotary); + sweepWidthSlider_.addListener (this); + sweepWidthSlider_.setRange (0.0, 100.0, 0.2); + + addAndMakeVisible (&lfoFrequencySlider_); + lfoFrequencySlider_.setSliderStyle (Slider::Rotary); + lfoFrequencySlider_.addListener (this); + lfoFrequencySlider_.setRange (0.1, 10.0, 0.05); + + addAndMakeVisible(&waveformComboBox_); + waveformComboBox_.setEditableText(false); + waveformComboBox_.setJustificationType(Justification::left); + waveformComboBox_.addItem("Sine", RingModulatorAudioProcessor::kWaveformSine); + waveformComboBox_.addItem("Triangle", RingModulatorAudioProcessor::kWaveformTriangle); + waveformComboBox_.addItem("Square", RingModulatorAudioProcessor::kWaveformSquare); + waveformComboBox_.addItem("Sawtooth (rising)", RingModulatorAudioProcessor::kWaveformSawtooth); + waveformComboBox_.addItem("Sawtooth (falling)", RingModulatorAudioProcessor::kWaveformInverseSawtooth); + waveformComboBox_.addListener(this); + + carrierFrequencyLabel_.attachToComponent(&carrierFrequencySlider_, false); + carrierFrequencyLabel_.setFont(Font (11.0f)); + + sweepWidthLabel_.attachToComponent(&sweepWidthSlider_, false); + sweepWidthLabel_.setFont(Font (11.0f)); + + lfoFrequencyLabel_.attachToComponent(&lfoFrequencySlider_, false); + lfoFrequencyLabel_.setFont(Font (11.0f)); + + waveformLabel_.attachToComponent(&waveformComboBox_, false); + waveformLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 160, 600, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +RingModulatorAudioProcessorEditor::~RingModulatorAudioProcessorEditor() +{ +} + +//============================================================================== +void RingModulatorAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void RingModulatorAudioProcessorEditor::resized() +{ + carrierFrequencySlider_.setBounds(20, 20, 150, 40); + lfoFrequencySlider_.setBounds(200, 20, 150, 40); + sweepWidthSlider_.setBounds (20, 80, 150, 40); + waveformComboBox_.setBounds (200, 80, 150, 30); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void RingModulatorAudioProcessorEditor::timerCallback() +{ + RingModulatorAudioProcessor* ourProcessor = getProcessor(); + + carrierFrequencySlider_.setValue(ourProcessor->carrierFrequency_, dontSendNotification); + sweepWidthSlider_.setValue(ourProcessor->sweepWidth_, dontSendNotification); + lfoFrequencySlider_.setValue(ourProcessor->lfoFrequency_, dontSendNotification); + waveformComboBox_.setSelectedId(ourProcessor->waveform_, false); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void RingModulatorAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &carrierFrequencySlider_) + { + getProcessor()->setParameterNotifyingHost (RingModulatorAudioProcessor::kCarrierFrequencyParam, + (float)carrierFrequencySlider_.getValue()); + } + else if (slider == &sweepWidthSlider_) + { + getProcessor()->setParameterNotifyingHost (RingModulatorAudioProcessor::kSweepWidthParam, + (float)sweepWidthSlider_.getValue()); + } + else if (slider == &lfoFrequencySlider_) + { + getProcessor()->setParameterNotifyingHost (RingModulatorAudioProcessor::kLFOFrequencyParam, + (float)lfoFrequencySlider_.getValue()); + } +} + +// Similar callback to sliderValueChanged for ComboBox updates +void RingModulatorAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &waveformComboBox_) + { + getProcessor()->setParameterNotifyingHost (RingModulatorAudioProcessor::kWaveformParam, + (float)waveformComboBox_.getSelectedId()); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/ringmod/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,73 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ring Modulator: modulation using a carrier oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class RingModulatorAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Timer +{ +public: + RingModulatorAudioProcessorEditor (RingModulatorAudioProcessor* ownerFilter); + ~RingModulatorAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + +private: + Label sweepWidthLabel_, lfoFrequencyLabel_; + Label carrierFrequencyLabel_, waveformLabel_; + Slider sweepWidthSlider_, lfoFrequencySlider_; + Slider carrierFrequencySlider_; + ComboBox waveformComboBox_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + RingModulatorAudioProcessor* getProcessor() const + { + return static_cast <RingModulatorAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/ringmod/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,382 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ring Modulator: modulation using a carrier oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <math.h> + +//============================================================================== +RingModulatorAudioProcessor::RingModulatorAudioProcessor() +{ + // Set default values: + carrierFrequency_ = 100.0; + sweepWidth_ = 0.0; + lfoFrequency_ = 1.0; + waveform_ = kWaveformSine; + + lfoPhase_ = carrierPhase_ = 0.0; + inverseSampleRate_ = 1.0/44100.0; + + lastUIWidth_ = 370; + lastUIHeight_ = 160; +} + +RingModulatorAudioProcessor::~RingModulatorAudioProcessor() +{ +} + +//============================================================================== +const String RingModulatorAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int RingModulatorAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float RingModulatorAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kCarrierFrequencyParam: return carrierFrequency_; + case kSweepWidthParam: return sweepWidth_; + case kLFOFrequencyParam: return lfoFrequency_; + case kWaveformParam: return (float)waveform_; + default: return 0.0f; + } +} + +void RingModulatorAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + + switch (index) + { + case kCarrierFrequencyParam: + carrierFrequency_ = newValue; + break; + case kSweepWidthParam: + sweepWidth_ = newValue; + break; + case kLFOFrequencyParam: + lfoFrequency_ = newValue; + break; + case kWaveformParam: + waveform_ = (int)newValue; + break; + default: + break; + } +} + +const String RingModulatorAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kCarrierFrequencyParam: return "carrier frequency"; + case kSweepWidthParam: return "LFO sweep width"; + case kLFOFrequencyParam: return "LFO frequency"; + case kWaveformParam: return "LFO waveform"; + default: break; + } + + return String::empty; +} + +const String RingModulatorAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String RingModulatorAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String RingModulatorAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool RingModulatorAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool RingModulatorAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool RingModulatorAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double RingModulatorAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool RingModulatorAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool RingModulatorAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int RingModulatorAudioProcessor::getNumPrograms() +{ + return 0; +} + +int RingModulatorAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void RingModulatorAudioProcessor::setCurrentProgram (int index) +{ +} + +const String RingModulatorAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void RingModulatorAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void RingModulatorAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Calculations that happen before play begins. Pretty simple in this effect, just + // reset the previous state. + lfoPhase_ = 0.0; + carrierPhase_ = 0.0; + inverseSampleRate_ = 1.0/sampleRate; +} + +void RingModulatorAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. +} + +void RingModulatorAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + lfoPhase_ = 0.0; + carrierPhase_ = 0.0; +} + + +void RingModulatorAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel; + float cph, lph; + + // Go through each channel of audio that's passed in. In this example we apply identical + // effects to each channel, regardless of how many input channels there are. For some effects, like + // a stereo chorus or panner, you might do something different for each channel. + + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // Make a temporary copy of any state variables declared in PluginProcessor.h which need to be + // maintained between calls to processBlock(). Each channel needs to be processed identically + // which means that the activity of processing one channel can't affect the state variable for + // the next channel. + + cph = carrierPhase_; + lph = lfoPhase_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + + // Ring modulation is easy! Just multiply the waveform by a periodic carrier + channelData[i] = in * sinf(2.0 * M_PI * cph); + + // Update the carrier and LFO phases, keeping them in the range 0-1 + lph += lfoFrequency_*inverseSampleRate_; + if(lph >= 1.0) + lph -= 1.0; + cph += (carrierFrequency_ + sweepWidth_*lfo(lfoPhase_, waveform_))*inverseSampleRate_; + if(cph >= 1.0) + cph -= 1.0; + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + + carrierPhase_ = cph; + lfoPhase_ = lph; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool RingModulatorAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* RingModulatorAudioProcessor::createEditor() +{ + return new RingModulatorAudioProcessorEditor (this); +} + +//============================================================================== +void RingModulatorAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("carrierFrequency", carrierFrequency_); + xml.setAttribute("sweepWidth", sweepWidth_); + xml.setAttribute("lfoFrequency", lfoFrequency_); + xml.setAttribute("waveform", waveform_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void RingModulatorAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + carrierFrequency_ = (float)xmlState->getDoubleAttribute("carrierFrequency", carrierFrequency_); + sweepWidth_ = (float)xmlState->getDoubleAttribute("sweepWidth", sweepWidth_); + lfoFrequency_ = (float)xmlState->getDoubleAttribute("lfoFrequency", lfoFrequency_); + waveform_ = xmlState->getIntAttribute("waveform", waveform_); + } + } +} + +//============================================================================== +// Function for calculating LFO waveforms. Phase runs from 0-1, output is scaled +// from -1 to 1 (note: not 0 to 1 as in delay-based effects) +float RingModulatorAudioProcessor::lfo(float phase, int waveform) +{ + switch(waveform) + { + case kWaveformTriangle: + if(phase < 0.25f) + return 4.0f*phase; + else if(phase < 0.75f) + return 1.0f - 4.0f*(phase - 0.25f); + else + return -1.0f + 4.0f*(phase - 0.75f); + case kWaveformSquare: + if(phase < 0.5f) + return 1.0f; + else + return -1.0f; + case kWaveformSawtooth: + if(phase < 0.5f) + return 2.0f*phase; + else + return 2.0f*phase - 2.0f; + case kWaveformInverseSawtooth: + if(phase < 0.5f) + return -2.0f*phase; + else + return 2.0f - 2.0f*phase; + case kWaveformSine: + default: + return sinf(2.0 * M_PI * phase); + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new RingModulatorAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/ringmod/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,134 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Ring Modulator: modulation using a carrier oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class RingModulatorAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + RingModulatorAudioProcessor(); + ~RingModulatorAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kCarrierFrequencyParam, + kSweepWidthParam, + kLFOFrequencyParam, + kWaveformParam, + kNumParameters + }; + + enum Waveforms + { + kWaveformSine = 1, + kWaveformTriangle, + kWaveformSquare, + kWaveformSawtooth, + kWaveformInverseSawtooth, + kNumWaveforms + }; + + // Adjustable parameters: + float carrierFrequency_; // Frequency of main modulator (Hz) + float sweepWidth_; // Amount of change from min to max delay + float lfoFrequency_; // LFO frequency (Hz) + int waveform_; // What shape should be used for the LFO + +private: + float lfo(float phase, int waveform); + + float lfoPhase_; // Phase of the low-frequency oscillator + float carrierPhase_; // Phase of the main (carrier) oscillator + double inverseSampleRate_; // It's more efficient to multiply than divide, so + // cache the inverse of the sample rate + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RingModulatorAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/ringmod/ringmod.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="oWPLeR" name="ringmod" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.ringmodeffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Ring Modulator" pluginDesc="Ring Modulator effect" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="ring" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="ringmodAU" + pluginAUViewClass="ringmodAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.ringmod" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="UMBlvU" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="ringmod" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="ringmod" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="NkQfRK" name="ringmod"> + <GROUP id="{4A4D713A-8716-DB71-ED0A-080389925811}" name="Source"> + <FILE id="jlkrmn" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="OZu8fz" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="h3QZHS" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="als4N2" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/robotisation/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,154 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Robotisation: robot effect using phase vocoder + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +RobotisationAudioProcessorEditor::RobotisationAudioProcessorEditor (RobotisationAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + fftSizeLabel_("", "FFT Size:"), + hopSizeLabel_("", "Hop Size:"), + windowTypeLabel_("", "Window Type:") +{ + // This is where our plugin's editor size is set. + // setSize(170, 80); + + // Set up the selection boxes + + addAndMakeVisible(&fftSizeComboBox_); + fftSizeComboBox_.setEditableText(false); + fftSizeComboBox_.setJustificationType(Justification::left); + fftSizeComboBox_.addItem("64", 64); + fftSizeComboBox_.addItem("128", 128); + fftSizeComboBox_.addItem("256", 256); + fftSizeComboBox_.addItem("512", 512); + fftSizeComboBox_.addItem("1024", 1024); + fftSizeComboBox_.addItem("2048", 2048); + fftSizeComboBox_.addListener(this); + + addAndMakeVisible (&hopSizeSlider_); + hopSizeSlider_.setSliderStyle (Slider::Rotary); + hopSizeSlider_.addListener (this); + hopSizeSlider_.setRange (32, 2048, 1.0); + + addAndMakeVisible(&windowTypeComboBox_); + windowTypeComboBox_.setEditableText(false); + windowTypeComboBox_.setJustificationType(Justification::left); + windowTypeComboBox_.addItem("Rectangular", RobotisationAudioProcessor::kWindowRectangular); + windowTypeComboBox_.addItem("Bartlett", RobotisationAudioProcessor::kWindowBartlett); + windowTypeComboBox_.addItem("Hann", RobotisationAudioProcessor::kWindowHann); + windowTypeComboBox_.addItem("Hamming", RobotisationAudioProcessor::kWindowHamming); + windowTypeComboBox_.addListener(this); + + fftSizeLabel_.attachToComponent(&fftSizeComboBox_, false); + fftSizeLabel_.setFont(Font (11.0f)); + + hopSizeLabel_.attachToComponent(&hopSizeSlider_, false); + hopSizeLabel_.setFont(Font (11.0f)); + + windowTypeLabel_.attachToComponent(&windowTypeComboBox_, false); + windowTypeLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 120, 400, 160); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +RobotisationAudioProcessorEditor::~RobotisationAudioProcessorEditor() +{ +} + +//============================================================================== +void RobotisationAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void RobotisationAudioProcessorEditor::resized() +{ + fftSizeComboBox_.setBounds(20, 20, 150, 30); + hopSizeSlider_.setBounds(200, 20, 150, 30); + windowTypeComboBox_.setBounds(20, 70, 150, 30); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void RobotisationAudioProcessorEditor::timerCallback() +{ + RobotisationAudioProcessor* ourProcessor = getProcessor(); + + fftSizeComboBox_.setSelectedId(ourProcessor->fftSelectedSize_, dontSendNotification); + hopSizeSlider_.setValue(ourProcessor->hopSelectedSize_, dontSendNotification); + windowTypeComboBox_.setSelectedId(ourProcessor->windowType_, dontSendNotification); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void RobotisationAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &hopSizeSlider_) + { + getProcessor()->setParameterNotifyingHost (RobotisationAudioProcessor::kHopSizeParam, + (float)hopSizeSlider_.getValue()); + } +} + +// Similar callback to sliderValueChanged for ComboBox updates +void RobotisationAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &fftSizeComboBox_) + { + getProcessor()->setParameterNotifyingHost (RobotisationAudioProcessor::kFFTSizeParam, + (float)fftSizeComboBox_.getSelectedId()); + } + else if(comboBox == &windowTypeComboBox_) + { + getProcessor()->setParameterNotifyingHost (RobotisationAudioProcessor::kWindowTypeParam, + (float)windowTypeComboBox_.getSelectedId()); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/robotisation/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,74 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Robotisation: robot effect using phase vocoder + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class RobotisationAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Timer +{ +public: + RobotisationAudioProcessorEditor (RobotisationAudioProcessor* ownerFilter); + ~RobotisationAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + +private: + Label fftSizeLabel_, hopSizeLabel_, windowTypeLabel_; + ComboBox fftSizeComboBox_, windowTypeComboBox_; + Slider hopSizeSlider_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + RobotisationAudioProcessor* getProcessor() const + { + return static_cast <RobotisationAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/robotisation/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,664 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Robotisation: robot effect using phase vocoder; + see also whisperisation code in processBlock() below. + + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#include "PluginProcessor.h" +#include "PluginEditor.h" + + +//============================================================================== +RobotisationAudioProcessor::RobotisationAudioProcessor() : inputBuffer_(2, 1), outputBuffer_(2, 1) +{ + // Set default values: + fftSelectedSize_ = 512; + hopSelectedSize_ = hopActualSize_ = 256; + windowType_ = kWindowRectangular; + + fftInitialised_ = false; + fftActualTransformSize_ = 0; + inputBufferLength_ = 1; + outputBufferLength_ = 1; + inputBufferWritePosition_ = outputBufferWritePosition_ = outputBufferReadPosition_ = 0; + samplesSinceLastFFT_ = 0; + windowBuffer_ = 0; + windowBufferLength_ = 0; + preparedToPlay_ = false; + fftScaleFactor_ = 0.0; + + lastUIWidth_ = 370; + lastUIHeight_ = 120; +} + +RobotisationAudioProcessor::~RobotisationAudioProcessor() +{ + // Release FFT resources if allocated. This should be handled by + // releaseResources() but in the event it doesn't happen, this avoids + // a leak. Harmless to call it twice. + deinitFFT(); + deinitWindow(); +} + +//============================================================================== +const String RobotisationAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int RobotisationAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float RobotisationAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kFFTSizeParam: return (float)fftSelectedSize_; + case kHopSizeParam: return (float)hopSelectedSize_; + case kWindowTypeParam: return (float)windowType_; + default: return 0.0f; + } +} + +void RobotisationAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kFFTSizeParam: + if((int)newValue != fftSelectedSize_) + { + fftSelectedSize_ = (int)newValue; + if(preparedToPlay_) + { + // Update settings if currently playing, else wait until prepareToPlay() called + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + } + } + break; + case kHopSizeParam: + hopSelectedSize_ = (int)newValue; + if(preparedToPlay_) + updateHopSize(); + break; + case kWindowTypeParam: + // Recalculate window if needed + if((int)newValue != windowType_) + { + windowType_ = (int)newValue; + if(preparedToPlay_) + initWindow(fftActualTransformSize_, (int)newValue); + } + break; + default: + break; + } +} + +const String RobotisationAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kFFTSizeParam: return "FFT size"; + case kHopSizeParam: return "hop size"; + case kWindowTypeParam: return "window type"; + default: break; + } + + return String::empty; +} + +const String RobotisationAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String RobotisationAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String RobotisationAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool RobotisationAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool RobotisationAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool RobotisationAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double RobotisationAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool RobotisationAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool RobotisationAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int RobotisationAudioProcessor::getNumPrograms() +{ + return 0; +} + +int RobotisationAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void RobotisationAudioProcessor::setCurrentProgram (int index) +{ +} + +const String RobotisationAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void RobotisationAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void RobotisationAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. + + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + preparedToPlay_ = true; +} + +void RobotisationAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + deinitFFT(); + deinitWindow(); + preparedToPlay_ = false; +} + +void RobotisationAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel, inwritepos, sampsincefft; + int outreadpos, outwritepos; + + // Grab the lock that prevents the FFT settings from changing + fftSpinLock_.enter(); + + // Check that we're initialised and ready to go. If not, set output to 0 + if(!fftInitialised_) + { + for (channel = 0; channel < numOutputChannels; ++channel) + { + buffer.clear (channel, 0, buffer.getNumSamples()); + } + + fftSpinLock_.exit(); + return; + } + + // Go through each channel of audio that's passed in. Collect the samples in the input + // buffer. When we've reached the next hop interval, calculate the FFT. + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // inputBufferData is the circular buffer for collecting input samples for the FFT + float* inputBufferData = inputBuffer_.getSampleData(jmin (channel, inputBuffer_.getNumChannels() - 1)); + float* outputBufferData = outputBuffer_.getSampleData(jmin (channel, inputBuffer_.getNumChannels() - 1)); + + // State variables need to be temporarily cached for each channel. We don't want the + // operations on one channel to affect the identical behaviour of the next channel + inwritepos = inputBufferWritePosition_; + outwritepos = outputBufferWritePosition_; + outreadpos = outputBufferReadPosition_; + sampsincefft = samplesSinceLastFFT_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + + // Store the next buffered sample in the output. Do this first before anything + // changes the output buffer-- we will have at least one FFT size worth of data + // stored and ready to go. Set the result to 0 when finished in preparation for the + // next overlap/add procedure. + channelData[i] = outputBufferData[outreadpos]; + outputBufferData[outreadpos] = 0.0; + if(++outreadpos >= outputBufferLength_) + outreadpos = 0; + + // Store the current sample in the input buffer, incrementing the write pointer. Also + // increment how many samples we've stored since the last transform. If it reaches the + // hop size, perform an FFT and any frequency-domain processing. + inputBufferData[inwritepos] = in; + if (++inwritepos >= inputBufferLength_) + inwritepos = 0; + if (++sampsincefft >= hopActualSize_) + { + sampsincefft = 0; + + // Find the index of the starting sample in the buffer. When the buffer length + // is equal to the transform size, this will be the current write position but + // this code is more general for larger buffers. + int inputBufferStartPosition = (inwritepos + inputBufferLength_ + - fftActualTransformSize_) % inputBufferLength_; + + // Window the buffer and copy it into the FFT input + int inputBufferIndex = inputBufferStartPosition; + for(int fftBufferIndex = 0; fftBufferIndex < fftActualTransformSize_; fftBufferIndex++) + { + // Set real part to windowed signal; imaginary part to 0. + fftTimeDomain_[fftBufferIndex][1] = 0.0; + if(fftBufferIndex >= windowBufferLength_) // Safety check, in case window isn't ready + fftTimeDomain_[fftBufferIndex][0] = 0.0; + else + fftTimeDomain_[fftBufferIndex][0] = windowBuffer_[fftBufferIndex] + * inputBufferData[inputBufferIndex]; + inputBufferIndex++; + if(inputBufferIndex >= inputBufferLength_) + inputBufferIndex = 0; + } + + // Perform the FFT on the windowed data, going into the frequency domain. + // Result will be in fftFrequencyDomain_ + fftw_execute(fftForwardPlan_); + + // ********** PHASE VOCODER PROCESSING GOES HERE ************** + // This is the place where frequency-domain calculations are made + // on the transformed signal. Put the result back into fftFrequencyDomain_ + // before transforming back. + // ************************************************************ + + // Whisperiser + /*for(int bin = 0; bin <= fftActualTransformSize_ / 2; bin++) + { + float amplitude = sqrt(fftFrequencyDomain_[bin][0]*fftFrequencyDomain_[bin][0] + + fftFrequencyDomain_[bin][1]*fftFrequencyDomain_[bin][1]); + + // This is what we would use to exactly reconstruct the signal: + // float phase = atan2(fftFrequencyDomain_[bin][1], fftFrequencyDomain_[bin][0]); + + // But instead, this is what we use to scramble the phase: + float phase = 2.0 * M_PI * (float)rand() / (float)RAND_MAX; + + // Set the phase of each bin to 0. phase = 0 means the signal is entirely + // positive-real, but the overall amplitude is the same as before. + fftFrequencyDomain_[bin][0] = amplitude * cos(phase); + fftFrequencyDomain_[bin][1] = amplitude * sin(phase); + + // FFTs of real signals are conjugate-symmetric. We need to maintain that symmetry + // to produce a real output, even as we randomize the phase. + if(bin > 0 && bin < fftActualTransformSize_ / 2) { + fftFrequencyDomain_[fftActualTransformSize_ - bin][0] = amplitude * cos(phase); + fftFrequencyDomain_[fftActualTransformSize_ - bin][1] = - amplitude * sin(phase); + } + }*/ + + for(int bin = 0; bin < fftActualTransformSize_; bin++) + { + float amplitude = sqrt(fftFrequencyDomain_[bin][0]*fftFrequencyDomain_[bin][0] + + fftFrequencyDomain_[bin][1]*fftFrequencyDomain_[bin][1]); + + // Set the phase of each bin to 0. phase = 0 means the signal is entirely + // positive-real, but the overall amplitude is the same as before. + fftFrequencyDomain_[bin][0] = amplitude; + fftFrequencyDomain_[bin][1] = 0.0; + } + + // Perform the inverse FFT to get back to the time domain. Result wll be + // in fftTimeDomain_. If we've done it right (kept the frequency domain + // symmetric), the time domain resuld should be strictly real allowing us + // to ignore the imaginary part. + fftw_execute(fftBackwardPlan_); + + // Add the result to the output buffer, starting at the current write position + // (Output buffer will have been zeroed after reading the last time around) + // Output needs to be scaled by the transform size to get back to original amplitude: + // this is a property of how fftw is implemented. Scaling will also need to be adjusted + // based on hop size to get the same output level (smaller hop size produces more overlap + // and hence higher signal level) + int outputBufferIndex = outwritepos; + for(int fftBufferIndex = 0; fftBufferIndex < fftActualTransformSize_; fftBufferIndex++) + { + // Reapply the window since phase changes will result in discontinities at the edges + // of the window + if(fftBufferIndex < windowBufferLength_) + outputBufferData[outputBufferIndex] += windowBuffer_[fftBufferIndex] * + fftTimeDomain_[fftBufferIndex][0] * fftScaleFactor_; + if(++outputBufferIndex >= outputBufferLength_) + outputBufferIndex = 0; + } + + // Advance the write position within the buffer by the hop size + outwritepos = (outwritepos + hopActualSize_) % outputBufferLength_; + } + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + inputBufferWritePosition_ = inwritepos; + outputBufferWritePosition_ = outwritepos; + outputBufferReadPosition_ = outreadpos; + samplesSinceLastFFT_ = sampsincefft; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } + + fftSpinLock_.exit(); +} + +//============================================================================== +bool RobotisationAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* RobotisationAudioProcessor::createEditor() +{ + return new RobotisationAudioProcessorEditor (this); +} + +//============================================================================== +void RobotisationAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("fftSize", fftSelectedSize_); + xml.setAttribute("hopSize", hopSelectedSize_); + xml.setAttribute("windowType", windowType_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void RobotisationAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + fftSelectedSize_ = (int)xmlState->getDoubleAttribute("fftSize", fftSelectedSize_); + hopSelectedSize_ = (int)xmlState->getDoubleAttribute("hopSize", hopSelectedSize_); + windowType_ = (int)xmlState->getDoubleAttribute("windowType", windowType_); + + if(preparedToPlay_) + { + // Update settings if currently playing, else wait until prepareToPlay() called + initFFT(fftSelectedSize_); + initWindow(fftSelectedSize_, windowType_); + } + } + } +} + +//============================================================================== +// Initialise the FFT data structures for a given length transform +void RobotisationAudioProcessor::initFFT(int length) +{ + if(fftInitialised_) + deinitFFT(); + + // Save the current length so we know how big our results are later + fftActualTransformSize_ = length; + + // Here we allocate the complex-number buffers for the FFT. This uses + // a convenient wrapper on the more general fftw_malloc() + fftTimeDomain_ = fftw_alloc_complex(length); + fftFrequencyDomain_ = fftw_alloc_complex(length); + + // FFTW_ESTIMATE doesn't necessarily produce the fastest executing code (FFTW_MEASURE + // will get closer) but it carries a minimum startup cost. FFTW_MEASURE might stall for + // several seconds which would be annoying in an audio plug-in context. + fftForwardPlan_ = fftw_plan_dft_1d(fftActualTransformSize_, fftTimeDomain_, + fftFrequencyDomain_, FFTW_FORWARD, FFTW_ESTIMATE); + fftBackwardPlan_ = fftw_plan_dft_1d(fftActualTransformSize_, fftFrequencyDomain_, + fftTimeDomain_, FFTW_BACKWARD, FFTW_ESTIMATE); + + // Allocate the buffer that the samples will be collected in + inputBufferLength_ = fftActualTransformSize_; + inputBuffer_.setSize(2, inputBufferLength_); + inputBuffer_.clear(); + inputBufferWritePosition_ = 0; + samplesSinceLastFFT_ = 0; + + // Allocate the output buffer to be twice the size of the FFT + // This will be enough for all hop size cases + outputBufferLength_ = 2*fftActualTransformSize_; + outputBuffer_.setSize(2, outputBufferLength_); + outputBuffer_.clear(); + outputBufferReadPosition_ = 0; + + updateHopSize(); + + fftInitialised_ = true; +} + +// Free the FFT data structures +void RobotisationAudioProcessor::deinitFFT() +{ + if(!fftInitialised_) + return; + + // Prevent this variable from changing while an audio callback is running. + // Once it has changed, the next audio callback will find that it's not + // initialised and will return silence instead of attempting to work with the + // (invalid) FFT structures. This produces an audible glitch but no crash, + // and is the simplest way to handle parameter changes in this example code. + fftSpinLock_.enter(); + fftInitialised_ = false; + fftSpinLock_.exit(); + + fftw_destroy_plan(fftForwardPlan_); + fftw_destroy_plan(fftBackwardPlan_); + fftw_free(fftTimeDomain_); + fftw_free(fftFrequencyDomain_); + + // Leave the input buffer in memory until the plugin is released +} + +//============================================================================== +// Create a new window of a given length and type +void RobotisationAudioProcessor::initWindow(int length, int windowType) +{ + if(windowBuffer_ != 0) + deinitWindow(); + if(length == 0) // Sanity check + return; + + // Allocate memory for the window + windowBuffer_ = (double *)malloc(length * sizeof(double)); + + // Write the length as a double here to simplify the code below (otherwise + // typecasts would be wise) + double windowLength = length; + + // Set values for the window, depending on its type + for(int i = 0; i < length; i++) + { + // Window functions are typically defined to be symmetrical. This will cause a + // problem in the overlap-add process: the windows instead need to be periodic + // when arranged end-to-end. As a result we calculate the window of one sample + // larger than usual, and drop the last sample. (This works as long as N is even.) + // See Julius Smith, "Spectral Audio Signal Processing" for details. + switch(windowType) + { + case kWindowBartlett: + windowBuffer_[i] = (2.0/(windowLength + 2.0))* + (0.5*(windowLength + 2.0) - abs((double)i - 0.5*windowLength)); + break; + case kWindowHann: + windowBuffer_[i] = 0.5*(1.0 - cos(2.0*M_PI*(double)i/windowLength)); + break; + case kWindowHamming: + windowBuffer_[i] = 0.54 - 0.46*cos(2.0*M_PI*(double)i/windowLength); + break; + case kWindowRectangular: + default: + windowBuffer_[i] = 1.0; + break; + } + } + + windowBufferLength_ = length; + updateScaleFactor(); +} + +// Free the window buffer +void RobotisationAudioProcessor::deinitWindow() +{ + if(windowBuffer_ == 0) + return; + + // Delay clearing the window until the audio thread is not running + // to avoid a crash if the code tries to access an invalid window + fftSpinLock_.enter(); + windowBufferLength_ = 0; + fftSpinLock_.exit(); + + free(windowBuffer_); + windowBuffer_ = 0; +} + +// Update the actual hop size depending on the window size and hop size settings +// Hop size is expressed as a fraction of a window in the parameters. +void RobotisationAudioProcessor::updateHopSize() +{ + hopActualSize_ = hopSelectedSize_; + + // Update the factor by which samples are scaled to preserve unity gain + updateScaleFactor(); + + // Read pointer lags the write pointer to allow for FFT buffers to accumulate and + // be processed. Total latency is sum of the FFT size and the hop size. + outputBufferWritePosition_ = hopActualSize_ + fftActualTransformSize_; +} + +// Update the factor by which each output sample is scaled. This needs to update +// every time FFT size, hop size, and window type are changed. +void RobotisationAudioProcessor::updateScaleFactor() +{ + // The gain needs to be normalised by the sum of the window, which implicitly + // accounts for the length of the transform and the window type. From there + // we also update based on hop size: smaller hop means more overlap means the + // overall gain should be reduced. + double windowSum = 0.0; + + for(int i = 0; i < windowBufferLength_; i++) + { + windowSum += windowBuffer_[i]; + } + + if(windowSum == 0.0) + fftScaleFactor_ = 0.0; // Catch invalid cases and mute output + else + { + fftScaleFactor_ = ((float)hopSelectedSize_/(float)fftActualTransformSize_)/(double)windowSum; + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new RobotisationAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/robotisation/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,179 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Robotisation: robot effect using phase vocoder + See textbook Chapter 8: The Phase Vocoder + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + This code requires the fftw library version 3 to compile: + http://fftw.org + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include <fftw3.h> + +//============================================================================== +/** +*/ +class RobotisationAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + RobotisationAudioProcessor(); + ~RobotisationAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kFFTSizeParam = 0, + kHopSizeParam, + kWindowTypeParam, + kNumParameters + }; + + enum Window + { + kWindowRectangular = 1, + kWindowBartlett, + kWindowHann, + kWindowHamming + }; + + // This parameter indicates the FFT size for phase vocoder computation. It is selected + // by the GUI and may temporarily differ from the actual size used in calculations. + int fftSelectedSize_; + int hopSelectedSize_; // Hop size, as chosen by user + int windowType_; // Type of window used + +private: + // Methods to initialise and de-initialise the FFT machinery + void initFFT(int length); + void deinitFFT(); + + // Methods to initialise and de-initialise the window + void initWindow(int length, int windowType); + void deinitWindow(); + + // Methods to update the buffering for the given hop size and the output scaling + void updateHopSize(); + void updateScaleFactor(); + + // Whether the FFT has been initialised and is therefore ready to go + bool fftInitialised_; + + // Variables for calculating the FFT and IFFT: complex data structures and the + // "plan" used by the fftw library to calculate the transforms. + fftw_complex *fftTimeDomain_, *fftFrequencyDomain_; + fftw_plan fftForwardPlan_, fftBackwardPlan_; + + // Size of the FFT (generally a power of two) and the hop size (in samples, generally a fraction of FFT size) + int fftActualTransformSize_; + int hopActualSize_; + + // Amount by which to scale the inverse FFT to return to original amplitude: depends on the + // transform size (because of fftw implementation) and the hop size (because of inherent overlap) + double fftScaleFactor_; + + // Circular buffer gathers audio samples from the input until enough are available + // for the FFT calculation + AudioSampleBuffer inputBuffer_; + int inputBufferLength_; + int inputBufferWritePosition_; + + // Circular buffer that collects output samples from the FFT overlap-add process + // before they are ready to be sent to the output stream + AudioSampleBuffer outputBuffer_; + int outputBufferLength_; + int outputBufferReadPosition_, outputBufferWritePosition_; + + // How many samples since the last FFT? + int samplesSinceLastFFT_; + + // Stored window function for pre-processing input frames + double *windowBuffer_; + int windowBufferLength_; + + // Whether or not prepareToPlay() has been called, i.e. that resources are in use + bool preparedToPlay_; + + // Spin lock that prevents the FFT settings from changing in the middle of the audio + // thread. + SpinLock fftSpinLock_; + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RobotisationAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/robotisation/robotisation.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="AC7ScK" name="robotisation" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.robotisation" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Robotisation" pluginDesc="Robotisation effect using phase vocoder" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="pvrb" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="robotisationAU" + pluginAUViewClass="pvoc_passthroughAU_V1" pluginRTASCategory="" + jucerVersion="3.1.0" companyName="Reiss and McPherson" aaxIdentifier="com.yourcompany.pvoc_passthrough" + pluginAAXCategory="AAX_ePlugInCategory_Dynamics" buildVST3="0" + buildAAX="0" includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="RZnSpY" vstFolder="../../vstsdk2.4" + extraLinkerFlags="-lfftw3 -lm" postbuildCommand=" # This script takes the build product and copies it to the AU, VST, and RTAS folders, depending on # which plugin types you've built original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME # this looks inside the binary to detect which platforms are needed.. copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l` copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l` copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l` copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l` if [ $copyAU -gt 0 ]; then echo "Copying to AudioUnit folder..." AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component if [ -d "$AU" ]; then rm -r "$AU" fi cp -r "$original" "$AU" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE" # Fix info.plist for AUs built with Xcode 3 if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then echo else echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU" /usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist" fi fi if [ $copyVST -gt 0 ]; then echo "Copying to VST folder..." VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst if [ -d "$VST" ]; then rm -r "$VST" fi cp -r "$original" "$VST" sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo" sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE" fi if [ $copyRTAS -gt 0 ]; then echo "Copying to RTAS folder..." RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm if [ -d "$RTAS" ]; then rm -r "$RTAS" fi cp -r "$original" "$RTAS" fi if [ $copyAAX -gt 0 ]; then echo "Copying to AAX folder..." if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX1" ]; then rm -r "$AAX1" fi cp -r "$original" "$AAX1" fi if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin" if [ -d "$AAX2" ]; then rm -r "$AAX2" fi cp -r "$original" "$AAX2" fi fi "> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="robotisation" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + headerPath="/usr/local/include" libraryPath="/usr/local/lib"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="robotisation" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal" + headerPath="/usr/local/include" libraryPath="/usr/local/lib"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="oVUVUz" name="robotisation"> + <GROUP id="{F4483B04-0E7A-D77C-795E-A491F61E239B}" name="Source"> + <FILE id="d7EIMU" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="YDAD0P" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="VTO1E6" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="mhOgcd" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/tremolo/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,140 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Tremolo: amplitude modulation using a low-frequency oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +//============================================================================== +TremoloAudioProcessorEditor::TremoloAudioProcessorEditor (TremoloAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + depthLabel_("", "Depth:"), + frequencyLabel_("", "Frequency:"), + waveformLabel_("", "Waveform:") +{ + // Set up the sliders + addAndMakeVisible (&depthSlider_); + depthSlider_.setSliderStyle (Slider::Rotary); + depthSlider_.addListener (this); + depthSlider_.setRange (0.0, 1.0, 0.01); + + addAndMakeVisible (&frequencySlider_); + frequencySlider_.setSliderStyle (Slider::Rotary); + frequencySlider_.addListener (this); + frequencySlider_.setRange (0.2, 20.0, 0.05); + + addAndMakeVisible(&waveformComboBox_); + waveformComboBox_.setEditableText(false); + waveformComboBox_.setJustificationType(Justification::left); + waveformComboBox_.addItem("Sine", TremoloAudioProcessor::kWaveformSine); + waveformComboBox_.addItem("Triangle", TremoloAudioProcessor::kWaveformTriangle); + waveformComboBox_.addItem("Square", TremoloAudioProcessor::kWaveformSquare); + waveformComboBox_.addItem("Square (with sloped edges)", TremoloAudioProcessor::kWaveformSquareSlopedEdges); + waveformComboBox_.addListener(this); + + depthLabel_.attachToComponent(&depthSlider_, false); + depthLabel_.setFont(Font (11.0f)); + + frequencyLabel_.attachToComponent(&frequencySlider_, false); + frequencyLabel_.setFont(Font (11.0f)); + + waveformLabel_.attachToComponent(&waveformComboBox_, false); + waveformLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 140, 600, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +TremoloAudioProcessorEditor::~TremoloAudioProcessorEditor() +{ +} + +//============================================================================== +void TremoloAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void TremoloAudioProcessorEditor::resized() +{ + frequencySlider_.setBounds(20, 20, 150, 40); + depthSlider_.setBounds (200, 20, 150, 40); + waveformComboBox_.setBounds (20, 80, 200, 30); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void TremoloAudioProcessorEditor::timerCallback() +{ + TremoloAudioProcessor* ourProcessor = getProcessor(); + + depthSlider_.setValue(ourProcessor->depth_, dontSendNotification); + frequencySlider_.setValue(ourProcessor->frequency_, dontSendNotification); + waveformComboBox_.setSelectedId(ourProcessor->waveform_, dontSendNotification); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void TremoloAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &depthSlider_) + { + getProcessor()->setParameterNotifyingHost (TremoloAudioProcessor::kDepthParam, + (float)depthSlider_.getValue()); + } + else if (slider == &frequencySlider_) + { + getProcessor()->setParameterNotifyingHost (TremoloAudioProcessor::kFrequencyParam, + (float)frequencySlider_.getValue()); + } +} + +// Similar callback to sliderValueChanged for ComboBox updates +void TremoloAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &waveformComboBox_) + { + getProcessor()->setParameterNotifyingHost (TremoloAudioProcessor::kWaveformParam, + (float)waveformComboBox_.getSelectedId()); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/tremolo/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,71 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Tremolo: amplitude modulation using a low-frequency oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class TremoloAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Timer +{ +public: + TremoloAudioProcessorEditor (TremoloAudioProcessor* ownerFilter); + ~TremoloAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + +private: + Label depthLabel_, frequencyLabel_, waveformLabel_; + Slider depthSlider_, frequencySlider_; + ComboBox waveformComboBox_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + TremoloAudioProcessor* getProcessor() const + { + return static_cast <TremoloAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/tremolo/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,367 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Tremolo: amplitude modulation using a low-frequency oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <math.h> + +//============================================================================== +TremoloAudioProcessor::TremoloAudioProcessor() +{ + // Set default values: + frequency_ = 2.0; + depth_ = 1.0; + waveform_ = kWaveformSine; + + lfoPhase_ = 0.0; + inverseSampleRate_ = 1.0/44100.0; + + lastUIWidth_ = 370; + lastUIHeight_ = 140; +} + +TremoloAudioProcessor::~TremoloAudioProcessor() +{ +} + +//============================================================================== +const String TremoloAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int TremoloAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float TremoloAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kFrequencyParam: return frequency_; + case kDepthParam: return depth_; + case kWaveformParam: return (float)waveform_; + default: return 0.0f; + } +} + +void TremoloAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + + switch (index) + { + case kFrequencyParam: + frequency_ = newValue; + break; + case kDepthParam: + depth_ = newValue; + break; + case kWaveformParam: + waveform_ = (int)newValue; + break; + default: + break; + } +} + +const String TremoloAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kFrequencyParam: return "frequency"; + case kDepthParam: return "depth"; + case kWaveformParam: return "waveform"; + default: break; + } + + return String::empty; +} + +const String TremoloAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String TremoloAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String TremoloAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool TremoloAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool TremoloAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool TremoloAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double TremoloAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool TremoloAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool TremoloAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int TremoloAudioProcessor::getNumPrograms() +{ + return 0; +} + +int TremoloAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void TremoloAudioProcessor::setCurrentProgram (int index) +{ +} + +const String TremoloAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void TremoloAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void TremoloAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Calculations that happen before play begins. Pretty simple in this effect, just + // reset the previous state. + lfoPhase_ = 0.0; + inverseSampleRate_ = 1.0/sampleRate; +} + +void TremoloAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. +} + +void TremoloAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + lfoPhase_ = 0.0; +} + + +void TremoloAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel; + float ph; + + // Go through each channel of audio that's passed in. In this example we apply identical + // effects to each channel, regardless of how many input channels there are. For some effects, like + // a stereo chorus or panner, you might do something different for each channel. + + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // Make a temporary copy of any state variables declared in PluginProcessor.h which need to be + // maintained between calls to processBlock(). Each channel needs to be processed identically + // which means that the activity of processing one channel can't affect the state variable for + // the next channel. + + ph = lfoPhase_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + + // Ring modulation is easy! Just multiply the waveform by a periodic carrier + channelData[i] = in * (1.0f - depth_*lfo(ph, waveform_)); + + // Update the carrier and LFO phases, keeping them in the range 0-1 + ph += frequency_*inverseSampleRate_; + if(ph >= 1.0) + ph -= 1.0; + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + + lfoPhase_ = ph; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool TremoloAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* TremoloAudioProcessor::createEditor() +{ + return new TremoloAudioProcessorEditor (this); +} + +//============================================================================== +void TremoloAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("frequency", frequency_); + xml.setAttribute("depth", depth_); + xml.setAttribute("waveform", waveform_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void TremoloAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + depth_ = (float)xmlState->getDoubleAttribute("depth", depth_); + frequency_ = (float)xmlState->getDoubleAttribute("frequency", frequency_); + waveform_ = xmlState->getIntAttribute("waveform", waveform_); + } + } +} + +//============================================================================== +// Function for calculating LFO waveforms. Phase runs from 0-1, output is scaled +// from 0 to 1 (note: not -1 to 1 as would be typical of sine). +float TremoloAudioProcessor::lfo(float phase, int waveform) +{ + switch(waveform) + { + case kWaveformTriangle: + if(phase < 0.25f) + return 0.5f + 2.0f*phase; + else if(phase < 0.75f) + return 1.0f - 2.0f*(phase - 0.25f); + else + return 2.0f*(phase-0.75f); + case kWaveformSquare: + if(phase < 0.5f) + return 1.0f; + else + return 0.0f; + case kWaveformSquareSlopedEdges: + if(phase < 0.48f) + return 1.0f; + else if(phase < 0.5f) + return 1.0f - 50.0f*(phase - 0.48f); + else if(phase < 0.98f) + return 0.0f; + else + return 50.0f*(phase - 0.98f); + case kWaveformSine: + default: + return 0.5f + 0.5f*sinf(2.0 * M_PI * phase); + } +} + + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new TremoloAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/tremolo/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,130 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Tremolo: amplitude modulation using a low-frequency oscillator + See textbook Chapter 5: Amplitude Modulation + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class TremoloAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + TremoloAudioProcessor(); + ~TremoloAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kFrequencyParam, + kDepthParam, + kWaveformParam, + kNumParameters + }; + + enum Waveforms + { + kWaveformSine = 1, + kWaveformTriangle, + kWaveformSquare, + kWaveformSquareSlopedEdges, + kNumWaveforms + }; + + // Adjustable parameters: + float frequency_; // LFO frequency (Hz) + float depth_; // Depth of effect (0-1) + int waveform_; // What shape should be used for the LFO + +private: + float lfo(float phase, int waveform); + + float lfoPhase_; // Phase of the low-frequency oscillator + double inverseSampleRate_; // It's more efficient to multiply than divide, so + // cache the inverse of the sample rate + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TremoloAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/tremolo/tremolo.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="pUBjFb" name="tremolo" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.tremoloeffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Tremolo" pluginDesc="Tremolo (amplitude modulation) effect" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="Plug" pluginChannelConfigs="{2,2},{1,1}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="tremoloAU" + pluginAUViewClass="tremoloAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.tremolo" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="huErol" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="tremolo" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="tremolo" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="jo9oJe" name="tremolo"> + <GROUP id="{4E1BC53A-EEBE-0090-2B40-0CB474CEE092}" name="Source"> + <FILE id="R0uTQk" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="TAmnwW" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="bbhVFv" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="Q8mSSU" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/vibrato/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,249 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Vibrato: frequency modulation using delay lines + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <cstring> + +#ifdef _MSC_VER +#define snprintf _snprintf_s //support for pre-2014 versions of Visual Studio +#endif // _MSC_VER + +//============================================================================== +VibratoAudioProcessorEditor::VibratoAudioProcessorEditor (VibratoAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + sweepWidthLabel_("", "Sweep Width (sec.):"), + frequencyLabel_("", "LFO Frequency:"), + waveformLabel_("", "LFO Waveform:"), + interpolationLabel_("", "Interpolation Type:"), + pitchShiftLabel_("", "Maximum Pitch Shift:") +{ + // Initialise variables + oldSweepWidth_ = oldFrequency_ = -1.0; + oldWaveform_ = -1; + + // Set up the sliders + addAndMakeVisible (&sweepWidthSlider_); + sweepWidthSlider_.setSliderStyle (Slider::Rotary); + sweepWidthSlider_.addListener (this); + sweepWidthSlider_.setRange (.001, VibratoAudioProcessor::kMaximumSweepWidth, 0.0005); + + addAndMakeVisible (&frequencySlider_); + frequencySlider_.setSliderStyle (Slider::Rotary); + frequencySlider_.addListener (this); + frequencySlider_.setRange (0.5, 5.0, 0.025); + + addAndMakeVisible(&waveformComboBox_); + waveformComboBox_.setEditableText(false); + waveformComboBox_.setJustificationType(Justification::left); + waveformComboBox_.addItem("Sine", VibratoAudioProcessor::kWaveformSine); + waveformComboBox_.addItem("Triangle", VibratoAudioProcessor::kWaveformTriangle); + waveformComboBox_.addItem("Sawtooth (rising)", VibratoAudioProcessor::kWaveformSawtooth); + waveformComboBox_.addItem("Sawtooth (falling)", VibratoAudioProcessor::kWaveformInverseSawtooth); + waveformComboBox_.addListener(this); + + addAndMakeVisible(&interpolationComboBox_); + interpolationComboBox_.setEditableText(false); + interpolationComboBox_.setJustificationType(Justification::left); + interpolationComboBox_.addItem("None", VibratoAudioProcessor::kInterpolationNearestNeighbour); + interpolationComboBox_.addItem("Linear", VibratoAudioProcessor::kInterpolationLinear); + interpolationComboBox_.addItem("Cubic", VibratoAudioProcessor::kInterpolationCubic); + interpolationComboBox_.addListener(this); + + // This label is informational and exists apart from other controls + // The other labels are attached to sliders and combo boxes + addAndMakeVisible(&pitchShiftLabel_); + pitchShiftLabel_.setFont(Font (12.0f)); + + sweepWidthLabel_.attachToComponent(&sweepWidthSlider_, false); + sweepWidthLabel_.setFont(Font (11.0f)); + + frequencyLabel_.attachToComponent(&frequencySlider_, false); + frequencyLabel_.setFont(Font (11.0f)); + + waveformLabel_.attachToComponent(&waveformComboBox_, false); + waveformLabel_.setFont(Font (11.0f)); + + interpolationLabel_.attachToComponent(&interpolationComboBox_, false); + interpolationLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 160, 600, 300); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +VibratoAudioProcessorEditor::~VibratoAudioProcessorEditor() +{ +} + +//============================================================================== +void VibratoAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void VibratoAudioProcessorEditor::resized() +{ + sweepWidthSlider_.setBounds (20, 20, 150, 40); + frequencySlider_.setBounds(200, 20, 150, 40); + pitchShiftLabel_.setBounds(20, 60, 350, 20); + waveformComboBox_.setBounds(20, 100, 150, 30); + interpolationComboBox_.setBounds(200, 100, 150, 30); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void VibratoAudioProcessorEditor::timerCallback() +{ + VibratoAudioProcessor* ourProcessor = getProcessor(); + + sweepWidthSlider_.setValue(ourProcessor->sweepWidth_, dontSendNotification); + frequencySlider_.setValue(ourProcessor->frequency_, dontSendNotification); + waveformComboBox_.setSelectedId(ourProcessor->waveform_, false); + interpolationComboBox_.setSelectedId(ourProcessor->interpolation_, false); + + // Update the pitch shift label only when something changes to avoid + // needless calculations + if(ourProcessor->sweepWidth_ != oldSweepWidth_ || + ourProcessor->frequency_ != oldFrequency_ || + ourProcessor->waveform_ != oldWaveform_) + { + updatePitchShiftLabel(); + oldSweepWidth_ = ourProcessor->sweepWidth_; + oldFrequency_ = ourProcessor->frequency_; + oldWaveform_ = ourProcessor->waveform_; + } +} + +// This is our Slider::Listener callback, when the user drags a slider. +void VibratoAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == &sweepWidthSlider_) + { + getProcessor()->setParameterNotifyingHost (VibratoAudioProcessor::kSweepWidthParam, + (float)sweepWidthSlider_.getValue()); + updatePitchShiftLabel(); + } + else if (slider == &frequencySlider_) + { + getProcessor()->setParameterNotifyingHost (VibratoAudioProcessor::kFrequencyParam, + (float)frequencySlider_.getValue()); + updatePitchShiftLabel(); + } +} + +// Similar callback to sliderValueChanged for ComboBox updates +void VibratoAudioProcessorEditor::comboBoxChanged (ComboBox *comboBox) +{ + if(comboBox == &waveformComboBox_) + { + getProcessor()->setParameterNotifyingHost (VibratoAudioProcessor::kWaveformParam, + (float)waveformComboBox_.getSelectedId()); + updatePitchShiftLabel(); + } + else if(comboBox == &interpolationComboBox_) + { + getProcessor()->setParameterNotifyingHost (VibratoAudioProcessor::kInterpolationParam, + (float)interpolationComboBox_.getSelectedId()); + // This parameter doesn't affect the maximum pitch shift + } +} + +// Update the content of the pitch shift label (whenever controls change) +void VibratoAudioProcessorEditor::updatePitchShiftLabel() +{ + VibratoAudioProcessor* ourProcessor = getProcessor(); + + // The amount of pitch shift depends on the derivative of the delay, which + // is given by: delay = width * f(frequency * t) + // where f(x) is one of: + // sine --> 0.5 + 0.5*sin(2*pi*x) --> derivative pi*cos(x)*dx + // triangle --> {2.0*x or 1.0-(2.0*(x-0.5)) ---> derivative +/- 2.0*dx + // sawtooth rising --> x --> derivative 1.0*dx + // sawtooth falling --> 1.0 - x --> derivative -1.0*dx + // For f(frequency*t), "dx" = frequency + + float maxSpeed = 1.0, minSpeed = 1.0; + float maxPitch = 0.0, minPitch = 0.0; + char str[256]; + + switch(ourProcessor->waveform_) + { + case VibratoAudioProcessor::kWaveformSine: + maxSpeed = 1.0 + M_PI * ourProcessor->frequency_ * ourProcessor->sweepWidth_; + minSpeed = 1.0 - M_PI * ourProcessor->frequency_ * ourProcessor->sweepWidth_; + break; + case VibratoAudioProcessor::kWaveformTriangle: + maxSpeed = 1.0 + 2.0 * ourProcessor->frequency_ * ourProcessor->sweepWidth_; + minSpeed = 1.0 - 2.0 * ourProcessor->frequency_ * ourProcessor->sweepWidth_; + break; + case VibratoAudioProcessor::kWaveformSawtooth: + // Standard (rising) sawtooth means delay is increasing --> pitch is lower + maxSpeed = 1.0; + minSpeed = 1.0 - ourProcessor->frequency_ * ourProcessor->sweepWidth_; + break; + case VibratoAudioProcessor::kWaveformInverseSawtooth: + // Inverse (falling) sawtooth means delay is decreasing --> pitch is higher + maxSpeed = 1.0 + ourProcessor->frequency_ * ourProcessor->sweepWidth_; + minSpeed = 1.0; + break; + } + + // Convert speed to pitch shift --> semitones = 12*log2(speed) + maxPitch = 12.0*logf(maxSpeed)/logf(2.0); + + if(minSpeed > 0) + { + minPitch = 12.0*logf(minSpeed)/logf(2.0); + snprintf(str, 256, "Vibrato range: %+.2f to %+.2f semitones (speed %.3f to %.3f)", + minPitch, maxPitch, minSpeed, maxSpeed); + } + else + { + snprintf(str, 256, "Vibrato range: --- to %+.2f semitones (speed %.3f to %.3f)", + maxPitch, minSpeed, maxSpeed); + } + + pitchShiftLabel_.setText(str, dontSendNotification); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/vibrato/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,77 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Vibrato: frequency modulation using delay lines + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class VibratoAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public ComboBox::Listener, + public Timer +{ +public: + VibratoAudioProcessorEditor (VibratoAudioProcessor* ownerFilter); + ~VibratoAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + void comboBoxChanged (ComboBox *); + +private: + void updatePitchShiftLabel(); + + Label sweepWidthLabel_, frequencyLabel_, waveformLabel_; + Label interpolationLabel_, pitchShiftLabel_; + Slider sweepWidthSlider_, frequencySlider_; + ComboBox waveformComboBox_, interpolationComboBox_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + float oldSweepWidth_, oldFrequency_; + int oldWaveform_; + + VibratoAudioProcessor* getProcessor() const + { + return static_cast <VibratoAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/vibrato/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,465 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Vibrato: frequency modulation using delay lines + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <math.h> + +const float VibratoAudioProcessor::kMaximumSweepWidth = 0.05; + +//============================================================================== +VibratoAudioProcessor::VibratoAudioProcessor() : delayBuffer_ (2, 1) +{ + // Set default values: + sweepWidth_ = .01; + frequency_ = 2.0; + waveform_ = kWaveformSine; + interpolation_ = kInterpolationLinear; + + delayBufferLength_ = 1; + lfoPhase_ = 0.0; + inverseSampleRate_ = 1.0/44100.0; + + // Start the circular buffer pointer at the beginning + delayWritePosition_ = 0; + + lastUIWidth_ = 370; + lastUIHeight_ = 160; +} + +VibratoAudioProcessor::~VibratoAudioProcessor() +{ +} + +//============================================================================== +const String VibratoAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int VibratoAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float VibratoAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kSweepWidthParam: return sweepWidth_; + case kFrequencyParam: return frequency_; + case kWaveformParam: return (float)waveform_; + case kInterpolationParam: return (float)interpolation_; + default: return 0.0f; + } +} + +void VibratoAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + + switch (index) + { + case kSweepWidthParam: + sweepWidth_ = newValue; + break; + case kFrequencyParam: + frequency_ = newValue; + break; + case kWaveformParam: + waveform_ = (int)newValue; + break; + case kInterpolationParam: + interpolation_ = (int)newValue; + break; + default: + break; + } +} + +const String VibratoAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kSweepWidthParam: return "sweep width"; + case kFrequencyParam: return "frequency"; + case kWaveformParam: return "waveform"; + case kInterpolationParam: return "interpolation"; + default: break; + } + + return String::empty; +} + +const String VibratoAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String VibratoAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String VibratoAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool VibratoAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool VibratoAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool VibratoAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double VibratoAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool VibratoAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool VibratoAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int VibratoAudioProcessor::getNumPrograms() +{ + return 0; +} + +int VibratoAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void VibratoAudioProcessor::setCurrentProgram (int index) +{ +} + +const String VibratoAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void VibratoAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void VibratoAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Allocate and zero the delay buffer (size will depend on current sample rate) + // Add 3 extra samples to allow cubic interpolation even at maximum delay + delayBufferLength_ = (int)(kMaximumSweepWidth*sampleRate) + 3; + delayBuffer_.setSize(2, delayBufferLength_); + delayBuffer_.clear(); + lfoPhase_ = 0.0; + + inverseSampleRate_ = 1.0/sampleRate; +} + +void VibratoAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + + // The delay buffer will stay in memory until the effect is unloaded. +} + +void VibratoAudioProcessor::reset() +{ + // Use this method as the place to clear any delay lines, buffers, etc, as it + // means there's been a break in the audio's continuity. + + delayBuffer_.clear(); +} + + +void VibratoAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + + int channel, dpw; // dpr = delay read pointer; dpw = delay write pointer + float dpr, currentDelay, ph; + + // Go through each channel of audio that's passed in. In this example we apply identical + // effects to each channel, regardless of how many input channels there are. For some effects, like + // a stereo chorus or panner, you might do something different for each channel. + + for (channel = 0; channel < numInputChannels; ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // delayData is the circular buffer for implementing delay on this channel + float* delayData = delayBuffer_.getSampleData (jmin (channel, delayBuffer_.getNumChannels() - 1)); + + // Make a temporary copy of any state variables declared in PluginProcessor.h which need to be + // maintained between calls to processBlock(). Each channel needs to be processed identically + // which means that the activity of processing one channel can't affect the state variable for + // the next channel. + + dpw = delayWritePosition_; + ph = lfoPhase_; + + for (int i = 0; i < numSamples; ++i) + { + const float in = channelData[i]; + float interpolatedSample = 0.0; + + // Recalculate the read pointer position with respect to the write pointer. A more efficient + // implementation might increment the read pointer based on the derivative of the LFO without + // running the whole equation again, but this format makes the operation clearer. + + currentDelay = sweepWidth_*lfo(ph, waveform_); + + // Subtract 3 samples to the delay pointer to make sure we have enough previously written + // samples to interpolate with + dpr = fmodf((float)dpw - (float)(currentDelay * getSampleRate()) + (float)delayBufferLength_ - 3.0, + (float)delayBufferLength_); + + // In this example, the output is the input plus the contents of the delay buffer (weighted by delayMix) + // The last term implements a tremolo (variable amplitude) on the whole thing. + + if(interpolation_ == kInterpolationLinear) + { + // Find the fraction by which the read pointer sits between two + // samples and use this to adjust weights of the samples + float fraction = dpr - floorf(dpr); + int previousSample = (int)floorf(dpr); + int nextSample = (previousSample + 1) % delayBufferLength_; + interpolatedSample = fraction*delayData[nextSample] + + (1.0f-fraction)*delayData[previousSample]; + } + else if(interpolation_ == kInterpolationCubic) + { + // Cubic interpolation will produce cleaner results at the expense + // of more computation. This code uses the Catmull-Rom variant of + // cubic interpolation. To reduce the load, calculate a few quantities + // in advance that will be used several times in the equation: + + int sample1 = (int)floorf(dpr); + int sample2 = (sample1 + 1) % delayBufferLength_; + int sample3 = (sample2 + 1) % delayBufferLength_; + int sample0 = (sample1 - 1 + delayBufferLength_) % delayBufferLength_; + + float fraction = dpr - floorf(dpr); + float frsq = fraction*fraction; + + float a0 = -0.5f*delayData[sample0] + 1.5f*delayData[sample1] + - 1.5f*delayData[sample2] + 0.5f*delayData[sample3]; + float a1 = delayData[sample0] - 2.5f*delayData[sample1] + + 2.0f*delayData[sample2] - 0.5f*delayData[sample3]; + float a2 = -0.5f*delayData[sample0] + 0.5f*delayData[sample2]; + float a3 = delayData[sample1]; + + interpolatedSample = a0*fraction*frsq + a1*frsq + a2*fraction + a3; + } + else // Nearest neighbour interpolation + { + // Find the nearest input sample by rounding the fractional index to the + // nearest integer. It's possible this will round it to the end of the buffer, + // in which case we need to roll it back to the beginning. + int closestSample = (int)floorf(dpr + 0.5); + if(closestSample == delayBufferLength_) + closestSample = 0; + interpolatedSample = delayData[closestSample]; + } + + // Store the current information in the delay buffer. With feedback, what we read is + // included in what gets stored in the buffer, otherwise it's just a simple delay line + // of the input signal. + + delayData[dpw] = in; + + // Increment the write pointer at a constant rate. The read pointer will move at different + // rates depending on the settings of the LFO, the delay and the sweep width. + + if (++dpw >= delayBufferLength_) + dpw = 0; + + // Store the output sample in the buffer, replacing the input. In the vibrato effect, + // the delaye sample is the only component of the output (no mixing with the dry signal) + channelData[i] = interpolatedSample; + + // Update the LFO phase, keeping it in the range 0-1 + ph += frequency_*inverseSampleRate_; + if(ph >= 1.0) + ph -= 1.0; + } + } + + // Having made a local copy of the state variables for each channel, now transfer the result + // back to the main state variable so they will be preserved for the next call of processBlock() + + delayWritePosition_ = dpw; + lfoPhase_ = ph; + + // In case we have more outputs than inputs, we'll clear any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + for (int i = numInputChannels; i < numOutputChannels; ++i) + { + buffer.clear (i, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool VibratoAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* VibratoAudioProcessor::createEditor() +{ + return new VibratoAudioProcessorEditor (this); +} + +//============================================================================== +void VibratoAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("sweepWidth", sweepWidth_); + xml.setAttribute("frequency", frequency_); + xml.setAttribute("waveform", waveform_); + xml.setAttribute("interpolation", interpolation_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void VibratoAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + sweepWidth_ = (float)xmlState->getDoubleAttribute("sweepWidth", sweepWidth_); + frequency_ = (float)xmlState->getDoubleAttribute("frequency", frequency_); + waveform_ = xmlState->getIntAttribute("waveform", waveform_); + interpolation_ = xmlState->getIntAttribute("interpolation", interpolation_); + } + } +} + +//============================================================================== +// Function for calculating LFO waveforms. Phase runs from 0-1, output is scaled +// from 0 to 1 (note: not -1 to 1 as would be typical of sine). +float VibratoAudioProcessor::lfo(float phase, int waveform) +{ + switch(waveform) + { + case kWaveformTriangle: + if(phase < 0.25f) + return 0.5f + 2.0f*phase; + else if(phase < 0.75f) + return 1.0f - 2.0f*(phase - 0.25f); + else + return 2.0f*(phase-0.75f); + case kWaveformSquare: + if(phase < 0.5f) + return 1.0f; + else + return 0.0f; + case kWaveformSawtooth: + if(phase < 0.5f) + return 0.5f + phase; + else + return phase - 0.5f; + case kWaveformInverseSawtooth: + if(phase < 0.5f) + return 0.5f - phase; + else + return 1.5f - phase; + case kWaveformSine: + default: + return 0.5f + 0.5f*sinf(2.0 * M_PI * phase); + } +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new VibratoAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/vibrato/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,148 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Vibrato: frequency modulation using delay lines + See textbook Chapter 2: Delay Line Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + + +//============================================================================== +/** +*/ +class VibratoAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + VibratoAudioProcessor(); + ~VibratoAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + void reset(); + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kSweepWidthParam, + kFrequencyParam, + kWaveformParam, + kInterpolationParam, + kNumParameters + }; + + enum Waveforms + { + kWaveformSine = 1, + kWaveformTriangle, + kWaveformSquare, + kWaveformSawtooth, + kWaveformInverseSawtooth, + kNumWaveforms + }; + + enum Interpolation + { + kInterpolationNearestNeighbour = 1, + kInterpolationLinear, + kInterpolationCubic, + kNumInterpolations + }; + + static const float kMaximumSweepWidth; + + // Adjustable parameters: + float sweepWidth_; // Amount of change from min to max delay + float frequency_; // LFO frequency (Hz) + int waveform_; // What shape should be used for the LFO + int interpolation_; // What type of interpolation to use + +private: + float lfo(float phase, int waveform); + + // Circular buffer variables for implementing delay + AudioSampleBuffer delayBuffer_; + int delayBufferLength_; + int delayWritePosition_; + + float lfoPhase_; // Phase of the low-frequency oscillator + double inverseSampleRate_; // It's more efficient to multiply than divide, so + // cache the inverse of the sample rate + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VibratoAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/vibrato/vibrato.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="v6Hele" name="vibrato" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.vibratoeffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Vibrato" pluginDesc="Vibrato effect" + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="vibr" pluginChannelConfigs="{2, 2}, {1, 1}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="vibratoAU" + pluginAUViewClass="vibratoAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.vibrato" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="jTd9NF" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="vibrato" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="vibrato" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="ALF6VO" name="vibrato"> + <GROUP id="{513EA84C-3809-DD4E-47BB-057919321B7F}" name="Source"> + <FILE id="t9Lt5C" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="OMF0sI" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="Z6tpEX" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="DXVIYX" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/wahwah/Source/PluginEditor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,121 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Wah-Wah: filter effect using variable-frequency filter + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" +#include <cstring> + +//============================================================================== +WahwahAudioProcessorEditor::WahwahAudioProcessorEditor (WahwahAudioProcessor* ownerFilter) + : AudioProcessorEditor (ownerFilter), + centreFrequencyLabel_("", "Centre frequency (Hz):"), + qLabel_("", "Q:") +{ + // Set up the sliders + + addAndMakeVisible(¢reFrequencySlider_); + centreFrequencySlider_.setSliderStyle(Slider::Rotary); + centreFrequencySlider_.addListener(this); + centreFrequencySlider_.setRange(400.0, 2000.0, 0.1); + + addAndMakeVisible(&qSlider_); + qSlider_.setSliderStyle(Slider::Rotary); + qSlider_.addListener(this); + qSlider_.setRange(2.0, 20.0, 0.1); + + // Make the centre frequency slider (approximately) logarithmic for a + // more natural feel + centreFrequencySlider_.setSkewFactorFromMidPoint(sqrt(400.0 * 2000.0)); + + centreFrequencyLabel_.attachToComponent(¢reFrequencySlider_, false); + centreFrequencyLabel_.setFont(Font (11.0f)); + + qLabel_.attachToComponent(&qSlider_, false); + qLabel_.setFont(Font (11.0f)); + + // add the triangular resizer component for the bottom-right of the UI + addAndMakeVisible(resizer_ = new ResizableCornerComponent (this, &resizeLimits_)); + resizeLimits_.setSizeLimits(370, 100, 550, 160); + + // set our component's initial size to be the last one that was stored in the filter's settings + setSize(ownerFilter->lastUIWidth_, + ownerFilter->lastUIHeight_); + + startTimer(50); +} + +WahwahAudioProcessorEditor::~WahwahAudioProcessorEditor() +{ +} + +//============================================================================== +void WahwahAudioProcessorEditor::paint (Graphics& g) +{ + g.fillAll (Colours::grey); +} + +void WahwahAudioProcessorEditor::resized() +{ + centreFrequencySlider_.setBounds(20, 20, 150, 40); + qSlider_.setBounds(200, 20, 150, 40); + + resizer_->setBounds(getWidth() - 16, getHeight() - 16, 16, 16); + + getProcessor()->lastUIWidth_ = getWidth(); + getProcessor()->lastUIHeight_ = getHeight(); +} + +//============================================================================== +// This timer periodically checks whether any of the filter's parameters have changed... +void WahwahAudioProcessorEditor::timerCallback() +{ + WahwahAudioProcessor* ourProcessor = getProcessor(); + + centreFrequencySlider_.setValue(ourProcessor->centreFrequency_, dontSendNotification); + qSlider_.setValue(ourProcessor->q_, dontSendNotification); +} + +// This is our Slider::Listener callback, when the user drags a slider. +void WahwahAudioProcessorEditor::sliderValueChanged (Slider* slider) +{ + // It's vital to use setParameterNotifyingHost to change any parameters that are automatable + // by the host, rather than just modifying them directly, otherwise the host won't know + // that they've changed. + + if (slider == ¢reFrequencySlider_) + { + getProcessor()->setParameterNotifyingHost (WahwahAudioProcessor::kCentreFrequencyParam, + (float)centreFrequencySlider_.getValue()); + } + else if (slider == &qSlider_) + { + getProcessor()->setParameterNotifyingHost (WahwahAudioProcessor::kQParam, + (float)qSlider_.getValue()); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/wahwah/Source/PluginEditor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,68 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Wah-Wah: filter effect using variable-frequency filter + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINEDITOR_H_6E48F605__ +#define __PLUGINEDITOR_H_6E48F605__ + +#include "../JuceLibraryCode/JuceHeader.h" +#include "PluginProcessor.h" + + +//============================================================================== + +class WahwahAudioProcessorEditor : public AudioProcessorEditor, + public SliderListener, + public Timer +{ +public: + WahwahAudioProcessorEditor (WahwahAudioProcessor* ownerFilter); + ~WahwahAudioProcessorEditor(); + + //============================================================================== + // This is just a standard Juce paint method... + void timerCallback(); + void paint (Graphics& g); + void resized(); + void sliderValueChanged (Slider*); + +private: + Label centreFrequencyLabel_, qLabel_; + Slider centreFrequencySlider_, qSlider_; + + ScopedPointer<ResizableCornerComponent> resizer_; + ComponentBoundsConstrainer resizeLimits_; + + WahwahAudioProcessor* getProcessor() const + { + return static_cast <WahwahAudioProcessor*> (getAudioProcessor()); + } +}; + + +#endif // __PLUGINEDITOR_H_6E48F605__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/wahwah/Source/PluginProcessor.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,328 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Wah-Wah: filter effect using variable-frequency filter + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +// The filter will produce a resonant peak of amplitude Q; bring everything +// down somewhat to compensate, though try to maintain some perceptual balance +// of being similar loudness. (This factor has been chosen somewhat arbitrarily.) +const double kWahwahFilterGain = 0.5; + +//============================================================================== +WahwahAudioProcessor::WahwahAudioProcessor() +{ + // Set default values: + centreFrequency_ = 400.0; + q_ = 5.0; + + // Initialise the filters later when we know how many channels + wahFilters_ = 0; + numWahFilters_ = 0; + + inverseSampleRate_ = 1.0/44100.0; // start with a sensible default + + lastUIWidth_ = 370; + lastUIHeight_ = 100; +} + +WahwahAudioProcessor::~WahwahAudioProcessor() +{ +} + +//============================================================================== +const String WahwahAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +int WahwahAudioProcessor::getNumParameters() +{ + return kNumParameters; +} + +float WahwahAudioProcessor::getParameter (int index) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kCentreFrequencyParam: return centreFrequency_; + case kQParam: return q_; + default: return 0.0f; + } +} + +void WahwahAudioProcessor::setParameter (int index, float newValue) +{ + // This method will be called by the host, probably on the audio thread, so + // it's absolutely time-critical. Don't use critical sections or anything + // UI-related, or anything at all that may block in any way! + switch (index) + { + case kCentreFrequencyParam: + centreFrequency_ = newValue; + updateFilter(); + break; + case kQParam: + q_ = newValue; + updateFilter(); + break; + default: + break; + } +} + +const String WahwahAudioProcessor::getParameterName (int index) +{ + switch (index) + { + case kCentreFrequencyParam: return "centre frequency"; + case kQParam: return "Q"; + default: break; + } + + return String::empty; +} + +const String WahwahAudioProcessor::getParameterText (int index) +{ + return String (getParameter (index), 2); +} + +const String WahwahAudioProcessor::getInputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +const String WahwahAudioProcessor::getOutputChannelName (int channelIndex) const +{ + return String (channelIndex + 1); +} + +bool WahwahAudioProcessor::isInputChannelStereoPair (int index) const +{ + return true; +} + +bool WahwahAudioProcessor::isOutputChannelStereoPair (int index) const +{ + return true; +} + +bool WahwahAudioProcessor::silenceInProducesSilenceOut() const +{ +#if JucePlugin_SilenceInProducesSilenceOut + return true; +#else + return false; +#endif +} + +double WahwahAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +bool WahwahAudioProcessor::acceptsMidi() const +{ +#if JucePlugin_WantsMidiInput + return true; +#else + return false; +#endif +} + +bool WahwahAudioProcessor::producesMidi() const +{ +#if JucePlugin_ProducesMidiOutput + return true; +#else + return false; +#endif +} + +int WahwahAudioProcessor::getNumPrograms() +{ + return 0; +} + +int WahwahAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void WahwahAudioProcessor::setCurrentProgram (int index) +{ +} + +const String WahwahAudioProcessor::getProgramName (int index) +{ + return String::empty; +} + +void WahwahAudioProcessor::changeProgramName (int index, const String& newName) +{ +} + +//============================================================================== +void WahwahAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. + + // Create as many filters as we have input channels + numWahFilters_ = getNumInputChannels(); + wahFilters_ = (ResonantLowpassFilter**)malloc(numWahFilters_ * sizeof(ResonantLowpassFilter*)); + if(wahFilters_ == 0) + numWahFilters_ = 0; + else { + for(int i = 0; i < numWahFilters_; i++) + wahFilters_[i] = new ResonantLowpassFilter; + } + + inverseSampleRate_ = 1.0 / sampleRate; + + // Update the filter settings to work with the current parameters and sample rate + updateFilter(); +} + +void WahwahAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. + for(int i = 0; i < numWahFilters_; i++) + delete wahFilters_[i]; + if(numWahFilters_ != 0) + free(wahFilters_); + numWahFilters_ = 0; + wahFilters_ = 0; +} + +void WahwahAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) +{ + // Helpful information about this block of samples: + const int numInputChannels = getNumInputChannels(); // How many input channels for our effect? + const int numOutputChannels = getNumOutputChannels(); // How many output channels for our effect? + const int numSamples = buffer.getNumSamples(); // How many samples in the buffer for this block? + int channel; + + // Go through each channel of audio that's passed in + + for (channel = 0; channel < jmin(numInputChannels, numWahFilters_); ++channel) + { + // channelData is an array of length numSamples which contains the audio for one channel + float* channelData = buffer.getSampleData(channel); + + // Run the samples through the IIR filter whose coefficients define the parametric + // equaliser. See juce_IIRFilter.cpp for the implementation. + wahFilters_[channel]->processSamples(channelData, numSamples); + } + + // Go through the remaining channels. In case we have more outputs + // than inputs, or there aren't enough filters, we'll clear any + // remaining output channels (which could otherwise contain garbage) + while(channel < numOutputChannels) + { + buffer.clear (channel++, 0, buffer.getNumSamples()); + } +} + +//============================================================================== +bool WahwahAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +AudioProcessorEditor* WahwahAudioProcessor::createEditor() +{ + return new WahwahAudioProcessorEditor (this); +} + +//============================================================================== +void WahwahAudioProcessor::getStateInformation (MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. + + // Create an outer XML element.. + XmlElement xml("C4DMPLUGINSETTINGS"); + + // add some attributes to it.. + xml.setAttribute("uiWidth", lastUIWidth_); + xml.setAttribute("uiHeight", lastUIHeight_); + xml.setAttribute("centreFrequency", centreFrequency_); + xml.setAttribute("q", q_); + + // then use this helper function to stuff it into the binary blob and return it.. + copyXmlToBinary(xml, destData); +} + +void WahwahAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. + + // This getXmlFromBinary() helper function retrieves our XML from the binary blob.. + ScopedPointer<XmlElement> xmlState (getXmlFromBinary (data, sizeInBytes)); + + if(xmlState != 0) + { + // make sure that it's actually our type of XML object.. + if(xmlState->hasTagName("C4DMPLUGINSETTINGS")) + { + // ok, now pull out our parameters.. + lastUIWidth_ = xmlState->getIntAttribute("uiWidth", lastUIWidth_); + lastUIHeight_ = xmlState->getIntAttribute("uiHeight", lastUIHeight_); + + q_ = (float)xmlState->getDoubleAttribute("q", q_); + centreFrequency_ = (float)xmlState->getDoubleAttribute("centreFrequency", centreFrequency_); + inverseSampleRate_ = 1.0 / getSampleRate(); + updateFilter(); + } + } +} + +//============================================================================== +// Update the coefficients of the resonant lowpass filter +void WahwahAudioProcessor::updateFilter() +{ + for(int i = 0; i < numWahFilters_; i++) + wahFilters_[i]->makeResonantLowpass(inverseSampleRate_, centreFrequency_, q_, + kWahwahFilterGain); +} + +//============================================================================== +// This creates new instances of the plugin.. +AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new WahwahAudioProcessor(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/wahwah/Source/PluginProcessor.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,115 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Wah-Wah: filter effect using variable-frequency filter + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef __PLUGINPROCESSOR_H_4693CB6E__ +#define __PLUGINPROCESSOR_H_4693CB6E__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" +#include "ResonantLowpassFilter.h" + +//============================================================================== +/** +*/ +class WahwahAudioProcessor : public AudioProcessor +{ +public: + //============================================================================== + WahwahAudioProcessor(); + ~WahwahAudioProcessor(); + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock); + void releaseResources(); + + void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages); + + //============================================================================== + AudioProcessorEditor* createEditor(); + bool hasEditor() const; + + //============================================================================== + const String getName() const; + + int getNumParameters(); + + float getParameter (int index); + void setParameter (int index, float newValue); + + const String getParameterName (int index); + const String getParameterText (int index); + + const String getInputChannelName (int channelIndex) const; + const String getOutputChannelName (int channelIndex) const; + bool isInputChannelStereoPair (int index) const; + bool isOutputChannelStereoPair (int index) const; + + bool silenceInProducesSilenceOut() const; + double getTailLengthSeconds() const; + bool acceptsMidi() const; + bool producesMidi() const; + + //============================================================================== + int getNumPrograms(); + int getCurrentProgram(); + void setCurrentProgram (int index); + const String getProgramName (int index); + void changeProgramName (int index, const String& newName); + + //============================================================================== + void getStateInformation (MemoryBlock& destData); + void setStateInformation (const void* data, int sizeInBytes); + + //============================================================================== + + // these are used to persist the UI's size - the values are stored along with the + // filter's other parameters, and the UI component will update them when it gets + // resized. + int lastUIWidth_, lastUIHeight_; + + enum Parameters + { + kCentreFrequencyParam = 0, /* Centre frequency in Hz */ + kQParam, /* Q of the resonant filter */ + kNumParameters + }; + + float centreFrequency_, q_; +private: + void updateFilter(); + + ResonantLowpassFilter **wahFilters_; + int numWahFilters_; + double inverseSampleRate_; // Save the inverse of the sample rate for faster calculation + + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WahwahAudioProcessor); +}; + +#endif // __PLUGINPROCESSOR_H_4693CB6E__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/wahwah/Source/ResonantLowpassFilter.cpp Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,71 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Wah-Wah: filter effect using variable-frequency filter + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include "ResonantLowpassFilter.h" + +/* The actual audio processing is handled by the Juce IIRFilter parent + * class. This subclass is used to define the coefficients for our + * implementation of a parametric equaliser. + */ + +void ResonantLowpassFilter::makeResonantLowpass(const double inverseSampleRate, + const double centreFrequency, + const double Q, + const double gain) noexcept +{ + jassert (Q > 0); + + // Use inverse sample rate since multiplication is more efficient than + // division, and the sample rate is unlikely to change each call. + const double discreteFrequency = 2.0 * M_PI * centreFrequency * inverseSampleRate; + const double alpha = sin(discreteFrequency) / (2.0 * Q); + const double cos_w0 = cos(discreteFrequency); + + /* setCoefficients() takes arguments: b0, b1, b2, a0, a1, a2 + * It will normalise the filter according to the value of a0 + * to allow standard time-domain implementations + */ + + coefficients = IIRCoefficients(0.5*(1.0 - cos_w0)*gain, /* b0 */ + (1.0 - cos_w0)*gain, /* b1 */ + 0.5*(1.0 - cos_w0)*gain, /* b2 */ + 1.0 + alpha, /* a0 */ + -2.0 * cos_w0, /* a1 */ + 1.0 - alpha /* a2 */); + + setCoefficients(coefficients); +} + +/* Copy coefficients from another object of the same class */ + +void ResonantLowpassFilter::copyCoefficientsFrom (const ResonantLowpassFilter& other) noexcept +{ + setCoefficients(other.coefficients); + active = other.active; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/wahwah/Source/ResonantLowpassFilter.h Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,66 @@ +/* + This code accompanies the textbook: + + Digital Audio Effects: Theory, Implementation and Application + Joshua D. Reiss and Andrew P. McPherson + + --- + + Wah-Wah: filter effect using variable-frequency filter + See textbook Chapter 4: Filter Effects + + Code by Andrew McPherson, Brecht De Man and Joshua Reiss + + --- + + 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 <http://www.gnu.org/licenses/>. +*/ + + +#ifndef __ResonantLowpassFilter_H_6E48F605__ +#define __ResonantLowpassFilter_H_6E48F605__ + +#define _USE_MATH_DEFINES +#include "../JuceLibraryCode/JuceHeader.h" + +//============================================================================== +/** + * This class implements a resonant lowpass filter used in the wah-wah + * effect and its variants + */ + +class ResonantLowpassFilter : public IIRFilter +{ +public: + //============================================================================== + + /* Sets the filter coefficients to produce a resonant lowpass with a given + * centre frequency and Q. Also include a gain term to offset resonant peak. + */ + void makeResonantLowpass(const double inverseSampleRate, + const double centreFrequency, + const double Q, + const double gain) noexcept; + + /** Makes this filter duplicate the set-up of another one. + */ + void copyCoefficientsFrom (const ResonantLowpassFilter& other) noexcept; + +private: + //============================================================================== + JUCE_LEAK_DETECTOR (ResonantLowpassFilter); +}; + + +#endif // __ResonantLowpassFilter_H_6E48F605__ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effects/wahwah/wahwah.jucer Fri Oct 10 15:41:23 2014 +0100 @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<JUCERPROJECT id="i4Zn9f" name="wahwah" projectType="audioplug" version="1.0.0" + bundleIdentifier="uk.ac.qmul.eecs.wahwaheffect" buildVST="1" + buildRTAS="0" buildAU="1" pluginName="Wah-Wah" pluginDesc="Wah guitar pedal effect " + pluginManufacturer="Reiss and McPherson" pluginManufacturerCode="JRAM" + pluginCode="wawa" pluginChannelConfigs="{1, 1}, {2, 2}" pluginIsSynth="0" + pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="1" + pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="wahwahAU" + pluginAUViewClass="wahwahAU_V1" pluginRTASCategory="" jucerVersion="3.1.0" + companyName="Reiss and McPherson" buildVST3="0" buildAAX="0" + aaxIdentifier="com.yourcompany.wahwah" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" + includeBinaryInAppConfig="1"> + <EXPORTFORMATS> + <XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="b0WmNJ" vstFolder="../../vstsdk2.4"> + <CONFIGURATIONS> + <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="wahwah" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + <CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="wahwah" + osxSDK="default" osxCompatibility="default" osxArchitecture="64BitUniversal"/> + </CONFIGURATIONS> + <MODULEPATHS> + <MODULEPATH id="juce_opengl" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_extra" path="../../juce/modules"/> + <MODULEPATH id="juce_gui_basics" path="../../juce/modules"/> + <MODULEPATH id="juce_graphics" path="../../juce/modules"/> + <MODULEPATH id="juce_events" path="../../juce/modules"/> + <MODULEPATH id="juce_data_structures" path="../../juce/modules"/> + <MODULEPATH id="juce_core" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_utils" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_processors" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_plugin_client" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_formats" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_devices" path="../../juce/modules"/> + <MODULEPATH id="juce_audio_basics" path="../../juce/modules"/> + </MODULEPATHS> + </XCODE_MAC> + </EXPORTFORMATS> + <MAINGROUP id="hBlDAz" name="wahwah"> + <GROUP id="{29C739A1-6D78-C493-BA18-73906A32A47F}" name="Source"> + <FILE id="R1huWV" name="ResonantLowpassFilter.cpp" compile="1" resource="0" + file="Source/ResonantLowpassFilter.cpp"/> + <FILE id="XAvPSX" name="ResonantLowpassFilter.h" compile="0" resource="0" + file="Source/ResonantLowpassFilter.h"/> + <FILE id="Youmve" name="PluginProcessor.cpp" compile="1" resource="0" + file="Source/PluginProcessor.cpp"/> + <FILE id="z6plO3" name="PluginProcessor.h" compile="0" resource="0" + file="Source/PluginProcessor.h"/> + <FILE id="DFYBNF" name="PluginEditor.cpp" compile="1" resource="0" + file="Source/PluginEditor.cpp"/> + <FILE id="TUym3B" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/> + </GROUP> + </MAINGROUP> + <MODULES> + <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> + <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> + </MODULES> + <JUCEOPTIONS JUCE_QUICKTIME="disabled"/> +</JUCERPROJECT>