pax_global_header00006660000000000000000000000064152016422250014511gustar00rootroot0000000000000052 comment=27439e9d339a05841cab9e661a1bbb8ca6ff1b02 hyphen-2.8.9/000077500000000000000000000000001520164222500130245ustar00rootroot00000000000000hyphen-2.8.9/.cvsignore000066400000000000000000000002561520164222500150270ustar00rootroot00000000000000Makefile autom4te.cache config.log config.status libtool stamp-h1 .deps .libs example hyphen.us hyphen.us2 hyphen.us3 hyphen.us4 substrings *.lo libhyphen.la hyphen-*.tar.gz hyphen-2.8.9/.gitignore000066400000000000000000000007411520164222500150160ustar00rootroot00000000000000/.deps/ /.libs/ /INSTALL /Makefile /Makefile.in /aclocal.m4 /autom4te.cache/ /compile /config.guess /config.log /config.status /config.sub /configure /depcomp /doc/Makefile /doc/Makefile.in /example /example.o /hnjalloc.lo /hnjalloc.o /hyph_en_US.dic /hyphen.lo /hyphen.o /hyphen.us /hyphen.us2 /hyphen.us3 /install-sh /libhyphen.la /libtool /ltmain.sh /missing /substrings /substrings.o /test-driver /tests/*.log /tests/*.trs /tests/Makefile /tests/Makefile.in /tests/testSubDir/ hyphen-2.8.9/.travis.yml000066400000000000000000000004541520164222500151400ustar00rootroot00000000000000language: c compiler: - clang - gcc sudo: false os: - linux - osx install: - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install gawk; fi script: - autoreconf --install --force --verbose && ./configure && make && make check hyphen-2.8.9/AUTHORS000066400000000000000000000013171520164222500140760ustar00rootroot00000000000000Libhnj was written by Raph Levien . Original Libhnj source with OOo's patches are managed by Rene Engelhard and Chris Halls at Debian: http://packages.debian.org/stable/libdevel/libhnj-dev and http://packages.debian.org/unstable/source/libhnj This subset of Libhnj was extended by Peter Novodvorsky (OOo integration), László Németh (non-standard and compound hyphenation with Unicode support), Nanning Buitenhuis (substrings.c) Write bug reports to László Németh or in the bug tracker of hunspell.sf.net. --- Please contact Raph Levien for information about licensing for proprietary applications. hyphen-2.8.9/COPYING000066400000000000000000000015721520164222500140640ustar00rootroot00000000000000GPL 2.0/LGPL 2.1/MPL 1.1 tri-license The contents of this software may be used under the terms of the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL", see COPYING.LGPL) or the Mozilla Public License Version 1.1 or later (the "MPL", see COPYING.MPL). The Plain TeX hyphenation tables "hyphen.tex" by Donald E. Knuth has a non MPL/LGPL compatible license, but freely redistributable: "Unlimited copying and redistribution of this file are permitted as long as this file is not modified. Modifications are permitted, but only if the resulting file is not named hyphen.tex." Software distributed under these licenses is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences for the specific language governing rights and limitations under the licenses. hyphen-2.8.9/COPYING.LGPL000066400000000000000000000636441520164222500146310ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. ^L Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. ^L GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. ^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. ^L 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. ^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. ^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. ^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ^L How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! hyphen-2.8.9/COPYING.MPL000066400000000000000000000622331520164222500145140ustar00rootroot00000000000000 MOZILLA PUBLIC LICENSE Version 1.1 --------------- 1. Definitions. 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5. "Executable" means Covered Code in any form other than Source Code. 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8. "License" means this document. 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4. Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1. New Versions. Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. EXHIBIT A -Mozilla Public License. ``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is ______________________________________. The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved. Contributor(s): ______________________________________. Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] hyphen-2.8.9/ChangeLog000066400000000000000000000253141520164222500146030ustar00rootroot000000000000002014-09-18 Caolán McNamara : * coverity#58283 now 0 coverity warnings 2014-06-30 Rene Engelhard : * add missing stdio.h to hyphen.h, reported by David Suárez in deb#753218. 2014-06-26 Caolán McNamara : * clang scan-build warnings 2013-03-18 László Németh : * Makefile.am, Makefile.in: set -version-info 2013-03-12 Paweł Hajdan : * hyphen.h, hyphen.c: add hnj_hyphen_load_file() for sandboxing 2012-09-13 László Németh : * hyphen.c: fdo#43931: removing hard hyphen hyphenation for LibreOffice * tests/rhmin.*: add Telugu test example for rhmin fix 2012-09-11 Steven Dickson : * hyphen.c: fdo#54843: rhmin fix for words with 3-byte or more UTF-8 multibyte characters 2012-07-18 Caolán McNamara : * coverity warnings 2011-10-10 László Németh : * hyphen.c: - fix NOHYPHEN (hyphenation vector modified by 0 instead of '0') - fix non-balanced hyphenation of LibreOffice/OOo 3.3 by 1-1/=,1,1 alternative pattern (removing hyphen) - set default COMPOUNDHYPHENMIN=3 at hyphen and apostrophes - fix VERBOSE to support multilevel patterns * example.c: new option: -n to print hyphenation vector 2011-10-07 László Németh : * hyphen.c: use explicite compoundhyphenmin values of the dictionary also for the implicite NOHYPHEN hyphenation 2011-10-06 László Németh : * hyphen.c: force minimal lefthyphenmin and righthyphenmin values of the dictionary 2011-10-04 László Németh : * hyphen.c: ignore leading and ending numbers (eg. fix hyphenation of words with manual or field-based indexes in LibreOffice/OpenOffice.org) * tests/num.*: new test files * hyphen.c: default NOHYPHEN separators: hyphen and ASCII apostrophe + (only in UTF-8 encoding) endash (U+2013) and typographical apostrophe (U+2019): fix hyphenation of words with hyphens, n-dashes or apostrophes in LibreOffice/OOo. * README.compound: description * hyph_en_US.dic: remove explicite NOHYPHEN declaration 2010-12-01 László Németh : * hyphen.c: NOHYPHEN fix for a special case (NOHYPHEN character in starting position, eg. "-example") 2010-11-27 László Németh : * hyphen.c: add NOHYPHEN feature to handle special hyphenation at hyphens and apostrophes, see README.compound * tests/{rhmin, hyphen}: new test files * ooopatch.sed. hyph_en_US.dic: replace and improve old hack with NOHYPHEN 2010-07-18 Caolán McNamara : * remove csutil.* as more trouble that its worth for just the testsuite 2010-07-17 Caolán McNamara : * strip down csutil.* to the bits that are used * use libtool dlopen invocation to ensure we test in-tree libhyphen during tests 2010-03-04 Caolán McNamara : * hun#1724558 tidy substring.c a little * hun#1999737 add some malloc checks * hun#2005643 tidy string functions 2010-02-23 László Németh : * hyphen.c: fix lefthyphenmin calculation for UTF-8 encoded input * hyphen.c: add Unicode ligature support for hyphenmin calculation (see also LONG_LIGATURE macro in hyphen.c for conditional compiling) * csutil.c: static struct for encds[] (from OpenOffice.org patch), (unsigned char)s, wordmin + 5 limit (see hyphen-2.4.patch of OOo) * Makefile.am, ooopatch.awk: add OpenOffice.org patch to the en_US hyphenation dictionary to fix apostrophe handling, see lhmin.test * Makefile.am, lig.awk: add Unicode ligature support to en_US hyphenation dictionary. NOTE: hyphenation within ligatures is not supported yet because of an implementation problem of OpenOffice.org: see OOo issue 71608. * tests: new tests: lig.* for ligature hyphenation, lhmin.* for lefthyphenmin calculation for UTF-8 encoded text with diacritics. 2008-05-01 László Németh : * hyphen.c, hyphen.h: compound word hyphenation support by recursive pattern matching based on two hyphenation pattern sets, see README.compound. Especially useful for languages with arbitrary number of compounds (Danish, Dutch, Finnish, German, Hungarian, Icelandic, Norwegian, Swedish etc.). - dictionary options for compound word hyphenation: COMPOUNDLEFTHYPHENMIN: minimal hyphenation distance from the left compound word boundary COMPOUNDRIGHTHYPHENMIN: minimal hyphenation distance from the right compound word boundary * README.compound: documentation * tests/compound.*: test data for compound word hyphenation and COMPOUNDLEFTHYPHENMIN and COMPOUNDRIGHTHYPHENMIN. * tests/test.sh: - add Valgrind debugger support, usage: make check VALGRIND=memcheck make check - fix false return when an error occurred - fix make distcheck target * tests/*.pat, test.sh: using static pattern files processed by substrings.pl instead of run-time processed patterns. * hyphen.c: add default hyphenmin support to the dictionaries: LEFTHYPHENMIN: minimal hyphenation distance from the left end of the word RIGHTHYPHENMIN: minimal hyphenation distance from the right end of the word. Problems with the LEFTHYPHENMIN and RIGHTHYPHENMIN and a possible solution reported by Joan Montané in SF.net Bug ID 1777894. * tests/settings*.*: test data of LEFTHYPHENMIN and RIGHTHYPHENMIN. First test (settings.*) is based on the test data of Joan Montané (SF.net Bug ID 1777894). * example.c: changed options: - old -d (non-standard hyph.) mode is the default now - -dd (listing possible hyphenations) -> -d - -o : old (without non-standard hyphenation support) mode * Makefile.am: - remove unused csutil from the shared library (-20 kB and solve a csutil conflict with Hunspell reported by Rene Engerhald in SF.net Bug 1939988). * substrings.pl : add lefthyphenmin and righthyphemin options: substrings.pl infile outfile [encoding [lefthyphenmin [righthyphenmin]]] * hyph_en_US.dic, Makefile.am: set right default values for American English, based on the original TeX settings and American English orthography: LEFTHYPHENMIN 2 RIGHTHYPHENMIN 3 * README_hyph_en_US.dic: add README for en_US hyphenation patterns * tbhyphext.tex: TugBoat hyphenation exception log with thousand word fixes, source: http://www.ctan.org/tex-archive/info/digests/tugboat/tb0hyf.tex, processed by the hyphenex.sh script (see in the same folder). * tbhyphext.sh: conversion script for tbhyphext.pat. 2008-02-19 László Németh : * hyphen.c: fix unconditional jump in the obsolete hnj_hyphen_hyphenate() (it was already fixed in the preferred hnj_hyphen_hyphenate2()). Possible fix for the problem reported by Rene Engelhard in SourceForge Bug ID 1896207. * Makefile.am: add missing $(srcdir)s for make dist * NEWS: add NEWS for autoreconf 2007-11-22 László Németh : * hyphen.c: fix a bad condition that introduced in the previous version. Problem reported by Joan Montané under SourceForge Bug ID 1772381. * Makefile.am: rename the library to "hyphen". * hyphen.tex: use the last official version and its time stamp. Source: http://tug.ctan.org/text-archive/macros/plain/base/hyphen.tex * tests/*: add make check support * doc/tb87nemeth.pdf: TugBoat article about non-standard hyphenation and its implementation. 2007-11-12 Caolan McNamara : * autoconf/automake/libtoolize it Which as a side effect makes it fit into the existing --with-system-altlinuxhyph configure support in OOo to use a system pre-installed library for OOo hyphenation. * make a shared library libhnj.so from it * install the hyphen.h header * hyphen.patch: document by a make target how to go from the original hyphen.tex file to the interim hyphen.us to the final hyph_en_US.dic that OOo uses. (For example, converting \hyphenate section of hyphen.tex.) 2007-05-14 László Németh : * README: add information about substring.pl conversion and HyFo Java hyphenation module. * README.hyphen: add the following references about hyphenation: Franklin M. Liang: Word Hy-phen-a-tion by Com-put-er. Stanford University, 1983. http://www.tug.org/docs/liang. László Németh: Automatic non-standard hyphenation in OpenOffice.org, TUGboat (27), 2006. No. 2., http://hunspell.sourceforge.net/tb87nemeth.pdf * README. nonstandard: add information about narrow subpatterns, and a problem reported by Peter B. West. 2006-11-27 László Németh : * substrings.pl: restore previous version to fix rare non-standard hyphenation problems reported by Peter B. West, HyFo (Java XSLT formatter) developer 2006-08-03 László Németh : * hyphen.c: fix bad Unicode non-standard hyphenation (reset deleted break in UTF-8 length conversion code in hnj_hyphen_load()) * tests/unicode*, Makefile: test for this fix * hyphen.c: fix bad hyphen duplication in hyphword output in hnj_hyphenate2() * example.c: fix empty input fault in single_hyphenations() (unsigned return value of strlen() output couldn't be negative in the condition) * substrings.pl: shorter version with Nanning Buitenhuis's substrings.pl fix. 2006-07-28 Nanning Buitenhuis : * substrings.c: faster C version of substrings.pl - It also fixed a minor bug in combine(): if a sub-pattern is found twice (or more) in the main pattern, then all occurences were changed instead of (the correct) last occurence. Only example in hyphen.us is 'tanta3' 2006-01-27 László Németh : * *.{c,h}: add non-standard hyphenation and Unicode support * README.discretionary: documentation - add tests/ (see make check) 2005-10-13 Daniel Naber : * example.c: fixed the call to hnj_hyphen_hyphenate() in example.c so that patterns ending in a dot should now work (Daniel Naber) Libhnj was written by Raph Levien Adapted to OpenOffice.org by Peter Novodvorsky hyphen-2.8.9/Makefile.am000066400000000000000000000025551520164222500150670ustar00rootroot00000000000000SUBDIRS= doc tests lib_LTLIBRARIES = libhyphen.la libhyphen_la_SOURCES = hnjalloc.c hyphen.c # libtool version-info: current:revision:age # - source changed, no API change: r += 1 # - public API added: c += 1; r = 0; a += 1 # - public API removed or signature change: c += 1; r = 0; a = 0 # Linux SONAME suffix is (current - age). libhyphen_la_LDFLAGS = -version-info 4:0:4 -no-undefined include_HEADERS = hyphen.h noinst_HEADERS = hnjalloc.h noinst_PROGRAMS = substrings example substrings_SOURCES = substrings.c example_SOURCES = example.c example_LDADD = libhyphen.la bin_SCRIPTS = substrings.pl hyphdir = $(datadir)/hyphen # use it if you can recreate hyph_en_US.dic from hyph_DATA = hyph_en_US.dic EXTRA_DIST = checkme.lst hyphen.tex tbhyphext.tex tbhyphext.sh \ README.compound README.hyphen README.nonstandard substrings.pl hyphen.patch \ COPYING.MPL COPYING.LGPL hyph_en_US.dic README_hyph_en_US.txt lig.awk \ ligpatch.txt hyphen.us3: cp -f $(srcdir)/hyphen.tex hyphen.us patch < $(srcdir)/hyphen.patch $(srcdir)/tbhyphext.sh <$(srcdir)/tbhyphext.tex >hyphen.us2 cat hyphen.us hyphen.us2 | $(AWK) -f $(srcdir)/lig.awk >hyphen.us3 cat $(srcdir)/ligpatch.txt >>hyphen.us3 hyph_en_US.dic: hyphen.us3 perl $(srcdir)/substrings.pl hyphen.us3 hyph_en_US.dic UTF-8 2 3 >/dev/null clean-local: rm -rf hyphen.us* hyph_en_US.dic hyphen-2.8.9/NEWS000066400000000000000000000114661520164222500135330ustar00rootroot000000000000002026-05-15 Hyphen 2.8.9: - new public API: hnj_hyphen_load_data, loads a dictionary from a raw memory buffer (Resolves #4, contributed by Roman "SBKarr" Katuntsev). Useful for Android, embedded systems, and any caller holding dict bytes in memory. - Windows long-path support via _wfopen (fdo#48017, originally from LibreOffice) - many memory-safety fixes for malformed dictionaries and adversarial word input, found via libFuzzer + ASan + LSan: crashes in the rep-application loop, lhmin/rhmin loops, hyphword/norm compaction; infinite-recursion guards in the compound hyphenation path; leak fixes in the dict parser and in every site that writes into the (*rep)/(*pos)/(*cut) arrays - fuzz harness (fuzz/) shipping with the source 2014-09-18 Hyphen 2.8.8: - remove last coverity warning, 0 remaining 2014-06-27 Hyphen 2.8.7: - various clang scan-build warning fixes 2012-09-13 Hyphen 2.8.6: - righthyphenmin fix for 3-byte or more UTF-8 multibyte characters by Steven Dickson - fix for fdo#43931 (removing hard hyphen hyphenation for LibreOffice) 2012-07-12 Hyphen 2.8.5: - fix short alloc 2012-06-29 Hyphen 2.8.4: - coverity warnings 2011-10-10 Hyphen 2.8.3: - fix NOHYPHEN - fix unbalanced hyphenation of LibreOffice/OOo - set default COMPOUNDHYPHENMIN=3 at hyphens and apostrophes - fix VERBOSE in hyphen.c - new ./example option: -n to print hyphenation vector 2011-10-07 Hyphen 2.8.2: - fix for explicite COMPOUNDHYPHENMIN values 2011-10-06 Hyphen 2.8.1: - force minimal lefthyphenmin and righthyphenmin values of the dictionary (eg. righthyphenmin=3 of English dictionaries in LibreOffice/OOo, also the original TeX hyphenation patterns are correct only with this righthyphenmin value). 2011-10-04 Hyphen 2.8: - Ignore leading and ending numbers (eg. manual/field based indexes in LibreOffice/OOo) - Fix LibreOffice/OpenOffice.org hyphenation errors at apostrophes and hyphens, n-dashes with default NOHYPHEN separators. Eg. *o'c=lock -> o'clock. 2010-12-01 Hyphen 2.7.1 bug fix release 2010-11-27 Hyphen 2.7 release: - The new hyphenation problem of OpenOffice.org 3.2, related to its modified word breaking of words with hyphen characters, can be fixed with the new NOHYPHEN feature. Also it's possible to solve the similar old problem with apostrophes. More information: README.compound. - improved English dictionaries 2010-08-10 Hyphen 2.6 release: - maintainance release, fix all warnings, tidy up make check with VALGRIND=memcheck, etc. 2010-02-23 Hyphen 2.5 release: - add Unicode ligature support for correct hyphenmin calculation (ff, fi, fl, St, st are 1-character, ffi and ffl are 2-character length for hyphenation) - fix lefthyphenmin calculation for UTF-8 encoded input - en_US hyphenation dictionary: - add OpenOffice.org patch to fix apostrophe handling - add correct hyphenation for words with Unicode f-ligatures (NOTE: hyphenation within ligatures is not supported yet because of an implementation problem of OpenOffice.org, see OOo issue 71608.) - small patches from OpenOffice.org 2008-05-01 Hyphen 2.4 release: - compound word hyphenation support by recursive pattern matching based on two hyphenation pattern sets, see README.compound. Especially useful for languages with arbitrary number of compounds (Danish, Dutch, Finnish, German, Hungarian, Icelandic, Norwegian, Swedish etc.). - new dictionary parameters (minimal character numbers for hyph. distances): LEFTHYPHENMIN: minimal hyphenation distance from the left end of the word RIGHTHYPHENMIN: minimal hyphenation distance from the right end of the word COMPOUNDLEFTHYPHENMIN: min. hyph. dist. from the left compound word boundary COMPOUNDRIGHTHYPHENMIN: min. hyph. dist. from the right comp. word boundary - new API function: hnj_hyphen_hyphenate3() (like hyphenate2(), but with hyphenmin options) en_US hyphenation patterns: - extended hyph_en_US.dic with TugBoat hyphenation log (fix thousand incompletely or badly hyphenated words, for example acad-e-my, acro-nym, acryl-amide, adren-a-line, aero-space, am-phet-a-mine, anom-aly etc.) - fixed hyph_en_US.dic: set the right default hyphenation distance of the original TeX hyphenation patterns: LEFTHYPHENMIN 2 RIGHTHYPHENMIN 3 (not 2!) It is not only a typographical issue. It seems, TeX hyphenation patterns are right only with these settings, for example, the bad "anoma-ly" is restricted in TeX only by the default \righthyphenmin=3 (but not restricted in OpenOffice.org, until now). - documentation (README_hyph_en_US.dic) - fixes for automake configuration, compiling and checking, see ChangeLog 2008-02-19: Hyphen 2.3.1 release: - fix obsolete API function hnj_hyphen_hyphenate() hyphen-2.8.9/README000066400000000000000000000100021520164222500136750ustar00rootroot00000000000000Hyphen - hyphenation library to use converted TeX hyphenation patterns (C) 1998 Raph Levien (C) 2001 ALTLinux, Moscow (C) 2006, 2007, 2008, 2010, 2011 László Németh This was part of libHnj library by Raph Levien. Peter Novodvorsky from ALTLinux cut hyphenation part from libHnj to use it in OpenOffice.org. Compound word and non-standard hyphenation support by László Németh. License is the original LibHnj license: LibHnj is dual licensed under LGPL and MPL (see also README.libhnj). Because LGPL allows GPL relicensing, COPYING contains now LGPL/GPL/MPL tri-license for explicit Mozilla source compatibility. Original Libhnj source with OOo's patches are managed by Rene Engelhard and Chris Halls at Debian: http://packages.debian.org/stable/libdevel/libhnj-dev and http://packages.debian.org/unstable/source/libhnj OTHER FILES This distribution is the source of the en_US hyphenation patterns "hyph_en_US.dic", too. See README_hyph_en_US.txt. Source files of hyph_en_US.dic in the distribution: hyphen.tex (en_US hyphenation patterns from plain TeX) Source: http://tug.ctan.org/text-archive/macros/plain/base/hyphen.tex tbhyphext.tex: hyphenation exception log from TugBoat archive Source of the hyphenation exception list: http://www.ctan.org/tex-archive/info/digests/tugboat/tb0hyf.tex Generated with the hyphenex script (http://www.ctan.org/tex-archive/info/digests/tugboat/hyphenex.sh) sh hyphenex.sh tbhyphext.tex INSTALLATION autoreconf -fvi ./configure make make install UNIT TESTS (WITH VALGRIND DEBUGGER) make check VALGRIND=memcheck make check USAGE ./example hyph_en_US.dic mywords.txt or (under Linux) echo example | ./example hyph_en_US.dic /dev/stdin NOTE: In the case of Unicode encoded input, convert your words to lowercase before hyphenation (under UTF-8 console environment): cat mywords.txt | awk '{print tolower($0)}' >mywordslow.txt BUILD DLL USING CROSS-COMPILATION ./configure --host i586-mingw32 --prefix=/tmp/hyphen-dll make make install DEVELOPMENT See README.hyphen for hyphenation algorithm, README.nonstandard and doc/tb87nemeth.pdf for non-standard hyphenation, README.compound for compound word hyphenation, and tests/*. Description of the dictionary format: First line contains the character encoding (ISO8859-x, UTF-8). Possible options in the following lines: LEFTHYPHENMIN num minimal hyphenation distance from the left word end RIGHTHYPHENMIN num minimal hyphation distance from the right word end COMPOUNDLEFTHYPHENMIN num min. hyph. dist. from the left compound word boundary COMPOUNDRIGHTHYPHENMIN num min. hyph. dist. from the right comp. word boundary hyphenation patterns see README.* files NEXTWORD separate the two compound sets (see README.compound) Default values: Without explicite declarations, hyphenmin fields of dict struct are zeroes, but in this case the lefthyphenmin and righthyphenmin will be the default 2 under the hyphenation (for backward compatibility). Comments Use percent sign at the beginning of the lines to add comments to your hpyhenation patterns (after the character encoding in the first line): % comment ***************************************************************************** * Warning! Correct working of Libhnj *needs* prepared hyphenation patterns. * For example, generating hyph_en_US.dic from "hyphen.us" TeX patterns: perl substrings.pl hyphen.us hyph_en_US.dic ISO8859-1 or with default LEFTHYPHENMIN and RIGHTHYPHENMIN values: perl substrings.pl hyphen.us hyph_en_US.dic ISO8859-1 2 3 perl substrings.pl hyphen.gb hyph_en_GB.dic ISO8859-1 3 3 **************************************************************************** OTHERS Java hyphenation: Peter B. West (Folio project) implements a hyphenator with non standard hyphenation facilities based on extended Libhnj. The HyFo module is released in binary form as jar files and in source form as zip files. See http://sourceforge.net/project/showfiles.php?group_id=119136 László Németh hyphen-2.8.9/README.compound000066400000000000000000000056261520164222500155400ustar00rootroot00000000000000New option of Libhyphen 2.7: NOHYPHEN Hyphen, apostrophe and other characters may be word boundary characters, but they don't need (extra) hyphenation. With NOHYPHEN option it's possible to hyphenate the words parts correctly. Example: ISO8859-1 NOHYPHEN -,' 1-1 1'1 NEXTLEVEL Description: 1-1 and 1'1 declare hyphen and apostrophe as word boundary characters and NOHYPHEN with the comma separated character (or character sequence) list forbid the (extra) hyphens at the hyphen and apostrophe characters. Implicite NOHYPHEN declaration Without explicite NEXTLEVEL declaration, Hyphen 2.8 uses the previous settings, plus in UTF-8 encoding, endash (U+2013) and typographical apostrophe (U+2019) are NOHYPHEN characters, too. It's possible to enlarge the hyphenation distance from these NOHYPHEN characters by using COMPOUNDLEFTHYPHENMIN and COMPOUNDRIGHTHYPHENMIN attributes. Compound word hyphenation Hyphen library supports better compound word hyphenation and special rules of compound word hyphenation of German languages and other languages with arbitrary number of compound words. The new options, COMPOUNDLEFTHYPHENMIN and COMPOUNDRIGHTHYPHENMIN help to set the right style for the hyphenation of compound words. Algorithm The algorithm is an extension of the original pattern based hyphenation algorithm. It uses two hyphenation pattern sets, defined in the same pattern file and separated by the NEXTLEVEL keyword. First pattern set is for hyphenation only at compound word boundaries, the second one is for hyphenation within words or word parts. Recursive compound level hyphenation The algorithm is recursive: every word parts of a successful first (compound) level hyphenation will be rehyphenated by the same (first) pattern set. Finally, when first level hyphenation is not possible, Hyphen uses the second level hyphenation for the word or the word parts. Word endings and word parts Patterns for word endings (patterns with ellipses) match the word parts, too. Options COMPOUNDLEFTHYPHENMIN: min. hyph. dist. from the left compound word boundary COMPOUNDRIGHTHYPHENMIN: min. hyph. dist. from the right comp. word boundary NEXTLEVEL: sign second level hyphenation patterns Default hyphenmin values Default values of COMPOUNDLEFTHYPHENMIN and COMPOUNDRIGHTHYPHENMIN are 0, and 0 under the hyphenation, too. ("0" values of LEFTHYPHENMIN and RIGHTHYPHENMIN mean the default "2" under the hyphenation.) Examples See tests/compound* test files. Preparation of hyphenation patterns It hasn't been special pattern generator tool for compound hyphenation patterns, yet. It is possible to use PATGEN to generate both of pattern sets, concatenate it manually and set the requested HYPHENMIN values. (But don't forget the preprocessing steps by substrings.pl before concatenation.) One of the disadvantage of this method, that PATGEN doesn't know recursive compound hyphenation of Hyphen. László Németh hyphen-2.8.9/README.hyphen000066400000000000000000000114361520164222500152030ustar00rootroot00000000000000Brief explanation of the hyphenation algorithm herein.[1] Raph Levien 4 Aug 1998 The hyphenation algorithm is basically the same as Knuth's TeX algorithm. However, the implementation is quite a bit faster. The hyphenation files from TeX can almost be used directly. There is a preprocessing step, however. If you don't do the preprocessing step, you'll get bad hyphenations (i.e. a silent failure). Start with a file such as hyphen.us. This is the TeX ushyph1.tex file, with the exception dictionary encoded using the same rules as the main portion of the file. Any line beginning with % is a comment. Each other line should contain exactly one rule. Then, do the preprocessing - "perl substrings.pl hyphen.us". The resulting file is hyphen.mashed. It's in Perl, and it's fairly slow (it uses brute force algorithms; about 17 seconds on a P100), but it could probably be redone in C with clever algorithms. This would be valuable, for example, if it was handle user-supplied exception dictionaries by integrating them into the rule table.[2] Once the rules are preprocessed, loading them is quite quick - about 200ms on a P100. It then hyphenates at about 40,000 words per second on a P100. I haven't benchmarked it against other implementations (both TeX and groff contain essentially the same algorithm), but expect that it runs quite a bit faster than any of them. Knuth's algorithm This section contains a brief explanation of Knuth's algorithm, in case you missed it from the TeX books. We'll use the semi-word "example" as our running example. Since the beginning and end of a word are special, the algorithm is actually run over the prepared word (prep_word in the source) ".example.". Knuths algorithm basically just does pattern matches from the rule set, then applies the matches. The patterns in this case that match are "xa", "xam", "mp", and "pl". These are actually stored as "x1a", "xam3", "4m1p", and "1p2l2". Whenever numbers appear between the letters, they are added in. If two (or more) patterns have numbers in the same place, the highest number wins. Here's the example: . e x a m p l e . x1a x a m3 4m1p 1p2l2 ----------------- . e x1a4m3p2l2e . Finally, hyphens are placed wherever odd numbers appear. They are, however, suppressed after the first letter and before the last letter of the word (TeX actually suppresses them before the next-to-last, as well). So, it's "ex-am-ple", which is correct. Knuth uses a trie to implement this. I.e. he stores each rule in a trie structure. For each position in the word, he searches the trie, searching for a match. Most patterns are short, so efficiency should be quite good. Theory of the algorithm The algorithm works as a slightly modified finite state machine. There are two kinds of transitions: those that consume one letter of input (which work just like your regular finite state machine), and "fallback" transitions, which don't consume any input. If no transition matching the next letter is found, the fallback is used. One way of looking at this is a form of compression of the transition tables - i.e. it behaves the same as a completely vanilla state machine in which the actual transition table of a node is made up of the union of transition tables of the node itself, plus its fallbacks. Each state is represented by a string. Thus, if the current state is "am" and the next letter is "p", then the next state is "amp". Fallback transitions go to states which chop off one or (sometimes) more letters from the beginning. For example, if none of the transitions from "amp" match the next letter, then it will fall back to "mp". Similarly, if none of the transitions from "mp" match the next letter, it will fall back to "m". Each state is also associated with a (possibly null) "match" string. This represents the union of all patterns which are right-justified substrings of the match string. I.e. the pattern "mp" is a right-justified substring of the state "amp", so it's numbers get added in. The actual calculation of this union is done by the Perl preprocessing script, but could probably be done in C just about as easily. Because each state transition either consumes one input character or shortens the state string by one character, the total number of state transitions is linear in the length of the word. [1] Documentations: Franklin M. Liang: Word Hy-phen-a-tion by Com-put-er. Stanford University, 1983. http://www.tug.org/docs/liang. László Németh: Automatic non-standard hyphenation in OpenOffice.org, TUGboat (27), 2006. No. 2., http://hunspell.sourceforge.net/tb87nemeth.pdf [2] There is the C version of pattern converter "substrings.c" in the distribution written by Nanning Buitenhuis. Unfortunatelly, this version hasn't handled the non standard extension of the algorithm, yet. hyphen-2.8.9/README.nonstandard000066400000000000000000000102101520164222500162100ustar00rootroot00000000000000Non-standard hyphenation ------------------------ Some languages use non-standard hyphenation; `discretionary' character changes at hyphenation points. For example, Catalan: paral·lel -> paral-lel, Dutch: omaatje -> oma-tje, German (before the new orthography): Schiffahrt -> Schiff-fahrt, Hungarian: asszonnyal -> asz-szony-nyal (multiple occurance!) Swedish: tillata -> till-lata. Using this extended library, you can define non-standard hyphenation patterns. For example: l·1l/l=l a1atje./a=t,1,3 .schif1fahrt/ff=f,5,2 .as3szon/sz=sz,2,3 n1nyal./ny=ny,1,3 .til1lata./ll=l,3,2 or with narrow boundaries: l·1l/l=,1,2 a1atje./a=,1,1 .schif1fahrt/ff=,5,1 .as3szon/sz=,2,1 n1nyal./ny=,1,1 .til1lata./ll=,3,1 Note: Libhnj uses modified patterns by preparing substrings.pl. Unfortunatelly, now the conversion step can generate bad non-standard patterns (non-standard -> standard pattern conversion), so using narrow boundaries may be better for recent Libhnj. For example, substrings.pl generates a few bad patterns for Hungarian hyphenation patterns resulting bad non-standard hyphenation in a few cases. Using narrow boundaries solves this problem. Java HyFo module can check this problem. Syntax of the non-standard hyphenation patterns ------------------------------------------------ pat1tern/change[,start,cut] If this pattern matches the word, and this pattern win (see README.hyphen) in the change region of the pattern, then pattern[start, start + cut - 1] substring will be replaced with the "change". For example, a German ff -> ff-f hyphenation: f1f/ff=f or with expansion f1f/ff=f,1,2 will change every "ff" with "ff=f" at hyphenation. A more real example: % simple ff -> f-f hyphenation f1f % Schiffahrt -> Schiff-fahrt hyphenation % schif3fahrt/ff=f,5,2 Specification - Pattern: matching patterns of the original Liang's algorithm - patterns must contain only one hyphenation point at change region signed with an one-digit odd number (1, 3, 5, 7 or 9). These point may be at subregion boundaries: schif3fahrt/ff=,5,1 - only the greater value guarantees the win (don't mix non-standard and non-standard patterns with the same value, for example instead of f3f and schif3fahrt/ff=f,5,2 use f3f and schif5fahrt/ff=f,5,2) - Change: new characters. Arbitrary character sequence. Equal sign (=) signs hyphenation points for OpenOffice.org (like in the example). (In a possible German LaTeX preprocessor, ff could be replaced with "ff, for a Hungarian one, ssz with `ssz, according to the German and Hungarian Babel settings.) - Start: starting position of the change region. - begins with 1 (not 0): schif3fahrt/ff=f,5,2 - start dot doesn't matter: .schif3fahrt/ff=f,5,2 - numbers don't matter: .s2c2h2i2f3f2ahrt/ff=f,5,2 - In UTF-8 encoding, use Unicode character positions: össze/sz=sz,2,3 ("össze" looks "össze" in an ISO 8859-1 8-bit editor). - Cut: length of the removed character sequence in the original word. - In UTF-8 encoding, use Unicode character length: paral·1lel/l=l,5,3 ("paral·lel" looks "paral·1lel" in an ISO 8859-1 8-bit editor). Dictionary developing --------------------- There hasn't been extended PatGen pattern generator for non-standard hyphenation patterns, yet. Fortunatelly, non-standard hyphenation points are forbidden in the PatGen generated hyphenation patterns, so with a little patch can be develop non-standard hyphenation patterns also in this case. Warning: If you use UTF-8 Unicode encoding in your patterns, call substrings.pl with UTF-8 parameter to calculate right character positions for non-standard hyphenation: ./substrings.pl input output UTF-8 Programming ----------- Use hyphenate2() or hyphenate3() to handle non-standard hyphenation. See hyphen.h for the documentation of the hyphenate*() functions. See example.c for processing the output of the hyphenate*() functions. Warning: change characters are lower cased in the source, so you may need case conversion of the change characters based on input word case detection. For example, see OpenOffice.org source (lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx). László Németh hyphen-2.8.9/README_hyph_en_US.txt000066400000000000000000000032361520164222500166470ustar00rootroot00000000000000hyph_en_US.dic - American English hyphenation patterns for OpenOffice.org version 2010-02-23 Changes - set correct LEFTHYPHENMIN = 2, RIGHTHYPHENMIN = 3 - handle apostrophes (forbid *o'=clock etc.) - set COMPOUNDLEFTHYPHENMIN, COMPOUNDRIGHTHYPHENMIN values - UTF-8 encoding - Unicode ligature support License BSD-style. Unlimited copying, redistribution and modification of this file is permitted with this copyright and license information. See original license in this file. Conversion and modifications by László Németh (nemeth at OOo). Based on the plain TeX hyphenation table (http://tug.ctan.org/text-archive/macros/plain/base/hyphen.tex) and the TugBoat hyphenation exceptions log in http://www.ctan.org/tex-archive/info/digests/tugboat/tb0hyf.tex, processed by the hyphenex.sh script (see in the same directory). Originally developed and distributed with the Hyphen hyphenation library, see http://hunspell.sourceforge.net/ for the source files and the conversion scripts. Licenses hyphen.tex: % The Plain TeX hyphenation tables [NOT TO BE CHANGED IN ANY WAY!] % Unlimited copying and redistribution of this file are permitted as long % as this file is not modified. Modifications are permitted, but only if % the resulting file is not named hyphen.tex. output of hyphenex.sh: % Hyphenation exceptions for US English, based on hyphenation exception % log articles in TUGboat. % % Copyright 2007 TeX Users Group. % You may freely use, modify and/or distribute this file. % % This is an automatically generated file. Do not edit! % % Please contact the TUGboat editorial staff % for corrections and omissions. hyph_en_US.txt: See the previous licenses. hyphen-2.8.9/THANKS000066400000000000000000000003221520164222500137340ustar00rootroot00000000000000Many thanks to the following contributors: Nanning Buitenhuis Rene Engelhard Chris Halls Raph Levien Joan Montané Daniel Naber Caolan McNamara Peter Novodvorsky Peter B. West and others. László Németh hyphen-2.8.9/TODO000066400000000000000000000002361520164222500135150ustar00rootroot00000000000000* need a pattern generator for non-standard and compound hyphenation patterns * add Unicode case conversion to the example * make a txt and TeX prehyphenator hyphen-2.8.9/checkme.lst000066400000000000000000000002311520164222500151430ustar00rootroot00000000000000created uncreated unnatural unliked conveyed NASA hibernate pseudonym tomorrow seven can't doesn't won't universal framework fragrance mischief nonsense hyphen-2.8.9/configure.ac000066400000000000000000000003411520164222500153100ustar00rootroot00000000000000AC_INIT([hyphen],[2.8.9],[nemeth@numbertext.org]) AM_INIT_AUTOMAKE(hyphen,2.8.9) AC_PROG_CC AC_PROG_INSTALL AC_PROG_LIBTOOL AC_CONFIG_FILES([Makefile doc/Makefile tests/Makefile]) AC_OUTPUT hyphen-2.8.9/doc/000077500000000000000000000000001520164222500135715ustar00rootroot00000000000000hyphen-2.8.9/doc/.cvsignore000066400000000000000000000000111520164222500155610ustar00rootroot00000000000000Makefile hyphen-2.8.9/doc/Makefile.am000066400000000000000000000000341520164222500156220ustar00rootroot00000000000000EXTRA_DIST = tb87nemeth.pdf hyphen-2.8.9/doc/tb87nemeth.pdf000066400000000000000000005055171520164222500162660ustar00rootroot00000000000000%PDF-1.4 % 3 0 obj << /Length 4176 /Filter /FlateDecode >> stream xڥɒ_dU !6LUv<^''N\}$6E*M)!ߞgRj dHrn6]9wC, u"&v zn52o:>$~~ϯ@N3!U0n:U -40YgsjwWΓCwGZNkZۂI A[3e1]97зL*T48a۩5) zil77<<8О,Z'Oy ·M@Drȓ#k96>:o=a~@ZdCM욞)W ,ݵ{e~ jϫ򴫏Ww{촞8"S܉/ݵ~W (w o2pew4zP7+>}W%,0Öu7rBLhF/D.h4%Le7Viuívh:<&e ֊Iwݩ, 'C{wQLQi[ĞP?7 %R ºDlhjz} 0Zөb-(0J%qDѾ^e>C VQ% wmS=Ae󌾮*(z)%o9DBvr{('C" gk ط4X'zxO ح`9#}Uk q@=(uuxI%( yֆn9~]oNL n@O}vj4 .B >&T=A> KV:!Bn#gq'DFM)G"*^&dZ:qF) ~ fo"Cׁki dxU{^1ʫ.`G.H:e\Mry@A;`~h*?*Kc+p.y|d2A&8_ F ֩> w]12rG ݓLT^ơCLlQiENLJLH" u؎]f_ m' #!p}e[z"(`gm}{/rs=7@;a*:5R9|Ya"%$/"0kLsvKa\m ' YRoP &khV i׾; $;I'ႰZvP=]ɽ]al6:]a@Z Oz8΀=ZKQlȧ ܑzc0yD :X`mL(]xS@[@eANmi- a,9 zO-^[;b2;t'콵l =93Jq>$l*%X Xƽ-F}R}bg8p|!̘bLph!한*!sQʬUύy0q5YAmn{w Yv swc aޕla(f?˗ Í E8y+}!zcTOW2X;Grmu@s"?Ze"=q qФjH!>>SCA?C)zn'z a]D &l;p1x%3Uͳ,:&y5 Y{hZje@% q--po~35oݵ=d( 3Y&a\1T4(;ߌ$?[@SϿPqu n)BÙ:Tu4i: [1WYD[[Xnᦣ7XC0s;[K*( $<3jD$Ar dG.- -|1=DcgNQL8TI{Z-;8}R wݨ:BQ-X,O)ƫ]fq<й9V^(8C CNRD4IQDL|M@YF w7.4dz: Az"OQYುpZ UH2=a_LM5^dwH?.a+cijd ){i*E P:;j0;vR5Y8 92 Ev߇1. r 14>WM+0~N o ~X=@rTp9+UG9I| Feb1,S2ys% hAJBS cw^,*GȷΧUyW4\0:Ip°VߝB=giкPܬ}fv^v0&kЎgņ':;P"mVe P*Xbdb,J9:r iIY胄|R3iD j;}6=ʹoBm*Nn3!VnyxZ֐u ivN^ƻ&ɗR愤cT)4鹤vg6Jj*?/6|LUTEj^죮`J%4qs}-J۲E`l`p]׻/KLu{x7`1rP+^jq!**a3ͯLB * |b I_N} J>lڪ(p&br E\g"׵XeHjsE)</o✻ZlڮڗW󪧿p$ -H{ c"\Iʌw,:Ϻy}Gl4MĶ޽܉d$AY# :oXƧd0ĥGLNJr3.{`^F.򷽟{R1XرMZAR4uXEE*?Hy*@E1EPX,k .98t^4V%do"/$^ot>w_?@(|5j A.C9'wJ ~K\ޏ$z?}SfZzv[٨ASe.B^u.Zp&B䬨);x\{ 7SchuẈi>:\ma=ndٻ+IQ\ZEA8Or3 6U=}E=J>d*) ˜^}kq=HC[hMՋLjYylk6wAYwNr%9+2Rf[̞2gv44w{aTNd'Ի%7o;`HB ue]8X>K-Is=0ԏ),{gEy <7ɷ'y=AQ,G>1.3gO)x%4%W endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 612 792] /Parent 22 0 R >> endobj 1 0 obj << /Font << /F66 6 0 R /F68 9 0 R /F22 12 0 R /F64 15 0 R /F75 18 0 R /F82 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 25 0 obj << /Length 4532 /Filter /FlateDecode >> stream x[ܶ܇T8U"Bx1ߜJN˖;ÝCnD:n4*n%An`.|4Y3a|N =.\=42gl4ei ~."neԜ\GGl^CQCeM>%\ i77o*!X&֊+L()2NRJvG &LFgWXݼ368%q܍D)E rH2fT trЂiwF:1%O}~e:^/-?`*$ZWw ֈ=&*YܖƲ,E/.'rܖ/:SLeu1m]^MW}eB ^fQ^aϘ4f2fFd&SHj l[苓0a#/^|4 ډLgXHaYgX>QO^Ip}Bv2>B?`}W!3`±ɦ&8 T@$彮OU>gEyz2hR-Hkh{Ffmrh`>^1;G3?\4L|d\+߬K7tQF޿ ˀA*:| N,΢H1 "@{D,u"=8Av6 }ⰔB$ҮF&Nj1娆0,溯N@Ž=>;ݣ޻D_ a}6 s&M4c uV.T"?Slyka8mu6gԋAj \͈U0 ey\+Zt׷R$8@[-{4=ԋ1}IQWQe4$+ߣgKO2:aЧej_Tx^GQ":tؓ@`Bj(M[_l.!9H2h\/r(^_ / !#t˸Ӛ8DW{׵-X]0mNTBX"`Aje]qf+N(B%X .'4tyO.]r/TBamLQ,?Iרit5vH2PԁXNUR!.hiZ&5,XFԻRe[.l-Le]㻑:rF i?yujȝ*"&&}V; QT9HØsCU9h<#>|@SknH<*}G Ly:&vJෟ9'<4bLըo\?UrDu JA"@8y-u`qd _4bf@ԏZW9$6>Vt]K] Bb*- ms #uEDnS[vƇY823PT 2O[Z;.k&X!`D=؇+X>["[*-y[zcG#C%ב.<۲~OMǶRi#M^'9xd{*4e@ǚXs\*[EfX/>:=[֕ZP394(mR`亵vx!xhKd $gMD5hy&vuy= 2$AU]84F= );cҭ[7ysU յ6z5r]Ql_H^r}'^+:c~i斡BYvX$.( )Y,)a^<`i\n=¢ L@E ;O`ٖ,,)iD@ӀJW ZI !;?q~j6RBL2a1o4AQvsQM(l<^ Q zb2fg2th!RvLu͆\"opZGLGFLv+WF\X(|,]­KWI(\3mTaȗ# XpôKY_ gwBJDPL"!upt^]9' 9y\R/~ H!PPR3Z$/GATtw4 ̹gu\M}N f; FEz7[׶ĄM8>]L  90+D 0lCSaH7o,i0ljf8g-BiRr"A ęIkCL ib`)}Ԩx?@0KG>wgW坏h@'.,)x X ݰxGwK2?u;-FL ^64KG`8mb1$A1dKJ@>4up1yXL=r߳^F} `=!ܧKstB S{[ bS}?cܮС+z_Z?n75Y JD BLmw$rhvcRx\+@='DlmTK5wޔm;GY6_\'tOQH|~WdrU{F&VM0 To߇ͣjTP/7^e3WM׹HEET=4?H4w3ܗQӫ@'lOg 7jU,CUWaKClvti8'|#4Vw.s<[}^LIigجz oy`wKB-o{ZDa #kAyDLf4G\>̫nڬ]X*jOx&uqt^[xdT?C`<hKTȋf-z >5%W=Uh[NL8屡U-.B_Qx$5ƻcDǟi|vAF=UWKZiI]$~A>*4#l]uni¥}*\ވn܅ WPR')!65dL VD6@t9 LLEu_,eG(bXj.zFlZ@t[LАx 7m;W`zҋ @kym@$')P%C~12fE (B1:ppTB=N~0B!i\8jb4l|ʩ%hѼ R=*- 39랗b#y4vBu.8F4vhPetoNdS KooY lk[r`FDg:'fۀ ЎM?c,9MSvg dڸ™ )D<2&5."$*JEBX=>}xٝC7 [?;x=!jD}eBU G P[%?RG`@x$$FjSWcĽS"#u1qOG9 &9dVWLߟYi``J8gcp:Xr*#'iJsscE(cG|Rf^-7aP ˱h B+#'$1t"zG7 +~o)R+uc0'Vqߦc Y9U NёXL!eSq ?4U;?7ho]1m!S=7Ly  ۗwMޭ`Ǝn]3?>a_$Ѩɾ+Y7:z'>; o$UXKØ%NP$PqRY.Ȣ endstream endobj 24 0 obj << /Type /Page /Contents 25 0 R /Resources 23 0 R /MediaBox [0 0 612 792] /Parent 22 0 R >> endobj 23 0 obj << /Font << /F68 9 0 R /F66 6 0 R /F75 18 0 R /F45 28 0 R /F64 15 0 R /F85 31 0 R /F82 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 4483 /Filter /FlateDecode >> stream x[moȑ_/$Cr\M22hkRR<_nS,w&Y]쮮z+*,vYC˷7 Fx3==}cU²d8aOJkIYRkOʈCet^'of!9µK[ˤX(fu <|sfk_W; n9p# =V7o h1A:Td2"X*ERW t&iOk-*>cz[%ч/k凵ѩT_OOEc=֬LhLӬ~GiVO4k:VoD0OlĹ ~7%^!w򀚭ݜkE[$Y)&u͌L+;rUTA4OcBزŵ撤e ۵%I-\F!;⾘fgjyQQZC⊒:ޏld*)Ld?.?ߊ[u%u*:J  檎Lΐ8dnJB3xPUJmն-,k*ӆqV<=?lY)Ik5О1yU%EuBEɄ)\U S(*]m%Z(@8R8GKD?8-&A0.>:L)ߑcN,c$t>Wc7]5I~49Ӣr dlu5_of4_uPB2P{_RZ'້pWѠ8әqEzWׯS Y7ׂBz+2!sw%x5}stry/%ҘcIyGy&c_h*&2hI|w5z?%u¼Д.*OϹDpWA3L ^pggQJɐR~:)o(Y&z`{U#QVE~tZڽ* Z e"]t5jӰ룋avx[53JUdwxVW .=i™ rʼnZhMYWp߁v[!}ƽXpܹis#ͦ@b_n}0ECG3Wב+!H\ vKF X)Cn\6C9]fh!fYt*zۗa+jCw=PZuZ 79rK('ڢS"8 ']8뮨ÎHoBZeMO$#7ڶ>m 3{D*9#v>eQ*Yu*SryGӁsG 'KJK{ Tśb0w̥ՙ־;WzB!w =T##/w;"ԗy ;tyttJ(ǙD\ۢ;̦9&dW͑7ٟr (5C?;2(TVLmcqP\N5 E*+h/ڞZ1Aw3G8+={gAkn焬X^r7tebv543V: ![!Fi߹N6wӱlsxqZτ46^hxO+,b, ~i'g0ڜB4nmqz=Z3^3ӦRd+u'_o6?pyU|婬f$aքnN Ix xe" .dŷ\u㣞el7_G%oqr{oL\ ?U'鰣Rm&c+p|u7l&D%@%j*8S^?5~gq#GW{ /u~`8^ʂ_b7#2tTzTǘa۝1K;]mVc~|f]qGbh%HhK 4K|dZ>Vm<0A^t.wz.wcKJ @҅zC :tPc\ _z_`p>7|mDziT9Fۓ1MRD#Utx!q-F#ҡJ~huGD)} ]Nxj}ݾ5#IDLL ɠ^.NŢ!M?cJCR^%C%e @86}qVԕ=꾭A^01* 86tR s3>OULckԕ.G@#;,=(REH wwh&>HM}tD=(p#bL_-xVx _TBtYb<2Ѷ44lDl"c-Q_|t4w+)xvG_bz+j %_* e{pqS~AЖƛ.-e+W>ez {,TBD m S_;}X~I?.ʄYq,Mw-jҀb,0HLF͉3"cmP !5C`>w1r$!m%V>5:<~lʀ71unO_R+5N?w0"t3[46>.&uPÏny*%i 5?k@rwʤE 1/x,6$au- KRj} b,`)j|3 HŪ/u-Yj$ endstream endobj 33 0 obj << /Type /Page /Contents 34 0 R /Resources 32 0 R /MediaBox [0 0 612 792] /Parent 22 0 R >> endobj 32 0 obj << /Font << /F68 9 0 R /F64 15 0 R /F14 37 0 R /F66 6 0 R /F45 28 0 R /F75 18 0 R /F82 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 40 0 obj << /Length 4582 /Filter /FlateDecode >> stream x\ݓ㶑By:Do2Uy%7l7~$TR;uA$%٫L՝]"&tU6reex 7p LC/3vRJ&bcۻ_}ie]}iz߮E\kXJIuʳ\6Úd]*_ |:W u~soÃ6yqX &o0_-+xTÄ .QE;I#WiFS utl2#\fл:)x6nwykA q~ar,H(Yl `V, D 틟v:TmeP&UNmRi]$o& U&zŕ D!3l8k tG֚fe&7jHDx&YQki/^>p7ٓJۦ:V~5KD_AItH]{@o߮Mr_ /W$2RLi3ί@#࿁ gjqfIW QI;Jztrx".z"̇WpH&v |]\@2; HZ"ߵp&IrY ۑ/G3xølaag,8H<D03iے=u=)OXQ.o8'ޟJ0ۍ`7HhgVF+W$ę2Y0MMbZ.?eq~j<`^+{0E$-?/r`)9C!1L߽=)F51z?N<.宊0R8 -o``6ꪮ{_Ǘo^Lgw[7%?F3u``BtLeؐE/Gl2 6 uyε<#ATt9b3@] X=dv͇fxAbRpt0&!:ˆ 82cs/R:8cċ5 \wȀ~5=J&חf_ҷ_ C'Wq yHW`` A*vUȃ9ž[P!gLr`so8-0%\=w2(,rF+WlMwve{E$B}9`xL Ґ 4:ܦ}Msxj3Aϓ`{O1W7p@z9V)X[ -TQY᡾iM5'PG-ĭi;ܕ+{{W>&g"n^ T->Fi _|A4]32:uhX"2d5?KI/*a&aY1h+ս]FȁCV:DpWv2Pum aD4}n$] Bl.`|TqrL%M8Y@AIҀfeĭ1|V;L*ґ}|7xd !fV_,a՜N 7 RA;ߜA:4~_lWs=dP~?Dܐ!q(mZ.AU*p6g%ߛݰyLK ,ӉeJ ^p|lr4 \u?Q t[˼C?`Q h5v&"IT"^l =3}ImoE^}KAc敢IO%\BF DWOPE=vBݶapYnaVr3!B( ]o\Kc!8!cyʽE*'κWx]̰!U x4Ìm olXHQYujMs'/1tS w! fSIkZ$O޻ Mqr@Ę!L%=q#5ml3ţ a -13|#"vm5kt"IvPov*"w +ty$v#Q j/mB5x /C~Qt2EI=H1}~tOqc#rmbeJjL>Ġp {@%lWSS8s o WUˇtHjl9@imNφ_4.F Vꄵp(|jLJXC,=vxC<#o#bOdF_ey2fWK4hc z^h({n|mwӖpחz#>nd.@oF vAn'UeѨ 2&x:ϰ# # %ħ]B*D~wNdi! ,a~hÁPSH݇?/CC@BG 3ee+!YZ$r9I+lȄiKBL O'ȉix_$F&L͕9#U2yF#Â*F_LBx"R kʃBVe!fE&ܟPu&o8Ǹ*~`QhÇ N c5umg,f'ɾ餆<M,[Ho[ 4&_r4$EٵJ|WE/ y$Svi8|@խqbr?_(z[0Ah\FL p{M>mڡT|j|(zHh6ކ5[ $aG"PcNsO y68OdN]_ >g:g|pՎ9%u}h9%ec) zgWB5 w'NPbJy|TzURgO nH?t@ (4q/ay¥r`PB9M*49!g%+8gF{4a:1_PVQO3!LjKWoW╼ƞCŔ1ltX?)Mki?A`5dG.r93P''6 /x" RzӤM=E:o{Qf9/}*3Ds.<?87bK}(0I}A"8h\]h]ׂ"?(Q/@@k?a9Ǻϯ7T20Tmu2N .8|s%RC>F&f2O:BkX~IO#{JR(1~]F-5²HO$]) 4ȗ"3@3ɫ_~@uH,^7*0ĝe|00Î. gbK9 cӮ}ЛrC|Ύf5v.!NDS>"4E^s*ں-i󤩜$q޵њs|}Y{}r*vE%)⡦XH-1K_6̾BA>UeDsd";q@Fwz\RڮAckcqf]_ðlTmy*7v@ fꄿ|$epnU!ݸw@9d;R=Մq`"Vh`5%]Y#AfZCoܝLm~~Y -Y4 d tDTG_Qa.fGզ-ۜA7R,304QX<˘8o[08| ҉nr7RNjLgBih:LQ2Ajd> endobj 38 0 obj << /Font << /F68 9 0 R /F66 6 0 R /F75 18 0 R /F73 43 0 R /F64 15 0 R /F85 31 0 R /F82 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 46 0 obj << /Length 3966 /Filter /FlateDecode >> stream xڥ[sܶ⾕AċˏƎ=Ҵg:%Wh뻋ĝ$I`,}W$bi'YWϘkKQ?~v2NW ˒|oۏR[Q2\+?\"\&}ߞ]^iǙ{|8fB՚KlL;а,fp{jX4հIT Jaʙ qwwZ TNh`"&#wFP`WS1p9˴62"88;ƒ㑎|A`2RSXGHgp-9d^ab::"dh!UK<^?H^dy <5{| [˄tuSm)`8KEh)=i-ҧxd2 @X_A_A->%Ư/v4a2?y%䨀/fOA)LUYu84 64 Z4]׼j y $s-1"hLui[JF"ILa( Ӡkq"($8u/M3pڳ; aI/wQHH7#>kix-Q5=i:3r2@-7JhYoH!rOh_^^ux>t*Q`F2=dlizKmf|[_Bn!RyrIZo94"ZTU$ vyU; !^e#; A+J#jB6߬YhR*ThHDpLb>{tJ8㵒Yp51%F+|A|,4PDa͵ؾRgNP%Vf$ M4ɀzkiB&Glbk5}SW3/[1VL :fzb78xal7HT!dN-M[.Tɹi 裣'x[̸Q갥nujֽC PcBGl OAR+1.g:(1 (IـN ^Hj>O?VfjR ?rz/v-KN9:α2v}K%oL^2M9K.hO0 I:HLs"tLq-t( EL x7Qxoþ;~&t   '%<%{N,$C)AWPR~|q܃A lՃ:{CHlq9`bN`ajVA /Gەf&;0ӄ4樓^ qm :M%yW.o.Z.-=!`@1 ^I1ѐRlcZ\c1≧ Y YAOns@|DsD=$TkbAǦT5+i`0*H^cVHGE[;~ 4q 'rk#u_] c4xw67."MH iLjf} Z;f[uwܤNKX(#3ä8Ia* o7cFJ`  0TN tQ}޺!BBc<9M |zg 1yK`PMI){+ࢣ*lcKAբt sZPmaɍz\h}!m/F餉ue)#:>f?T&tU=YH&QI dc ,EC1S^uQo> ҇zgf <ԶU|clGjlѨ"&]V֞-:8.N *DhMY!l&挧r%Hx bgPB`D ȳi(3 ƮtecM3рB)a>E3<ַ; IJ һb[""+\n;"V8;&qE[ Ǣv~bر߽̕'O29Ƽ* ~ kkL@q, R͠<O\6lP]{}f0eNUWSûrC~ u0&MSPS N|P]IB-~"Ȕ$|aIJ 8MI)~>^[ߡ[WzB=08nL: tZ=`E+1ܢj)cpQ6|gQ:>)?Dl!nƎ&gEO9)E#`+c頻 q MG&zYEU[bM!*xmi~.2 x*t 㮝=N[5(,yꫲn{`ug2fh#VGC&еmX|*g.O H)Mj>& (6fY+,M $usU3wI83:kvLz<"q«w$Nx+ۜuZEJں{Hܢ(bZ;H?nS5c%e|WҘ. t-&֕)~/SwЀNm{6ԷBkƐ`i`' H`iqA^ a2s|88?||du]ĸ#z8ܳ8>ŧs:/9@m~H{6cNל+!.3coo=;P|(5 Vьy?h4'yuF3g4c^_ΐn %W>[ I _/o0zp?Ʋ%+=l~NS,0䲦7?$09 @ϗF%+t?j8*UMgkh~8gWMYa> h0oXpY) w(gUh wz :8'(I^{U. +ϡ)D0~.< /2.',p( .,ӇEM5hz#tU;*!%ٱhQr:RV?BȳmHDBXEm:? f@1 o6E?4hԙ`eG;$ZSGC(⫡45qX=t endstream endobj 45 0 obj << /Type /Page /Contents 46 0 R /Resources 44 0 R /MediaBox [0 0 612 792] /Parent 22 0 R >> endobj 44 0 obj << /Font << /F68 9 0 R /F64 15 0 R /F66 6 0 R /F75 18 0 R /F82 21 0 R /F73 43 0 R >> /ProcSet [ /PDF /Text ] >> endobj 49 0 obj << /Length 2232 /Filter /FlateDecode >> stream xڥYے6}Wm!~IkƎ9q*ڢ$DE,)קq(ޢ)[A2K̄Rb Kfd7ψ LЉ1YgqkgtV,"fbPUW>IYʾDDhQwrE:?6pq.ye+>/:3OL`G3,ePs݀;ˆz`=L#U* {"-`6#m8>%sk&`5xm9NXWn]lIˑu[J[ɕkI"pcR9IÖ hr?p ha @_UVzh}קMp9ʎGiQչ~Şac^[=H]S[8p##%è3PTJ4N6cL.z$Mm:ą7F"/c(D*!f1S1rc$>rjΙRv⻈* ./m3:X-Is& Fr([ˈt_TkCaO h-ABI_é(3 -ݶ!2`w;aڐ ;CQʬm`Fszk~V{ڲ8<نz}̟Ä%V~|8-,E{U7&"'n^ l Hx&d@:DG A2 1e3HS@t(@s1<#Cx-d0E41D)Eߩ7;CQUnr)q{` (R I\zc8g'1ey4i"l>Vf a7{Vͫ~Qz-1 F)]m>bک^u_1}ȪP"p*Vo b8gRjxsxP xt,3W)p~X⯈Jy8e,d,,>0?M(7>PTk4[ԇKIoǟTkdM&˵0$}i,c# T6 5LVl YԷ̫??U>Na#S e4 |5zoFɼ䥩E2^An~ʎvLS]Lś[/VB7 VM|^XQ֦Q~k_o8_ȖIlL.+䫜-Aǡ_M!ĞYs\g:R-)Ҩn}fR_A=;KdZAx9^W%ADUo,\5}D c=*Q* 1MSd3J%or o j#}]CsMSteM\BIM$@Pj H;ViבAQ̸zxK Z?+6> endobj 47 0 obj << /Font << /F68 9 0 R /F75 18 0 R /F66 6 0 R /F64 15 0 R /F82 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 42 0 obj << /Length1 913 /Length2 1372 /Length3 532 /Length 2013 /Filter /FlateDecode >> stream xRiXSgF .QYMq>"[6 K(d $7ɕon42RĩʢFP0P"ZEAEpA R`.h@ I/9d!"X/E1 H@)``eųg$Ar"Sn(.0Z 0ʃSybq $!~1 'Q  ☩Ę&POS{xB1 0牀x+1 7BD/ e2 (tbi>0o' W<)A@Ő ^` fD q@ H?\ hbl8L Dиċq1,~ƱqN~!( OjW4 Cd kT:Aąh== P,{buɁT`\{~~ b`XHnHy_t 2<?ˢEO+0gGՖHȪq tc(_v3VG 5H\pώy40l|vتsu f+z񬶬3X-׼g`%3z)߲7?6/̍8iY$O3:}gQ[~4f7l3]Mʂ MKS8TڡלTYjCںiȿ/h4]IP6S6\YӲC|[^w6|/4o/>\'W4)醋VtEn}\l 2<}L))+|=M1kMxHk[u{6zLVv1%g.ř\CߺlWqWqQc %VG`u#t2G = !+WKayM1|gWҷI'#oF/P%|O=Y4fexg9:p^vmFicF% {䰏LjPD׺ No$v{=_JY-%nM썧3'cE5LjO 3eFf&Y&'6:\+a=E [urm74?W`WLRd’-wW[ٴ%Z +_%V-j<\[vi|CZ&o{iӅuMA>srdcq55E%/ZfE(_,ʶ.YblRDgNSjh4y+(6֭;r !ͪ@$=m ~fko$:֚;-U}%,ƍw_J__{]~y0PSs~Qk""#v|.]ywWݡ7ouڔ*kL'wWCVpOWO?J,^~$)7tf1[޵]Px$5%h?YQpI|עuvఙ#\q"׶uˡ%y`:ͺfUh8(? ~;sjy|t$!I aå"+- endstream endobj 43 0 obj << /Type /Font /Subtype /Type1 /Encoding 50 0 R /FirstChar 43 /LastChar 93 /Widths 51 0 R /BaseFont /IDTIWG+MathDesign-GM-Regular-Italic-T1-10 /FontDescriptor 41 0 R >> endobj 41 0 obj << /Ascent 0 /CapHeight 0 /Descent 0 /FontName /IDTIWG+MathDesign-GM-Regular-Italic-T1-10 /ItalicAngle 16 /StemV 72 /XHeight 427 /FontBBox [-32 -492 1008 750] /Flags 4 /CharSet (/plus/slash/bracketleft/bracketright) /FontFile 42 0 R >> endobj 51 0 obj [761 0 0 0 480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 418 0 403 ] endobj 50 0 obj << /Type /Encoding /Differences [ 0 /.notdef 43/plus 44/.notdef 47/slash 48/.notdef 91/bracketleft 92/.notdef 93/bracketright 94/.notdef] >> endobj 36 0 obj << /Length1 757 /Length2 583 /Length3 532 /Length 1123 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`EkC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(Z  Q 4+u,t-̀)֢(L.-*N2P2!ZuZ~uKmm+\_XŪڗ7D쨛Rl:/P1dɫϾ(l=Uhd_OܗEkv-X1tލ`i_y. 1dz:un~Q?3/S}] $e~s]F1ʻ/Q?m򻳷|<ċݺ/q'}I+6EgxT.GgtvՏGU|~]Rޅ_k9:{pG d}dN<6-uBoH=cMvHzqaRK~,K̞}˛myo~v _s>.#ҭߦ{/əkܗ1"xz(}uAZ)n^69jDȞK:,Y:kiјQ9E%E\NS~ endstream endobj 37 0 obj << /Type /Font /Subtype /Type1 /Encoding 52 0 R /FirstChar 1 /LastChar 1 /Widths 53 0 R /BaseFont /VYQPUO+CMSY10 /FontDescriptor 35 0 R >> endobj 35 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /VYQPUO+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/periodcentered) /FontFile 36 0 R >> endobj 53 0 obj [278 ] endobj 52 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/periodcentered 2/.notdef] >> endobj 30 0 obj << /Length1 844 /Length2 1187 /Length3 532 /Length 1794 /Filter /FlateDecode >> stream xRiXSgV XA@6!$l Ұâ!!W76vP( ֈ:j- <@D,R aQEQ,΅ڙ)̏קw{{kJH AI42P # R/dP$N*&ѨF7  K? y09X8Q A{8;܁ enD(|^ Od!^ EJ  K|͓xrRTD1c"/abO1gKm ~SF+b-,@pv[PCxKf HQyd|Jbdxk@rw[`~%'}B)]_*xp<$`"HL!#Rkr42M~(ULLq`*[|ŘxQT2JR`A㏡?W)$g'@.Lun2?- A O+-}WqY ^YmZEkWgdQXۅBlˣ=YvgBJPn7fB~G˔>C nU^^uWYS-Hm7U1xNuSȉ1-سJ/8y;S}X+Mq9&/\"J_[ kW=Tdi5Ir$vPv@cÝPN+6NltȺ0ō;Z5q YnZs)#pFzQHM7ƚ4rk26;>5.]Q5 /e ܙ;MIs:3!j)q0iߍ}Q\xDKmFYSp8zƔ I?EgʯW٠x%a7*,ƹcXls>f>ٽSa[kB.9eHzLԓpk~\fQHC%;2:?62ڗ!xs{T_;(ɨ'Oc7~kS1.NiW(ROZ]|wp NyϪ 7l ʪ*uw7}۽6}m@ና{_*8$#ê%)8FYj4j-FֳEfNg57:{;WK5OxH'z^Oע$quœO4mj􃠗S=Z?яή1JqS8*UYN;XwzSt>+rΥ8ճL]&򚉋,4fz'*{>h.ȃvگT_XbElɚdDo}f "SOJ%> endobj 29 0 obj << /Ascent 755 /CapHeight 692 /Descent 0 /FontName /NVZJLJ+MathDesign-GM-Regular-Symbol-10 /ItalicAngle 15 /StemV 76 /XHeight 423 /FontBBox [-32 -1146 1309 830] /Flags 4 /CharSet (/arrowright) /FontFile 30 0 R >> endobj 55 0 obj [986 ] endobj 54 0 obj << /Type /Encoding /Differences [ 0 /.notdef 33/arrowright 34/.notdef] >> endobj 27 0 obj << /Length1 1390 /Length2 7368 /Length3 544 /Length 8318 /Filter /FlateDecode >> stream xzeP\%N@&Hp]ChFn5; . I  S,:ܲpk#]`|@ @>| @8C!ziAN 59CA((&zHSClj!$& "& b0r;Yo$M AwlvH @=F.vnH swqGBӓs p>-Q=w0O[솄ź}a@rrzJ[Np||w 5*s;OQ%JvvЂA-]԰v:{c! `Ӄػ;Vu;Cmda3E)A :P7?3сT7_jP?]Tm0{HPF";|;C.wK $ͺ; xoOH Aw&]  sGA@/vw?a[( AAQvǰ6Hݛ˶ xAlg6aaܛ '1o(> zWJ։C1 `Vrۡot7BM=z @ۉ;{NV\.'f[$)n'V<#'mL@>*E_bʘ N/d{ nW9pqlM'~Icij31ӪMozb}ٙ#jBKU ev;Eiyr0o m$V.p4n#`ʩv4Bz}XTY*뙇վ}~_$|{Ps2Jxf>i+.ђܳY?%Q?'XIe3V^l^!(bŠ#SL7&_#<֒"V[d)O97D6<1'ɪͤ"+X=qM|6׷ԪPj%@'FX|u$-}Z,< # j(;}ߴ2hfْ=7B:|04Q-W;tjƜta.Ri %`>6W~hc:ҌJJ,Ku7b]ݔ Otvd|ni/EBWnEފ}K:-ݒ+l~n0=xyodd>_"Zz^~ќpLkY40'a4 ̊ OGL9Zs{\zdGhe J%Z:u|#>f?YW&YUK4X3b{ʱ G/!,>;ze4BF]2)~frBՐV07ɱ;ZR}nhjWOL2.ϓO򪓵1NCX$v%ORh] (<.z?Ene0+Tc0춒tx V8obO$Uc8%&FJ02Wx~;!P W-Bu2 efriј!XcρbrloAp4ɒ٦&IuVEӚ=Or ٘MQAJd츖2҆36h;%',U/~)5==Q5dQzkeH][}wh|Ms1]e⁲@Vy/DS9)Y u ƺމ-L2Q9nZ_V b *X';vQܗvmrNO2ۆ=6$ep5OՎyK>vښ;p}đ^ &QjBʛLBwu0.oBy> r})bՅyk Iv~DZĩyaH֋jx7N@N,QtpfkQjyQW ņ-aMƵ_;/"vAiFJJSW1PgƉ۞1yHL+>O;8,KhUpt:O}͐=up83ť݆NiAaeUC.#uDyQm~JPVcmHe&*ԥU(K5w#:uyB \~ri˙\(/ixA5GG6,!OVB~ ki(m'N-oJagdRk>H\X8͊ 0<> ʫ7ĺ|\?ɔxWgҥبxu&eA>/l_qY0GU݀m苯zΒ+nbb`hqX4_pHj͍XL_ 89+\ 9{ZXP k2U_^"oOr\:~L^ZnvicR#>ɋYɳ|ad㋌~hU;)=3f [4˰ Rj!NYmǸ%^ج/29k%Ջ' ţ.- Ǚ3=mNreHx! =[2O_9gKKqu50v}; P.E| pաh})!G)tJw˪Q|j6/o<"^T+Lv`xI"=rc[m׏qR'*lʘs[7qFn|b/1esEaiX^g HŜO9-(>LN[a]0XH y7Zx]f`1ؓ/gfK|Y(Z 4.-Fc<\<̳ʜiޯh`ree8~U!˃_lkK)" 9*dȴYZaӶgi\*zgSQ&kjwyseZǵ^C'<҃>gZBP; K)/`y4 | S}݁(1}0}THEzw|K{tNdZ/+d_]/Hep. 8(_&> S 2dӌf ^Q㓟xų81H-;Rŗ$,E#?ۥPUeJ$TKW|<>˄~%#P7@e|OWE]22ӆL[*FɋLMX-ĸx)Ь}4eEw;rBk{MY3ÌG34H\$D16kCKm 0=HƟvFg$?n. RUPtں4V{<%{rEꡫ' _$s˴9tELlnH -Wy:wr0;bѐc+yiMKEyYՍ~5Гs_NѰ>ЙӢq2\Zְo035GL)U6/ڀ_F cHԙDE8 }F(^71Wn |%v؈cjCF0, B1C6PxSnێjU܃u[1Pqkzyv]Bf(37m,N˴.&@_ :%_KVI\韊F1"]j'>-UuxX0?u w=QD ^4F+N,:u!ۋ=BiXn#nqf\ ˊqA:کe6r6zIv *1O6g􅩔k31ʴ =@C@Zny#43\Gʴ8y[3AlJ^okzIbl?d2,Z|߬ts{qG5bԭ3 W^"|,yA7l/|i7g&T瀲w]`FVdH=$HfԎM F`3-j5WnX3v7Es"1qT>ծݘ#aoЅʜ}bj~M>7~T3in_`QN559*G:56$ʷK 4!P@^,0ӣ$^8 4#~' S.SQMբmfDT]GU D1B`,S(墂,V%?$S9"~"5Z|bY1Mczr0P$Ar=Vi#(d012sz x D1톴vEHi2{3guJ1{UuW^4$Rg gv|c-VDm,tF2)\,]Xe#&)%݅{hSJ"= uE{lܵZН_h2`22!˥ڠlHezZA.>̀HqG:$^9Š#zAi?Bў5dmk=do-$jlAmTy,agd϶#dȤuxAb535-zv)jS*~ \c > s Q_F'fň=o"8F WiEީ? eR#RUFm8x+6RRZEWr 򨟮'OH]Aݗ<DE3Ь P& `F%`9#IM@+Q³8ʁZ4.Uy{`'+41joӵhb3dZl( 'vѵSY/=`tyLF'z.&Š}kqȤ"Lޒ0ATN7}/~H*kY'W/>b`ql YE! TܫwS1)h ,]3H}UƉSӝ^r ǟHK;wb@}6.c^Z6vvuM-M(&GMa{=—oo {s.|B1U(Ot[8\sleYsu5qD/#Zۼrr۟T\_g zaQңҼb#+.zMo䌊R"/;p޹G_s!~=bQ4,#WO7 GJskn@^5cj(ASһI'SI*u]^aS` 5aZ)(ҘJ=*G3\ #:~k1GGB})ii}Е`⊶|` }*u߹e- 9FsjPb,R{&`1 ~U D?YrN/\l*Un=Y#CwkIYs5$4 e}O>g _`0x&Ӧj+)ؗo 5=[7t2ngm%W aZ3e-;}3`hH,S|~_SW><=x8bu@+aU\i%c\KJB'#| ቐe_#L0G;rx)Il̯ɥ8[.WJpB[&|jt{ttɾRiGYgyC yd2XsJ<%NkxγdKVYzy׳U캽V25AB,]N*LɞM|/rh'd=>Pqr 0 ZtE#yVMHRP&CW\:}y^և /#9+0 ïkR, ߐi(' YϦ$yEEJ|I+AMS.)(VKmi4]].Fk"U4n#)nb͉R/ggI'mW:Mn3zݢ$$re6Q ߈I=@%wP'DL`-{XxsTd 5/h<՗yt7;)X߆Kj lceGFҔ~?=˨n#jjHJ󌮆l5|ܰvP6o8@ $wL\81!,͍?-z0ٲ''[[uT8o$_NlI!y<:ņ}8Su{xk z+&wi4}jfyM_- yLs#9$v, +(^>#ev1$.@Cm]{kM>~jNq@$;~~4[ZpM)}c"K}=FDN9nAe5}k՛~onj="u›Q-Z9>EcKU']V.s7bJ躹w qxͪv& MC?/#xJ%7*#tR0 [lG%?&K1?lM0,sFQ.1 F /սZD(ׁ!a8G7t*L' {5{c2wpAΧky}m}1{.n9|!ƓdWI#t?UIK|z?ɜ#* NaUxf"v5vذokX" ' 8CH7 66 endstream endobj 28 0 obj << /Type /Font /Subtype /Type1 /Encoding 56 0 R /FirstChar 45 /LastChar 242 /Widths 57 0 R /BaseFont /BBRCAF+grmn1000 /FontDescriptor 26 0 R >> endobj 26 0 obj << /Ascent 430 /CapHeight 683 /Descent -250 /FontName /BBRCAF+grmn1000 /ItalicAngle 0 /StemV 27 /XHeight 430 /FontBBox [-84 -276 1110 833] /Flags 4 /CharSet (/hyphen/one/Mu/alpha/omicron/upsilon/iotatonos/iotadieresistonos) /FontFile 27 0 R >> endobj 57 0 obj [333 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 916 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 528 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 250 ] endobj 56 0 obj << /Type /Encoding /Differences [ 0 /.notdef 45/hyphen 46/.notdef 49/one 50/.notdef 77/Mu 78/.notdef 97/alpha 98/.notdef 111/omicron 112/.notdef 117/upsilon 118/.notdef 208/iotatonos 209/.notdef 242/iotadieresistonos 243/.notdef] >> endobj 58 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/Euro 2/.notdef 4/fraction/dotaccent/hungarumlaut/ogonek/fl 9/.notdef 10/cwm/ff/fi 13/.notdef 14/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/dieresis/Lslash/quotesingle/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Zcaron/asciicircum/minus/lslash/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/zcaron/asciitilde/Ydieresis/nbspace/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/sfthyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 20 0 obj << /Length1 918 /Length2 7902 /Length3 532 /Length 8468 /Filter /FlateDecode >> stream xyUTۚ-]B(܂, (((5' ;![;7q펻^\󓷟NC(m@NnsR 6?& eAp@;L `ccg7'`/ v8lPGx`,6GLQtx[9sIWNl?Y^+5& Xg6-ߥݠP5U?r\K0/EEB,m`GO U Ҁ-m + qk\! +7Nbivu;Zv= 9x8u yy ^ 7.ϿϪ `G/_0% hІ@.VE[?fO:[C [b.,ER3dFݝ«6T)) Q賓Jcj͈uiIY߷h}#^!qҏ?ܼgB!7N={ d=:G;{=eQ75Kˊe8q f@ܸZjҥ v:Zz Feb)xag<"ܗ`a4?bEĉj>$K*zi:@f{LHJo'jY8O%IMۜ (kVMC\W' Dkqpq)oNޓ M 8Aa7 ^Ï\u D\G)殘<5Mbɫ.fpdPKJx:*Ȗa8D3iĆՕ( q#쥄IŞm! '.g̗}'"mMʗ&|dRY4RC7*Mօ J;\lx6# w͝)C31Hds E#$\O8y7 8S."\tv)-ta^%сX1V1^P^jr,{eܤ^^P˓!e`J+xM| 53KI }φ!nPQ\<4zb)L F)q_"ݒ4q-Am}7LtC.eWO9׶jׁwt/T&J$NGp]&fz l?^j01ߩʆ& =;j8a?Z.0.Q+XԞZTv*q.Ek[Ŵ`SH"4ekxw@DJ~=U} z(.ϊk4/r1wm/s?5lF¿l|o5g~g/ \۴UR=+-Oa2Å۰ܩb'wFsLnb(xq:Hҕ|vlf֬*VcC3-O !u4/6x.(΢ /84M_H,qu~5[J)Ο2n7y +Seʎ P[`glΥwR8 z!5ku(MX.gkt`(R7=A{ wkE^u$ x[L3pϔ"Bk\YhUN.^Q M2"ہJHsEl׫D݈`N$e9e#O:j[X_Fj>. %1۩Q ƽoI0HSj@[o=Κng+EPt"هZUl)oj2؇Mk<};?&J;Pa*é,zTFljl1-A74E~6OstI onY\3|σS_5@|gc&i7QnNO]Y6\TFCcL.e9-l 0U3RaC"|J; gt"QgN$! jۭΘIہ͖; (vsQZtӧ坅)^!np$BfȯY)܏D:lIi܈'|N.UF QЦ5ʫmQ1)y(mq^Ӹկ몥ht})P-#w?[Ƃƈ~{W)ذ+aDhWZ]S%yI"}0ᙩvM>ImuV)F `Q^hK?*a t7!DqfMȣ d|T0jƒbrgr !IȆr^v*ml4z$6-ut5c?νQVűbQdynd>~TRd oE1 p1":旈t#q|eor{tSCe_ȗB/>}T;?f{Y}Kg.K1(Nx?O!eӳD(: hI[l獉wW%T+^}W{ӍT>xϕJ(~*G8eJY $*HE0FI,Aueҳ_ZvF}($كL&7L46V2mhuT8~tD%K܋ N֢X/OJ`FdkHN9nP7IB9 +}O-?C9bVrDa+:mhjZL*rhom|3_bN4{F @/^f97C>::)cQAZo sQzl2b5 " `i^3.D{$pαxQ'W{XKyŨkɩG9^ q|VEGN NJO.qϸ+ƻMj+9JN TϹ/t u1yuiƑu#m~\-x.pasUzySÝFęSB>&-؁i^]m;CR{ q;J],ZxoE~Ӱ CfwO0Na :a| \aiw+MP)i9 .}}B&k!`!Qӓ'cd0Aj".#|X@?@]:Cel|NTx9 v=o/HZ(En5.\mW^<01aW3X] |e>qzˑ=ax\_G Uqz6BtQ[]%w[bjF׈.ݫf!Մhg >`h4SG8x,g1(I*a&΅N|[~ >HwpLxx.'>2d~M ˜'kCj6CwiTܺ\6;QִuC.LG nK`8J6K,-ePY9KVaXrBXLMM~xbL6R7DvUH/*#Ũ{̇8dM9a>#*HfU@\mN5u$77Hyq='ՙ`6+`v%w\W{K4ȃ}J= E# hyױ6i&3܍Ŀ$8nk"7GPF(VΖ/ `_0fUiDž(tD0,Ufm;b!_~ޤ:īmH7%'ӫœjX\SBAN{[X󙵷\צX⯣[ 'oԋzVh[G 7%sI$pv]U+]xLfywxr9.>C%Hȳ8kXJD&iM-?%U=NNSolSK4 9_[O/$~ef #nV""щp;yY;F7l2[ev^':͝5Jš (Nb:O}dÿIr4<}H.9M4,v͹s :4 vuړ(HhꦎR0L&5'HcӆyݬԟQo>*3k5 gD.01B%ibs\J9A p!A/|V g.*(DD,p|fMȱ|PvN3 BB/ƍKb[aU֮ZȢ;)[zT1G{_Ԫ+{W_u<~a5!DC@/+BED 2}F62Kt Ʃ<+WlTQJ1Z rA4Hi_czA,vEÆ{ۯl IxiA ^IsUFymv em[3& xc #/RƢj r8p5/U)sz͇6Duw]ž9S,Ewݓo_OVӛA}OIl5{jJ^=RL_q%B>Gɕ ģ6b4U1a 9vU G:߯W%i1,!g;='[ټﹳOpL}n|RC uI+#TݫF_]ͿBׁ⮴f Yy*礙K'ͦ$YHO=\uf]BH^uz C 4qY+~IM7qԣBHfUBqHZ&LU9$㜿Ѻ?GNB@r x”Ջ-Vybãfv߃L VL*;<(nZf4+NYy˱DQ5}VV$Q}=N&R!qzm4H ^J~?Xx&ՇW8 hHʟx45ψ?vUC=C=֭ *7;\rߧ5s[Zt:22Lѥ-DNmJ40tkɃrծWV(쑒ḎY>2Jه örvoF~S❟ຨBUo)G(S}C3SW=פ'$b;-NDՏf ޲"/jR| (b kZgBmN Zτ.YaxE z·!6UeߎR\;EٞFcl|h";L?aLt8 ӳr\NyxFj#A>ĕI`q0Uk-/"MxJ ~&ͤ)X%ҰI:9':օkH=,Pe/(5Gu;`΍dBJldF1> endobj 19 0 obj << /Ascent 758 /CapHeight 712 /Descent -258 /FontName /PTZLPN+GaramondNo8-Reg-Slant_287 /ItalicAngle -16 /StemV 75 /XHeight 0 /FontBBox [-177 -270 1128 953] /Flags 4 /CharSet (/G/T/U/a/b/o/t) /FontFile 20 0 R >> endobj 59 0 obj [793 0 0 0 0 0 0 0 0 0 0 0 0 682 812 0 0 0 0 0 0 0 0 0 0 0 424 535 0 0 0 0 0 0 0 0 0 0 0 0 535 0 0 0 0 332 ] endobj 17 0 obj << /Length1 908 /Length2 1416 /Length3 532 /Length 2058 /Filter /FlateDecode >> stream xRiXW-+8R $ ( eȪ%/D .e % > adӂU.( -3PGS/NXξ2N{^&9n"kbÇson)E4 Q}Vq>-8rkھ湛 8dv9 KČBzS9Ip//~AP0 {RGM¸V?$wM$*O1Gf$w1#?A yS9ލ4_7.RK"ⰃkBb/hܻrx\9yO鹺LQ=[akUǴ_nd[uy_T٥"~uHg5Uiy(&{-yuZŇp^Jū'ϟ,!ƈEIV9("!ޚ4,fy8[A{r૧jkO>r+YrdI_dhfKb^(u*ȑfdo]:P ky)1PQ!wqpC{{KngM]2oQۢk\ _p SK3_3,^ij,22][p*{?o W; .v?+sWnXU.qc9o|moYB[Ԭ>`s=g3r8nUI҇E]v9u&˼K 5(us9-rS=54  vd43t,,<`qM)+x}th]tjsWzwnÂvqJW-F/#)O֔\Xݐ!Ho6%;3 vcqҭAQg[%<\oSM'-)\wi3L=x.GaU,O;B;4p`tcDS< O0y0$ѐ7S:q endstream endobj 18 0 obj << /Type /Font /Subtype /Type1 /Encoding 60 0 R /FirstChar 43 /LastChar 93 /Widths 61 0 R /BaseFont /AFLQYI+MathDesign-GM-Regular-T1-10 /FontDescriptor 16 0 R >> endobj 16 0 obj << /Ascent 0 /CapHeight 0 /Descent 0 /FontName /AFLQYI+MathDesign-GM-Regular-T1-10 /ItalicAngle 0 /StemV 76 /XHeight 423 /FontBBox [-13 -492 946 753] /Flags 4 /CharSet (/plus/slash/equal/bracketleft/bracketright) /FontFile 17 0 R >> endobj 61 0 obj [761 0 0 0 480 0 0 0 0 0 0 0 0 0 0 0 0 0 761 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 418 0 403 ] endobj 60 0 obj << /Type /Encoding /Differences [ 0 /.notdef 43/plus 44/.notdef 47/slash 48/.notdef 61/equal 62/.notdef 91/bracketleft 92/.notdef 93/bracketright 94/.notdef] >> endobj 62 0 obj << /Type /Encoding /Differences [ 0 /grave/acute/circumflex/tilde/dieresis/hungarumlaut/ring/caron/breve/macron/dotaccent/cedilla/ogonek/quotesinglbase/guilsinglleft/guilsinglright/quotedblleft/quotedblright/quotedblbase/guillemotleft/guillemotright/endash/emdash/cwm/perthousandzero/dotlessi/dotlessj/ff/fi/fl/ffi/ffl/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/hyphen.alt/Abreve/Aogonek/Cacute/Ccaron/Dcaron/Ecaron/Eogonek/Gbreve/Lacute/Lcaron/Lslash/Nacute/Ncaron/Eng/Ohungarumlaut/Racute/Rcaron/Sacute/Scaron/Scedilla/Tcaron/Tcedilla/Uhungarumlaut/Uring/Ydieresis/Zacute/Zcaron/Zdotaccent/IJ/Idotaccent/dcroat/section/abreve/aogonek/cacute/ccaron/dcaron/ecaron/eogonek/gbreve/lacute/lcaron/lslash/nacute/ncaron/eng/ohungarumlaut/racute/rcaron/sacute/scaron/scedilla/tcaron/tcedilla/uhungarumlaut/uring/ydieresis/zacute/zcaron/zdotaccent/ij/exclamdown/questiondown/sterling/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/OE/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/Germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/oe/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/germandbls] >> endobj 14 0 obj << /Length1 2630 /Length2 23325 /Length3 544 /Length 24913 /Filter /FlateDecode >> stream xڴeT̶5bݝ޸6K܂ww@>}~84sUkUhLb@ig'03+?@QI AlL@kw3UNJHE%m$@~ ur#RdN@Ы` P~cКn`&s3W5 H" ;ooqf- Ϭ Pv|h@3+@ ҐRȨhj1pwqq M-FWdY35_vWSbcrQ2C ' vgadvw3;]Ӵux: Oaܝ, 7m-Nn߾q|o~/saz?n,s2I(k2ihKH1)IH)kH1g?qֿCK1sEUUEdH7 @G $W wBWZί3t71srwks ,lnX:w:))IKih)o!$<<vvvrpvt|%{$m_ fKkedKw-'[WwYVaOV`e~ y`;o"D6u^Ot9'+g߿įLW?mHĠ{=.,@+Degkg+#[9:xe͛Vh_:[7i[/-OA%u{~ϸkS7^{ VXom]5m G1rpusq@ 3oD`%OX.w?u.'u~k%AqZ?. G[gDlX| |g'1+ۀY^(w?W_tld݀q}-˟mGJo"+?~ ,z7yMoJ|.7 g?^SjװzY/_w /J///J////JYW+ k^ k^k^k^kd37 iuh1@",qZAK?YfgkA@[_&Jf`Q*#?_^//t<l?\-u9_Oſ?@\]vKo(*xC WXW>f5kd.9P8-(YQ( 5ةT* y=zRMt,@)UJl"OY+$[i%|^^|vGb)@kDSc UaEFϒEVl :al$}Y*iaCzIoF1m}N%D%Y$ @:g̚*Ԙ@Vi4S5>hKC|m ?3{Xdwba8+9aD[ޓjș5֯דa[)RJW+O< g3ȗeT7NۣsQ97GʏQy1|$n4KoWeT ޼Ru.۱{z$A24skS9FLEExw_t6_5 vRj |&x5PQu3iH~|>s8["Ƥf{jx?6\]p|}_pHb17p=qȚ ;+ePCr G8&!2k92쎪|ڼk DS·F1d8l%t8*i&H1'8Ga(3,Zy صx!0-ֳ>7_8BE}48L]}nqw,G\իwU211,}^^T^?pQr {tuO iXNqP'LpÎ#x¿PsC0\KPG2fh"I1ФP ^WKkX~s$"”:1/[R4z$xvV ?WP<}qŤ(QPފ:(AvT%HQ0|zrXM&=5cRnIfw^(X! ǀ823î@aVfI֕Z !5 y޷lTqij4%7ܿfo㪉m7u5Va8燹\pC4i?& 2_PcYge _չPܲ_Ux^oHzdBewboR:l7wjt6p74}zb)AQ:&şߩP'慦p%Iqc*&WO-,kDBGUp%WhO:њc?a&2񉦧 3 NÖFH.o`E"OYA|B,B"]A uו(^/Qae{FilzYi:zvҰo" - 9DM =ƙqT=\}nld5EoN]B=hHKc;3D]vYw'~G#%tsrQ&k[QX E;g%JTmeٝL.Hi 9j3{|%XB01%m_ I \nsWY)'S>?|eVu`<9*JM>ĞϠpXtθ=| 1Bh D w\9uypR}+gFC_;ohpiWhaE#N>X3j85:BqN~QpnBg(b~*6K$żg;*,Nkף7 Tv/!q"/rYiu*z{w4È |AÍKÜmTPv7QI"}6y˶84PBBo֭܈wuا_," y1qV-_݂/_lYO _X1H,!7XxCmU?6RԷY?z NSJ!h|ylcbE%݄ Z1M{Uah]|w%a#y;1t W``sA-KJ2Ix ~uH2aVLf9$>} + AR9pŒ-kU & 3\5$ws\ ols}qھ"\'.]O+5BwEiS~<,5kt>Z`Z 褴fAEPt={&JjȐ~uȬ-Ⱦ+SV&>pb+ \;\֞ba~9 Wb;&`ƈQ*T"G ĥpI678٬-Uyy_{Y >'4\Wai5Ìx08̷Ud9Gv&q4z 5ئ=ؽDvެ]>RZ5[,2'aNa6Lb+{ :"nhnV;Z6a[JiH1 u`<7gK649Z1Quɮ 7i"tݧN:"6 0g )TWw ?`D~.3FLz#\XפtG>ɁN(ᅡEPiWIQC]0j |NqOiwvNdZSTPUf%x}G{5Sm-s Y V4lO7hZnsV.VNnm jD-HyQEVo: 0`(1է~ME{y7B ]3ķ| b J{,Pyc4cy]W)an$ `~"COB,C(C &P< -V;Ӯ~?2V뇻YyRsTrFpfTZdsUSS $8\`Lc7rձJ&G=d.ʭ5ӞR9r@M@`[KTȑz`˙eWx$5J3Ϝ@ݣ_´}\C*@BC}-ƞps~sQhuj&SFHt̄&C(=>ekO-DЇ[xUKdJU&藆8=#vZ<7?TGp!y3#3?4^K P|Mb|KI_ͤΤL!t1*w]c9]̡>aRPZIȼPhD܁ t{EO6+~ƢscHq2ͤNNMoWc%]GL}%(W"s؀'jBz@N>Ds28ͥƗ9nnt,\OT}`HiEngF»4L`_cħUh]1n&uv`OW+K pW?Ҩƞ25Mrn@Y̖mɀ)8O=A'͜g$I1f4RW6g aRx+m@tU)ik%|RvX-^VȦCV5}|) CF{SNbHXPT0G3j7ZB=Q FX~_Jv8a]B @60̀VʇlI yɨ:' "oPpvt"")Df`-h6HN/E>"oyRC#9֚pGn{L0?$\?W"JO Ӑ3"AȻ *v.{]?$P#seI;3,2CȞwٜKc'*PxptR"lht }r9x`ȭx5KwSxih^S6W'fb6.RnڔHهDk|~ؽ]jtu33SIVM0 ڀ"B'W0U~*WK7I}azhG%mO]dEA}2k))aqI]*RXIfn8~ބk͉ՖWG;8LW#DqD(֢GL~RDI! ^[ZCOk.H,n;[6-Ff%FE:EJۛfd't :C2 0Ɏ1CT}ZCFLrD"3eA&JOOSg)I\e9iRzu(pkB7~̰ v/lBc6ma9>=a?ФC4O,J1a,))BQȄU`MIRQmVA~= 5_)mq0)Mu= "2^:L:>)__d̕˛$L3:Aytp?*E}(T#Fj}͕C*B9aBP(=p u < }VPi|ZIuBLCc+rªOwzyʆ~})Π,Yar Q9o 2GG4i7t uoPˏBc~ӾFo{|q: $o7VqHc_"iAAa\KZIlQ~H,x!tehmtW*(DH6/ 71ў(@;/(q$n׹ُ|vD3_ d |Km$y;UBg^|(.>+d֠SPbj y11>DLXv`&:,^[ĦDǻ48N l9E/#F UuWWj^;^}G5[*+Qb 9DBOH+:L6+ٿkz>n#{uҮ[s/·Od.&uD^ [b[tM 8zD#PT"0 : od5@ @<[s ҵiho#H\e(Eu0[D1D~tt8~aCVW=ooᵉ>pi^oCȈͷR|WT .nՈ)rH޿{(g;o<UEn*8]*lFM}bRy1DH K,}̎{qeEN6 GQq;-Xv'S,$Q*{6L{-fAs:lh9H6zTS4 O)a_MW]V='6}0ҽ(>y#ss}62Pa꒸/G}/ӞO݇ihdB/i/ t;Feؖ)2S;>ɖEe xZw7~dDPhOk_P3XgUIB\VS$%}җ) ,bugܯ[/"e"P0㨭Xpf2:^)ҫC+?#yeDpB㮐1h:!2n i_&0lk.⤷+'1;j@ IыrmSwZA㳖ªDcwpJJ-vRoF$P8ShaؐpK ,;@EАe! t!(cr:өU7;wOdjJ_6udSlrdGb~5 6jR8~KS1Nrhx?<΅ٻi֤bK\4W`$^$W{Sp[!ˠ,<>i;_IkhYdsWah^)C)aǑ"}+1 (?Q©BOm]N'5^mpaa <˧l5UHeWfCj 7'VY+sÆ੠A>$&c5ݹ*. ;\7`T`C٨'虺>H& @W)P Wd:폪KFTzͤϲCi7±2:gڧ25# H'~nn( c=eWmGSWY19x,tL_& L ~xߞqx<7Bc\qNY<ў_怈.3k&o T ?O]h?"eP%}o m%5}Eec':RP_K.EF F⓺j>g)Qd%=*F)vrcRUa ucxBAdHkwvcPW5UPZzs>Ӝl~ژù@i+PʕxkK-"X푌gYC5vq9c|ô`5INWvHp>}~u7 ]YѭVdsζ1^Hʶ&$H$bg==e2gأ ޚXT%mMK8LY3L5v7c7>:j|^fcWE{uagh&ߞ F۔U#HGQw*@#B~[WGbPÖ{ ;.w[] &"%)W5sMtJNU`[i04=%^ZB T~s#sFֆ uzѫGP.:$3@QNc%e sgs`Y!Pp}2nBǑ2d]>p&i >`u(tȚp>dtrs0^(c0 N`qS<*KE|Uk㙀e xQ[&\LǢ{/1J`F3 :X4F㖾vHz)2heEBtjϫ+Tg̱h|m|ȲY(#6M "mFz2 A /!:Z᭡rzp\OTc\1vZO #ϸ38G)SKm'•(oحQ 42_$ ;u{ۢur ̌GYKS^%A!ֳ?9 ;ت=\릝HtKMV0Bv(* [5V8|%fTikm#~lI!0qB|8|zAy҈QЃנR0|V^QjŋtpjRn /WHLC9^xcvWrKJ~WJwc|_ _㾸sڢkD( o!O1 ds(loLXsh6 g| ;Qb[Bچx"(k?hS&_\otKQhIm˯~ u>JO9e5Dq >d;_$ ߽՘<+ɍ~ u1)Hʔ'P6bs;'9w| m*sp,`b;-k]{C=\eHTP&6 JFHK-=kL{,w~gE%=JO>roGStbEcOo TfޅtIoi`QJ$y_S&uر,g8+M5q7YhxbiJG<^>goτvD8$P0dqhfə8qSV7lފM_vfxh0fҸ{ ˍEl)3[>+w<ԁ8 v*[Wp XC.Sii]a/*M8w߼q:[z[1B%m&r0?6 G'm89H(?c}RV@]'a&eL[&Ud D(,)+]eP<ql𺴛YK{yyèo r`lWmª\>#Ks{+Qw9 C, D*fLa~LP:,<3~X\~w:i.b1 KqT*9yI&N#@NJ%6b[N Ұa5&WY9b+,z㛊\>t_ͦrsU(T4'.o>B_&x=?Rz*`hפ&[u SD=d:bʺVq=a(gE0F$z-DL/H|g`1.fglXY*CۤKS% 4ʼn谛:'3H< vVܞ$|Iğ ({`ҦԸ\R*{lkghG;.È~Ǚ&%T^ G,9=d@$+hi%r~J5 OT0]+e$y].ri(~_oֶA`mKqrZ?8cc;Ǡ<jp 8gZ,pTs;:vSwR9Iӳ$ly&7o{ 1sbf7h[m  d%l l|jBfljsLDu}22]K\Rvֿ`0sNEsm,,#sPWv{tY\"9NOݕ&pPª1_;uLjN(!~|#x]UZeC>xY² H 1 :eD0Vo?3cpE.1Q'j[OKo̻y鍞nlfY^H>93??u}mxq̬,O=V u;giÆFrXXu$WR9.UԦevZV[];Gm7 V6qCc2qu4\m =~H¬76Q$ogtrywA--m$G9k:l?A%):>_vU~_kh('6ͮzO&q~¿ƠKTPA50Yɻ817GL^>Ikz.OgpC#W%[ T ε_/h_ެi'hںvkY6^N%LӑWij rBᵡ#X1l8z˅]5x)+2x0Ap?rPw[;o]]iF ) ,vD5xh׸bU*d8r-q=[86KKR#7E\(~[w7J.kWr f(!iDSz=޸ʹ,#F-1—ӱULqIJ9񒦻}@d)஗:Y1ͩ.~Qwo|V4^7UYRY05RWײ pɼ}GkC1?$O5|{rJkcȺ޴hT_#Y~ ONlUO~Hh7<|AKě\ҝV,1⫕npάx/] + )oL?00hF"FO_UQȊa+f0I &X: 00>͖Ʈ2Y) WP۞r~8-Kx7?`aUyn żUZ)}XtO,}f5g)ʣ%[aUW1k5[ndnp#EYUoqMЁ$;'ݹ4uDNP=GCyK~O˗]xl׺{:ǤM/Ie2$#^Sj8d@3n@03uC :j6*toPҰ+koWtwo݃8Yy3 K%]ZJ0† Kf9M$P/3)wLJEEwkK3xZo Џ*ЪPdw-#2*ng) r1 *jXQT>/]#*UhLm1T  J 6[v:'p0A>; )9=z;]T1ʔqP$;*PzOWY"uq9l:Y^sgnR =c.^pH9zF?_u%aJZ)da^%<w1% -vUv%j9$AfR%fעEq(jUpLc^/,b W>78-va〨˔lZmˤ܄w¼47@ y{m뤌]r_&{<ׂґ^gjqTnF)Hg;)' r%_~u_Pv::"PU~o-lݶ QěiM'9Aře69ykIXyEH2GO5цL]K n1\`V#MT1N;B!bvx֦q_+ UJlf 5>ݨ!ouE]Io\ ѕ1]-5Wk1|Hɕ`/s{3ALMWxJ&Rİ ,Q!ïD PĊXJؖ1S HiC{H] ӏ9o6v:UP 7Z4x Lx Aq ĬK8q9\U!0ʩkle9 ضn  &h*Y/ǹ!=OqJi}FiƎ H A9)SJ:JurC@XK+/Xgg0c8svSCqQIV/ t cEU:Q#xr_-~jkzHBHSD4T\2!-!q67,bU}*&5)/"b?;A4۲e ;uk5̈́sʖ8qb*/HT}Z{ u#.-@AiSmZA IYna^lD-!uQT?,!?3^@!c{,?=POZ*59^H8AUȝSam]DKl'aٜ3+`C{s)]Sٯ~eʘd=@|(T VӤ{u1V "L*Cps/p^t"([fMfO|?;Uݪ]cplBL^UppyWFӌwf|qDv\%yrwrIB}*2]PY'|/iaH ­rr;%yGcbY˚FFT05LJ5vTÈĄޣNqks>ï0", 3$JA=;b2h/6{AՌ_̟{?9;IhŪs-O؅xڧyFW@(&[y`$]ᔺ.m*O9Y}u)>?3 '$h@y|)GTzq :rhؿ_Ѱ/HQi vB`Rtnat[O  fj$Xr”UK69ZmAՄ#Y e\k:=R ,;HR=VЋ~Km\fjMYfӭQιN@(cp%C i}5U%ޞ+F WIZ!2!ڃ %B7OrQ]rjZnc{PX5gT[]H7]0i'grIFАe';d%S=qܫWv豝% (f׻Z|gyQ^5^bRNcBPM%!|Lsw:/PKdJd5x&r _K&H BTl.e+c ⍪l э{5 'byQi4O3mIz WĝwCle( 0dskB) fKr]Ϣx'#N|(#`#'[pKP@1-LҼݜGQsq%NK˜OKTDG$0=T*=U֯7FjiW>Cw% NǶuc;7mްcvttc۶mt:dYjf79S?]STOYDNZ qW8ܼӷ_ lR\"<;5$9<-'ΎP[QJ oÅ2# {hϿ6j/PF+F⊾:u w)hnذ !!73B]^'`cB4@0hh+} ֑VGVHM{D'A15K?{e~vIhe4:CCic>aMDR&&%)Gg8%z҉ N`q835%:@F@n,3oaSch:ȥJYo%p2Sh6ZOHpXoͽ,*ۙ%X.Tճ!N^9^ݒ.`cY(g,,z[YԷoefݛq7с[E{)60(mσOjwycUގL5ac{zlH组B3BPBEw斺 9Lx^rfEkn!d;(XE[a1I9d4HGzx:w<)g!)- .?"cFWlBn;ފ_._z pwAdG JH^] (϶ϸ} RVl.hDj:E|,Ɖ6 GVJď>[b9AP$nBbe+0P# ek_.:A?hFu?[@g[t@ǔG{TCn\fuUA #nP!1Kmp6>w$ھ_|1aRj;-+vMLy`?cX@D<ЗcEggxƜQSy;3~I"5jey٪g/sykEGRk5d̩ڛAqu.`|"do=2 r\&Cz#O ]T)ł6&oMhbv7np}T%͇T,aY5f~v`ۋXeLzK) f~8QuMM~1$c s)eYl}J!xfEj5n`@j| ;鷍Wk0@#LãSv+'.搮Z9]f5hn/L `W&@Bhۛ^ v>~hN}'t#}H@ @p&z{z|Lw2pZKVˡ7?"3{tnρ]d3U8Rş(ԅ:zq$6D/ PVcwQCb)|*@cg6n/d00GOvv" ^~:/{5!\# k}1:ﺮsal <F9LOͮB׉"pN0lή<۴/L~fbg\d7'ͩb ؖ .Vō"WL;kt; =È-ҘIB: ךly Mǭ|┸J͕7֎f6'ޥV܄)ȂlJ:6EXt(8_anbAnm( .%g 'Ew‡;VR:a1va/ z9^s}/^]R>rQiG{M7b/ᡔɧV AĐXK/g?Xa98T>&C[\*-rY)UԻ s_CPA#'&w[3e$e^n<¬' @h82%t_OW^=I#¿MUߡNUGj9 p2&w.z.Ұ{cWT/mIFFBBۀ忽麑 \ϟ4긴Zln_l[!?FQFRke=t3LZʐUzLl={q H*EKs|تT#;ʻ. _az&>a~k9WdPjAx`re3܊ۂ@0شFPwTd*Oh~"CW^$_۴!vS};{=MV4z9tibBzq/O~E/x!oE>?GA5 WҎϽ#ǏBNlQcuL _xʲ}d];jL> P㌯3BvXC%;hOIūq!c-hKc`XUzNFdeI7ŚMS?w?zu;Va KqWeb@U4Qjҩ0W/Mn-r#b%9%1- Дs۱ .ol o YD/һ%ٌڡ1 jsͶ R/+}{0VȺԷQXf\l>XkE!ٹ1^k R&b#ػC),j]f aV~Qf`bqD)`P,_p;ۭfCnt[`<2 |!UOf9~ ^٪SVyolZw'ޞOʱFA5f><ZIsm浑y GW @'ΊJp+sF4T4nI5e"lh.z' q[ Quwxv|؇/rh;da6 u/p@Q .p#)aNL\ !)'6Sܴ6Knt :ӻS+@xx&_ҽ|/(V0=n7#6~JywD-ܯrJ^G9ISW ptX䷈rbg)ѷjjwgayo ]s%~N IJ+XJ88xu !dx 2* w!Hx!qHh*J-SA#s;jQV;ߡ߾_D Y.6"Ơ먮hI3(k-Ahhy);?g^EGɄoGt)Q×j^rQsjexrΌ>׊GD_R9[14{}(-u 2m̒kחJkR|Zg25( xOǚ])}E.IT*)HN#6}7Z&̶?VJJ5팶Z' ʝ|@x7/.)-?vp6*t Μ;ƿmqΆK2JZtBdW#"jΡVދY$E AՇwAtKxDFzƕ.>B4&_Bph&y/ghZk #E)cb ]P$5(T\u[ ߦ #xYR<ԙޘs/xK8[zᦽ.y6>":&H1GiC$)cS3\VLbIֿ$vvەt1GFK1q>\T&dz)ElOOS*"ߛm]P]"\d] p9OzZ {B9I>̀7bj&ewɖԊEsWr,,O?VunJ^$Bۗ0E pNoW+r&IvU m3518O&#~' sVq<ڛ3|/гÝٻr݊aX<+iqPiv^@J󠳯rgk%pdj&q+i:uL@|W6GŅ{m Q0{→LoXIl lԸʦDej#i˫ v)grUuLnj"\ra_Lͫ NOB/՘לrRNQcHO1C6 .b/;gM,_]oZEn3(H3Tb sYd\0y3s+_зt'a7Ԉb +ZzԖ }'GoMn'V"q) OڔC4n1%r  TBpy+̿+حs,h0۳<1msu`tcvFN1<"Ƽ Lh0xU A_S rg` lO?76eNY3t cCiz8mb@PsN+zD<#Il?BY܈ {y߻: cOvD9͇pՕhdvyNC}9xB?}H hfC6tYCn\>Q N?Q!ܠٹ(`*l=o9q׶b%T)_Bo6LgI`&J ԲBZބXP1.M< ¼jdmXɗP4+-EMizRAy c| oSI Dpq,zgZF0=^K?~k Zy;dߗ8Gc< dYJuRCl-i O?*7N}a}vPn2Mtۛ:ߎt49\WdCLñ٬?Z]n+ULh V@j%ͺ NCf3eԮs:19-ΰP6%i@dIU@ :gWV0̢^;{A- ^x#xN'{3U\ٛGmx-jn(3$U?.z0Y9Tb3jQrƫB"iZՇm= UTTc#zθHN=/E|$W[},Dj:^cP\,>lIeY;g ˜ڍiA psʛV.5E⓭>n0w $gS1Ń>pԯ>ps3Z3Q](S蝝rGqp-Vn7u=FV(x2I$ε=B}K +17̳2( Cyg8} o|5YL XWz&f9 h\`pm_$_t] oRD Gm 0%[EymчډWT{St9g:GP]&T=KSSVbR.)rP@)b<6ՀP@A}S"UH^jQo.Ȃǚu=mc$SU7W"1úʨ|"-!Ăm,mM,KѵϞKSpi`YE;e}G1_{~x_Ö$uɫ`aK/R "(hHg,Lvן8 ]U1f 2R^|. K6Ɛ47Gkԓc~oؗMץ>Yt~z$+Ҁ*|2B^] A'13*99ΉxֹEtG8,s&Ѩ8:ɯBU'N^|z ǁ/;v`X94O3O6-w|fPp^,\R;Jc{x$i_wl%1yI 3{˜Nk˾p ,E~ j[VW׊VA|NKWK"/ T!/ Sԉ{x 0GWj!+~=ɠqz2` Ul8-\rfpic| $?x&Ş߶nXh:uo2%e4.H/C~5Armߒ\aАEk:lM}dL1)m#J1Ї'@FFK:ʬItU{)YAfNCH5roJ9ݟ JtюQY<ȫ5Uaz!I`o8Ġ߷lW)v%=[rsYe_"xdǑ|G,9 tox?$+9;_5 OUJr]%4i1'Ή;HuU)vq-Z i+kU [oA(ju]߱?pF足iC"S; 1"OaH-r];yZX#3SMz"ALRjb}| {bkKoDtzܲe}aUxdp> S> endobj 13 0 obj << /Ascent 599 /CapHeight 599 /Descent -222 /FontName /VXQVCK+LMTypewriter10-Regular /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-208 -316 731 1016] /Flags 4 /CharSet (/quotedbl/percent/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/equal/A/D/L/backslash/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/w/x/y/z/asciitilde/aring/eacute/edieresis) /FontFile 14 0 R >> endobj 63 0 obj [525 0 0 525 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 525 0 0 0 525 0 0 525 0 0 0 0 0 0 0 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 0 0 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 0 525 525 525 525 0 0 0 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 525 0 525 ] endobj 11 0 obj << /Length1 2026 /Length2 17301 /Length3 544 /Length 18611 /Filter /FlateDecode >> stream xڴePm7Bpw- 8hqw-ZCqK}={>g2ɝf2"SQgp4J9:215`+I hfg X@SW+j u쬬HTiƳylhM*.Lf.olH"YYm1f-``cVd(9zAZGh 4%jʚ*toݜE\]CS !! j155|j̀`+F7?ꊒ*l,r܁`j vՉÃŕldW| #ZaO_n`s @dtpѕr[Et7z1mq a|OQ?>4ԕ5%d%%]=]quclmW ** {S+-IWSW7_7Ђ?*boz:xOsG?, ;_4EQ%Y)IuG Q >/gE$,uA= [\^,{l=|_ ?%X9h:݀Ty#!ft52[ |}v.@_%b݀>g'BbX]6mk.`[$bsitohĢ6&rS2ϲ=)_b?Q*9Mry-T@dYWӷu5/{޷(0q7m.m..nXzWo=2E^CWUE_ +;7 6Bb} v..t[= `Z `q2}[=;?l"}_foob7`X rX@o 9 9r|s7f7 `G>Yq?_Kn m [o"`>F^fsabKnܾje|?g#-}w4Im -,)|\+#1A/E. l Ȥ.tT3Kt(֡ Ʊ{YoMP6S#Bb T\ (";-ٖF?>2ܠm5֣hl鹈AI8 m'D?g;.ۍǐsrQ1J2ah{m6@*ޔuSE/h|#0gsF`P.ݼj0(cC/0 z˯Y2I`Rbڬ. eUy*qބɽev$9~Yd%sN_)=谣~3?dㆶ슜ڰb.įΝ,naSgψGD؊J^LTk!ȽM˓@nk"JVtF|`u I5|-)P`B"UOܑ$8fˢij*o;Gr?)̟ǔ~/)!&94W?X2эP ^(0M13W#yؗȦHm4:Id9S:g[uLʡ<a3MeyDn WfYȾ]Iˮv5)d.n5.‘ #z:|ap(z >tGIܜ&nbuk|ߟ9CNbl J ĠZ}ëB/&% [F\+]8 LPj<$|uJϹR]1I{jҁ^鞺@k5{(bLE?␰_.>3AoY/0[>9-ׇ$u~ TgڤFr};uf\9򨀶[~lu>C0' VXcECE?hMi $qYYlx~Yc Ra:6ƠbFe!4Eq3oe`m?_ p:mRYm +zvx={mQ ud2=9;|l,|d{}.)'^^J[c:/<EgBS&ȡ}!g#}{=Rٺ)Z{ݟɑfH# ou0$oML[s~g̮wbixL;{Ko3_Ǩ ' FؽH 8$R.+, ,qxrUO:!ԁ,ij4ΰղ3Ĩxaw8۰8m((I^*Yz!rTdy8U5Bf2zZ `H(΍4ʟ}5.c/zt+ jO<Ά9:K$Iw$]R-o!G)I*j-Ia2Nx^~TC9 .x]vI-e(D]rGۏVIq񟸉LKwwרijHe _;cֲMӣ*wǵo2|?@wcOM lMn fBŲǣif6ybԮoWQeP i\e׋HU- "a0v C8tٗG(h { "&5@zA8oPHlŴ8]i)ue ۨy#~qkä̡/GW ('ByʑDi/M9}!E*/+X&huvEqԲ̍oin0L:Tlvhk'2.K~g棶ej'TZmdlT{:T@6R0+|֞bS4He_Kqns+Q G`iV)ܔޝhˉXW8`e9DF8C~ڠz)RdrP7,l8*v-0aQѵyT5.[(D{NG-;,=BE z~>e_9(1D>84V0AcP.g"Z-AE)1D4afgԠ!7VOchp}pDV(.IrT)VU[Gu<Xϛ8c bū7~NۿԈD;@[*tIl ~y 9gt$U…Ⱦ£u1kc.|r N]Ɉˁ6Zb#2IޞR8.Gn^oC.L"6 y'q& dL+4y ׎~IW $5yvoQ'`24ciH:Tqu3f:CA}&=qR}n垢awe(#5Õ$O&Aw\6@q2BS0 S{TLz\DZZ 'gpȠ8Z$-u Z$|e^W.Oɸ[Z;,_csӒIb Qq/b+4Ig(ꗡ2lѺbˍbXIC:DGeZf Iq+,CO?Uf`RO4DQfu/_;@5{b9t(PMSSc 6'۲QzDӕ |0 STRSX]Σ䙸R.U ?%K`/щ*Yrxm<T%gm bYIWnB`;ϐW)y(ZڳgPȱlXOd~<$̳[KޛB 0,DjS{~[RA1/ &J6ic]^2 ]u@haFv(FwhQs=T{&[u0z{nǕoLoW.;n,0 ɍaϏA_}U$۬Ѱ__>}1JlwQ{,P?-V:T"%w%Xljd7ՃT?f]$\P0R)!lZEŚ E礡QsP^ci]K ɫK=)efZjX~ws`HL{<"' a;ð~XJJ/i%SAbL%Bfv>1G/+B :R?}X@?n5/QFH$85iDCF׻fKl͛7K늩N@"iEhpVzNY\U\E$I6~S/AErLq8P3V?R{m_]}s)?(yA~o&sPrFV]xnC,V:Enh`֕3TژP孠ZiA᧚Zmg.9~6-_hWL3i)-K%%qy|(p.E^M3TFbfb$5Z飞dr,|[ۧeS'!ZPƬ_BfG`{\ʹ-lۇTih2 ?kh[Lf8->;Gc ]29Y #ĿHrxA[K 0jn!g!5H{5Hf d>Џd!oB:K-e ń+TP/_Fhad"V(t3FFG+U7ǣAO%#wWSu# OZxOjNnZSO(YEט}.TSu{1j?{/V-Jf[+GOAfHr0G^Hyxd9}&I}8D>M8 [/R @MYd!$ +[pܰDl7&x%qPXnGiu +n݉pubR5 |E'/:M{IG]{.Rb*ADZ+|L& ybqB(^ $g k6& f4s^).j"xTD ㏫(]e$JtY)ɏ%NC>bǓuWܔ/e4*7 NܲK'^q17bmE-w mՑr"AٗY/|!^d[$BwKէǛ}:іYw\6h?Gy[>qtƏX%~ Ws$3>O"+?ԟf e'0|md0JcЦCo嚜dQ\3wj, st1vē~">SMtJf^y7,alҴ ;)TyZ=c6*{j^OI- I^=P*h[;%s!{yDqJNHUS#ϧ6̂{YVOX0|1rf[il6"# r8% `d1 x's^ɵOV./~;~NELoTw^KbuYU+x4/ zF2$I.[MBgBu;V:l}- Py],P^x=O1=h,_o1C ԞhUIGqtLN A?I4W>[S;{rViaHchLգ /)+ ^1;qKZ]6|wHIQʨ8J6+Ld jU0hU4k5s4~Sҁ(C^7B!@$ ON;G8S1||G6E9'^-Uo|!J`t 5SvL!=VG]f^M㸎 VGbEod%kYd V6$RYv+Ms0SdNjh _oƜ=Ν&+4Hc;um.ž׉#ۓ)Nury ! UesI UG!Ƒiy)e7d>:,I6>5 jbr*EYL,+y2NtSF E:J r񇣶Y%}p %bܗ<1+5edt¸ 5[vĤ%yVixQQrҥjE(y0xדN8()Ǽ|8ʈ!d\2èеD5]Ia 7trzN١P3I>7y_Fƕ9P\3-/Y85QkD40™d/I<հp[%)mXFS ^n r~\+fF,? c<7dW= #lCC79Ci Ysnu 1JO5 b1!>=k2'PʣU" r1tƌOBUg顽(Nh5]EGRD> n  Eص)5;"[W6Jp@ AMg6ϦO5WOJ(-N֙ :mGCϦ/z~戃$ľ.*b TΔN=E5`)(Ȝڶ B HbCu)@Uo?~YBv;}+ʆ4B}ϕХگ[x^&r=y[Iر|0tf%U=^TѹϿ{Jy> 'j9͒G%G= I[sd]vAj}*HYՖ:z[ڴqS(ZUϲz'Qhh+i鵵ȸt|O'F&!c/*nmM+d{)@3딴)S2rŊϜa鬇,Bm|rN?yS! jwgEsVr~cqkZwʻe+\\wB%UP̕#,@|6Q_/^Mr!7n NXKA)U"wq]K8"Ч YXFʌ=3mrI<)ZCC<{b6'EGw\w"jbD^e`{^Lm Wu)Dgq"-sPo)ϻE6G Eknɝٳ *Yw-Џ cfB3jɨNxYam|Gd !JCKųG/~6dj*cj;h@JY xPzr6K 3ʹ`blp074a%9}$_9,kPMkNwpHWx Ir\fo$X%{[ħIvDi6|'EHD*U/'idB5&<ʂti !+o)mR4zP+hS;tʥ 6܊D |@ԞԳioBaKȕB .b"눙kKɋV8p'5j;-V*dUi*ǧi-ߌ!N!cƵJ;Oi)M8jqqu+Gh>PС{Uq$؆F2Pƃ!#.la.2S? @rմXgOQi?:ry"wv_VIa&ܻ?u4;Eg'8=Dt'**>K8([dUa7r)o 4c!SO5w:Nfuyd5pnPedq0|37БnmvJvU@poF:0'õ1k;BYtJ"tN#zwEMbE9R&V +Ns sTx0צKb->ﷂ")(oQy UԟZ-۴s0 2A/Hh>c]WkƎG?deggYvbb3t#kr{nMcˉ؇8Mmbq71& r'Eu!lUtaɗley3J.X-~, Cӿ}X#݌jl~!)|46B jV#GaM7k>[cW җϊ3qMįqӈā휮OXtx- ωR6i"g{9gP}k2,ޔtz*a1+^N]C/ ;xF}x2T2vv 4Bj`UKy./\E oCOOEs!axO'ZOuߔ!˦j(xlxR? kbE]zd5y hHQ*~#X:.BǸYMq&&dQn]" R.+&A壦(L)n'/öbQxM b]SՂ#?k<ʚp[B j{w/ -ނ)~!h_j?I*_ʨOìT˒O7J`FԲk0 b.;2S|<)Z2 .n~8j;PKٵ R\\zk`V3#~GQ C!.k;6B91N p6D8/{0Kvt ~-kz!nqNq.Ÿv9/'*Jk{"R8*RoArIu&]*v7 vE"8#ʤ\O$w3dvBd6Kkʠk UV%56Ð9iZPZmYu b~@Qʑq&m4FfBj<\ȔKK4CXE 4L耙)()"]9ܽ6RR˹I+h^<2 po)z!{?dA*Z,6wfrs#Ɨ^S-ĵ)Œr!/gW3v^G|]AlmVc`^XhZְ@˓9srOq[ > wAL5s|< lsnOQŠ sn_^TC` L{"D$tY<;S* Ӝ{íBϮ2rTdnO}i,Uc!0r)vPYtf90}viy%N-+<1v)7+;9kAf#6Th0)g|4ɯߊݜDCS+nG:%C8Cγ-"?fYV0?'Kijw|?)Q7:I>am}]6NáiVoL,<,b~صqϩxCnyK371,o%6=•/aVl=H P1j|^IH|4PpɈ̜8g H.g IEl<8~1_OW)uvIeŁHf-%;=?]OgYDwЖuɾiy "9@¡ VKg6JoVT)^:} vP;kN ZOT. :CA0#fɪ:^g2[R߼O)|O!b %tYIeȋBBT࣮IUȤύ!ə왾x<wd΋|qZF,o6#:C, R-~!Й*fwmDUíX_AؚS]'$Igalw.QC"Lgٴ oMc?Lڛ$奺a}e{[Rk$٭Z32"aD med8Ȑ81ml|ް*zS$Tʺj~YN]*tv!C;gmHRڦfԷ>QLdAAT%yv dvGtz/c'Fkꤕsyx*]?3~eK͵cqmNp &hI_:QΖn83/-͛h)"Cq(Fp}էߝ%綂ڞq*l36d1Hw=0a}>$?v[kvl-2XKy dܻ.e^<(V@ԱD本z׆B#;ϘoF-ۛVPmeO;0K(D,&rȄa܆eX4"_\gS=sCr=,*9ywޝߗ߻__?wPRw}l.>\>QE'dcS[Z(XV7 ,OL7&M" !BbY྅UR9*m,\qnv>yiyxezJxF+%׵_LL\W鸑̈];Q1|\4 A9̈́=P> h[:&ۃ%SJQO Pxp]3\;=Xϔ$goGjCxtd<aW"ϔ%F?eUC,w=BMeH];fθ6EϽFC^aVYTjFw&-] $M:s5߶[{&ZMWxvkvp,[Qd*1oVI$G 푮o%gxՀa`QNt/`GQgùou+v`ncCrc] $9Oi!V_ T; h" DzTƦfYUbeIUg93$n/>`H}CA?fÌ@nq&G;F[?ܽ @ Q{6&ưf I CfVҡ,ʂ*)AWeA0Oחe Ȃ'wYχ[ j$h)%U=)cDƈ,X܃m/xB +-+'^J 6hNP)[Yl_"v/^d_tDbm̽_/I aC endstream endobj 12 0 obj << /Type /Font /Subtype /Type1 /Encoding 62 0 R /FirstChar 40 /LastChar 116 /Widths 64 0 R /BaseFont /KTYQPD+LMTypewriter9-Regular /FontDescriptor 10 0 R >> endobj 10 0 obj << /Ascent 600 /CapHeight 600 /Descent -222 /FontName /KTYQPD+LMTypewriter9-Regular /ItalicAngle 0 /StemV 74 /XHeight 431 /FontBBox [-210 -318 734 1016] /Flags 4 /CharSet (/parenleft/parenright/a/c/d/e/f/g/h/i/m/n/o/p/r/t) /FontFile 11 0 R >> endobj 64 0 obj [525 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 0 525 525 525 525 525 525 525 0 0 0 525 525 525 525 0 525 0 525 ] endobj 8 0 obj << /Length1 895 /Length2 31264 /Length3 532 /Length 31859 /Filter /FlateDecode >> stream xڤxSt.̶el۶m;dǶm۶ض=wܾ=NwtUͅsUUĊ*¦fzf&"I#'#;{=? ; 9=@ŌH@b@ACN$jdeaBDAMKK?.LDƞe!3sQp3w31ą BDL: DTE[O"S3sFy{+3"7oi=?TV*W[#sw7 $"bdke" 5#bb`OYTĒ?q5L?FlV&63gg"vNN8O濼.0{"ozfNd"bff"fg?X8YyLDso{S+a6qur}"ylڛNpg q(kR-. O2 ah\9w:9ǰK5.%(DKI{Ĩ_q}kLIhoZIY :ԭ0$1"rxblt|67 "*1W[X02qF_8ÈgWDyOSaX糃4a!^Z>1NeVp܁3MHS,UtM(1Y[z:v,HA1Mag\#) vē@as˥XRO{>&( C.1roo9'q`9K"R6,_Y1k7M\7 -g,Z* %PAIYg#&7R [FCWŠZ*f^:HN(Uv%&~}9#Ϣ A@0q,:Љa~~3eDc8sUq`'MZK"ϒ-BL!o>*hW5z7*eK;ދ Ӎ2յ8WY\ך`'EfY^c .f$vȚjvC$<>6E, #VC>ֈ YM*EaHɿNb8KX,KUФߎcbLc@rgh!uюW~o M$ ^#T|_L*u*?TYͭj$%#>#xש1yF6 Pt psmxI+V9]9 ?S>. m_֮E[;YDJw!vJg߁3AǚN*z6~Hj˜mKf bsױNvZ9-U!c'sbL< ~i-i6 B9µ*Fh?'3]g@Ne 7~wedJ<: zMâazñNb2cM8]jaypƿ4s߀WWlϫ!=ckUٳ3XnB|/-Fϙ[89up@V :Y]@ګNl!FΎc5]/qې9(DvDvMY"wRV[ի1+e[)[)@A{Gx\;lmub\}TWئ);!$͔mĄqv\o7b@D qϯ]SZtvG>x{M5\F6̥Ahz ɷ]@: ~Uz7g޲5F AzqËмP!* UwK! GuEOj`GLs\A1 +P1'yTs<dښ[r? 06@߶j 6;+Л3 ۇKĻ ^aO +|Ġ4H:Md/ kxB7d{g4*m c/"+"È:ThS~J=GJ}L9իx)h}{wJd2|/W_':YbU_'Iu;L{ żOX3˜0?b酔.8&ӿX7趍eIIk\uRO9rF̫] 5=6\K9өsIp=Vs)8 m.Y.dSXri(bVl3ȵeDS =Q<2c;P&%Rg~/%&wXך;R?HKDkoU)qE . r[sR[wPT79Et%V쀗.4׏{?_*Q8l5`ӠǫVbғ`9[pU$d+% ׎]q6)ݓ k=H5zO%$ HKKyS"2P !(VSpv; !Hϳ+WڅFՁ)p=3vd?1GMyG4^~Jw1kz}b=,RkߍzL@za%^;::<j`kFm*Q6 } <վ M7G؁& =F-T\ XI%|QƋc./ 4P5F fJbޅŠ+K9[ K$ ɇ{D96W8>\L8ꧾܾ`Ea`_?0ki |N:'1(.=nnx1m`WQbpW,2.v>/,UP>sCK Io9 F,XKVzo.lH`C%F뫙'P.NG%^gc01>i6L9jpU{BuC2%i #f\! #a'd_EU6⇩I)ǪX݊\i a5S&\sOVgb{ -+ŭoIFfb7Ph%̱q8T9xvǦVJm!-LlDU:A x~9,\PQB1`. cC]7sUe LhW<^N2\ Qly0 $: $pH)s]Z0U*Zʗ~hX 41Pk' `bJ~#.>0T0#%/VNbGǸpupKrʕ&Gc<.n Փp#'SP0_3vpBt8f#|/%0]З )EBE\CcJÔ&#ƀ '@θC ʉws#9լD7"Ѻ:j@pFyFT!p6LXԷ;bqy7=G3-=lTࠔͽ_rV7[3k/50[|VY0g'!¦bU@+1ݛ꾤@if)6#0^EOj7|7m:|iW-4`)Řk;^(1oӡPF~7b\i~q1~n`%n^Y-votWLD6"ften&YAbe 8 潻ۤsa ]({?ȟ8zӈ7 Vܫv&3O[IΝg?Ʊ^t1KR"؎䏢9vs;h@0J 5Ot̯ވ lq)odVR{OMz${:0F_]o |r@(M ໚ =(ypdhɵDLBV,QEn̨>V%ʭL?oHr]?*i>3T Xɦ1'߁ eц{f[ YtyV3Oq 0Njzwٔń,qɏx$}Nvd1~_#ħ :]@G!mz_^roOGP'X[~U d``QRѫ62Cl`Ѽ_߬csҔCB,a6ʚ8lF /$zEm]k +H1CfyÐiw`,DZdDPsK37-r>!t4!T" )h(ƤGsYKE=t (ѝn {^E7(Nx}7>qƒz>KM\v;O真Va7S..;xk^iN)I+1kCa]xbᙛʄ&ݞ (mZہ0w'j5@#ZB3;m`eN;~~v3Q9? %>vvxSaun8znױs, O~|,neN ؜SOx Gw* f7$~&%4,v ˗ AzE1q1T(p[nR7-2Ӕ 65* ־7˛'scapP݇$?:?sVgW5+z Z*UL{[(tǤwW%1Wd.%k ztgOltf ɾ*60x^V`qxSH03J3䷦ૹ$v >8!i{4ւ*}H'~]'lʉ)C~t=hb+)MZy싪ZңM*LF+TV0Lx x/dUr)2pՠV;3>Bx8ئ`դ8EeoYLvD+QyҒ=7bz1pb̏ũsU/$RrQ؏:oV!J9w\W){~[B\ "+% WW4XBp<^c^ecP=nƔP0d>`jjO+7g i 8^a *rK4E`ff"e 87a>:飠݉\/mִ̨ei.sO=A)U\Ū1an)?xGUI@Lu(|~Sr/'t9/-^1f'k|+ _PyCHPL/A{cLew 2=R,G"huoG^J?]+uj)e =ek7'>=Me4php3q2yubc^_X^ڶ ej3Cmj顩M9 J^ׇ$BmX ^v2,=[ zU ӵY9fQ$ A99vê /|gj@ P޸Ap{m&h[DξUc F`wQ&Q.4 {鯗7a!0Yw_z`:l5#seء*3Y>ϬX=><6. M~q6Sth ܩׄ\2O߆W (*NYt븷jZ]<%Az(Tj4*SPOpyC8HKj6kt6>z㼗n<S 7 h&61PWa'% 'gOQ;O>GH8az/hMϩm-(_+*?V*EORӇWK[aG &=x:楫Ӏ)nylp3 %pDj i&@ƢPخc*oƍNwҾL̀o^\ИY8xDFNvGu0&mQi"OA >m, "acϥ=6 :Qʱ/6O hʳ6Q5z+)v8'ŰbEYbI*nb*-Glwhw$k3@o7>*/עsiW=at d&@\DUcҷ4Pgn$ۄ|Uh{dW6GSQ6LlwSOZ+M*˖=Lþ@=ltPol!C7?G3 `;9ӭKx8~ߚ:W JARQӜkJps̽?"NZl5SBODIi%*TFtP+513wXEA.~(!zIO#3Q;|wuRelr{<V8a%\A: z&xzÚz~ǝOOem(WI15l )^8rDH2~$}} 7҆÷魫i{5'?Qh( t1sH.֓!݅&dSi0$/Ž*f8 FDhG᪾*;~0ت3&[Y!>2P-T}z=|jZQb ZnvC ѤLlrJފRM~0djm]1X07 cYTԱ^@Iٛ6@KW+v]&wX "ѮRi-Cg#ś?y+ŭB-kzYL{^7u.ql-(i6/̌bȄwL,@=+܂5) []t_>/(stZ ChNn}FAXS^V&hɛՇ/] COWt6κ_;/>wQw뎖z842r@8W)7!C%2WKroV0Ɂ % I5i"^i քxa6@cu=݋,y \:(њ3uh>)y.Q6 Cm)7PggL5gՊjw䞊^2R+t@4(\%ND% ZW,ZCZH.\y*i . I pXAg?pCe#`!'xgާ{m@RWу u~]kУڴ|7jj7`p_/ԎuWyNa '&>K7GNxz=MD4i_|ڝ`cY/Hq`q\<u w&P A (L!E#GRvεmNyfU%r<:Ql8 ٺCf{իuԸƏ5%'<(.3龓+sz>ac  Ga,C \;ah0ěg4@ߋW^ #Y&^ 9,}39$FYV)3CsK*jhu;b&.)f xÌ5u &c&Ad>Z_(Ѫ|.KG+&J59jGieLVa UG{"9ݼtz^tV@6. Hnl<꫸Q9XG;I7B)8_<(Dz֋ZSC/EO3,A?!\Ѻ ns"#&Đ1i+(r ) ;8IUY`#q,a\Nm:a~]& 8칥x$[:fyȩ$rI6ƌu?TRq2}J{%j&-e OyBԒClڡ("Z: .DpGf\M%<u{dr7HS?):zĎ]Iշ)EsxGKdn,a&ĪSPKg?/,782 ewY7H\Z}h+xfKCv2\NQDqߚ~/Rd[4h'ӟɶ]^uX6DVBF6$֬QARQaATSmꩌvdFڛD$M0Òl@3~}k0tkKݩy3 cD/,/=hU>BY TCwk6 -GBm&޼6,]ە"FД+.[B+֥٨ݓ s5PmՋ1G:HF2vrga͟2/VSVQsY24?vA'6tP\z*шuyQr|{6G/|'#H#ǰ:ݮ#.Bsel#;=& G#FFFJ<3W^A^6YZ f"Y3FfQ~\r_L| ~k*=W!Sy=G% ilD2S;M۴Vjb-/"+&BY_eWn`ˤu{|!`G sIXLWR25MyS7m Z,uZ: }ac:O{fם |L/VvW jttdV3Bmu\̡g-*wFc(V>)$)~@ ıj܈ɑ;I~gZH484aTwu z WӠ e9V2k֞4Rr{E^JS* Fx1=vvkLn{f)s~ gKlO)ȼru~lݜ0mtJ7uB }{Ve`ٝ1:R-tZoi%޻lt|N.l_n$ ZA/UB{/zynw_גBO<iXH# 쨂ʵgQ2vW 1w9Ch cf HF Qg(9/Mx`Ƨ#LԖm8캏mP˸HxíO0ZgMEe*Cj>I6rLC]ѐec^x0$7'a#ٯG-Km]Mȧ-oN`|j +A0K) u8ꁐ]Csxps&6#rx()º{ J0 yL}$k1'5kC3ZLP uw2XR%Zp{I8 sQxLsFqlfu ;A,WO.U/}TyݨBUHW9 9j7c)F%K1Z}a<=v~7aF _eLo6]l ;>|qI^y̒ĎKP%@@^M{2"ܓ)W=- {ӑ']-l/;zomd%4Jl̟͗Ƽȫ ji#ŷ+ެG5֕-p+)S!9`+MCϹ䕡-(BV6wCyH;)X3 h P\1@ \[i7B&|'dvc..A<o6J(~Ы^OpI'3Tf| "4 *5,k~]WP~?dT݈t[0djϛRu|Ky#P`\Q0igl93N>%,ǡ9fԅ Kz*@X[; :ӊ"aX dg}1zPY)a^β7,Fy 9zۇA&d90(Υ[{%5=H΍%PoeS*筃tr/KysUI@ZYUćndɋɥdSOFw>T:Tt\(nG] ^:av="7?`h UMs;FH?\/捒67(y2pBQ$?yNa[kgXQAŚ5Qlx,j{`k Ϯʙ(7vFm( _3I]xYDMG>%g`8Ԣ5h3یPt%Mb(2 ̴I2Cp` N%"DsyeX'_?rfZ&*MYt'?B/t'l"W;/DQNh3΄ۖ3'y3c'K0:`e 6{oIRl}.L1h|Ϊ (J!*pM8R)d0B5O_QdҨ; } :pH"])vrױ>(ϝ"nԶh+ΡMc ˹s|D6e.N=z+ {ǘl+8(B{u[vdPTkpEQ`p诩{[e;A;4w֛Ji`1‹ v<`΋8£ IJ.ѳ@פ5@ qg(cA`8^K-k!IෂzJ '2FN97q z/5kwNjՀkcl{ͥeoidUc]0Ss,@!q1[N@&XaiVP/Q 8l8Dm+.\6 6B,T҅؊Oa*8.6@br,wg#0 bngolMEz?>!Щma 'W`>Had~;HsC"ċzvx+y Wo H={#"PC'6&ϓ_Gx:IOfYۭo7x0H~&v{߂$PВφ2"0@;\ k%y~UNVuwhv/[4̞F^>I6-!ZT46mA vt]\yH-{?;>_f0G1% N?`tNce`/4yȀ{yT"?H5`Zݯ1#x/*J"cAFˑk#zso $  l6oޘYWy*. I '͆ֈA9i >f7fUiڌ'K,EuϥZ%,cJ0O\e^/JY"m99,sN͹0͎m۶m۶c۶mMvl۶mۙo.ݩgUWd^%R mJ-JG(>~XS|s#Z⯸jc0cVJ.b!%[T{F68ŷ>?N(ABѕNj~WZ#Y-;hu:zY*eڱ8eN,E3x۹0@$nnQ"mR7ɒ$5υr?%գu2Di0,g~nY~8m^\m= e$U:lf!3T?5EC[ [|#Ϛ~@n("iwƅ(8S*zh 'pzC}npz[Cx‘gB!_A_MHbxGg u\ϡEeiJpbO ݒ^Y%=-ۅ_ƛbTsq߫bD'=hn?AV@0-}5_|zC$[$άftڬ5)폗b(ufS*2Ne_S 3-ꝰn? _m(I!&C"Ҕ0M?|a%q$$,?AYNyTVL#%9Z[˪-(< #ڕ5hζ8pK)楝nm[y\gN 3w&3ط12BE+M$ZgYNRZ%SKeFyjTR.D"j@d#A{5SVkfkgm=DΪ{7zAUνO =_%t-0>g9B+B\=Vom,_r2>wv]>ItW?a0-7dFLھH12>זYT-u'{e U-0`~UX-T_Y,m%+h0 1Dc"T!Z5ެJE mīTI=݋]uDjp=^ڦ>>A@GfhڋA|q.!7ίc8}~hO;Ѹsp0:RΏm 1D7]My$hit^wqzwd4I"Cʓ9FQbk{twVPvxH4C33DL #2 _UQlپ8nnaZ!0{[[%nHނK(mssYルjI"A]tDu/aʩ5&%0y]RAm>Kc }>6ALݕݮճWZMd. ϋ9NP\.YC>J 0}TpQS"X{f ~sh-r-e.]`g)#Q'h{+ 'N̦ ١ )捗\Nk 7 HFZ9C5ꛬZm#eᮇQ~ 1Hj3yk g;$4;эgrhA9tOr+l&[Jr!us7}nVqQ|CTR*J7x,S[)h'B7A#zb~o<)nzͻQSfncCGCjY_rC7B^21Q=)łD?A,)]Nn{n1j'jg?bH'^N`=}[FgEmqrX<=L }dġJTe8)kKDX]H2l(f*aH#&Kyy9"*rM&*5؁'[- r]8K3ÓR?$_eYkuvak }` ߯{]v)F aI+z~%oZ[2UYjT-l\k@LB hm"ĈE,uR<"% 2OD7onBhO-TKXY|UA}3^.݆ՂI"ʚX>Uc׍/;k'rC57,zXѫ@-C]q\`=I?ʍ3e0Poxf|0^i 1j~kګZ"G'[{13~ lD^I#!b/s TMfq)n_$vp"I5uM%1e*>OdC[EґR2CxF Vꮲ#"͕;ۏ.rrU1-iЎ8(/``L;.+&L=e8*'&;(3>;l8uhe(cжȑMM+ ;c fBNW/;c5 CbóVĺ `I!L_ބrб.c $洒%4n0%BD(p~J {ܦ}$ƍYP] smxBk*_SYt5;gAa).8ԫ:OZ {VG :&α_^ł ɤ-jXX.C)&{c3ځ3܁^а3mXܼWY; ;S~SJt Γ2U0r(gNpq5hX1!axz[sH[ -)%E.7_x(.V-iFgO5Қ=0ot%2 q]RvYjͰ\*U21zb?YԻ[UB|&2Uݼ顜}Z% 6t7f,ܰU|C0K Ss),cb&mLP D86-^4k c'ltl5и&lxaN5hú/V+4;~q WVuQ<녵c]safmN MG_O~ =E*sBY=oi+PJ ? \8뵠$ˇJu\#0S(TgHz8jឥrv,qESxKSd{nkS@̖r+Y EL20Th1Vs9P9qxj_ZUda4bi,wΒ^F #C\èN aCYoE򄗛:6A[o Dj:&-Xp`ΥJ P1w)D $s3Wo`v-)ob  ꑍ&$^/3VTdjG]8$_|,gp搯dHe_:6 i& G~}g3L7)Fغf1okH}\fNLQrh1Ə@v{YvG|iRMXAPfJt<ULDkhv|w/A~0t~IB|~5vI#S,sꑍ4 G/]G }[8Ⱦ` `g:}q1xQ.ʤYBHlk&Ȅ03#+dϨl\D#5zj]{&@G0;\QbsK ;ʝ JF#Y*8qT)f8<7j? Ǎj.KTP%'Du*rL!~mimcJj;>{⽱Ͼ-BN=7Q )Ω&,4 S܅*~cNhzF(Ȥu4A|] "lDrMk 1#ei<9Nx!\ qh́Gܒ`csVC+%'C/ k(ʚ mzrLV?#N៚kR8/g=X+{قQMC{ܔQ@} f@6ăF^l'hf.+yԯzTL)aYI I3[Rf9&6`y:yd+} WgTސzzqab&թjz| $Do_#Jp!~)nەuG~deJzSR8|ngeyia,JmswN|?Iy%BNOm0'Sܗ PT,= ̑L.&Μ̢z5PۗxKaxq*E`؎sdY6B!Ncn|A^pؗC˅/^bb߹p bܳG~N[|?S;_?rmHM Bxٓ^bu u^k\L ٸ lHb"" W?0 /{o+8|QݗPl-jR3g# ܜ`kD ~pdiA.\} x)3%rg^|*^rLbuQ ?OP0^t>)dxP-7c0XԗJΙ@j믴H0x_I?,\xx| >T }h EU ?à,kWMfuJEf-#9gRHG/cf9"ށ pATn?xQGYu`iyh게b^J\6iUZ2%yy&wdTǝOb>ex=i%G?Dt" `kU VvD\+$xhƵQDmxPd( U}?=t2-J_*[6C^w%='ʹ 0 `ZeZI4ؓWE 5~!E7OGǚ>ag9t2^2,;x&ٸWySAZ+R3}1<b~Y[1R#~[g]UZ_3嬏΄ MkԘviHB v^-хvG=٩lrbvՓML6ֹ@MJ){z5lL]E: V<:BQGg>yDހnܟ hi?-Yț|1..ɤg;ge4"&YnwPow18>ÖA 㻰='eO:eqCz^#ϗ DO)SCxUU?mX1YnAlSГS!;.HR,"84 }٤*u,0ʊM>BB6jBn-}bcdz\OTJ]Uf@ z :/.e ۝zʂZBQ%l&#"$sYlTJAPRw8>O!s19X@`(mN KHb>r+x@?CV M«Yvʣ?0Δg YU5_L a+CUlc&cOZb<BSM%.Bo8\QbPf֑'I '/NbN#ao:kٟ =NO! & ZE 8~OP=Fvy'y"F5`Ɍ܌_a:Z.pϟjBFn(چNh!Ǒ%%rnsLsp#?l&!^ kr%sj絪K)8)HlqxwA,KJ: jaQ}}P9 f,Mϵܱ;xgzn 'ȊQRm6u^{)&G@ o+ WNo$Gy9rM_D5SfTt0Ot ,xh{6 /wT ,A v7plP4pF6sN51eHFu>N _p9ě6uoZn\& K(ܾ+5 0XqVkG$HuQMr^%;(2K}㻹xqz>4 8#. 2.|?)ݱ2># _kQM2{&</OY&y~ȅ[+ te,e?aFܭ8)|b)nAdQcĦsd[Da¡sZ7C#+80q..#ftadnŁxf&c& 'x@բx:;cO{Kp3@EB*Ws"~D$wWr/iΆFq|c>1K'HmF]?,MTɀ4Ał?բ灦I{r-bt`ҁ^Q#aC8?kz+Mc{l.R4bmd]zO 8F$x2}rlجއ3u< p+u/5-Z΋YwO7ٚL\$)6i& T> "f( $a=)AZ+82"\_;j͞MeUTa,I%_t'bb ǽ!2Oin'}v/Fj%L¼Q}Փf @xaWf PХf>#*[wVy:'Q1W0փq{ [;x7I񬮞צB&mҿX7Œ+%&[ւ2^lY= I ADZ/2@)Q)3!4W1%aԲfΔP..u?&$>*lBիI tGE'a ?Km.h}},m&\&ua[Ygk \q?seghާL.N='xpH9  !Mq G#A6 XWS}Iɱ.V[[]&xY ȗ@|H+-W5Z-Wlc3^m{BSۧ« /l\2Ґ\Te xt-<qG{t#v]mJ=Ĵ@J3eץ¹L3+"r7cN"pT|Iڸ_eU"щ³!^:M[g)Iә W_g*(MSPR~rzKMjD'q:GcYVo\Ʌ;`3vG|d+N^Dz/0 lP?.i™9_~t̆s47_RA G F|? V{C.Nc 髠썷(GJHRl# HN pS]XW6탥)J qmFed^O/Db h_'}Ҥ0c6hf>VRXO<0j'z~|ӯ.j?YdS?#¿J#=߁Ȥ~ j޴@niʒiG.1tRR Ѓ>GԱ.uH ㋸Dq+LDPY[>4j:6 npCRF5Uc11uf4E"Tp _ij$v<_om'xI ys4qd=Y #nS,!紜^ߜh@JITn{_QPյi`MnzPצ]9rĴx•]ZVG^qUeMVg%Ke C޻03Ou3_s>uhiΑoQ3b^l}-֫Da;3n1ǫ`n \9u7j7x&;1!~`:&&NhY:`Ҥ`7Tp@9Ǔ"WZX~o^ e^K^漚uh] \SK Ǎ|F`J g"K~&&ji8tY҉%rkT]0Мw+o5E#9La1$so+0`/=?JcjBéך xoڍf3D&O;םx6jpqDU'JUa\G4|lLX  >z`BMsB%>mMv}ːsr8l|͓BD*?X ,C'3_-^{3U9'5j0 ͂k\j-VZˋzd,PGqSs+Z)G&S܌-)XL?S7u3/9 V4@&xKеT1T fPMc,L Ƨh"ZWI bF ^SlSSx EeߙD(wќf0xDWt;ZB C5_edC7k']g裷z%V%-FN6 {Ύ\ݕ6)K{jC7Q${3 [j.W"'k: B)Fh&[!UJ`9Y 塿Lhր3v5k CߕğRl6.i$US#J! *vJ5|c\G&?Mt4UceevdX_rTP-(S){A:?=ڴ?ڧ /CroFnonOFF.->@V=6 +G!hjD q ʪ5.\U9.뇱4F0n+9ea;3!O7+ҵR$Xc {nt&xǴGU7ӗIo`K_%QEt".(O-iU(*z67ɘW!4/2Ƴ91ݚDV"8c՘׽T#S$\|h?MaV^JUSAɔZi̶qo])=%z~;'^ V/,|^xL^_dՉ؈}\l d/]+ٮ*-?4}BIRMTf ABloxHDQƟ-rV%:^(Wm8æTMDK }${9#նY4㏇MJwT 3RZ6R%9Iff Hӄb:5Ձʬl-{&:jOQV݉6|QM;ݳYE+^b'klJi!Qz{KS|N&dfZPC?E; ʯΛͰsd_`ÛD,|?4qC=éhD 9y$ċuьyttd Tiu sb9'K\'KVzcgoo&֙ҡ$$qM"VP\=*/quInBL@ ]UHmo"t˕8X͘d-A [ O\/kR+neS4vByn1M@@CUzFt,*on\!+7Nr$O/hXT F~a+Ͻ!OWOKd=X\~B ;ZXDzOwThEMIۖ+n=nEf3U\`xyk  }2?:؞-ʌ$fD qr4һT> ED:n N (<ŰO֍nrv¹~q6v T.fmghFܱ\Y?P_<(Йω߿,7g}+\Mb=7=~ xJkwKp։}O'"&l1cpE}p؈Z7 ~Ud9096)P6'}b?g+az c[0*qKWM  =Դ Lzu_}ڿxʤawg?\D IQW ZG ^() :Fa~Xyp,?)nƺrl _kНryԫ"[Z(jZAju n}0 fq`x/BoKKPmrM%%}blsC5GsLsG1p;H|O仵F5JA<l}t|EK]]!E3B=EQv^.K&gx; un(DؖѨXXH|G4p=S5تiE{@vC5 GqI<"^E ܴ:-PB|Z50M(<H`xW@;7 ,%ȑuA  +zDqqtZcSjߪMQL %4g7cJņ%6"d;>o.tF2shZ%}=z]>әTh,D-&>BL:qw`@E砩 =ˠó^R[_w67%\m \X8>bM΍;ҜvG6}ǘHI(׿ow#,( :juʠ,!oKѱ0qgQqז6"Sl)qs\?kC q߳ԩ.ldΫ(E"@bTJYBLȤcya1h4 pyy3 1%4)_lKjf3 A!#lӐZ("q.Se6J{;OpJ߈Bj?Sm / w( Vt'tO?ݝ  ؗ)Z\pÃUݚGѽQr6s}HL(#㱣(aTJ)[s> gJ)>K?/Beon,TcǬb6Fީ,W9B^> qYB!,KVtg D=~sæ#MU.8EM9+5n3P]hd7'4%!l[/P||`<{ՉA*!#p1+w;a"Ew8oܪM@?ަeN,YN:?b/o3"(xM ';ޗ1.> OAr٘#PB+䧻h qҲj;4g$)g"*{vwSϱaD]ǣ~Aѷ^I#,M(s-Lr ]y7_ u>AMx>!oDK+RE S ?7 ƔFelG?&񮛞?=K~|YY9l5[&u(\+'<NZ`umIb4[jnmU^$:C~,pW1GN-ϫ;'p@BnCy ׊OH܉}2I kbh! =Y3VM@Hi7rY5?%9iEѿplMׄ2'^dXw氉f*P`~+oT%9謞46O+݊h_qyZ}@ ^}7 }WÆрW(d y 2jSlOI8x$Q|@p a+?Xqa?b$nIU,$܃88l)_9W0Ъ9)ȸwzv4NsCXGEQѲ̶$눂Gmͻ4BY'GTgyqhV,7}"P&>p)j:oe VSt|40~:rs7Ac%lN 1d"W!aه㺦Y?kS?e1,kjaA0[_~j:1tՎv#iG'\/޲7jR]#J7{uTߔdžIH,Q| ?\Ć4p[tpۋ#_SmXFy^3qfM }u)OTQcZBBH, :pkmPKuV/R2 65TNotVt,_p=ɺHǥ6xȮ\5uuEbNֺ_My WRk:*2w0OOlRaQHp1?<;)XXQƐSqj~[o:]>b<*6%LB 8mڴ#9ecDa`a0Lݺ`*ٻҘ`D\"8 h6\'v66|W`t57j3Z`kd3ρ_5FA endstream endobj 9 0 obj << /Type /Font /Subtype /Type1 /Encoding 58 0 R /FirstChar 8 /LastChar 246 /Widths 65 0 R /BaseFont /SKZMXM+GaramondNo8-Reg /FontDescriptor 7 0 R >> endobj 7 0 obj << /Ascent 758 /CapHeight 712 /Descent -258 /FontName /SKZMXM+GaramondNo8-Reg /ItalicAngle 0 /StemV 75 /XHeight 0 /FontBBox [-177 -270 1128 953] /Flags 4 /CharSet (/fl/fi/caron/exclam/quoteright/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/question/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/Scaron/lslash/endash/emdash/Aacute/Eacute/Oacute/aacute/eacute/oacute/odieresis) /FontFile 8 0 R >> endobj 65 0 obj [556 0 0 0 556 0 0 0 0 0 0 0 479 0 0 0 0 0 0 0 0 0 0 0 0 258 0 0 0 0 0 276 295 295 0 0 258 258 258 0 479 480 479 479 480 479 480 479 479 479 258 0 0 0 0 369 0 756 608 738 793 627 590 793 848 332 0 719 608 903 848 848 590 848 701 479 682 812 719 977 756 719 664 0 0 0 0 0 276 424 535 424 516 424 314 461 553 276 258 553 276 830 553 535 535 516 387 351 332 535 498 756 498 535 461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 479 0 0 0 0 0 276 0 0 0 0 0 479 812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 756 0 0 0 0 0 0 0 627 0 0 0 0 0 0 0 0 0 848 0 0 0 0 0 0 0 0 0 0 0 0 0 424 0 0 0 0 0 0 0 424 0 0 0 0 0 0 0 0 0 535 0 0 535 ] endobj 5 0 obj << /Length1 897 /Length2 25837 /Length3 532 /Length 26439 /Filter /FlateDecode >> stream xڤctfݶ-vضmv*m۶mWTQ%Tl}9ܶuo[}>V[sQ(1;%XyR&.&抎 2n&@8 1P:8p1G'okK+7  0Lā֖@;G'{?,,sk37)qp0 7ww7tq'dB'%sG;o9I ??%M ^Yo&vi*?i8X ,]%nfV ;Wp sP?: [)X;{;&*e`ln8}Yg`bcfdffG+pp0s4v8f..@ nkь/&3'˭`|V\ox|<ܩE8q 03!u{Xdrˎj fu$ɰ1V>.'ᬊa| 3MGqRYFsf/J+ZcʔOTScCt |1A5_HkdJQ[j!Э{&Du91y?rg}X'KS~IW*rݶ<뮻kpm g(7 :& h ѾUej]r`.SD/cdgsLBF|thO>~ͫg&A5?(f8o)]j<=%rFρ)aC$} $rN7P:*@HXT(2O[f8& Vch12bku> JeqM F7V6b PC;g9kMCpu^2ࣉ)! %7ZP藥ςLyӎe!MsÜcb\ՕFٳ.(#_t֧렝ud2%lKjN$D*[0HB\5(&[-'(nm.7tpC(p;>(V66&|BKVM c(b%p#*`8̨0)O)-\bzM?@E5m.,3"~'TSLnD/BXKtv0hҹ-SSX'`ݪb(4Q;cASd2n??$m0Ub[qF]xMn#ohmIGI:Up\nOH4*,vR 0X,~f{Xk mr=ʫhINV,Rb&fwѸ*EQVA3O/]2 _IG^W;CؓZa/14g(=RNZ7o/⌝QCSƕ=./h*}N{AT}йwsWrO5-`ZL-7 yMm? Gь^ Pֹy\CSa@k-vc҂x Oٽ.kƮA6V @[FD5 b[DoQ"@^]otU4xH3gZfcTzK&dF C+芵)@ 2GBz憆Xۙ[Hl*f}IAt[ىt(S%n5ƺ3{ЂP r|e~:|(p$ϲനV%ur ;eJ3S9#0DD'`89Ϟs将c8ܩ|\Q$m+ՙ3;A/TS=PH 9Z9؈T xՄ W4ʜ%gNu̴@)* ˽Z: A:+oQFڿ9kîE!,0ڷf)ouˍni?]tVhp=SAuF=@ >?"mkԥB2b;5ecpV[HIab%x iNh/N!'q{~FGѡ;HT!F 8?![ $>'Ѣ~ FL]O: ۶}ƚ>2*ccI>/NlYD[^UoMZScQBV^>oWp>>|**|'{c f!T X'<8ӓ M*9Ω3 Vw|Ieݙq%n*,zm?>Gx7?zl /m$RϣM!)gJj"nz"JyV{)s(cA1䛖Myh|iʟFqvʑJKG&ݛ{tx-t :#ʹT>ٟd<}ĮZ);c&II{*p Q!@>8DAE=m՘'۫5~( T;"^?ԙAn`7~%4VO/{40\Y%l/.^CB O٭\Ɇm}M͎"EL0{;s?k8 ǀo1|펋|T2%C`?gǤ+ґmƇt~A-27ՍkLვ+G;Hi&WaKrn«n~5M6[9KpBw~Ҍ 41-RdǸPϬWc<3Y +L9'";Xvښm8ቜVx1PWN2l%=Y!7YKV)|zj ~a +[;&I?=n[*=kCTW.F✾/ pu4\?a#-i] ܡpGenb"cobdtL{զE}lr"v?b]C/(!oa_ڎ[q`5Ln :JҨ<-!%:S@kkjK ^[WW{">@ :XUdG{hl\[a/L]ZC)gtfw@!BxEä=}[ˏDeE s4icW:ł⎯S(JO&ơnob<A·JXcPa[!{+y3T@ a U4]p5btcX*|q8,u)="&7,YfwD9֌Y,?<{*r8hQ2%Lk  W@ RD~}fuGɘoMPQ-5_ {R .bp??P_k M?ۯȺjJAr vve!xpTHu|my)?#,1_HaQ?DJ|%Zq?:1Mx*?aX谯Ƀ1x1|Ho2wDmq^tVe>ʵy7fٻ6Pr-cq~zM|7Ø6y"IdƝ-/%%ZoX*"%va-D7Anw*}؁aJĜ.ŧ==GO(^VMHjwe\hzY;r3 TNhbkYԳ`)pזߘxé4 0;m2"0s"695RByv,qЙ+?7<2 MKEM@kmj9j/&ӿﲽxY c v 4gg|Sӆa @0Bz?fqYO6iuYeY(o,v6d$*5H,M"Q)!G9sRA:G|f̌2OfI7ȹ!, k%;{KZ_ 3 ꄜb m3nT ј+SmaA,$)N#x2Jd`-wI#?61>ŧ=M-` E`hphBdFKH;_ d\iɸPwцQHStqWMlt Uy=mCYڢ>./ }d^ 4|\1*V&6@{Fcx1/w"N0xBֿjČ]7ým|Uk>k&T9sH}!=q"Z ]q|NL:?-4y.lZ+(.9S&h}zL5ǁ?arnADJiaˊ|,5>| FlŊ8oƻRJi^ B }ٞirfݬr8Pydq1D2iw7 M<p;LT+$ ]D``:t'ÅNh3E蠫SM^g'@/iV*b Ylpu|}\woo+e='3jm)2LGP,7~3X#}BNEd 3UDR DBcyƭO6TEdJc~p͕ދd5B80L߻FLd&$Es87{9bA[_(^쥿ȓe:N:d0 J>AwwA)$ /%?jAZnWeCU!LQ3(acV.*o"X̔8?'*gf{ 5)݇}t3) GN {v_*w$U*i))Ɣ-ރ>xݕ.҃H?Iօ~xo{=B9K>DN1]-Dz|Y{g: ^ɒA֣WlzO^ЮPfWAep]~GV*\Ng>h\y2:71;ªap C#[2QayT^֮ɮh<;a2՜WT(+I59%mL74VObWA)0_i,=~DPv[GP ig҅jQ_3v86t1*Ui|E1ܞa'?/vN}t7{ͳ٧x7wTagX LVk簸7ݮ$#Ŏ~8aDܔd3S?(aDl-gtR-Qex<eQT蘴osݗ]}l Dkq\q?/J38#c@#;]'ާ yXMp3/|~LDΊ)Uf,/mh~xpe7Hbj֣ >\"'-z\a+̃ޅ7- 9Hum@.*eAW t=qCy;H>Ơe$eTWB|i$W&!KדT'JĜy<]cIեMT#ἇ⵺fi3eLLVp9H_eۥ=$OȲw:}i(dx~[U_B{: \>=#h _I\64j?с.F-[9kD5únIfj`EMf,eh:X46cp Ul8&feo;Dpd`Ei+GM{ UB'sD|4P3I&Xҡ#!7턊%kucF$W!(?רn+@c2J>3qW4ĕ z6FtJ2cd pZ@5'-zaBQkC0b`IՑ Bb )hͭS&EI6Ae=e(L KQod;=ǢխTc h`'V+7.6b0G+t{@vҟ45^=} .3[ޢ`{^ ɿa&ȂRm|CYiP eE[TbQr!~[X 6'?yB{i*k7 J9 ͙,D"fZ4huTm-C2F8l k0 7'|w35"Xq4;*wG$KϦ9Cؓn@@x4D,84PHH9n[]ybE)ƱLry'W?iELɪ89R؏m{Un,*-I4nBQHlj}&Dpf]Okz ]Iٛ$sVށބC^gMFʾ]t%i<4S*@>}pZTЍgGA5iqJ":)Hfl? ;llx9u睟mg,QOtxflX"pV& Ԕs.Nq5n.b+h`b!hQ2V#ϋJ$%6MK/bL,SrʞO7 asC9a;_U";Jd+*+6 iWF7?L7ӒZoW{\0H'|ˉXq=6hD!V 0wis/I&]I6{ZMvT"U(!kϯP-T}mQFYjNRv.sU~#6.5 !/iN?ؽ!vg (0N3s|e 8}w~%EpX4b4OZtn*.I$"~zyg:6`j O܁ hU-ޠgEǦ{\=,/z g1"M aT Rd$B#CC)8 uF J#P(ʞ&/7v|]|JAeWIvZ#zi]:T%?U(^P(x4o n1H)Xmpl?0r)@ro=N4^QC+,-bW 8p9j]~*^n@5o DX1h'nrCӼOwlݢjz93a9@hbjqD=RҦ@H܋u,cTOvR0c,AqHXkܖ* "? H4k&Kٝ~|F4ߋJo S[>X\XZ'r?nǙ,ƆĦ)t"`֮E̝v9+Kw ;!ɖt2csxRe,퓲eHa_E$؈3?/}W:7R'?iqXCT١EGش뫅Tl ?j0}BSBwſIy2ʊF !ߎ gr.tm^`G;FohQ˗6c3U8i;9Q{x(LhT+M~Kse kaY]vIUZRgczWqh^=zKsRS)e viBc$E!R ')ؑ梸?u,7>5|@|ěVR2alagFz "kL<{&;S}9O3Hϛj`. huX Np]Ĵ5d[z]):'3]NT8k=vy*mb)CNLۗ)@Md_{D_t𢘍&LJ?x5Ze3-UB`ѹCj+OX^)-O;=LHD.::LE̓71L*d` 7$gXVSz 8"HR>7Ub LBHxJ' Ejf,cʺQGkؽy|ɑ׆w|϶Aձ+VUC K 5d1oLA\'L O1]N ZeHOc9<2j;dQHy <ղoϔ? a;~oH͚;]¨N, Fci\ML,mZk0v0&g**Š tދG ɬՀIM+`A_UZED(j0UwºԌ*c2`k\ I=H߿Xؗpp} o9fw Er٨! q+W8 l vg8魪]i\+'I!69懒P  34 Sw[x' 6JtuKFA^_'Qn sٶѣƚpK'?b@X2V\?:#~zTFgp# % fd ͘B~ ;.=҃G6a͐ ^Cn @(VpH s[U$m>0KrEr4{kęTKh}\5r igj QQ0 CcNBpaݚ2g94Zф?rHD ۋI`QyʵpMќߦm܂/} kuZm_W;!P!kGAq\o&Z'.n:VBh4be,28>|gp61 ):#;sׇffF8|ޯ>jy$}a<~X; K蚇Bx\4$E5o=,{r>Y?kC-g{Z;: G w` jȻjPH+gg*ʟOq ݫk73*{Ϩn"aO"sƆp,I{Ul DB|/|}(!?NpFsZ0?ى̄rRe9OLP좸ǂEbǜУ$9~03 VSI\Օ$0? AɥӰ&tgUh%Y(ظAR%š5y\S}Ŏui'ӧ3B(;V8D ɡS.|2Iy ķRx!{,Q7=u U _nP]pWp;EBqhss((gtSGL:%\A!zV"e|UWt\! AVb?kyYev6[Ԣc {{ytP=[Nsa.QqjC ?)M}&\mDUgNy+ 5Yc 6})^UFw!|힐z9)JuȞgJ09N%İ7;Pw1AX1oswyFL b0( hhub,KZH n*lbEׇ7aeR47GsJ` ,ӽ˪7B X8lV&+]*qr$C3-o6"6Myū \3M,o#$HfAc_^tLyT$;~c8SDM ͏il,vosYxQ ev尒]Lx.#t7ʤ`|6Ϥ-|X,fG`#ĀxQIvkmj̴? 6ߓU>O{Ucwv3JmK>^s>FbM?am}sfƊc%/_ڿQm'u7c-;U6m Qy"4leuվPB4;5 PeBtcM6lJjiTtdؼU VOwpLD`Ub#THs5*lq èwz+؄ɹ}˟չ Qgh :sktxO-tYx{NqURhy,}$JFXz+BtՏfHyy0%Fŗ5je- Ҍ` eO陔=Fs欽KZ{P$[[6dx  sXSN+>dQ*Yi@N5]. 0ꆟ~/<ɨն.Ou"F1hU2 xC15]<b軯Xvs gZ+/c+[m| Un#l̡@j]k1 ]3|Gic'!檍?Fh6Sgrl I"@ӎ̊\HSUIJ}K!O͝.ע+vvPZ`3JY;?c%jNs *qy{b>&>>98G Nr~LLj /K+ELrR5_̵1S:JWtz'8݉b=!()Ǘ+/Gʀoi-D-2muA9uR<ٲ_l*2cUvsĂLvx6FngI3T(7_&,ڠZٍ0uO=u;RM=9;6{WYB+xş^e3zbtMwjMj36eO$dmExYx-9.M U;`Ki=_gs "Ɯ`pɂRj* oF;Cꌜ:l%F 54Ga#"T ^,܄{ B]r3S_ ՛hes IńssG}zW _%J27'0%lYf/vb[q)qfgՖgGQr[-TlLJNu7< !9Q,/~xa17*X3 Lz@ 0]L\HQbN`K@`LT/ @g.FyjDq&q ?D]+#uoOvwSx̚<%88ؘ8?¨ 1l`@T:`wN 38L;~D\,UJX3P_1͍G\NОD̙[ Sbds-,T}e=.a44~2$q [síb^I6x~&BX u*ښu s%+4\ˮ o;ؚw PZψ*-zdv$|o8O&6趆 eBh>~`u|$.6ɼ4"ٽ$kY# QtN 쌙0y.AbyGq~b=P $Ҩ̵V8Tm.*Qt xH5c:εE[b΅~`K9,P(YCZftDy`ԧErg G@~lu8΋OC b[]b,Z'A@Kto9=<7 !gGDY8B8rVCf6T^Wˍ#nQsr6t=H [yE~L^Q &bX62|Kg Rz`k(u+Fm~FŽ$ YtjTwa(UuѶM+`m~0$' Qh/3 G"lawhx(a !w] U$^a~qŠA8@ _x $#{Ad]ѫ)fz̋xP[S˲`_l& .*C5^ ha|r'O0yTxeẊbԂƅEx^9\(`jp|.0/B gҥ6u.uD)eWRjVb3rxlI84?)7Ȍ?>Lc6峵&:9B0fy٭鱭20;$/qz;<맻m8i=F[OE'U4R(OfydqSP葸e~MLIOS_Ψ8%74o'& e-/PJ)UN638&8UbDK{^G^>/^7c$I>V|p| i5y5gl/$~8vIA, pnܗ1yVb{o_.kԛ5j, C;rב8/va ~ 1E=tlџO[-ZPǎB}YĭֵeG}gZWi?N!C[D|ɓe&k>bdRTtgljc]]qe m?\˚3^ dXMSNГ{"5?v"1 HVՐ L (s1Cݫ.W2a2] |\iߘJY|ŠBo( 6BG 7 &q%f %"y$]5? s.NSPS"ڠ#loכVܳ-ciy7e:KeY`:JMʒEodmXŭKY]N,}͖FǷъt~]參Ͳ: UkJ0eY~P"76DGz5v16ՠ,},o@{DeDPҝYyVVt٪gl-3hJ3zS9tQHC$n('3\U`g$eE]uZi9#2׃DO[ E !s wUYzڪr{ t/n+9!uY([PXV.G*2$}l 6hK5LPTB,=FAńGwU^Zl\a<.[oDt)}sخul۶m9mm9m۶m};5WE'a6hI1)X`=t=¼6RhA8t%JA| A?Wo]G>Xe&m"L, p%_(mj,U4˥anHNUc˓ZPVR.b1i$pjd8Qvyi:ѱ/b}RF, 'GI΋xRAtYZ=P 7Zm4 .|a]Zng9'>K+TcMe+=Qz틈t><WQa39Tg_t1 `ۅhWv&1@͸ 2ӂK CKM{P%RX <1WՏn)Z0̋]57]A/"G7jd-.kj")~!M2DmMXI`,j`A/R$ צ߬Z(P- Fec/U:+½껧}Wԁqn*\~Vi1{7^~%wP'Aw$-ūs‚L#<2/I5dZjO/6yO.H IX V%@%~)ľڭ>Yfy L0>vQ3 HY^M]sGomNW2zڲƐ8Z7\kBL&z; ] 2 #eN'`dquCČ:3}^@ĸ]>ۓGkI*0I 5D.Oi1 ;R`p|֋LlbOWXnR%.-Ma6E2GT~tz)GUΘ !x B{ʎT6;3UƇ6)Q'98n j˖'ZsHt'u)Pd"hVyʻO컝Ed u:(4U~t"82D]$>rk*N3Ý;ؿO7"P27@CK/QP}C! }HNugPPkj5B-[qlb%+E{IC3\Q.=j5Z#qQQ0GQEs3 (N^16mNԘ`^JmJ̙@(:6%em*gItҠ9Hiaů79L6c=J覝C{ȋzFaC !+?+S`wP,]a+[G:|f܍ܲʼn0r~K wÉdO3]ם $jɽ1Fb*w4Aإ/H)IK'Sr#"QԌDՇť J )4*$.Q {u7/ySkozÛSw $"U1f%d׽{rЄ YYRW;T5Shw)]h$ l|t`aWÀA$/m6]7lZv=յ.BfWFS=6єJ{#O!/d=O4ƙqo* IV1~q)?y{bwِj& {le;3)=R@ b{ZMϽ[$K+5 DlX|v*RjeC>/d6yT]u2oŠ LrR]Q-?akHz:T;o.cLcԎ岗EV 9VH OyF.蒏gqG7rW0ŀ I`y{ o#xMHєRDa XvHl\1?#7ﺇxJ0 { P7]0{IJ7*ɁXkLQX٪FfŮIEkA(9[SM+c a:ش]͘x-5d &vgl nIH{߁K-uTN4ŗk^C^ VŠDq'zއ=l,-֠)}$ӻ 6cE/m ѽʟQY%}hk!zp̸5dʉ"㌼FWZ8z.1*~)Y9m39"ڄ # zLDQlls*r4A܌GV?hp TِX>}="B/QB5 s5.&r>a5̭3"+|K2jn; oWVp*"E.W!IH";b֕ωT6KZd{SDz_n#bŬzOnn"Jh%HrfHcR=`UkTha+{\."/NT; G{yŞA1h)9<-"Z,ײ;u1n6(z?VSkWrDK, ɪHBxn2"Vw5-ehcL`v;x67aX0FLeMq]6$\1C=71$}%o4HQeG#s0ORU!,/Um"r{Ae|cNpALEpD6@^-TFV,@DZW ^|/I  m0>zU=:$ZE)4t9j_.vRY,(Ďj2fwv^H,}gIA qriuaQp2 7D @زM~/XaPأfp&AQ*_!N^5fbQ.͕}[j3{3T^*P_4hdڹBdI|n<ޚu,Tph+}pܕN(𙌊+SpLQ}O]5o-1jhJ$_2 3+;:>_tу9*jnRtus #[TCBnKI`֠0ɗ=8"> kADʐH[N ~eU66&˸bkG};&^3:<|fw`)b(dS5ec6ۈ'ova`o[!ql{[= qNu $Y^`jG6ߝ_HH6$Nwm5U'AUڟ=OCazhTF'/222 %LCjﵝX2/4r ~`pU`|Z0V,},o)n) @\8Dxm) XiD~\{E$CF,`ߙM؂ JHS2C[RSW[1 .wh2W+om9Wn"Çh/U B0d\ƩXVSk&`D= jq%R7Ӎ9Sm+Az4BW@0i\2_闧]%X5%cג&*Jf7wƻ͐gi@|޼̲,TdT[{F9)ɥX\IgX4>;],e v"]ꟑpq+职pMQq@yTv:hHi(z>\ݽ*!w:yB&& $ Dzmګ-j'Kh3}!17-p= pH/n!۴aI](tzRI(y'FZDXSU&oAǘ#Utmܱ9f^B:tX'`q>]'wpgOT< JօM7/xccjGYl#CT5q1ȠdHHY>%aœh %kŽslʼo@ȑ^6kczn`VߟBnEoypeJ&N<2J1+mi2(ƺPErIX@0ࠎ:,o7ЏBu[>x5NS ݉_g\s]/ӮԠ̕\+po:!141,p(o9yC't*yڬK"@j9CغYh!de $:4 '[[axQ3G[0^c5ꚤk^ '~ 2zpE s&'J:5n(}ףCʞ @h1~N K?P߹2SkoE:!r8q5<4 ‘:M(q{l'T|5hh34W*?Y.+ !KvKg#7lBYNq Hx]*}¦d7*l3[2b[ԛ:ժd TEQ4r>stfBAAlX0FְT SaÌ&I9!H#XV,ǖ&&)ݬ2QNI #:t6KYu_&DnV⿮PTVUQ^5қeu{][<b4&ni\0ԘN9,`L?p7tWҏN;1 Wُ3|61NdN{Ҥ[⍳2X YP'}4pQVvYW "rc(ro,h nRͼf|Hy^( AUA,,Uĉ5@r@>A 7 wc4|)DbҏiD " .3E\DȦsn/o^GhqGBQCg%Y˗ϕgRGQӒjy؈IyC h\j qڗhf ǴBkEyE<#-VN| ;eyQY7c%/kG y #d' ,CW0l7R)Xl>w3fv'o;(tA,Edɾī+| ` |4#4''-[) _whщ$wV,=&Ij[2XOK̭w2op7،:eBq13$V7en'D,}zwU+Ǵy_!Mzwm |wNlldThz:*r¨{$J&-Qv!hM"YINd."B Ҭb; 6Ra V&l٨uّ#]ݎae] Cyon(NryLD ZzbZ: 7޹2nr5(p@ ?Z{kd CwJBS02"dzk|,f,턇ՠƅ58IT_ #"E*Ipؗ[clKg9<FtXjeL_aj͟h,aɱ 64uQ֦$tP[* 5 jq&A'HN°/+I"v<\ }=|8U 2Rnx\o&'Jz8c7v-ʛ_{D_KcUTPZ,7?"ȼEwC^LF6fϝv<Q䆱Na-'m2志&/iKƩ6ͯ [pVYWߪ7vdY \x[dpT%{x%S.U #'qh>{TSN,(0b_{iNbA:4G3&;5E뜙CC (,L{7G V _HA d۰܄AvD :1wՏE-R0j.mZ*>Sȧ2G'\iu+Z9n|N'N'iw}"Y: #wJRޞۏy5OOZyr)Ny[(? ųb96\&k&ϟ6t;2~Qb}63 %T?lUYrK]9GyHZ&&N/b't~uNLmtl i"O{ NDcfmy<7uF)[N!(vg|bny^yx@f&qAz כ14Pl\J6f2e"tw^os& a_!pKK5$m;&G4J؍HM&xLMT(淐M/4LzvsW?}j"y[0'4~ §YK?L'qŤIwaô XT5uArXL89N]ȩZz~8%)C7X"-!d3ΘCT4,)ݲm x{݌;.%"ddBm/dUC |+n>NΚh暞tytC3M@؁H 2GU.4ia-¹W duĮwGUBq$ؕGrVx_b?+ Ll͌]쌜m`F  endstream endobj 6 0 obj << /Type /Font /Subtype /Type1 /Encoding 58 0 R /FirstChar 6 /LastChar 248 /Widths 66 0 R /BaseFont /RWOALI+GaramondNo8-Ita /FontDescriptor 4 0 R >> endobj 4 0 obj << /Ascent 759 /CapHeight 714 /Descent -267 /FontName /RWOALI+GaramondNo8-Ita /ItalicAngle -16 /StemV 79 /XHeight 0 /FontBBox [-196 -280 1095 957] /Flags 4 /CharSet (/hungarumlaut/fi/exclam/percent/quoteright/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/colon/A/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/W/X/Z/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z/emdash/aacute/aring/eacute/edieresis/iacute/otilde/oslash) /FontFile 5 0 R >> endobj 66 0 obj [479 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240 0 0 0 774 0 240 240 240 0 0 240 240 240 0 480 479 480 480 480 0 0 0 0 0 240 0 0 0 0 0 0 701 0 701 756 590 498 774 774 332 313 0 590 774 738 793 553 0 682 461 608 756 0 959 701 0 627 0 0 0 0 0 0 461 479 369 498 369 276 424 479 295 240 498 276 811 553 461 461 0 387 295 313 516 516 719 461 442 424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 774 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 461 0 0 0 461 0 0 0 369 0 369 0 295 0 0 0 0 0 0 0 461 0 0 461 ] endobj 22 0 obj << /Type /Pages /Count 6 /Kids [2 0 R 24 0 R 33 0 R 39 0 R 45 0 R 48 0 R] >> endobj 67 0 obj << /Type /Catalog /Pages 22 0 R >> endobj 68 0 obj << /Producer (pdfeTeX-1.30.4) /Creator (TeX) /CreationDate (D:20061011234629+02'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.30.4-2.2 (Web2C 7.5.5) kpathsea version 3.5.5) >> endobj xref 0 69 0000000000 65535 f 0000004375 00000 n 0000004270 00000 n 0000000015 00000 n 0000163738 00000 n 0000137015 00000 n 0000163574 00000 n 0000135820 00000 n 0000103677 00000 n 0000135656 00000 n 0000103213 00000 n 0000084307 00000 n 0000103040 00000 n 0000083357 00000 n 0000058148 00000 n 0000083183 00000 n 0000055782 00000 n 0000053426 00000 n 0000055604 00000 n 0000053073 00000 n 0000044308 00000 n 0000052896 00000 n 0000164848 00000 n 0000009222 00000 n 0000009114 00000 n 0000004502 00000 n 0000041521 00000 n 0000032922 00000 n 0000041361 00000 n 0000032580 00000 n 0000030484 00000 n 0000032398 00000 n 0000014033 00000 n 0000013925 00000 n 0000009362 00000 n 0000030154 00000 n 0000028757 00000 n 0000029999 00000 n 0000018943 00000 n 0000018835 00000 n 0000014173 00000 n 0000028219 00000 n 0000025901 00000 n 0000028034 00000 n 0000023237 00000 n 0000023129 00000 n 0000019083 00000 n 0000025785 00000 n 0000025677 00000 n 0000023365 00000 n 0000028600 00000 n 0000028471 00000 n 0000030392 00000 n 0000030369 00000 n 0000032832 00000 n 0000032809 00000 n 0000042212 00000 n 0000041781 00000 n 0000042461 00000 n 0000053301 00000 n 0000056162 00000 n 0000056031 00000 n 0000056339 00000 n 0000083782 00000 n 0000103472 00000 n 0000136348 00000 n 0000164203 00000 n 0000164941 00000 n 0000164992 00000 n trailer << /Size 69 /Root 67 0 R /Info 68 0 R /ID [ ] >> startxref 165197 %%EOF hyphen-2.8.9/example.c000066400000000000000000000133131520164222500146240ustar00rootroot00000000000000#include #include #include #include #include "hyphen.h" #define BUFSIZE 1000 void help() { fprintf(stderr,"correct syntax is:\n"); fprintf(stderr,"example [-d | -dd] hyphen_dictionary_file file_of_words_to_check\n"); fprintf(stderr,"-o = use old algorithm (without non-standard hyphenation)\n"); fprintf(stderr,"-d = hyphenation with listing of the possible hyphenations\n"); fprintf(stderr,"-n = print hyphenation vector\n"); } /* get a pointer to the nth 8-bit or UTF-8 character of the word */ char * hindex(char * word, int n, int utf8) { int j = 0; while (j < n) { j++; word++; while (utf8 && ((((unsigned char) *word) >> 6) == 2)) word++; } return word; } /* list possible hyphenations with -dd option (example for the usage of the hyphenate2() function) */ void single_hyphenations(char * word, char * hyphen, char ** rep, int * pos, int * cut, int utf8) { int i, k, j = 0; char r; for (i = 0; (i + 1) < strlen(word); i++) { if (utf8 && ((((unsigned char) word[i]) >> 6) == 2)) continue; if ((hyphen[j] & 1)) { if (rep && rep[j]) { k = hindex(word, j - pos[j] + 1, utf8) - word; r = word[k]; word[k] = 0; printf(" - %s%s", word, rep[j]); word[k] = r; printf("%s\n", hindex(word + k, cut[j], utf8)); } else { k = hindex(word, j + 1, utf8) - word; r = word[k]; word[k] = 0; printf(" - %s=", word); word[k] = r; printf("%s\n", word + k); } } j++; } } int main(int argc, char** argv) { HyphenDict *dict; int df; int wtc; FILE* wtclst; int k, n, i, j, c; char buf[BUFSIZE + 1]; int nHyphCount; char *hyphens; char *lcword; char *hyphword; char *hword; int arg = 1; int optd = 1; int optn = 0; int optdd = 0; char ** rep; int * pos; int * cut; /* first parse the command line options */ /* arg1 - hyphen dictionary file, arg2 - file of words to check */ if (argv[arg]) { if (strcmp(argv[arg], "-o") == 0) { optd = 0; arg++; } if (argv[arg] && strcmp(argv[arg], "-n") == 0) { optn = 1; arg++; } if (argv[arg] && strcmp(argv[arg], "-d") == 0) { optd = 1; optdd = 1; arg++; } } if (argv[arg]) { df = arg++; } else { help(); exit(1); } if (argv[arg]) { wtc = arg++; } else { help(); exit(1); } /* load the hyphenation dictionary */ if ((dict = hnj_hyphen_load(argv[df])) == NULL) { fprintf(stderr, "Couldn't find file %s\n", argv[df]); fflush(stderr); exit(1); } /* open the words to check list */ wtclst = fopen(argv[wtc],"r"); if (!wtclst) { fprintf(stderr,"Error - could not open file of words to check\n"); exit(1); } /* now read each word from the wtc file */ while(fgets(buf,BUFSIZE,wtclst) != NULL) { k = strlen(buf); if (k && buf[k - 1] == '\n') buf[--k] = '\0'; if (k && buf[k - 1] == '\r') buf[--k] = '\0'; /* set aside some buffers to hold lower cased */ /* and hyphen information */ lcword = (char *) malloc(k+1); hyphens = (char *)malloc(k+5); /* basic ascii lower-case, not suitable for real-world usage*/ for (i = 0; i < k; ++i) { lcword[i] = buf[i]; if ( (lcword[i] >= 'A') && (lcword[i] <= 'Z') ) lcword[i] += 32; } lcword[k] = '\0'; /* first remove any trailing periods */ n = k; while ((n > 0) && (lcword[n - 1] == '.')) lcword[--n] = '\0'; if (n <= 0 || n > BUFSIZE) { free(hyphens); free(lcword); continue; } /* now actually try to hyphenate the word */ rep = NULL; pos = NULL; cut = NULL; /* set minimum required output buffer size (2 * word_size) */ hword = (char *) malloc(n * 2); hword[0] = '\0'; if ((!optd && hnj_hyphen_hyphenate(dict, lcword, n, hyphens)) || (optd && hnj_hyphen_hyphenate2(dict, lcword, n, hyphens, hword, &rep, &pos, &cut))) { free(hyphens); free(lcword); free(hword); fprintf(stderr, "hyphenation error\n"); exit(1); } if (optn) fprintf(stderr, "%s\n", hyphens); if (!optd) { /* now backfill hyphens[] for any removed periods */ for (c = n; c < k; c++) hyphens[c] = '0'; hyphens[k] = '\0'; /* now create a new char string showing hyphenation positions */ /* count the hyphens and allocate space for the new hypehanted string */ nHyphCount = 0; for (i = 0; i < n; i++) if (hyphens[i]&1) nHyphCount++; hyphword = (char *) malloc(k+1+nHyphCount); j = 0; for (i = 0; i < n; i++) { hyphword[j++] = buf[i]; if (hyphens[i]&1) { hyphword[j++] = '-'; } } hyphword[j] = '\0'; fprintf(stdout,"%s\n",hyphword); fflush(stdout); free(hyphword); } else { fprintf(stdout,"%s\n", hword); if (optdd) single_hyphenations(lcword, hyphens, rep, pos, cut, dict->utf8); if (rep) { for (i = 0; i < n; i++) { if (rep[i]) free(rep[i]); } free(rep); free(pos); free(cut); } } free(hyphens); free(lcword); free(hword); } fclose(wtclst); hnj_hyphen_free(dict); return 0; } hyphen-2.8.9/fuzz/000077500000000000000000000000001520164222500140225ustar00rootroot00000000000000hyphen-2.8.9/fuzz/.gitignore000066400000000000000000000001211520164222500160040ustar00rootroot00000000000000fuzz_hyphen fuzz_hyphen_cov *.profraw *.profdata corpus_seed/ corpus/ artifacts/ hyphen-2.8.9/fuzz/build.sh000077500000000000000000000016351520164222500154650ustar00rootroot00000000000000#!/bin/sh # Build libFuzzer harnesses for hyphen. # # Produces two binaries in fuzz/: # fuzz_hyphen - libFuzzer + ASan + UBSan, the actual fuzz target. # fuzz_hyphen_cov - coverage-instrumented (no sanitizers), for post-run # coverage reporting via llvm-profdata + llvm-cov. set -eu cd "$(dirname "$0")/.." CC=${CC:-clang} CFLAGS_COMMON="-O1 -g -fno-omit-frame-pointer -I." SOURCES="hyphen.c hnjalloc.c fuzz/fuzz_hyphen.c" echo "[fuzz] building fuzz_hyphen (fuzzer + ASan + UBSan)" $CC $CFLAGS_COMMON \ -fsanitize=fuzzer,address,undefined \ -fno-sanitize-recover=undefined \ $SOURCES \ -o fuzz/fuzz_hyphen echo "[fuzz] building fuzz_hyphen_cov (coverage-instrumented)" $CC $CFLAGS_COMMON \ -fsanitize=fuzzer \ -fprofile-instr-generate -fcoverage-mapping \ $SOURCES \ -o fuzz/fuzz_hyphen_cov echo "[fuzz] done:" ls -lh fuzz/fuzz_hyphen fuzz/fuzz_hyphen_cov hyphen-2.8.9/fuzz/build_corpus.sh000077500000000000000000000041411520164222500170530ustar00rootroot00000000000000#!/bin/sh # Build a libFuzzer seed corpus from the existing tests/ data and # the bundled hyph_en_US.dic. Each seed file has the format: # # [word bytes][NUL][dictionary bytes] # # matching what fuzz_hyphen.c expects. set -eu cd "$(dirname "$0")/.." CORPUS_DIR=${1:-fuzz/corpus_seed} mkdir -p "$CORPUS_DIR" count=0 # tests/.pat + tests/.word -> one seed per word line for pat in tests/*.pat; do name=$(basename "$pat" .pat) wordfile="tests/${name}.word" [ -f "$wordfile" ] || continue line_no=0 while IFS= read -r word || [ -n "$word" ]; do line_no=$((line_no + 1)) # strip CR if present word=$(printf '%s' "$word" | tr -d '\r') out="$CORPUS_DIR/${name}_${line_no}" # concat: word, NUL, dictionary { printf '%s' "$word"; printf '\0'; cat "$pat"; } > "$out" count=$((count + 1)) done < "$wordfile" done # A few generic seeds against hyph_en_US.dic (much larger dictionary, # helps the FSM walk lots of states). if [ -f hyph_en_US.dic ]; then for w in hyphenation example creating absolutely beautifully \ antidisestablishmentarianism photograph supercalifragilistic \ "" "a" "ab" "abc" ".a" "a." ".." "a-b" "12345"; do out="$CORPUS_DIR/en_$(printf '%s' "$w" | tr -c 'a-zA-Z0-9' '_')" { printf '%s' "$w"; printf '\0'; cat hyph_en_US.dic; } > "$out" count=$((count + 1)) done fi # A pure-parser seed: empty word, full hyph_en_US dictionary. if [ -f hyph_en_US.dic ]; then cat hyph_en_US.dic > "$CORPUS_DIR/parser_only_en" count=$((count + 1)) fi # Tiny edge cases for the parser path { printf '%s' "x"; printf '\0'; printf 'UTF-8\n1.a\n'; } > "$CORPUS_DIR/tiny_boundary" { printf '%s' "x"; printf '\0'; printf 'UTF-8\n'; } > "$CORPUS_DIR/tiny_empty_dict" { printf '%s' "x"; printf '\0'; printf 'UTF-8\nNOHYPHEN \n1a1\n'; } > "$CORPUS_DIR/tiny_nohyphen_empty" { printf '%s' "x"; printf '\0'; printf 'UTF-8\nNEXTLEVEL\nUTF-8\n1a1\n'; } > "$CORPUS_DIR/tiny_nextlevel" count=$((count + 4)) echo "[corpus] wrote $count seed files to $CORPUS_DIR" du -sh "$CORPUS_DIR" hyphen-2.8.9/fuzz/fuzz_hyphen.c000066400000000000000000000072771520164222500165540ustar00rootroot00000000000000/* libFuzzer harness for hyphen. * * Input format: [word bytes][NUL][dictionary bytes]. * If no NUL is present, the whole buffer is treated as the dictionary * and the word is empty (parser-only path). * * The dictionary is loaded via hnj_hyphen_load_data() to avoid filesystem I/O. */ #include #include #include #include #include #include "hyphen.h" #define MAX_INPUT 65536 #define MAX_WORD_SIZE 1024 static void run_hyphenate(HyphenDict *dict, const char *word, int word_size) { if (word_size <= 0) return; size_t hyphens_size = (size_t)word_size + 5; size_t hyphword_size = (size_t)word_size * 2 + 1; /* hnj_hyphen_hyphenate2 */ { char *hyphens = (char *)malloc(hyphens_size); char *hyphword = (char *)malloc(hyphword_size); char **rep = NULL; int *pos = NULL; int *cut = NULL; if (hyphens && hyphword) { memset(hyphens, 0, hyphens_size); memset(hyphword, 0, hyphword_size); (void)hnj_hyphen_hyphenate2(dict, word, word_size, hyphens, hyphword, &rep, &pos, &cut); if (rep) { for (int i = 0; i < word_size; i++) if (rep[i]) free(rep[i]); free(rep); free(pos); free(cut); } } free(hyphens); free(hyphword); } /* hnj_hyphen_hyphenate3 with non-trivial hyphenmin parameters to exercise the lhmin/rhmin/clhmin/crhmin paths. */ { char *hyphens = (char *)malloc(hyphens_size); char *hyphword = (char *)malloc(hyphword_size); char **rep = NULL; int *pos = NULL; int *cut = NULL; if (hyphens && hyphword) { memset(hyphens, 0, hyphens_size); memset(hyphword, 0, hyphword_size); (void)hnj_hyphen_hyphenate3(dict, word, word_size, hyphens, hyphword, &rep, &pos, &cut, 2, 2, 2, 2); if (rep) { for (int i = 0; i < word_size; i++) if (rep[i]) free(rep[i]); free(rep); free(pos); free(cut); } } free(hyphens); free(hyphword); } /* legacy hnj_hyphen_hyphenate */ { char *hyphens = (char *)malloc(hyphens_size); if (hyphens) { memset(hyphens, 0, hyphens_size); (void)hnj_hyphen_hyphenate(dict, word, word_size, hyphens); } free(hyphens); } } int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (size == 0 || size > MAX_INPUT) return 0; const uint8_t *word_buf = NULL; int word_size = 0; const uint8_t *dict_buf = data; size_t dict_size = size; const uint8_t *nul = memchr(data, 0, size); if (nul) { size_t prefix = (size_t)(nul - data); if (prefix > MAX_WORD_SIZE) prefix = MAX_WORD_SIZE; word_buf = data; word_size = (int)prefix; dict_buf = nul + 1; dict_size = size - (size_t)(nul - data) - 1; } if (dict_size == 0) return 0; HyphenDict *dict = hnj_hyphen_load_data((const char *)dict_buf, dict_size); if (!dict) return 0; if (word_size > 0) { char *word = (char *)malloc((size_t)word_size + 1); if (word) { memcpy(word, word_buf, (size_t)word_size); word[word_size] = 0; run_hyphenate(dict, word, word_size); free(word); } } hnj_hyphen_free(dict); return 0; } hyphen-2.8.9/fuzz/run_long.sh000077500000000000000000000022321520164222500162030ustar00rootroot00000000000000#!/bin/sh # Long fuzz run launcher. # # Tunables (env): # FORKS - number of parallel fork workers (default 8) # MAX_TIME - max_total_time in seconds (default 43200 = 12h) # FUZZ_STATE - directory holding corpus/, artifacts/, logs/ set -eu cd "$(dirname "$0")/.." FORKS=${FORKS:-8} MAX_TIME=${MAX_TIME:-43200} FUZZ_STATE=${FUZZ_STATE:-/home/caolan/auto/jail/tmp/hyphen-fuzz} mkdir -p "$FUZZ_STATE/corpus" "$FUZZ_STATE/artifacts" "$FUZZ_STATE/logs" LOG="$FUZZ_STATE/logs/fuzz.log" echo "[run_long] starting at $(date -Iseconds)" | tee -a "$LOG" echo "[run_long] forks=$FORKS max_time=${MAX_TIME}s state=$FUZZ_STATE" | tee -a "$LOG" ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:dedup_token_length=3:print_stacktrace=1:symbolize=1" \ UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=0:symbolize=1" \ exec ./fuzz/fuzz_hyphen \ -fork="$FORKS" \ -ignore_crashes=1 \ -ignore_timeouts=1 \ -ignore_ooms=1 \ -timeout=25 \ -rss_limit_mb=2048 \ -max_len=8192 \ -max_total_time="$MAX_TIME" \ -reload=30 \ -print_final_stats=1 \ -artifact_prefix="$FUZZ_STATE/artifacts/" \ "$FUZZ_STATE/corpus" \ >> "$LOG" 2>&1 hyphen-2.8.9/fuzz/triage.sh000077500000000000000000000051061520164222500156360ustar00rootroot00000000000000#!/bin/sh # Group crash artifacts by ASan stack-trace signature. # # For each file in $ARTIFACTS, replay it through fuzz_hyphen, extract a # short signature from the ASan output (top 3 frames + error type), and # group by signature. Print one representative input + count per group. set -eu cd "$(dirname "$0")/.." ARTIFACTS=${1:-/home/caolan/auto/jail/tmp/hyphen-fuzz/artifacts} OUT=${2:-/home/caolan/auto/jail/tmp/hyphen-fuzz/triage} mkdir -p "$OUT/by_sig" : > "$OUT/index.txt" total=0 for f in "$ARTIFACTS"/crash-* "$ARTIFACTS"/leak-* "$ARTIFACTS"/oom-* "$ARTIFACTS"/timeout-*; do [ -f "$f" ] || continue total=$((total + 1)) # Replay quickly. Symbolised ASan output goes to stderr. out=$(ASAN_OPTIONS=detect_leaks=1:abort_on_error=0:symbolize=1 \ UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=0:symbolize=1 \ timeout 15 ./fuzz/fuzz_hyphen "$f" 2>&1 || true) # Extract error kind. Try ASan first ("ERROR: AddressSanitizer: foo"), # fall back to UBSan ("hyphen.c:N:N: runtime error: foo"), then # libFuzzer ("ERROR: libFuzzer: foo"). err=$(printf '%s\n' "$out" \ | grep -oE 'ERROR: AddressSanitizer: [a-zA-Z-]+' \ | head -1 \ | sed 's/.*: //') if [ -z "$err" ]; then err=$(printf '%s\n' "$out" \ | grep -oE 'runtime error: [a-zA-Z][a-zA-Z -]*' \ | head -1 \ | sed 's/runtime error: //; s/ *$//; s/ /-/g') [ -n "$err" ] && err="ubsan-${err}" fi if [ -z "$err" ]; then err=$(printf '%s\n' "$out" \ | grep -oE 'ERROR: libFuzzer: [a-zA-Z-]+' \ | head -1 \ | sed 's/.*: //') [ -n "$err" ] && err="libfuzzer-${err}" fi [ -n "$err" ] || err="unknown" frames=$(printf '%s\n' "$out" \ | grep -oE 'in (hnj_[a-zA-Z0-9_]+|LLVMFuzzerTestOneInput|run_hyphenate)' \ | sed 's/^in //' \ | head -3 \ | tr '\n' '|' \ | sed 's/|$//') line=$(printf '%s\n' "$out" \ | grep -oE 'hyphen\.c:[0-9]+' \ | head -1) sig="${err}:${frames}:${line}" sig_safe=$(printf '%s' "$sig" | tr '/:|' '___' | tr -c 'A-Za-z0-9_.-' '_') mkdir -p "$OUT/by_sig/$sig_safe" cp "$f" "$OUT/by_sig/$sig_safe/" echo "$sig $f" >> "$OUT/index.txt" done echo echo "[triage] processed $total artifacts" echo echo "[triage] groups (signature - count - example):" sort "$OUT/index.txt" | awk -F'\t' ' { count[$1]++; example[$1]=$2 } END { for (s in count) printf " %4d %s (eg. %s)\n", count[s], s, example[s] } ' | sort -rn -k1,1 hyphen-2.8.9/fuzz/triage_one.sh000077500000000000000000000022711520164222500164770ustar00rootroot00000000000000#!/bin/sh # Replay a single artifact through fuzz_hyphen and emit one line: # \t # Designed to be invoked from xargs -P. f=$1 [ -f "$f" ] || exit 0 out=$(ASAN_OPTIONS=detect_leaks=1:abort_on_error=0:symbolize=1 \ UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=0:symbolize=1 \ timeout 15 /home/caolan/auto/jail/repos/hyphen/fuzz/fuzz_hyphen "$f" 2>&1 || true) err=$(printf '%s\n' "$out" | grep -oE 'ERROR: AddressSanitizer: [a-zA-Z-]+' | head -1 | sed 's/.*: //') if [ -z "$err" ]; then err=$(printf '%s\n' "$out" | grep -oE 'runtime error: [a-zA-Z][a-zA-Z -]*' | head -1 | sed 's/runtime error: //; s/ *$//; s/ /-/g') [ -n "$err" ] && err="ubsan-${err}" fi if [ -z "$err" ]; then err=$(printf '%s\n' "$out" | grep -oE 'ERROR: libFuzzer: [a-zA-Z-]+' | head -1 | sed 's/.*: //') [ -n "$err" ] && err="libfuzzer-${err}" fi [ -n "$err" ] || err="unknown" frames=$(printf '%s\n' "$out" \ | grep -oE 'in (hnj_[a-zA-Z0-9_]+|LLVMFuzzerTestOneInput|run_hyphenate)' \ | sed 's/^in //' | head -3 | tr '\n' '|' | sed 's/|$//') line=$(printf '%s\n' "$out" | grep -oE 'hyphen\.c:[0-9]+' | head -1) printf '%s:%s:%s\t%s\n' "$err" "$frames" "$line" "$f" hyphen-2.8.9/hnjalloc.c000066400000000000000000000036011520164222500147620ustar00rootroot00000000000000/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both * licenses follows. */ /* LibHnj - a library for high quality hyphenation and justification * Copyright (C) 1998 Raph Levien, (C) 2001 ALTLinux, Moscow * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA. */ /* * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "MPL"); you may not use this file except in * compliance with the MPL. You may obtain a copy of the MPL at * http://www.mozilla.org/MPL/ * * Software distributed under the MPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL * for the specific language governing rights and limitations under the * MPL. * */ /* wrappers for malloc */ #include #include void * hnj_malloc (int size) { void *p; p = malloc (size); if (p == NULL) { fprintf (stderr, "can't allocate %d bytes\n", size); exit (1); } return p; } void * hnj_realloc (void *p, int size) { p = realloc (p, size); if (p == NULL) { fprintf (stderr, "can't allocate %d bytes\n", size); exit (1); } return p; } void hnj_free (void *p) { free (p); } hyphen-2.8.9/hnjalloc.h000066400000000000000000000030071520164222500147670ustar00rootroot00000000000000/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both * licenses follows. */ /* LibHnj - a library for high quality hyphenation and justification * Copyright (C) 1998 Raph Levien * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA. */ /* * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "MPL"); you may not use this file except in * compliance with the MPL. You may obtain a copy of the MPL at * http://www.mozilla.org/MPL/ * * Software distributed under the MPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL * for the specific language governing rights and limitations under the * MPL. * */ /* wrappers for malloc */ void * hnj_malloc (int size); void * hnj_realloc (void *p, int size); void hnj_free (void *p); hyphen-2.8.9/hyphen.c000066400000000000000000001131211520164222500144620ustar00rootroot00000000000000/* Libhnj is dual licensed under LGPL and MPL. Boilerplate for both * licenses follows. */ /* LibHnj - a library for high quality hyphenation and justification * Copyright (C) 1998 Raph Levien, * (C) 2001 ALTLinux, Moscow (http://www.alt-linux.org), * (C) 2001 Peter Novodvorsky (nidd@cs.msu.su) * (C) 2006, 2007, 2008, 2010 László Németh (nemeth at OOo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA. */ /* * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "MPL"); you may not use this file except in * compliance with the MPL. You may obtain a copy of the MPL at * http://www.mozilla.org/MPL/ * * Software distributed under the MPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL * for the specific language governing rights and limitations under the * MPL. * */ #include /* for NULL, malloc */ #include /* for fprintf */ #include /* for strdup */ #include /* for INT_MAX */ #ifdef UNX #include /* for exit */ #endif #ifdef _WIN32 #include #include #endif #define noVERBOSE /* calculate hyphenmin values with long ligature length (2 or 3 characters * instead of 1 or 2) for comparison with hyphenation without ligatures */ #define noLONG_LIGATURE #ifdef LONG_LIGATURE #define LIG_xx 1 #define LIG_xxx 2 #else #define LIG_xx 0 #define LIG_xxx 1 #endif #include "hnjalloc.h" #include "hyphen.h" static char * hnj_strdup (const char *s) { char *newstr; int l; l = strlen (s); newstr = (char *) hnj_malloc (l + 1); memcpy (newstr, s, l); newstr[l] = 0; return newstr; } /* remove cross-platform text line end characters */ void hnj_strchomp(char * s) { int k = strlen(s); if ((k > 0) && ((*(s+k-1)=='\r') || (*(s+k-1)=='\n'))) *(s+k-1) = '\0'; if ((k > 1) && (*(s+k-2) == '\r')) *(s+k-2) = '\0'; } /* a little bit of a hash table implementation. This simply maps strings to state numbers */ typedef struct _HashTab HashTab; typedef struct _HashEntry HashEntry; /* A cheap, but effective, hack. */ #define HASH_SIZE 31627 struct _HashTab { HashEntry *entries[HASH_SIZE]; }; struct _HashEntry { HashEntry *next; char *key; int val; }; /* a char* hash function from ASU - adapted from Gtk+ */ static unsigned int hnj_string_hash (const char *s) { const char *p; unsigned int h=0, g; for(p = s; *p != '\0'; p += 1) { h = ( h << 4 ) + *p; if ( ( g = h & 0xf0000000 ) ) { h = h ^ (g >> 24); h = h ^ g; } } return h /* % M */; } static HashTab * hnj_hash_new (void) { HashTab *hashtab; int i; hashtab = (HashTab *) hnj_malloc (sizeof(HashTab)); for (i = 0; i < HASH_SIZE; i++) hashtab->entries[i] = NULL; return hashtab; } static void hnj_hash_free (HashTab *hashtab) { int i; HashEntry *e, *next; for (i = 0; i < HASH_SIZE; i++) for (e = hashtab->entries[i]; e; e = next) { next = e->next; hnj_free (e->key); hnj_free (e); } hnj_free (hashtab); } /* assumes that key is not already present! */ static void hnj_hash_insert (HashTab *hashtab, const char *key, int val) { int i; HashEntry *e; i = hnj_string_hash (key) % HASH_SIZE; e = (HashEntry *) hnj_malloc (sizeof(HashEntry)); e->next = hashtab->entries[i]; e->key = hnj_strdup (key); e->val = val; hashtab->entries[i] = e; } /* return val if found, otherwise -1 */ static int hnj_hash_lookup (HashTab *hashtab, const char *key) { int i; HashEntry *e; i = hnj_string_hash (key) % HASH_SIZE; for (e = hashtab->entries[i]; e; e = e->next) if (!strcmp (key, e->key)) return e->val; return -1; } /* Get the state number, allocating a new state if necessary. */ static int hnj_get_state (HyphenDict *dict, HashTab *hashtab, const char *string) { int state_num; state_num = hnj_hash_lookup (hashtab, string); if (state_num >= 0) return state_num; hnj_hash_insert (hashtab, string, dict->num_states); /* predicate is true if dict->num_states is a power of two */ if (!(dict->num_states & (dict->num_states - 1))) { dict->states = (HyphenState *) hnj_realloc (dict->states, (dict->num_states << 1) * sizeof(HyphenState)); } dict->states[dict->num_states].match = NULL; dict->states[dict->num_states].repl = NULL; dict->states[dict->num_states].fallback_state = -1; dict->states[dict->num_states].num_trans = 0; dict->states[dict->num_states].trans = NULL; return dict->num_states++; } /* add a transition from state1 to state2 through ch - assumes that the transition does not already exist */ static void hnj_add_trans (HyphenDict *dict, int state1, int state2, char ch) { int num_trans; num_trans = dict->states[state1].num_trans; if (num_trans == 0) { dict->states[state1].trans = (HyphenTrans *) hnj_malloc (sizeof(HyphenTrans)); } else if (!(num_trans & (num_trans - 1))) { dict->states[state1].trans = (HyphenTrans *) hnj_realloc (dict->states[state1].trans, (num_trans << 1) * sizeof(HyphenTrans)); } dict->states[state1].trans[num_trans].ch = ch; dict->states[state1].trans[num_trans].new_state = state2; dict->states[state1].num_trans++; } #ifdef VERBOSE HashTab *global[1]; static char * get_state_str (int state, int level) { int i; HashEntry *e; for (i = 0; i < HASH_SIZE; i++) for (e = global[level]->entries[i]; e; e = e->next) if (e->val == state) return e->key; return NULL; } #endif void hnj_hyphen_load_line(char * buf, HyphenDict * dict, HashTab * hashtab) { int i, j; char word[MAX_CHARS]; char pattern[MAX_CHARS]; char * repl; signed char replindex; signed char replcut; int state_num = 0; int last_state; char ch; int found; if (strncmp(buf, "LEFTHYPHENMIN", 13) == 0) { dict->lhmin = atoi(buf + 13); return; } else if (strncmp(buf, "RIGHTHYPHENMIN", 14) == 0) { dict->rhmin = atoi(buf + 14); return; } else if (strncmp(buf, "COMPOUNDLEFTHYPHENMIN", 21) == 0) { dict->clhmin = atoi(buf + 21); return; } else if (strncmp(buf, "COMPOUNDRIGHTHYPHENMIN", 22) == 0) { dict->crhmin = atoi(buf + 22); return; } else if (strncmp(buf, "NOHYPHEN", 8) == 0) { char * space = buf + 8; while (*space != '\0' && (*space == ' ' || *space == '\t')) space++; if (dict->nohyphen) hnj_free(dict->nohyphen); dict->nohyphen = NULL; dict->nohyphenl = 0; if (*space != '\0') dict->nohyphen = hnj_strdup(space); if (dict->nohyphen) { char * nhe = dict->nohyphen + strlen(dict->nohyphen) - 1; *nhe = 0; for (nhe = nhe - 1; nhe > dict->nohyphen; nhe--) { if (*nhe == ',') { dict->nohyphenl++; *nhe = 0; } } } return; } j = 0; pattern[j] = '0'; repl = strchr(buf, '/'); replindex = 0; replcut = 0; if (repl) { char * index = strchr(repl + 1, ','); *repl = '\0'; if (index) { char * index2 = strchr(index + 1, ','); *index = '\0'; if (index2) { *index2 = '\0'; replindex = (signed char) atoi(index + 1) - 1; replcut = (signed char) atoi(index2 + 1); } } else { hnj_strchomp(repl + 1); replindex = 0; replcut = (signed char) strlen(buf); } repl = hnj_strdup(repl + 1); } for (i = 0; (unsigned char)buf[i] > (unsigned char)' ' && j < MAX_CHARS - 2; i++) { if (buf[i] >= '0' && buf[i] <= '9') pattern[j] = buf[i]; else { word[j] = buf[i]; pattern[++j] = '0'; } } word[j] = '\0'; pattern[j + 1] = '\0'; i = 0; if (!repl) { /* Optimize away leading zeroes */ for (; pattern[i] == '0'; i++); } else { if (*word == '.') i++; /* convert UTF-8 char. positions of discretionary hyph. replacements to 8-bit */ if (dict->utf8) { int pu = -1; /* unicode character position */ int ps = -1; /* unicode start position (original replindex) */ size_t pc = (*word == '.') ? 1: 0; /* 8-bit character position */ for (; pc < (strlen(word) + 1); pc++) { /* beginning of an UTF-8 character (not '10' start bits) */ if ((((unsigned char) word[pc]) >> 6) != 2) pu++; if ((ps < 0) && (replindex == pu)) { ps = replindex; replindex = (signed char) pc; } if ((ps >= 0) && ((pu - ps) == replcut)) { replcut = (signed char) (pc - replindex); break; } } if (*word == '.') replindex--; } } #ifdef VERBOSE printf ("word %s pattern %s, j = %d repl: %s\n", word, pattern + i, j, repl); #endif found = hnj_hash_lookup (hashtab, word); state_num = hnj_get_state (dict, hashtab, word); if (dict->states[state_num].match) hnj_free (dict->states[state_num].match); if (dict->states[state_num].repl) hnj_free (dict->states[state_num].repl); dict->states[state_num].match = hnj_strdup (pattern + i); dict->states[state_num].repl = repl; dict->states[state_num].replindex = replindex; if (!replcut) { dict->states[state_num].replcut = (signed char) strlen(word); } else { dict->states[state_num].replcut = replcut; } /* now, put in the prefix transitions */ for (; found < 0 && j > 0; --j) { last_state = state_num; ch = word[j - 1]; word[j - 1] = '\0'; found = hnj_hash_lookup (hashtab, word); state_num = hnj_get_state (dict, hashtab, word); hnj_add_trans (dict, state_num, last_state, ch); } } FILE * hnj_fopen(const char * path, const char * mode) { #ifdef _WIN32 #define WIN32_LONG_PATH_PREFIX "\\\\?\\" if (strncmp(path, WIN32_LONG_PATH_PREFIX, 4) == 0) { int len = MultiByteToWideChar(CP_UTF8, 0, path, -1, NULL, 0); wchar_t *buff = (wchar_t *) malloc(len * sizeof(wchar_t)); wchar_t *buff2 = (wchar_t *) malloc(len * sizeof(wchar_t)); FILE * f = NULL; MultiByteToWideChar(CP_UTF8, 0, path, -1, buff, len); if (_wfullpath( buff2, buff, len ) != NULL) { f = _wfopen(buff2, (strcmp(mode, "r") == 0) ? L"r" : L"rb"); } free(buff); free(buff2); return f; } #endif return fopen(path, mode); } HyphenDict * hnj_hyphen_load (const char *fn) { HyphenDict *result; FILE *f; f = hnj_fopen (fn, "r"); if (f == NULL) return NULL; result = hnj_hyphen_load_file(f); fclose(f); return result; } /* Line-reader callback used by hnj_hyphen_load_impl. Returns buf on success * (line copied in, '\n' included if present, NUL-terminated), or NULL on EOF. * Overly long lines are skipped with a warning. */ typedef char *(*hnj_get_line_fn)(char *buf, int n, void *ctx); typedef struct { const char *p; size_t n; } hnj_mem_ctx; static char *hnj_get_line_file(char *buf, int n, void *ctx) { FILE *f = (FILE *)ctx; while (fgets(buf, n, f) != NULL) { if (!feof(f) && strchr(buf, '\n') == NULL) { int c; while ((c = fgetc(f)) != '\n' && c != EOF); if (buf[0] != '%') fprintf(stderr, "Warning: skipping too long pattern (more than %d chars)\n", n); continue; } return buf; } return NULL; } static char *hnj_get_line_mem(char *buf, int n, void *ctx) { hnj_mem_ctx *m = (hnj_mem_ctx *)ctx; while (m->n > 0) { size_t cap = (size_t)(n - 1); size_t i = 0; while (i < m->n && i < cap && m->p[i] != '\n') i++; int has_nl = (i < cap && i < m->n && m->p[i] == '\n'); size_t copy = has_nl ? i + 1 : i; memcpy(buf, m->p, copy); buf[copy] = '\0'; m->p += copy; m->n -= copy; if (!has_nl && m->n > 0) { while (m->n > 0 && *m->p != '\n') { m->p++; m->n--; } if (m->n > 0) { m->p++; m->n--; } if (buf[0] != '%') fprintf(stderr, "Warning: skipping too long pattern (more than %d chars)\n", n); continue; } return buf; } return NULL; } static HyphenDict * hnj_hyphen_load_impl (hnj_get_line_fn get_line, void *ctx) { HyphenDict *dict[2]; HashTab *hashtab; char buf[MAX_CHARS]; int nextlevel = 0; int i, j, k; HashEntry *e; int state_num = 0; /* loading one or two dictionaries (separated by NEXTLEVEL keyword) */ for (k = 0; k < 2; k++) { hashtab = hnj_hash_new (); #ifdef VERBOSE global[k] = hashtab; #endif hnj_hash_insert (hashtab, "", 0); dict[k] = (HyphenDict *) hnj_malloc (sizeof(HyphenDict)); dict[k]->num_states = 1; dict[k]->states = (HyphenState *) hnj_malloc (sizeof(HyphenState)); dict[k]->states[0].match = NULL; dict[k]->states[0].repl = NULL; dict[k]->states[0].fallback_state = -1; dict[k]->states[0].num_trans = 0; dict[k]->states[0].trans = NULL; dict[k]->nextlevel = NULL; dict[k]->lhmin = 0; dict[k]->rhmin = 0; dict[k]->clhmin = 0; dict[k]->crhmin = 0; dict[k]->nohyphen = NULL; dict[k]->nohyphenl = 0; /* read in character set info */ if (k == 0) { for (i=0;icset[i]= 0; if (get_line(dict[k]->cset, sizeof(dict[k]->cset), ctx) != NULL) { for (i=0;icset[i] == '\r') || (dict[k]->cset[i] == '\n')) dict[k]->cset[i] = 0; } else { dict[k]->cset[0] = 0; } dict[k]->utf8 = (strcmp(dict[k]->cset, "UTF-8") == 0); } else { strncpy(dict[k]->cset, dict[0]->cset, sizeof(dict[k]->cset)-1); dict[k]->cset[sizeof(dict[k]->cset)-1] = '\0'; dict[k]->utf8 = dict[0]->utf8; } if (k == 0 || nextlevel) { while (get_line(buf, sizeof(buf), ctx) != NULL) { if (strncmp(buf, "NEXTLEVEL", 9) == 0) { nextlevel = 1; break; } else if (buf[0] != '%') { hnj_hyphen_load_line(buf, dict[k], hashtab); } } } else if (k == 1) { /* default first level: hyphen and ASCII apostrophe */ if (!dict[0]->utf8) hnj_hyphen_load_line("NOHYPHEN ',-\n", dict[k], hashtab); else hnj_hyphen_load_line("NOHYPHEN ',\xe2\x80\x93,\xe2\x80\x99,-\n", dict[k], hashtab); strncpy(buf, "1-1\n", MAX_CHARS-1); /* buf rewritten by hnj_hyphen_load here */ buf[MAX_CHARS-1] = '\0'; hnj_hyphen_load_line(buf, dict[k], hashtab); /* remove hyphen */ hnj_hyphen_load_line("1'1\n", dict[k], hashtab); /* ASCII apostrophe */ if (dict[0]->utf8) { hnj_hyphen_load_line("1\xe2\x80\x93" "1\n", dict[k], hashtab); /* endash */ hnj_hyphen_load_line("1\xe2\x80\x99" "1\n", dict[k], hashtab); /* apostrophe */ } } /* Could do unioning of matches here (instead of the preprocessor script). If we did, the pseudocode would look something like this: foreach state in the hash table foreach i = [1..length(state) - 1] state to check is substr (state, i) look it up if found, and if there is a match, union the match in. It's also possible to avoid the quadratic blowup by doing the search in order of increasing state string sizes - then you can break the loop after finding the first match. This step should be optional in any case - if there is a preprocessed rule table, it's always faster to use that. */ /* put in the fallback states */ for (i = 0; i < HASH_SIZE; i++) for (e = hashtab->entries[i]; e; e = e->next) { if (*(e->key)) for (j = 1; 1; j++) { state_num = hnj_hash_lookup (hashtab, e->key + j); if (state_num >= 0) break; } /* KBH: FIXME state 0 fallback_state should always be -1? */ if (e->val) dict[k]->states[e->val].fallback_state = state_num; } #ifdef VERBOSE for (i = 0; i < HASH_SIZE; i++) for (e = hashtab->entries[i]; e; e = e->next) { printf ("%d string %s state %d, fallback=%d\n", i, e->key, e->val, dict[k]->states[e->val].fallback_state); for (j = 0; j < dict[k]->states[e->val].num_trans; j++) printf (" %c->%d\n", dict[k]->states[e->val].trans[j].ch, dict[k]->states[e->val].trans[j].new_state); } #endif #ifndef VERBOSE hnj_hash_free (hashtab); #endif state_num = 0; } if (nextlevel) dict[0]->nextlevel = dict[1]; else { dict[1] -> nextlevel = dict[0]; dict[1]->lhmin = dict[0]->lhmin; dict[1]->rhmin = dict[0]->rhmin; dict[1]->clhmin = (dict[0]->clhmin) ? dict[0]->clhmin : ((dict[0]->lhmin) ? dict[0]->lhmin : 3); dict[1]->crhmin = (dict[0]->crhmin) ? dict[0]->crhmin : ((dict[0]->rhmin) ? dict[0]->rhmin : 3); #ifdef VERBOSE HashTab *r = global[0]; global[0] = global[1]; global[1] = r; #endif return dict[1]; } return dict[0]; } HyphenDict * hnj_hyphen_load_file (FILE *f) { return hnj_hyphen_load_impl(hnj_get_line_file, f); } HyphenDict * hnj_hyphen_load_data (const char *fdata, size_t flen) { hnj_mem_ctx ctx = { fdata, flen }; return hnj_hyphen_load_impl(hnj_get_line_mem, &ctx); } void hnj_hyphen_free (HyphenDict *dict) { int state_num; HyphenState *hstate; for (state_num = 0; state_num < dict->num_states; state_num++) { hstate = &dict->states[state_num]; if (hstate->match) hnj_free (hstate->match); if (hstate->repl) hnj_free (hstate->repl); if (hstate->trans) hnj_free (hstate->trans); } if (dict->nextlevel) hnj_hyphen_free(dict->nextlevel); if (dict->nohyphen) hnj_free(dict->nohyphen); hnj_free (dict->states); hnj_free (dict); } #define MAX_WORD 256 int hnj_hyphen_hyphenate (HyphenDict *dict, const char *word, int word_size, char *hyphens) { char *prep_word; int i, j, k; int state; char ch; HyphenState *hstate; char *match; int offset; prep_word = (char*) hnj_malloc (word_size + 3); j = 0; prep_word[j++] = '.'; for (i = 0; i < word_size; i++) { if (word[i] <= '9' && word[i] >= '0') { prep_word[j++] = '.'; } else { prep_word[j++] = word[i]; } } prep_word[j++] = '.'; prep_word[j] = '\0'; for (i = 0; i < word_size + 5; i++) hyphens[i] = '0'; #ifdef VERBOSE printf ("prep_word = %s\n", prep_word); #endif /* now, run the finite state machine */ state = 0; for (i = 0; i < j; i++) { ch = prep_word[i]; for (;;) { if (state == -1) { /* return 1; */ /* KBH: FIXME shouldn't this be as follows? */ state = 0; goto try_next_letter; } #ifdef VERBOSE char *state_str; state_str = get_state_str (state, 0); for (k = 0; k < i - strlen (state_str); k++) putchar (' '); printf ("%s", state_str); #endif hstate = &dict->states[state]; for (k = 0; k < hstate->num_trans; k++) if (hstate->trans[k].ch == ch) { state = hstate->trans[k].new_state; goto found_state; } state = hstate->fallback_state; #ifdef VERBOSE printf (" falling back, fallback_state %d\n", state); #endif } found_state: #ifdef VERBOSE printf ("found state %d\n",state); #endif /* Additional optimization is possible here - especially, elimination of trailing zeroes from the match. Leading zeroes have already been optimized. */ match = dict->states[state].match; /* replacing rules not handled by hyphen_hyphenate() */ if (match && !dict->states[state].repl) { offset = i + 1 - strlen (match); #ifdef VERBOSE for (k = 0; k < offset; k++) putchar (' '); printf ("%s\n", match); #endif /* This is a linear search because I tried a binary search and found it to be just a teeny bit slower. */ for (k = (offset < 0 ? -offset : 0); match[k]; k++) if (hyphens[offset + k] < match[k]) hyphens[offset + k] = match[k]; } /* KBH: we need this to make sure we keep looking in a word */ /* for patterns even if the current character is not known in state 0 */ /* since patterns for hyphenation may occur anywhere in the word */ try_next_letter: ; } #ifdef VERBOSE for (i = 0; i < j; i++) putchar (hyphens[i]); putchar ('\n'); #endif for (i = 0; i < j - 4; i++) #if 0 if (hyphens[i + 1] & 1) hyphens[i] = '-'; #else hyphens[i] = hyphens[i + 1]; #endif hyphens[0] = '0'; for (; i < word_size; i++) hyphens[i] = '0'; hyphens[word_size] = '\0'; hnj_free (prep_word); return 0; } /* Unicode ligature length */ int hnj_ligature(unsigned char c) { switch (c) { case 0x80: /* ff */ case 0x81: /* fi */ case 0x82: return LIG_xx; /* fl */ case 0x83: /* ffi */ case 0x84: return LIG_xxx; /* ffl */ case 0x85: /* long st */ case 0x86: return LIG_xx; /* st */ } return 0; } /* character length of the first n byte of the input word */ int hnj_hyphen_strnlen(const char * word, int n, int utf8) { int i = 0; int j = 0; while (j < n && word[j] != '\0') { i++; /* Unicode ligature support */ if (utf8 && ((unsigned char) word[j] == 0xEF) && ((unsigned char) word[j + 1] == 0xAC)) { i += hnj_ligature(word[j + 2]); } for (j++; utf8 && (word[j] & 0xc0) == 0x80; j++); } return i; } int hnj_hyphen_lhmin(int utf8, const char *word, int word_size, char * hyphens, char *** rep, int ** pos, int ** cut, int lhmin) { int i = 1, j; /* Unicode ligature support */ if (utf8 && ((unsigned char) word[0] == 0xEF) && ((unsigned char) word[1] == 0xAC)) { i += hnj_ligature(word[2]); } /* ignore numbers */ for (j = 0; word[j] <= '9' && word[j] >= '0'; j++) i--; for (j = 0; i < lhmin && j < word_size && word[j] != '\0'; i++) do { /* check length of the non-standard part */ if (*rep && *pos && *cut && (*rep)[j]) { char * rh = strchr((*rep)[j], '='); if (rh && (hnj_hyphen_strnlen(word, j - (*pos)[j] + 1, utf8) + hnj_hyphen_strnlen((*rep)[j], rh - (*rep)[j], utf8)) < lhmin) { free((*rep)[j]); (*rep)[j] = NULL; hyphens[j] = '0'; } } else { hyphens[j] = '0'; } j++; /* Unicode ligature support */ if (utf8 && ((unsigned char) word[j] == 0xEF) && ((unsigned char) word[j + 1] == 0xAC)) { i += hnj_ligature(word[j + 2]); } } while (j < word_size && utf8 && (word[j] & 0xc0) == 0x80); return 0; } int hnj_hyphen_rhmin(int utf8, const char *word, int word_size, char * hyphens, char *** rep, int ** pos, int ** cut, int rhmin) { int i = 0; int j; /* ignore numbers */ for (j = word_size - 1; j > 0 && word[j] <= '9' && word[j] >= '0'; j--) i--; for (j = word_size - 1; i < rhmin && j > 0; j--) { /* check length of the non-standard part */ if (*rep && *pos && *cut && (*rep)[j]) { char * rh = strchr((*rep)[j], '='); int start = j - (*pos)[j] + (*cut)[j] + 1; int word_len = (start >= 0 && start <= word_size) ? hnj_hyphen_strnlen(word + start, word_size - start, utf8) : 0; if (rh && (word_len + hnj_hyphen_strnlen(rh + 1, strlen(rh + 1), utf8)) < rhmin) { free((*rep)[j]); (*rep)[j] = NULL; hyphens[j] = '0'; } } else { hyphens[j] = '0'; } if (!utf8 || (word[j] & 0xc0) == 0xc0 || (word[j] & 0x80) != 0x80) i++; } return 0; } /* recursive function for compound level hyphenation */ int hnj_hyphen_hyph_(HyphenDict *dict, const char *word, int word_size, char * hyphens, char *** rep, int ** pos, int ** cut, int clhmin, int crhmin, int lend, int rend) { char *prep_word; int i, j, k; int state; char ch; HyphenState *hstate; char *match; char *repl; signed char replindex; signed char replcut; int offset; int * matchlen; int * matchindex; char ** matchrepl; int isrepl = 0; int nHyphCount; size_t prep_word_size = word_size + 3; prep_word = (char*) hnj_malloc (prep_word_size); matchlen = (int*) hnj_malloc ((word_size + 3) * sizeof(int)); memset(matchlen, 0, (word_size + 3) * sizeof(int)); matchindex = (int*) hnj_malloc ((word_size + 3) * sizeof(int)); matchrepl = (char**) hnj_malloc ((word_size + 3) * sizeof(char *)); j = 0; prep_word[j++] = '.'; for (i = 0; i < word_size; i++) { if (word[i] <= '9' && word[i] >= '0') { prep_word[j++] = '.'; } else { prep_word[j++] = word[i]; } } prep_word[j++] = '.'; prep_word[j] = '\0'; for (i = 0; i < j; i++) hyphens[i] = '0'; #ifdef VERBOSE printf ("prep_word = %s\n", prep_word); #endif /* now, run the finite state machine */ state = 0; for (i = 0; i < j; i++) { ch = prep_word[i]; for (;;) { if (state == -1) { /* return 1; */ /* KBH: FIXME shouldn't this be as follows? */ state = 0; goto try_next_letter; } #ifdef VERBOSE char *state_str; state_str = get_state_str (state, 1); for (k = 0; k < i - strlen (state_str); k++) putchar (' '); printf ("%s", state_str); #endif hstate = &dict->states[state]; for (k = 0; k < hstate->num_trans; k++) if (hstate->trans[k].ch == ch) { state = hstate->trans[k].new_state; goto found_state; } state = hstate->fallback_state; #ifdef VERBOSE printf (" falling back, fallback_state %d\n", state); #endif } found_state: #ifdef VERBOSE printf ("found state %d\n",state); #endif /* Additional optimization is possible here - especially, elimination of trailing zeroes from the match. Leading zeroes have already been optimized. */ match = dict->states[state].match; repl = dict->states[state].repl; replindex = dict->states[state].replindex; replcut = dict->states[state].replcut; /* replacing rules not handled by hyphen_hyphenate() */ if (match) { offset = i + 1 - strlen (match); #ifdef VERBOSE for (k = 0; k < offset; k++) putchar (' '); printf ("%s (%s)\n", match, repl); #endif if (repl) { if (!isrepl) for(; isrepl < word_size; isrepl++) { matchrepl[isrepl] = NULL; matchindex[isrepl] = -1; } if (offset + replindex >= 0 && offset + replindex < word_size + 3) matchlen[offset + replindex] = replcut; } /* This is a linear search because I tried a binary search and found it to be just a teeny bit slower. */ for (k = (offset < 0 ? -offset : 0); match[k]; k++) { if ((hyphens[offset + k] < match[k])) { hyphens[offset + k] = match[k]; if (match[k]&1) { matchrepl[offset + k] = repl; if (repl && (k >= replindex) && (k <= replindex + replcut) && offset + replindex >= 0) { matchindex[offset + replindex] = offset + k; } } } } } /* KBH: we need this to make sure we keep looking in a word */ /* for patterns even if the current character is not known in state 0 */ /* since patterns for hyphenation may occur anywhere in the word */ try_next_letter: ; } #ifdef VERBOSE for (i = 0; i < j; i++) putchar (hyphens[i]); putchar ('\n'); #endif for (i = 0; i < j - 3; i++) #if 0 if (hyphens[i + 1] & 1) hyphens[i] = '-'; #else hyphens[i] = hyphens[i + 1]; #endif for (; i < word_size; i++) hyphens[i] = '0'; hyphens[word_size] = '\0'; /* now create a new char string showing hyphenation positions */ /* count the hyphens and allocate space for the new hyphenated string */ nHyphCount = 0; for (i = 0; i < word_size; i++) if (hyphens[i]&1) nHyphCount++; j = 0; for (i = 0; i < word_size; i++) { if (isrepl && matchlen[i] >= 1 && matchindex[i] >= 1 && matchindex[i] <= word_size && matchrepl[matchindex[i]]) { if (rep && pos && cut) { if (!*rep) *rep = (char **) calloc(word_size, sizeof(char *)); if (!*pos) *pos = (int *) calloc(word_size, sizeof(int)); if (!*cut) { *cut = (int *) calloc(word_size, sizeof(int)); } hnj_free((*rep)[matchindex[i] - 1]); (*rep)[matchindex[i] - 1] = hnj_strdup(matchrepl[matchindex[i]]); (*pos)[matchindex[i] - 1] = matchindex[i] - i; (*cut)[matchindex[i] - 1] = matchlen[i]; } j += strlen(matchrepl[matchindex[i]]); i += matchlen[i] - 1; } } hnj_free (matchrepl); hnj_free (matchlen); hnj_free (matchindex); /* recursive hyphenation of the first (compound) level segments */ if (dict->nextlevel) { char ** rep2; int * pos2; int * cut2; char * hyphens2; int begin = 0; rep2 = (char**) hnj_malloc (word_size * sizeof(char *)); pos2 = (int*) hnj_malloc (word_size * sizeof(int)); cut2 = (int*) hnj_malloc (word_size * sizeof(int)); hyphens2 = (char*) hnj_malloc (word_size + 3); for (i = 0; i < word_size; i++) rep2[i] = NULL; for (i = 0; i < word_size; i++) if (hyphens[i]&1 || (begin > 0 && i + 1 == word_size)) { if (i - begin > 0) { int hyph = 0; prep_word[i + 2] = '\0'; /* non-standard hyphenation at compound boundary (Schiffahrt) */ if (rep && *rep && *pos && *cut && (*rep)[i]) { char * l = strchr((*rep)[i], '='); size_t offset = 2 + i - (*pos)[i]; strncpy(prep_word + offset, (*rep)[i], prep_word_size - offset - 1); prep_word[prep_word_size - 1] = '\0'; if (l) { hyph = (l - (*rep)[i]) - (*pos)[i]; if (2 + i + hyph < prep_word_size) prep_word[2 + i + hyph] = '\0'; } } int sub_size = i - begin + 1 + hyph; if (sub_size >= word_size) sub_size = word_size - 1; if ((size_t)sub_size + begin + 2 > prep_word_size) sub_size = (int)(prep_word_size - begin - 2); if (sub_size < 1) sub_size = 1; hnj_hyphen_hyph_(dict, prep_word + begin + 1, sub_size, hyphens2, &rep2, &pos2, &cut2, clhmin, crhmin, (begin > 0 ? 0 : lend), (hyphens[i]&1 ? 0 : rend)); for (j = 0; j < i - begin; j++) { hyphens[begin + j] = hyphens2[j]; if (rep2[j] && rep && pos && cut) { if (!*rep && !*pos && !*cut) { int k; *rep = (char **) malloc(sizeof(char *) * word_size); *pos = (int *) malloc(sizeof(int) * word_size); *cut = (int *) malloc(sizeof(int) * word_size); for (k = 0; k < word_size; k++) { (*rep)[k] = NULL; (*pos)[k] = 0; (*cut)[k] = 0; } } hnj_free((*rep)[begin + j]); (*rep)[begin + j] = rep2[j]; (*pos)[begin + j] = pos2[j]; (*cut)[begin + j] = cut2[j]; rep2[j] = NULL; } } prep_word[i + 2] = word[i + 1]; if (*rep && *pos && *cut && (*rep)[i]) { size_t offset = 1; strncpy(prep_word + offset, word, prep_word_size - offset - 1); prep_word[prep_word_size - 1] = '\0'; } } begin = i + 1; for (j = 0; j < word_size; j++) { hnj_free(rep2[j]); rep2[j] = NULL; } } /* non-compound */ if (begin == 0) { hnj_hyphen_hyph_(dict->nextlevel, word, word_size, hyphens, rep, pos, cut, clhmin, crhmin, lend, rend); if (!lend) hnj_hyphen_lhmin(dict->utf8, word, word_size, hyphens, rep, pos, cut, clhmin); if (!rend) hnj_hyphen_rhmin(dict->utf8, word, word_size, hyphens, rep, pos, cut, crhmin); } free(rep2); free(cut2); free(pos2); free(hyphens2); } hnj_free (prep_word); return 0; } /* UTF-8 normalization of hyphen and non-standard positions */ int hnj_hyphen_norm(const char *word, int word_size, char * hyphens, char *** rep, int ** pos, int ** cut) { int i, j, k; if ((((unsigned char) word[0]) >> 6) == 2) { fprintf(stderr, "error - bad, non UTF-8 input: %s\n", word); return 1; } /* calculate UTF-8 character positions */ for (i = 0, j = -1; i < word_size; i++) { /* beginning of an UTF-8 character (not '10' start bits) */ if ((((unsigned char) word[i]) >> 6) != 2) j++; hyphens[j] = hyphens[i]; if (rep && pos && cut && *rep && *pos && *cut) { int l = (*pos)[i]; (*pos)[j] = 0; for (k = 0; k < l; k++) { if ((((unsigned char) word[i - k]) >> 6) != 2) (*pos)[j]++; } k = i - l + 1; l = k + (*cut)[i]; (*cut)[j] = 0; for (; k < l && k < word_size; k++) { if ((((unsigned char) word[k]) >> 6) != 2) (*cut)[j]++; } if (j != i) { hnj_free((*rep)[j]); (*rep)[j] = (*rep)[i]; (*rep)[i] = NULL; (*pos)[i] = 0; (*cut)[i] = 0; } } } hyphens[j + 1] = '\0'; #ifdef VERBOSE printf ("nums: %s\n", hyphens); #endif return 0; } /* get the word with all possible hyphenations (output: hyphword) */ void hnj_hyphen_hyphword(const char * word, int word_size, const char * hyphens, char * hyphword, char *** rep, int ** pos, int ** cut) { if (word_size <= 0 || word_size > INT_MAX / 2) { hyphword[0] = '\0'; return; } /* hyphword buffer size must be at least 2 * l */ int hyphword_size = 2 * word_size - 1; int nonstandard = 0; if (*rep && *pos && *cut) { nonstandard = 1; } int i; int j = 0; for (i = 0; i < word_size && j < hyphword_size; i++) { hyphword[j++] = word[i]; if (hyphens[i]&1 && j < hyphword_size) { if (nonstandard && (*rep)[i] && j >= (*pos)[i]) { /* non-standard */ j -= (*pos)[i]; char *s = (*rep)[i]; while (*s && j < hyphword_size) { hyphword[j++] = *s++; } i += (*cut)[i] - (*pos)[i]; } else { /* standard */ hyphword[j++] = '='; } } } hyphword[j] = '\0'; } /* main api function with default hyphenmin parameters */ int hnj_hyphen_hyphenate2 (HyphenDict *dict, const char *word, int word_size, char * hyphens, char *hyphword, char *** rep, int ** pos, int ** cut) { hnj_hyphen_hyph_(dict, word, word_size, hyphens, rep, pos, cut, dict->clhmin, dict->crhmin, 1, 1); hnj_hyphen_lhmin(dict->utf8, word, word_size, hyphens, rep, pos, cut, (dict->lhmin > 0 ? dict->lhmin : 2)); hnj_hyphen_rhmin(dict->utf8, word, word_size, hyphens, rep, pos, cut, (dict->rhmin > 0 ? dict->rhmin : 2)); /* nohyphen */ if (dict->nohyphen) { char * nh = dict->nohyphen; int nhi; for (nhi = 0; nhi <= dict->nohyphenl; nhi++) { char * nhy = *nh ? (char *) strstr(word, nh) : NULL; while (nhy) { hyphens[nhy - word + strlen(nh) - 1] = '0'; if (nhy - word - 1 >= 0) hyphens[nhy - word - 1] = '0'; nhy = (char *) strstr(nhy + 1, nh); } nh = nh + strlen(nh) + 1; } } if (hyphword) hnj_hyphen_hyphword(word, word_size, hyphens, hyphword, rep, pos, cut); if (dict->utf8) return hnj_hyphen_norm(word, word_size, hyphens, rep, pos, cut); #ifdef VERBOSE printf ("nums: %s\n", hyphens); #endif return 0; } /* previous main api function with hyphenmin parameters */ int hnj_hyphen_hyphenate3 (HyphenDict *dict, const char *word, int word_size, char * hyphens, char *hyphword, char *** rep, int ** pos, int ** cut, int lhmin, int rhmin, int clhmin, int crhmin) { lhmin = (lhmin > dict->lhmin) ? lhmin : dict->lhmin; rhmin = (rhmin > dict->rhmin) ? rhmin : dict->rhmin; clhmin = (clhmin > dict->clhmin) ? clhmin : dict->clhmin; crhmin = (crhmin > dict->crhmin) ? crhmin : dict->crhmin; hnj_hyphen_hyph_(dict, word, word_size, hyphens, rep, pos, cut, clhmin, crhmin, 1, 1); hnj_hyphen_lhmin(dict->utf8, word, word_size, hyphens, rep, pos, cut, (lhmin > 0 ? lhmin : 2)); hnj_hyphen_rhmin(dict->utf8, word, word_size, hyphens, rep, pos, cut, (rhmin > 0 ? rhmin : 2)); /* nohyphen */ if (dict->nohyphen) { char * nh = dict->nohyphen; int nhi; for (nhi = 0; nhi <= dict->nohyphenl; nhi++) { char * nhy = *nh ? (char *) strstr(word, nh) : NULL; while (nhy) { hyphens[nhy - word + strlen(nh) - 1] = '0'; if (nhy - word - 1 >= 0) hyphens[nhy - word - 1] = '0'; nhy = (char *) strstr(nhy + 1, nh); } nh = nh + strlen(nh) + 1; } } if (hyphword) hnj_hyphen_hyphword(word, word_size, hyphens, hyphword, rep, pos, cut); if (dict->utf8) return hnj_hyphen_norm(word, word_size, hyphens, rep, pos, cut); return 0; } hyphen-2.8.9/hyphen.h000066400000000000000000000130521520164222500144710ustar00rootroot00000000000000/* Hyphen - hyphenation library using converted TeX hyphenation patterns * * (C) 1998 Raph Levien * (C) 2001 ALTLinux, Moscow * (C) 2006, 2007, 2008 László Németh * * This was part of libHnj library by Raph Levien. * * Peter Novodvorsky from ALTLinux cut hyphenation part from libHnj * to use it in OpenOffice.org. * * Non-standard and compound word hyphenation support by László Németh. * * License is the original LibHnj license: * * LibHnj is dual licensed under LGPL and MPL. Boilerplate for both * licenses follows. */ /* LibHnj - a library for high quality hyphenation and justification * Copyright (C) 1998 Raph Levien * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA. */ /* * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "MPL"); you may not use this file except in * compliance with the MPL. You may obtain a copy of the MPL at * http://www.mozilla.org/MPL/ * * Software distributed under the MPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL * for the specific language governing rights and limitations under the * MPL. * */ #ifndef __HYPHEN_H__ #define __HYPHEN_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include typedef struct _HyphenDict HyphenDict; typedef struct _HyphenState HyphenState; typedef struct _HyphenTrans HyphenTrans; #define MAX_CHARS 100 #define MAX_NAME 20 struct _HyphenDict { /* user options */ char lhmin; /* lefthyphenmin: min. hyph. distance from the left side */ char rhmin; /* righthyphenmin: min. hyph. distance from the right side */ char clhmin; /* min. hyph. distance from the left compound boundary */ char crhmin; /* min. hyph. distance from the right compound boundary */ char * nohyphen; /* comma separated list of characters or character sequences with forbidden hyphenation */ int nohyphenl; /* count of elements in nohyphen */ /* system variables */ int num_states; char cset[MAX_NAME]; int utf8; HyphenState *states; HyphenDict *nextlevel; }; struct _HyphenState { char *match; char *repl; signed char replindex; signed char replcut; int fallback_state; int num_trans; HyphenTrans *trans; }; struct _HyphenTrans { char ch; int new_state; }; HyphenDict *hnj_hyphen_load (const char *fn); HyphenDict *hnj_hyphen_load_file (FILE *f); HyphenDict *hnj_hyphen_load_data (const char *fdata, size_t flen); void hnj_hyphen_free (HyphenDict *dict); /* obsolete, use hnj_hyphen_hyphenate2() or *hyphenate3() functions) */ int hnj_hyphen_hyphenate (HyphenDict *dict, const char *word, int word_size, char *hyphens); /* int hnj_hyphen_hyphenate2(): non-standard hyphenation. (It supports Catalan, Dutch, German, Hungarian, Norwegian, Swedish etc. orthography, see documentation.) input data: word: input word word_size: byte length of the input word hyphens: allocated character buffer (size = word_size + 5) hyphenated_word: allocated character buffer (size ~ word_size * 2) or NULL rep, pos, cut: pointers (point to the allocated and _zeroed_ buffers (size=word_size) or with NULL value) or NULL output data: hyphens: hyphenation vector (hyphenation points signed with odd numbers) hyphenated_word: hyphenated input word (hyphens signed with `='), optional (NULL input) rep: NULL (only standard hyph.), or replacements (hyphenation points signed with `=' in replacements); pos: NULL, or difference of the actual position and the beginning positions of the change in input words; cut: NULL, or counts of the removed characters of the original words at hyphenation, Note: rep, pos, cut are complementary arrays to the hyphens, indexed with the character positions of the input word. For example: Schiffahrt -> Schiff=fahrt, pattern: f1f/ff=f,1,2 output: rep[5]="ff=f", pos[5] = 1, cut[5] = 2 Note: hnj_hyphen_hyphenate2() can allocate rep, pos, cut (word_size length arrays): char ** rep = NULL; int * pos = NULL; int * cut = NULL; char hyphens[MAXWORDLEN]; hnj_hyphen_hyphenate2(dict, "example", 7, hyphens, NULL, &rep, &pos, &cut); See example in the source distribution. */ int hnj_hyphen_hyphenate2 (HyphenDict *dict, const char *word, int word_size, char * hyphens, char *hyphenated_word, char *** rep, int ** pos, int ** cut); /* like hnj_hyphen_hyphenate2, but with hyphenmin parameters */ /* lhmin: lefthyphenmin * rhmin: righthyphenmin * clhmin: compoundlefthyphemin * crhmin: compoundrighthyphenmin * (see documentation) */ int hnj_hyphen_hyphenate3 (HyphenDict *dict, const char *word, int word_size, char * hyphens, char *hyphword, char *** rep, int ** pos, int ** cut, int lhmin, int rhmin, int clhmin, int crhmin); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __HYPHEN_H__ */ hyphen-2.8.9/hyphen.patch000066400000000000000000000017171520164222500153460ustar00rootroot00000000000000--- hyphen.tex 2002-12-19 00:00:00.000000000 +0100 +++ hyphen.us 2007-11-22 14:06:43.000000000 +0100 @@ -2,7 +2,6 @@ % Unlimited copying and redistribution of this file are permitted as long % as this file is not modified. Modifications are permitted, but only if % the resulting file is not named hyphen.tex. -\patterns{ % just type if you're not using INITEX .ach4 .ad4der .af1t @@ -4450,20 +4449,17 @@ zte4 4z1z2 z4zy -} -\hyphenation{ % Do NOT make any alterations to this list! --- DEK -as-so-ciate -as-so-ciates -dec-li-na-tion -oblig-a-tory -phil-an-thropic -present -presents -project -projects -reci-procity -re-cog-ni-zance -ref-or-ma-tion -ret-ri-bu-tion -ta-ble -} +.as9s8o9c8i8a8te. +.as9s8o9c8i8a8t8es. +.de8c9l8i9n8a9t8i8on. +.ob8l8i8g9a9t8o8ry. +.ph8i8l9a8n9t8h8r8o8p8ic. +.pr8e8s8e8nt. +.pr8e8s8e8n8ts. +.pr8o8j8e8ct. +.pr8o8j8e8c8ts. +.re8c8i9p8r8o8c8i8ty. +.re9c8o8g9n8i9z8a8n8ce. +.re8f9o8r9m8a9t8i8on. +.re8t9r8i9b8u9t8i8on. +.ta9b8le. hyphen-2.8.9/hyphen.tex000066400000000000000000000663241520164222500150540ustar00rootroot00000000000000% The Plain TeX hyphenation tables [NOT TO BE CHANGED IN ANY WAY!] % Unlimited copying and redistribution of this file are permitted as long % as this file is not modified. Modifications are permitted, but only if % the resulting file is not named hyphen.tex. \patterns{ % just type if you're not using INITEX .ach4 .ad4der .af1t .al3t .am5at .an5c .ang4 .ani5m .ant4 .an3te .anti5s .ar5s .ar4tie .ar4ty .as3c .as1p .as1s .aster5 .atom5 .au1d .av4i .awn4 .ba4g .ba5na .bas4e .ber4 .be5ra .be3sm .be5sto .bri2 .but4ti .cam4pe .can5c .capa5b .car5ol .ca4t .ce4la .ch4 .chill5i .ci2 .cit5r .co3e .co4r .cor5ner .de4moi .de3o .de3ra .de3ri .des4c .dictio5 .do4t .du4c .dumb5 .earth5 .eas3i .eb4 .eer4 .eg2 .el5d .el3em .enam3 .en3g .en3s .eq5ui5t .er4ri .es3 .eu3 .eye5 .fes3 .for5mer .ga2 .ge2 .gen3t4 .ge5og .gi5a .gi4b .go4r .hand5i .han5k .he2 .hero5i .hes3 .het3 .hi3b .hi3er .hon5ey .hon3o .hov5 .id4l .idol3 .im3m .im5pin .in1 .in3ci .ine2 .in2k .in3s .ir5r .is4i .ju3r .la4cy .la4m .lat5er .lath5 .le2 .leg5e .len4 .lep5 .lev1 .li4g .lig5a .li2n .li3o .li4t .mag5a5 .mal5o .man5a .mar5ti .me2 .mer3c .me5ter .mis1 .mist5i .mon3e .mo3ro .mu5ta .muta5b .ni4c .od2 .odd5 .of5te .or5ato .or3c .or1d .or3t .os3 .os4tl .oth3 .out3 .ped5al .pe5te .pe5tit .pi4e .pio5n .pi2t .pre3m .ra4c .ran4t .ratio5na .ree2 .re5mit .res2 .re5stat .ri4g .rit5u .ro4q .ros5t .row5d .ru4d .sci3e .self5 .sell5 .se2n .se5rie .sh2 .si2 .sing4 .st4 .sta5bl .sy2 .ta4 .te4 .ten5an .th2 .ti2 .til4 .tim5o5 .ting4 .tin5k .ton4a .to4p .top5i .tou5s .trib5ut .un1a .un3ce .under5 .un1e .un5k .un5o .un3u .up3 .ure3 .us5a .ven4de .ve5ra .wil5i .ye4 4ab. a5bal a5ban abe2 ab5erd abi5a ab5it5ab ab5lat ab5o5liz 4abr ab5rog ab3ul a4car ac5ard ac5aro a5ceou ac1er a5chet 4a2ci a3cie ac1in a3cio ac5rob act5if ac3ul ac4um a2d ad4din ad5er. 2adi a3dia ad3ica adi4er a3dio a3dit a5diu ad4le ad3ow ad5ran ad4su 4adu a3duc ad5um ae4r aeri4e a2f aff4 a4gab aga4n ag5ell age4o 4ageu ag1i 4ag4l ag1n a2go 3agog ag3oni a5guer ag5ul a4gy a3ha a3he ah4l a3ho ai2 a5ia a3ic. ai5ly a4i4n ain5in ain5o ait5en a1j ak1en al5ab al3ad a4lar 4aldi 2ale al3end a4lenti a5le5o al1i al4ia. ali4e al5lev 4allic 4alm a5log. a4ly. 4alys 5a5lyst 5alyt 3alyz 4ama am5ab am3ag ama5ra am5asc a4matis a4m5ato am5era am3ic am5if am5ily am1in ami4no a2mo a5mon amor5i amp5en a2n an3age 3analy a3nar an3arc anar4i a3nati 4and ande4s an3dis an1dl an4dow a5nee a3nen an5est. a3neu 2ang ang5ie an1gl a4n1ic a3nies an3i3f an4ime a5nimi a5nine an3io a3nip an3ish an3it a3niu an4kli 5anniz ano4 an5ot anoth5 an2sa an4sco an4sn an2sp ans3po an4st an4sur antal4 an4tie 4anto an2tr an4tw an3ua an3ul a5nur 4ao apar4 ap5at ap5ero a3pher 4aphi a4pilla ap5illar ap3in ap3ita a3pitu a2pl apoc5 ap5ola apor5i apos3t aps5es a3pu aque5 2a2r ar3act a5rade ar5adis ar3al a5ramete aran4g ara3p ar4at a5ratio ar5ativ a5rau ar5av4 araw4 arbal4 ar4chan ar5dine ar4dr ar5eas a3ree ar3ent a5ress ar4fi ar4fl ar1i ar5ial ar3ian a3riet ar4im ar5inat ar3io ar2iz ar2mi ar5o5d a5roni a3roo ar2p ar3q arre4 ar4sa ar2sh 4as. as4ab as3ant ashi4 a5sia. a3sib a3sic 5a5si4t ask3i as4l a4soc as5ph as4sh as3ten as1tr asur5a a2ta at3abl at5ac at3alo at5ap ate5c at5ech at3ego at3en. at3era ater5n a5terna at3est at5ev 4ath ath5em a5then at4ho ath5om 4ati. a5tia at5i5b at1ic at3if ation5ar at3itu a4tog a2tom at5omiz a4top a4tos a1tr at5rop at4sk at4tag at5te at4th a2tu at5ua at5ue at3ul at3ura a2ty au4b augh3 au3gu au4l2 aun5d au3r au5sib aut5en au1th a2va av3ag a5van ave4no av3era av5ern av5ery av1i avi4er av3ig av5oc a1vor 3away aw3i aw4ly aws4 ax4ic ax4id ay5al aye4 ays4 azi4er azz5i 5ba. bad5ger ba4ge bal1a ban5dag ban4e ban3i barbi5 bari4a bas4si 1bat ba4z 2b1b b2be b3ber bbi4na 4b1d 4be. beak4 beat3 4be2d be3da be3de be3di be3gi be5gu 1bel be1li be3lo 4be5m be5nig be5nu 4bes4 be3sp be5str 3bet bet5iz be5tr be3tw be3w be5yo 2bf 4b3h bi2b bi4d 3bie bi5en bi4er 2b3if 1bil bi3liz bina5r4 bin4d bi5net bi3ogr bi5ou bi2t 3bi3tio bi3tr 3bit5ua b5itz b1j bk4 b2l2 blath5 b4le. blen4 5blesp b3lis b4lo blun4t 4b1m 4b3n bne5g 3bod bod3i bo4e bol3ic bom4bi bon4a bon5at 3boo 5bor. 4b1ora bor5d 5bore 5bori 5bos4 b5ota both5 bo4to bound3 4bp 4brit broth3 2b5s2 bsor4 2bt bt4l b4to b3tr buf4fer bu4ga bu3li bumi4 bu4n bunt4i bu3re bus5ie buss4e 5bust 4buta 3butio b5uto b1v 4b5w 5by. bys4 1ca cab3in ca1bl cach4 ca5den 4cag4 2c5ah ca3lat cal4la call5in 4calo can5d can4e can4ic can5is can3iz can4ty cany4 ca5per car5om cast5er cas5tig 4casy ca4th 4cativ cav5al c3c ccha5 cci4a ccompa5 ccon4 ccou3t 2ce. 4ced. 4ceden 3cei 5cel. 3cell 1cen 3cenc 2cen4e 4ceni 3cent 3cep ce5ram 4cesa 3cessi ces5si5b ces5t cet4 c5e4ta cew4 2ch 4ch. 4ch3ab 5chanic ch5a5nis che2 cheap3 4ched che5lo 3chemi ch5ene ch3er. ch3ers 4ch1in 5chine. ch5iness 5chini 5chio 3chit chi2z 3cho2 ch4ti 1ci 3cia ci2a5b cia5r ci5c 4cier 5cific. 4cii ci4la 3cili 2cim 2cin c4ina 3cinat cin3em c1ing c5ing. 5cino cion4 4cipe ci3ph 4cipic 4cista 4cisti 2c1it cit3iz 5ciz ck1 ck3i 1c4l4 4clar c5laratio 5clare cle4m 4clic clim4 cly4 c5n 1co co5ag coe2 2cog co4gr coi4 co3inc col5i 5colo col3or com5er con4a c4one con3g con5t co3pa cop3ic co4pl 4corb coro3n cos4e cov1 cove4 cow5a coz5e co5zi c1q cras5t 5crat. 5cratic cre3at 5cred 4c3reta cre4v cri2 cri5f c4rin cris4 5criti cro4pl crop5o cros4e cru4d 4c3s2 2c1t cta4b ct5ang c5tant c2te c3ter c4ticu ctim3i ctu4r c4tw cud5 c4uf c4ui cu5ity 5culi cul4tis 3cultu cu2ma c3ume cu4mi 3cun cu3pi cu5py cur5a4b cu5ria 1cus cuss4i 3c4ut cu4tie 4c5utiv 4cutr 1cy cze4 1d2a 5da. 2d3a4b dach4 4daf 2dag da2m2 dan3g dard5 dark5 4dary 3dat 4dativ 4dato 5dav4 dav5e 5day d1b d5c d1d4 2de. deaf5 deb5it de4bon decan4 de4cil de5com 2d1ed 4dee. de5if deli4e del5i5q de5lo d4em 5dem. 3demic dem5ic. de5mil de4mons demor5 1den de4nar de3no denti5f de3nu de1p de3pa depi4 de2pu d3eq d4erh 5derm dern5iz der5s des2 d2es. de1sc de2s5o des3ti de3str de4su de1t de2to de1v dev3il 4dey 4d1f d4ga d3ge4t dg1i d2gy d1h2 5di. 1d4i3a dia5b di4cam d4ice 3dict 3did 5di3en d1if di3ge di4lato d1in 1dina 3dine. 5dini di5niz 1dio dio5g di4pl dir2 di1re dirt5i dis1 5disi d4is3t d2iti 1di1v d1j d5k2 4d5la 3dle. 3dled 3dles. 4dless 2d3lo 4d5lu 2dly d1m 4d1n4 1do 3do. do5de 5doe 2d5of d4og do4la doli4 do5lor dom5iz do3nat doni4 doo3d dop4p d4or 3dos 4d5out do4v 3dox d1p 1dr drag5on 4drai dre4 drea5r 5dren dri4b dril4 dro4p 4drow 5drupli 4dry 2d1s2 ds4p d4sw d4sy d2th 1du d1u1a du2c d1uca duc5er 4duct. 4ducts du5el du4g d3ule dum4be du4n 4dup du4pe d1v d1w d2y 5dyn dy4se dys5p e1a4b e3act ead1 ead5ie ea4ge ea5ger ea4l eal5er eal3ou eam3er e5and ear3a ear4c ear5es ear4ic ear4il ear5k ear2t eart3e ea5sp e3ass east3 ea2t eat5en eath3i e5atif e4a3tu ea2v eav3en eav5i eav5o 2e1b e4bel. e4bels e4ben e4bit e3br e4cad ecan5c ecca5 e1ce ec5essa ec2i e4cib ec5ificat ec5ifie ec5ify ec3im eci4t e5cite e4clam e4clus e2col e4comm e4compe e4conc e2cor ec3ora eco5ro e1cr e4crem ec4tan ec4te e1cu e4cul ec3ula 2e2da 4ed3d e4d1er ede4s 4edi e3dia ed3ib ed3ica ed3im ed1it edi5z 4edo e4dol edon2 e4dri e4dul ed5ulo ee2c eed3i ee2f eel3i ee4ly ee2m ee4na ee4p1 ee2s4 eest4 ee4ty e5ex e1f e4f3ere 1eff e4fic 5efici efil4 e3fine ef5i5nite 3efit efor5es e4fuse. 4egal eger4 eg5ib eg4ic eg5ing e5git5 eg5n e4go. e4gos eg1ul e5gur 5egy e1h4 eher4 ei2 e5ic ei5d eig2 ei5gl e3imb e3inf e1ing e5inst eir4d eit3e ei3th e5ity e1j e4jud ej5udi eki4n ek4la e1la e4la. e4lac elan4d el5ativ e4law elaxa4 e3lea el5ebra 5elec e4led el3ega e5len e4l1er e1les el2f el2i e3libe e4l5ic. el3ica e3lier el5igib e5lim e4l3ing e3lio e2lis el5ish e3liv3 4ella el4lab ello4 e5loc el5og el3op. el2sh el4ta e5lud el5ug e4mac e4mag e5man em5ana em5b e1me e2mel e4met em3ica emi4e em5igra em1in2 em5ine em3i3ni e4mis em5ish e5miss em3iz 5emniz emo4g emoni5o em3pi e4mul em5ula emu3n e3my en5amo e4nant ench4er en3dic e5nea e5nee en3em en5ero en5esi en5est en3etr e3new en5ics e5nie e5nil e3nio en3ish en3it e5niu 5eniz 4enn 4eno eno4g e4nos en3ov en4sw ent5age 4enthes en3ua en5uf e3ny. 4en3z e5of eo2g e4oi4 e3ol eop3ar e1or eo3re eo5rol eos4 e4ot eo4to e5out e5ow e2pa e3pai ep5anc e5pel e3pent ep5etitio ephe4 e4pli e1po e4prec ep5reca e4pred ep3reh e3pro e4prob ep4sh ep5ti5b e4put ep5uta e1q equi3l e4q3ui3s er1a era4b 4erand er3ar 4erati. 2erb er4bl er3ch er4che 2ere. e3real ere5co ere3in er5el. er3emo er5ena er5ence 4erene er3ent ere4q er5ess er3est eret4 er1h er1i e1ria4 5erick e3rien eri4er er3ine e1rio 4erit er4iu eri4v e4riva er3m4 er4nis 4ernit 5erniz er3no 2ero er5ob e5roc ero4r er1ou er1s er3set ert3er 4ertl er3tw 4eru eru4t 5erwau e1s4a e4sage. e4sages es2c e2sca es5can e3scr es5cu e1s2e e2sec es5ecr es5enc e4sert. e4serts e4serva 4esh e3sha esh5en e1si e2sic e2sid es5iden es5igna e2s5im es4i4n esis4te esi4u e5skin es4mi e2sol es3olu e2son es5ona e1sp es3per es5pira es4pre 2ess es4si4b estan4 es3tig es5tim 4es2to e3ston 2estr e5stro estruc5 e2sur es5urr es4w eta4b eten4d e3teo ethod3 et1ic e5tide etin4 eti4no e5tir e5titio et5itiv 4etn et5ona e3tra e3tre et3ric et5rif et3rog et5ros et3ua et5ym et5z 4eu e5un e3up eu3ro eus4 eute4 euti5l eu5tr eva2p5 e2vas ev5ast e5vea ev3ell evel3o e5veng even4i ev1er e5verb e1vi ev3id evi4l e4vin evi4v e5voc e5vu e1wa e4wag e5wee e3wh ewil5 ew3ing e3wit 1exp 5eyc 5eye. eys4 1fa fa3bl fab3r fa4ce 4fag fain4 fall5e 4fa4ma fam5is 5far far5th fa3ta fa3the 4fato fault5 4f5b 4fd 4fe. feas4 feath3 fe4b 4feca 5fect 2fed fe3li fe4mo fen2d fend5e fer1 5ferr fev4 4f1f f4fes f4fie f5fin. f2f5is f4fly f2fy 4fh 1fi fi3a 2f3ic. 4f3ical f3ican 4ficate f3icen fi3cer fic4i 5ficia 5ficie 4fics fi3cu fi5del fight5 fil5i fill5in 4fily 2fin 5fina fin2d5 fi2ne f1in3g fin4n fis4ti f4l2 f5less flin4 flo3re f2ly5 4fm 4fn 1fo 5fon fon4de fon4t fo2r fo5rat for5ay fore5t for4i fort5a fos5 4f5p fra4t f5rea fres5c fri2 fril4 frol5 2f3s 2ft f4to f2ty 3fu fu5el 4fug fu4min fu5ne fu3ri fusi4 fus4s 4futa 1fy 1ga gaf4 5gal. 3gali ga3lo 2gam ga5met g5amo gan5is ga3niz gani5za 4gano gar5n4 gass4 gath3 4gativ 4gaz g3b gd4 2ge. 2ged geez4 gel4in ge5lis ge5liz 4gely 1gen ge4nat ge5niz 4geno 4geny 1geo ge3om g4ery 5gesi geth5 4geto ge4ty ge4v 4g1g2 g2ge g3ger gglu5 ggo4 gh3in gh5out gh4to 5gi. 1gi4a gia5r g1ic 5gicia g4ico gien5 5gies. gil4 g3imen 3g4in. gin5ge 5g4ins 5gio 3gir gir4l g3isl gi4u 5giv 3giz gl2 gla4 glad5i 5glas 1gle gli4b g3lig 3glo glo3r g1m g4my gn4a g4na. gnet4t g1ni g2nin g4nio g1no g4non 1go 3go. gob5 5goe 3g4o4g go3is gon2 4g3o3na gondo5 go3ni 5goo go5riz gor5ou 5gos. gov1 g3p 1gr 4grada g4rai gran2 5graph. g5rapher 5graphic 4graphy 4gray gre4n 4gress. 4grit g4ro gruf4 gs2 g5ste gth3 gu4a 3guard 2gue 5gui5t 3gun 3gus 4gu4t g3w 1gy 2g5y3n gy5ra h3ab4l hach4 hae4m hae4t h5agu ha3la hala3m ha4m han4ci han4cy 5hand. han4g hang5er hang5o h5a5niz han4k han4te hap3l hap5t ha3ran ha5ras har2d hard3e har4le harp5en har5ter has5s haun4 5haz haz3a h1b 1head 3hear he4can h5ecat h4ed he5do5 he3l4i hel4lis hel4ly h5elo hem4p he2n hena4 hen5at heo5r hep5 h4era hera3p her4ba here5a h3ern h5erou h3ery h1es he2s5p he4t het4ed heu4 h1f h1h hi5an hi4co high5 h4il2 himer4 h4ina hion4e hi4p hir4l hi3ro hir4p hir4r his3el his4s hith5er hi2v 4hk 4h1l4 hlan4 h2lo hlo3ri 4h1m hmet4 2h1n h5odiz h5ods ho4g hoge4 hol5ar 3hol4e ho4ma home3 hon4a ho5ny 3hood hoon4 hor5at ho5ris hort3e ho5ru hos4e ho5sen hos1p 1hous house3 hov5el 4h5p 4hr4 hree5 hro5niz hro3po 4h1s2 h4sh h4tar ht1en ht5es h4ty hu4g hu4min hun5ke hun4t hus3t4 hu4t h1w h4wart hy3pe hy3ph hy2s 2i1a i2al iam4 iam5ete i2an 4ianc ian3i 4ian4t ia5pe iass4 i4ativ ia4tric i4atu ibe4 ib3era ib5ert ib5ia ib3in ib5it. ib5ite i1bl ib3li i5bo i1br i2b5ri i5bun 4icam 5icap 4icar i4car. i4cara icas5 i4cay iccu4 4iceo 4ich 2ici i5cid ic5ina i2cip ic3ipa i4cly i2c5oc 4i1cr 5icra i4cry ic4te ictu2 ic4t3ua ic3ula ic4um ic5uo i3cur 2id i4dai id5anc id5d ide3al ide4s i2di id5ian idi4ar i5die id3io idi5ou id1it id5iu i3dle i4dom id3ow i4dr i2du id5uo 2ie4 ied4e 5ie5ga ield3 ien5a4 ien4e i5enn i3enti i1er. i3esc i1est i3et 4if. if5ero iff5en if4fr 4ific. i3fie i3fl 4ift 2ig iga5b ig3era ight3i 4igi i3gib ig3il ig3in ig3it i4g4l i2go ig3or ig5ot i5gre igu5i ig1ur i3h 4i5i4 i3j 4ik i1la il3a4b i4lade i2l5am ila5ra i3leg il1er ilev4 il5f il1i il3ia il2ib il3io il4ist 2ilit il2iz ill5ab 4iln il3oq il4ty il5ur il3v i4mag im3age ima5ry imenta5r 4imet im1i im5ida imi5le i5mini 4imit im4ni i3mon i2mu im3ula 2in. i4n3au 4inav incel4 in3cer 4ind in5dling 2ine i3nee iner4ar i5ness 4inga 4inge in5gen 4ingi in5gling 4ingo 4ingu 2ini i5ni. i4nia in3io in1is i5nite. 5initio in3ity 4ink 4inl 2inn 2i1no i4no4c ino4s i4not 2ins in3se insur5a 2int. 2in4th in1u i5nus 4iny 2io 4io. ioge4 io2gr i1ol io4m ion3at ion4ery ion3i io5ph ior3i i4os io5th i5oti io4to i4our 2ip ipe4 iphras4 ip3i ip4ic ip4re4 ip3ul i3qua iq5uef iq3uid iq3ui3t 4ir i1ra ira4b i4rac ird5e ire4de i4ref i4rel4 i4res ir5gi ir1i iri5de ir4is iri3tu 5i5r2iz ir4min iro4g 5iron. ir5ul 2is. is5ag is3ar isas5 2is1c is3ch 4ise is3er 3isf is5han is3hon ish5op is3ib isi4d i5sis is5itiv 4is4k islan4 4isms i2so iso5mer is1p is2pi is4py 4is1s is4sal issen4 is4ses is4ta. is1te is1ti ist4ly 4istral i2su is5us 4ita. ita4bi i4tag 4ita5m i3tan i3tat 2ite it3era i5teri it4es 2ith i1ti 4itia 4i2tic it3ica 5i5tick it3ig it5ill i2tim 2itio 4itis i4tism i2t5o5m 4iton i4tram it5ry 4itt it3uat i5tud it3ul 4itz. i1u 2iv iv3ell iv3en. i4v3er. i4vers. iv5il. iv5io iv1it i5vore iv3o3ro i4v3ot 4i5w ix4o 4iy 4izar izi4 5izont 5ja jac4q ja4p 1je jer5s 4jestie 4jesty jew3 jo4p 5judg 3ka. k3ab k5ag kais4 kal4 k1b k2ed 1kee ke4g ke5li k3en4d k1er kes4 k3est. ke4ty k3f kh4 k1i 5ki. 5k2ic k4ill kilo5 k4im k4in. kin4de k5iness kin4g ki4p kis4 k5ish kk4 k1l 4kley 4kly k1m k5nes 1k2no ko5r kosh4 k3ou kro5n 4k1s2 k4sc ks4l k4sy k5t k1w lab3ic l4abo laci4 l4ade la3dy lag4n lam3o 3land lan4dl lan5et lan4te lar4g lar3i las4e la5tan 4lateli 4lativ 4lav la4v4a 2l1b lbin4 4l1c2 lce4 l3ci 2ld l2de ld4ere ld4eri ldi4 ld5is l3dr l4dri le2a le4bi left5 5leg. 5legg le4mat lem5atic 4len. 3lenc 5lene. 1lent le3ph le4pr lera5b ler4e 3lerg 3l4eri l4ero les2 le5sco 5lesq 3less 5less. l3eva lev4er. lev4era lev4ers 3ley 4leye 2lf l5fr 4l1g4 l5ga lgar3 l4ges lgo3 2l3h li4ag li2am liar5iz li4as li4ato li5bi 5licio li4cor 4lics 4lict. l4icu l3icy l3ida lid5er 3lidi lif3er l4iff li4fl 5ligate 3ligh li4gra 3lik 4l4i4l lim4bl lim3i li4mo l4im4p l4ina 1l4ine lin3ea lin3i link5er li5og 4l4iq lis4p l1it l2it. 5litica l5i5tics liv3er l1iz 4lj lka3 l3kal lka4t l1l l4law l2le l5lea l3lec l3leg l3lel l3le4n l3le4t ll2i l2lin4 l5lina ll4o lloqui5 ll5out l5low 2lm l5met lm3ing l4mod lmon4 2l1n2 3lo. lob5al lo4ci 4lof 3logic l5ogo 3logu lom3er 5long lon4i l3o3niz lood5 5lope. lop3i l3opm lora4 lo4rato lo5rie lor5ou 5los. los5et 5losophiz 5losophy los4t lo4ta loun5d 2lout 4lov 2lp lpa5b l3pha l5phi lp5ing l3pit l4pl l5pr 4l1r 2l1s2 l4sc l2se l4sie 4lt lt5ag ltane5 l1te lten4 ltera4 lth3i l5ties. ltis4 l1tr ltu2 ltur3a lu5a lu3br luch4 lu3ci lu3en luf4 lu5id lu4ma 5lumi l5umn. 5lumnia lu3o luo3r 4lup luss4 lus3te 1lut l5ven l5vet4 2l1w 1ly 4lya 4lyb ly5me ly3no 2lys4 l5yse 1ma 2mab ma2ca ma5chine ma4cl mag5in 5magn 2mah maid5 4mald ma3lig ma5lin mal4li mal4ty 5mania man5is man3iz 4map ma5rine. ma5riz mar4ly mar3v ma5sce mas4e mas1t 5mate math3 ma3tis 4matiza 4m1b mba4t5 m5bil m4b3ing mbi4v 4m5c 4me. 2med 4med. 5media me3die m5e5dy me2g mel5on mel4t me2m mem1o3 1men men4a men5ac men4de 4mene men4i mens4 mensu5 3ment men4te me5on m5ersa 2mes 3mesti me4ta met3al me1te me5thi m4etr 5metric me5trie me3try me4v 4m1f 2mh 5mi. mi3a mid4a mid4g mig4 3milia m5i5lie m4ill min4a 3mind m5inee m4ingl min5gli m5ingly min4t m4inu miot4 m2is mis4er. mis5l mis4ti m5istry 4mith m2iz 4mk 4m1l m1m mma5ry 4m1n mn4a m4nin mn4o 1mo 4mocr 5mocratiz mo2d1 mo4go mois2 moi5se 4mok mo5lest mo3me mon5et mon5ge moni3a mon4ism mon4ist mo3niz monol4 mo3ny. mo2r 4mora. mos2 mo5sey mo3sp moth3 m5ouf 3mous mo2v 4m1p mpara5 mpa5rab mpar5i m3pet mphas4 m2pi mpi4a mp5ies m4p1in m5pir mp5is mpo3ri mpos5ite m4pous mpov5 mp4tr m2py 4m3r 4m1s2 m4sh m5si 4mt 1mu mula5r4 5mult multi3 3mum mun2 4mup mu4u 4mw 1na 2n1a2b n4abu 4nac. na4ca n5act nag5er. nak4 na4li na5lia 4nalt na5mit n2an nanci4 nan4it nank4 nar3c 4nare nar3i nar4l n5arm n4as nas4c nas5ti n2at na3tal nato5miz n2au nau3se 3naut nav4e 4n1b4 ncar5 n4ces. n3cha n5cheo n5chil n3chis nc1in nc4it ncour5a n1cr n1cu n4dai n5dan n1de nd5est. ndi4b n5d2if n1dit n3diz n5duc ndu4r nd2we 2ne. n3ear ne2b neb3u ne2c 5neck 2ned ne4gat neg5ativ 5nege ne4la nel5iz ne5mi ne4mo 1nen 4nene 3neo ne4po ne2q n1er nera5b n4erar n2ere n4er5i ner4r 1nes 2nes. 4nesp 2nest 4nesw 3netic ne4v n5eve ne4w n3f n4gab n3gel nge4n4e n5gere n3geri ng5ha n3gib ng1in n5git n4gla ngov4 ng5sh n1gu n4gum n2gy 4n1h4 nha4 nhab3 nhe4 3n4ia ni3an ni4ap ni3ba ni4bl ni4d ni5di ni4er ni2fi ni5ficat n5igr nik4 n1im ni3miz n1in 5nine. nin4g ni4o 5nis. nis4ta n2it n4ith 3nitio n3itor ni3tr n1j 4nk2 n5kero n3ket nk3in n1kl 4n1l n5m nme4 nmet4 4n1n2 nne4 nni3al nni4v nob4l no3ble n5ocl 4n3o2d 3noe 4nog noge4 nois5i no5l4i 5nologis 3nomic n5o5miz no4mo no3my no4n non4ag non5i n5oniz 4nop 5nop5o5li nor5ab no4rary 4nosc nos4e nos5t no5ta 1nou 3noun nov3el3 nowl3 n1p4 npi4 npre4c n1q n1r nru4 2n1s2 ns5ab nsati4 ns4c n2se n4s3es nsid1 nsig4 n2sl ns3m n4soc ns4pe n5spi nsta5bl n1t nta4b nter3s nt2i n5tib nti4er nti2f n3tine n4t3ing nti4p ntrol5li nt4s ntu3me nu1a nu4d nu5en nuf4fe n3uin 3nu3it n4um nu1me n5umi 3nu4n n3uo nu3tr n1v2 n1w4 nym4 nyp4 4nz n3za 4oa oad3 o5a5les oard3 oas4e oast5e oat5i ob3a3b o5bar obe4l o1bi o2bin ob5ing o3br ob3ul o1ce och4 o3chet ocif3 o4cil o4clam o4cod oc3rac oc5ratiz ocre3 5ocrit octor5a oc3ula o5cure od5ded od3ic odi3o o2do4 odor3 od5uct. od5ucts o4el o5eng o3er oe4ta o3ev o2fi of5ite ofit4t o2g5a5r og5ativ o4gato o1ge o5gene o5geo o4ger o3gie 1o1gis og3it o4gl o5g2ly 3ogniz o4gro ogu5i 1ogy 2ogyn o1h2 ohab5 oi2 oic3es oi3der oiff4 oig4 oi5let o3ing oint5er o5ism oi5son oist5en oi3ter o5j 2ok o3ken ok5ie o1la o4lan olass4 ol2d old1e ol3er o3lesc o3let ol4fi ol2i o3lia o3lice ol5id. o3li4f o5lil ol3ing o5lio o5lis. ol3ish o5lite o5litio o5liv olli4e ol5ogiz olo4r ol5pl ol2t ol3ub ol3ume ol3un o5lus ol2v o2ly om5ah oma5l om5atiz om2be om4bl o2me om3ena om5erse o4met om5etry o3mia om3ic. om3ica o5mid om1in o5mini 5ommend omo4ge o4mon om3pi ompro5 o2n on1a on4ac o3nan on1c 3oncil 2ond on5do o3nen on5est on4gu on1ic o3nio on1is o5niu on3key on4odi on3omy on3s onspi4 onspir5a onsu4 onten4 on3t4i ontif5 on5um onva5 oo2 ood5e ood5i oo4k oop3i o3ord oost5 o2pa ope5d op1er 3opera 4operag 2oph o5phan o5pher op3ing o3pit o5pon o4posi o1pr op1u opy5 o1q o1ra o5ra. o4r3ag or5aliz or5ange ore5a o5real or3ei ore5sh or5est. orew4 or4gu 4o5ria or3ica o5ril or1in o1rio or3ity o3riu or2mi orn2e o5rof or3oug or5pe 3orrh or4se ors5en orst4 or3thi or3thy or4ty o5rum o1ry os3al os2c os4ce o3scop 4oscopi o5scr os4i4e os5itiv os3ito os3ity osi4u os4l o2so os4pa os4po os2ta o5stati os5til os5tit o4tan otele4g ot3er. ot5ers o4tes 4oth oth5esi oth3i4 ot3ic. ot5ica o3tice o3tif o3tis oto5s ou2 ou3bl ouch5i ou5et ou4l ounc5er oun2d ou5v ov4en over4ne over3s ov4ert o3vis oviti4 o5v4ol ow3der ow3el ow5est ow1i own5i o4wo oy1a 1pa pa4ca pa4ce pac4t p4ad 5pagan p3agat p4ai pain4 p4al pan4a pan3el pan4ty pa3ny pa1p pa4pu para5bl par5age par5di 3pare par5el p4a4ri par4is pa2te pa5ter 5pathic pa5thy pa4tric pav4 3pay 4p1b pd4 4pe. 3pe4a pear4l pe2c 2p2ed 3pede 3pedi pedia4 ped4ic p4ee pee4d pek4 pe4la peli4e pe4nan p4enc pen4th pe5on p4era. pera5bl p4erag p4eri peri5st per4mal perme5 p4ern per3o per3ti pe5ru per1v pe2t pe5ten pe5tiz 4pf 4pg 4ph. phar5i phe3no ph4er ph4es. ph1ic 5phie ph5ing 5phisti 3phiz ph2l 3phob 3phone 5phoni pho4r 4phs ph3t 5phu 1phy pi3a pian4 pi4cie pi4cy p4id p5ida pi3de 5pidi 3piec pi3en pi4grap pi3lo pi2n p4in. pind4 p4ino 3pi1o pion4 p3ith pi5tha pi2tu 2p3k2 1p2l2 3plan plas5t pli3a pli5er 4plig pli4n ploi4 plu4m plum4b 4p1m 2p3n po4c 5pod. po5em po3et5 5po4g poin2 5point poly5t po4ni po4p 1p4or po4ry 1pos pos1s p4ot po4ta 5poun 4p1p ppa5ra p2pe p4ped p5pel p3pen p3per p3pet ppo5site pr2 pray4e 5preci pre5co pre3em pref5ac pre4la pre3r p3rese 3press pre5ten pre3v 5pri4e prin4t3 pri4s pris3o p3roca prof5it pro3l pros3e pro1t 2p1s2 p2se ps4h p4sib 2p1t pt5a4b p2te p2th pti3m ptu4r p4tw pub3 pue4 puf4 pul3c pu4m pu2n pur4r 5pus pu2t 5pute put3er pu3tr put4ted put4tin p3w qu2 qua5v 2que. 3quer 3quet 2rab ra3bi rach4e r5acl raf5fi raf4t r2ai ra4lo ram3et r2ami rane5o ran4ge r4ani ra5no rap3er 3raphy rar5c rare4 rar5ef 4raril r2as ration4 rau4t ra5vai rav3el ra5zie r1b r4bab r4bag rbi2 rbi4f r2bin r5bine rb5ing. rb4o r1c r2ce rcen4 r3cha rch4er r4ci4b rc4it rcum3 r4dal rd2i rdi4a rdi4er rdin4 rd3ing 2re. re1al re3an re5arr 5reav re4aw r5ebrat rec5oll rec5ompe re4cre 2r2ed re1de re3dis red5it re4fac re2fe re5fer. re3fi re4fy reg3is re5it re1li re5lu r4en4ta ren4te re1o re5pin re4posi re1pu r1er4 r4eri rero4 re5ru r4es. re4spi ress5ib res2t re5stal re3str re4ter re4ti4z re3tri reu2 re5uti rev2 re4val rev3el r5ev5er. re5vers re5vert re5vil rev5olu re4wh r1f rfu4 r4fy rg2 rg3er r3get r3gic rgi4n rg3ing r5gis r5git r1gl rgo4n r3gu rh4 4rh. 4rhal ri3a ria4b ri4ag r4ib rib3a ric5as r4ice 4rici 5ricid ri4cie r4ico rid5er ri3enc ri3ent ri1er ri5et rig5an 5rigi ril3iz 5riman rim5i 3rimo rim4pe r2ina 5rina. rin4d rin4e rin4g ri1o 5riph riph5e ri2pl rip5lic r4iq r2is r4is. ris4c r3ish ris4p ri3ta3b r5ited. rit5er. rit5ers rit3ic ri2tu rit5ur riv5el riv3et riv3i r3j r3ket rk4le rk4lin r1l rle4 r2led r4lig r4lis rl5ish r3lo4 r1m rma5c r2me r3men rm5ers rm3ing r4ming. r4mio r3mit r4my r4nar r3nel r4ner r5net r3ney r5nic r1nis4 r3nit r3niv rno4 r4nou r3nu rob3l r2oc ro3cr ro4e ro1fe ro5fil rok2 ro5ker 5role. rom5ete rom4i rom4p ron4al ron4e ro5n4is ron4ta 1room 5root ro3pel rop3ic ror3i ro5ro ros5per ros4s ro4the ro4ty ro4va rov5el rox5 r1p r4pea r5pent rp5er. r3pet rp4h4 rp3ing r3po r1r4 rre4c rre4f r4reo rre4st rri4o rri4v rron4 rros4 rrys4 4rs2 r1sa rsa5ti rs4c r2se r3sec rse4cr rs5er. rs3es rse5v2 r1sh r5sha r1si r4si4b rson3 r1sp r5sw rtach4 r4tag r3teb rten4d rte5o r1ti rt5ib rti4d r4tier r3tig rtil3i rtil4l r4tily r4tist r4tiv r3tri rtroph4 rt4sh ru3a ru3e4l ru3en ru4gl ru3in rum3pl ru2n runk5 run4ty r5usc ruti5n rv4e rvel4i r3ven rv5er. r5vest r3vey r3vic rvi4v r3vo r1w ry4c 5rynge ry3t sa2 2s1ab 5sack sac3ri s3act 5sai salar4 sal4m sa5lo sal4t 3sanc san4de s1ap sa5ta 5sa3tio sat3u sau4 sa5vor 5saw 4s5b scan4t5 sca4p scav5 s4ced 4scei s4ces sch2 s4cho 3s4cie 5scin4d scle5 s4cli scof4 4scopy scour5a s1cu 4s5d 4se. se4a seas4 sea5w se2c3o 3sect 4s4ed se4d4e s5edl se2g seg3r 5sei se1le 5self 5selv 4seme se4mol sen5at 4senc sen4d s5ened sen5g s5enin 4sentd 4sentl sep3a3 4s1er. s4erl ser4o 4servo s1e4s se5sh ses5t 5se5um 5sev sev3en sew4i 5sex 4s3f 2s3g s2h 2sh. sh1er 5shev sh1in sh3io 3ship shiv5 sho4 sh5old shon3 shor4 short5 4shw si1b s5icc 3side. 5sides 5sidi si5diz 4signa sil4e 4sily 2s1in s2ina 5sine. s3ing 1sio 5sion sion5a si2r sir5a 1sis 3sitio 5siu 1siv 5siz sk2 4ske s3ket sk5ine sk5ing s1l2 s3lat s2le slith5 2s1m s3ma small3 sman3 smel4 s5men 5smith smol5d4 s1n4 1so so4ce soft3 so4lab sol3d2 so3lic 5solv 3som 3s4on. sona4 son4g s4op 5sophic s5ophiz s5ophy sor5c sor5d 4sov so5vi 2spa 5spai spa4n spen4d 2s5peo 2sper s2phe 3spher spho5 spil4 sp5ing 4spio s4ply s4pon spor4 4spot squal4l s1r 2ss s1sa ssas3 s2s5c s3sel s5seng s4ses. s5set s1si s4sie ssi4er ss5ily s4sl ss4li s4sn sspend4 ss2t ssur5a ss5w 2st. s2tag s2tal stam4i 5stand s4ta4p 5stat. s4ted stern5i s5tero ste2w stew5a s3the st2i s4ti. s5tia s1tic 5stick s4tie s3tif st3ing 5stir s1tle 5stock stom3a 5stone s4top 3store st4r s4trad 5stratu s4tray s4trid 4stry 4st3w s2ty 1su su1al su4b3 su2g3 su5is suit3 s4ul su2m sum3i su2n su2r 4sv sw2 4swo s4y 4syc 3syl syn5o sy5rin 1ta 3ta. 2tab ta5bles 5taboliz 4taci ta5do 4taf4 tai5lo ta2l ta5la tal5en tal3i 4talk tal4lis ta5log ta5mo tan4de tanta3 ta5per ta5pl tar4a 4tarc 4tare ta3riz tas4e ta5sy 4tatic ta4tur taun4 tav4 2taw tax4is 2t1b 4tc t4ch tch5et 4t1d 4te. tead4i 4teat tece4 5tect 2t1ed te5di 1tee teg4 te5ger te5gi 3tel. teli4 5tels te2ma2 tem3at 3tenan 3tenc 3tend 4tenes 1tent ten4tag 1teo te4p te5pe ter3c 5ter3d 1teri ter5ies ter3is teri5za 5ternit ter5v 4tes. 4tess t3ess. teth5e 3teu 3tex 4tey 2t1f 4t1g 2th. than4 th2e 4thea th3eas the5at the3is 3thet th5ic. th5ica 4thil 5think 4thl th5ode 5thodic 4thoo thor5it tho5riz 2ths 1tia ti4ab ti4ato 2ti2b 4tick t4ico t4ic1u 5tidi 3tien tif2 ti5fy 2tig 5tigu till5in 1tim 4timp tim5ul 2t1in t2ina 3tine. 3tini 1tio ti5oc tion5ee 5tiq ti3sa 3tise tis4m ti5so tis4p 5tistica ti3tl ti4u 1tiv tiv4a 1tiz ti3za ti3zen 2tl t5la tlan4 3tle. 3tled 3tles. t5let. t5lo 4t1m tme4 2t1n2 1to to3b to5crat 4todo 2tof to2gr to5ic to2ma tom4b to3my ton4ali to3nat 4tono 4tony to2ra to3rie tor5iz tos2 5tour 4tout to3war 4t1p 1tra tra3b tra5ch traci4 trac4it trac4te tras4 tra5ven trav5es5 tre5f tre4m trem5i 5tria tri5ces 5tricia 4trics 2trim tri4v tro5mi tron5i 4trony tro5phe tro3sp tro3v tru5i trus4 4t1s2 t4sc tsh4 t4sw 4t3t2 t4tes t5to ttu4 1tu tu1a tu3ar tu4bi tud2 4tue 4tuf4 5tu3i 3tum tu4nis 2t3up. 3ture 5turi tur3is tur5o tu5ry 3tus 4tv tw4 4t1wa twis4 4two 1ty 4tya 2tyl type3 ty5ph 4tz tz4e 4uab uac4 ua5na uan4i uar5ant uar2d uar3i uar3t u1at uav4 ub4e u4bel u3ber u4bero u1b4i u4b5ing u3ble. u3ca uci4b uc4it ucle3 u3cr u3cu u4cy ud5d ud3er ud5est udev4 u1dic ud3ied ud3ies ud5is u5dit u4don ud4si u4du u4ene uens4 uen4te uer4il 3ufa u3fl ugh3en ug5in 2ui2 uil5iz ui4n u1ing uir4m uita4 uiv3 uiv4er. u5j 4uk u1la ula5b u5lati ulch4 5ulche ul3der ul4e u1len ul4gi ul2i u5lia ul3ing ul5ish ul4lar ul4li4b ul4lis 4ul3m u1l4o 4uls uls5es ul1ti ultra3 4ultu u3lu ul5ul ul5v um5ab um4bi um4bly u1mi u4m3ing umor5o um2p unat4 u2ne un4er u1ni un4im u2nin un5ish uni3v un3s4 un4sw unt3ab un4ter. un4tes unu4 un5y un5z u4ors u5os u1ou u1pe uper5s u5pia up3ing u3pl up3p upport5 upt5ib uptu4 u1ra 4ura. u4rag u4ras ur4be urc4 ur1d ure5at ur4fer ur4fr u3rif uri4fic ur1in u3rio u1rit ur3iz ur2l url5ing. ur4no uros4 ur4pe ur4pi urs5er ur5tes ur3the urti4 ur4tie u3ru 2us u5sad u5san us4ap usc2 us3ci use5a u5sia u3sic us4lin us1p us5sl us5tere us1tr u2su usur4 uta4b u3tat 4ute. 4utel 4uten uten4i 4u1t2i uti5liz u3tine ut3ing ution5a u4tis 5u5tiz u4t1l ut5of uto5g uto5matic u5ton u4tou uts4 u3u uu4m u1v2 uxu3 uz4e 1va 5va. 2v1a4b vac5il vac3u vag4 va4ge va5lie val5o val1u va5mo va5niz va5pi var5ied 3vat 4ve. 4ved veg3 v3el. vel3li ve4lo v4ely ven3om v5enue v4erd 5vere. v4erel v3eren ver5enc v4eres ver3ie vermi4n 3verse ver3th v4e2s 4ves. ves4te ve4te vet3er ve4ty vi5ali 5vian 5vide. 5vided 4v3iden 5vides 5vidi v3if vi5gn vik4 2vil 5vilit v3i3liz v1in 4vi4na v2inc vin5d 4ving vio3l v3io4r vi1ou vi4p vi5ro vis3it vi3so vi3su 4viti vit3r 4vity 3viv 5vo. voi4 3vok vo4la v5ole 5volt 3volv vom5i vor5ab vori4 vo4ry vo4ta 4votee 4vv4 v4y w5abl 2wac wa5ger wag5o wait5 w5al. wam4 war4t was4t wa1te wa5ver w1b wea5rie weath3 wed4n weet3 wee5v wel4l w1er west3 w3ev whi4 wi2 wil2 will5in win4de win4g wir4 3wise with3 wiz5 w4k wl4es wl3in w4no 1wo2 wom1 wo5ven w5p wra4 wri4 writa4 w3sh ws4l ws4pe w5s4t 4wt wy4 x1a xac5e x4ago xam3 x4ap xas5 x3c2 x1e xe4cuto x2ed xer4i xe5ro x1h xhi2 xhil5 xhu4 x3i xi5a xi5c xi5di x4ime xi5miz x3o x4ob x3p xpan4d xpecto5 xpe3d x1t2 x3ti x1u xu3a xx4 y5ac 3yar4 y5at y1b y1c y2ce yc5er y3ch ych4e ycom4 ycot4 y1d y5ee y1er y4erf yes4 ye4t y5gi 4y3h y1i y3la ylla5bl y3lo y5lu ymbol5 yme4 ympa3 yn3chr yn5d yn5g yn5ic 5ynx y1o4 yo5d y4o5g yom4 yo5net y4ons y4os y4ped yper5 yp3i y3po y4poc yp2ta y5pu yra5m yr5ia y3ro yr4r ys4c y3s2e ys3ica ys3io 3ysis y4so yss4 ys1t ys3ta ysur4 y3thin yt3ic y1w za1 z5a2b zar2 4zb 2ze ze4n ze4p z1er ze3ro zet4 2z1i z4il z4is 5zl 4zm 1zo zo4m zo5ol zte4 4z1z2 z4zy } \hyphenation{ % Do NOT make any alterations to this list! --- DEK as-so-ciate as-so-ciates dec-li-na-tion oblig-a-tory phil-an-thropic present presents project projects reci-procity re-cog-ni-zance ref-or-ma-tion ret-ri-bu-tion ta-ble } hyphen-2.8.9/lig.awk000066400000000000000000000016241520164222500143060ustar00rootroot00000000000000{print $0} b=$0 /f[1-9]?f[1-9]?i/ {gsub("f[1-9]?f[1-9]?i", "ffi",b) } /f[1-9]?f[1-9]?l/ {gsub("f[1-9]?f[1-9]?l", "ffl",b) } /f[1-9]?f/ {gsub("f[1-9]?f", "ff",b); r=1} /f[1-9]?i/ {gsub("f[1-9]?i", "fi",b); r=1} /f[1-9]?l/ {gsub("f[1-9]?l", "fl",b); r=1} b!=$0 { # check alternative hyph if (num ~ /\//) { next; } print b } c=b /^[1-9]?f/ { sub("^[1-9]?f", "ff", c); } /^[1-9]?i/ { sub("^[1-9]?i", "fi", c); } /^[1-9]?l/ { sub("^[1-9]?l", "fl", c); } c!=b { print c } /f[1-9]?$/ { out=b; gsub("f[1-9]?$", "ff", out); print out if (c!=b) { out=c; gsub("f[1-9]?$", "ff", out); print out } out=b; gsub("f[1-9]?$", "fi", out); print out if (c!=b) { out=c; gsub("f[1-9]?$", "fi", out); print out } out=b; gsub("f[1-9]?$", "fl", out); print out if (c!=b) { out=c; gsub("f[1-9]?$", "fl", out); print out } } #s/ffi/ffi/g #s/ffl/ffl/g #s/ff/ff/g #s/fi/fi/g #s/fl/fl/g hyphen-2.8.9/ligpatch.txt000066400000000000000000000015231520164222500153610ustar00rootroot00000000000000.affin9ity .affin9ity's .daffi9est .de9fi9ance .de9fi9ance's .de9fi9ant .de9fi9antly .defic8its .de9fil9ing .fi9ancé .fi9ancé's .fi9ancée .fi9ancées .fi9ancés .fil9i9buster .fil9i9buster's .fil9i9bus9tered .fil9i9bus9ter9ing .fil9i9busters .fil9i9gree .fil9i9gree's .fil9i9greed .fil9i9gree9ing .fil9i9grees .fin8der .fin8der's .find9ers .fin8ner .fin8nier .fin8ni9est .fis8ticuffs .fluffi9est .fly9leaf .fly9leaf's .fly9leaves .fly9sheet .fly9speck .fly9speck's .fly9specked .fly9speck9ing .fly9specks .fly9swat9ter .fly9swat9ters .huffi9est .iffi9est .puffi9est .re9fil9ing .scruffi9est .spiffi9est .stuffi9est .viewfin8der .viewfin8der's .viewfind9ers .affin9ityffis .de9fi9anceffis .fi9ancéffis .fil9i9busterffis .fil9i9greeffis .fin8derffis .fly9leafffis .fly9speckffis .viewfin8derffis hyphen-2.8.9/ooopatch.sed000066400000000000000000000002731520164222500153370ustar00rootroot00000000000000# patch for apostrophe handling (including Unicode apostrophe) s/\(RIGHTHYPHENMIN.*\)/\1\ COMPOUNDLEFTHYPHENMIN 2\ COMPOUNDRIGHTHYPHENMIN 3\ NOHYPHEN -,',’\ 1-1\ 1'1\ 1’1\ NEXTLEVEL/ hyphen-2.8.9/substrings.c000066400000000000000000000144761520164222500154070ustar00rootroot00000000000000// // A utility for finding substring embeddings in patterns #include #include #include #define MAXPATHS (256*1024) // // static void die( const char*msg ) { fprintf(stderr,"%s\n",msg); exit(1); } // Finds the index of an entry, only used on xxx_key arrays // Caveat: the table has to be sorted static int find_in( char *tab[], int max, const char *pat ) { int left=0, right=max-1; while (left <= right) { int mid = ((right-left)/2)+left; int v = strcmp(pat,tab[mid]); if (v>0) { left = mid + 1; } else if (v<0) { right = mid -1; } else { return mid; } } return -1; } // used by partition (which is used by qsort_arr) // static void swap2( char *a[], char *b[], int i, int j ) { if (i==j) return; char*v; v=a[i]; a[i]=a[j]; a[j]=v; v=b[i]; b[i]=b[j]; b[j]=v; } // used by qsort_arr // static int partition( char *a[], char *b[], int left, int right, int p ) { const char *pivotValue = a[p]; int i; swap2(a,b,p,right); // Move pivot to end p = left; for (i=left; i left) { int p = left + (right-left)/2; //select a pivot p = partition(a,b, left, right, p); if ((p-1) - left < right - (p+1)) { qsort_arr(a,b, left, p-1); left = p+1; } else { qsort_arr(a,b, p+1, right); right = p-1; } } } // Removes extra '0' entries from the string // static char* compact( char *expr ) { int l=strlen(expr); int i,j; for (i=0,j=0; i'9') && (c <'0' || c >'9') ) { expr[el++] = '0'; } expr[el++] = c; last = c; } if (last<'0' || last>'9') expr[el++] = '0'; expr[el]=0; } // Combine two patterns, i.e. .ad4der + a2d becomes .a2d4der // The second pattern needs to be a right side match of the first // (modulo digits) static char *combine( char *expr, const char *subexpr ) { int l1 = strlen(expr); int l2 = strlen(subexpr); int off = l1-l2; int j; // this works also for utf8 sequences because the substring is identical // to the last substring-length bytes of expr except for the (single byte) // hyphenation encoders for (j=0; jexpr[off+j]) { expr[off+j] = subexpr[j]; } } return expr; } static char *pattab_key[MAXPATHS]; static char *pattab_val[MAXPATHS]; static char *newpattab_key[MAXPATHS]; static char *newpattab_val[MAXPATHS]; int main(int argc, const char* argv[]) { FILE *in, *out; int patterns = 0; int newpatterns = 0; char format[132]; // 64+65+newline+zero+spare int p; if (argc!=3) die("Usage: \n"); if ((in = fopen(argv[1],"r"))==NULL) die("Could not read input"); if ((out = fopen(argv[2],"w"))==NULL) die("Could not create output"); // read all patterns and split in pure text (_key) & expanded patterns (_val) while(fgets(format,132,in) != NULL) { int l = strlen(format); if (format[l-1]=='\n') { l--; format[l]=0; } // Chomp if (format[0]=='%' || format[0]==0) { // skip } else { if (format[l-1]=='%') { l--; format[l] = 0; // remove '%' } int i,j; char *pat = (char*) malloc(l+1); char *org = (char*) malloc(l*2+2); if (pat==NULL || org==NULL) die("not enough memory"); expand(org,format,l); // remove hyphenation encoders (digits) from pat for (i=0,j=0; i'9') pat[j++]=c; } pat[j]=0; pattab_key[patterns] = pat; pattab_val[patterns++] = org; if (patterns>=MAXPATHS) die("to many base patterns"); } } fclose(in); // As we use binary search, make sure it is sorted qsort_arr(pattab_key,pattab_val,0,patterns-1); for (p=0; p=0) { int newpat_ndx; char *newpat=malloc(l+1); if (newpat==NULL) die("not enough memory"); //printf("%s is embedded in %s\n",pattab_val[subpat_ndx],pattab_val[p]); strncpy(newpat, pat+0,l); newpat[l]=0; if ((newpat_ndx = find_in(newpattab_key,newpatterns,newpat))<0) { char *neworg = malloc(l*2+2); if (neworg==NULL) die("not enough memory"); expand(neworg,newpat,l); newpattab_key[newpatterns] = newpat; newpattab_val[newpatterns++] = combine(neworg,pattab_val[subpat_ndx]); if (newpatterns>=MAXPATHS) die("to many new patterns"); //printf("%*.*s|%*.*s[%s] (%s|%s) = %s\n",i,i,pat,j,j,pat+i,pat+i+j,pattab_val[p],pattab_val[subpat_ndx],neworg); } else { free(newpat); newpattab_val[newpat_ndx] = combine( newpattab_val[newpat_ndx], pattab_val[subpat_ndx] ); } } } } } /* for some tiny extra speed, one could forget the free()s * as the memory is freed anyway on exit(). * However, the gain is minimal and now the code can be cleanly * incorporated into other code */ for (p=0; p$ARGV[1]"; $encoding = $ARGV[2]; $lhmin = $ARGV[3]; $rhmin = $ARGV[4]; if (defined $encoding) { print OUT "$encoding\n"; } if (defined $lhmin) { print OUT "LEFTHYPHENMIN $lhmin\n"; } if (defined $rhmin) { print OUT "RIGHTHYPHENMIN $rhmin\n"; } # keep header while () { if (/^%/) { print OUT "$_"; } else { last; } } while () { if (/^%/) { #comment, ignore } else { $_ =~ s/%.*$//g; for (split ' ', $_) { if (/^(.+)\/([^,]+),([0-9]+),([0-9]+)$/) { $origpat = $1; $pat = $1; $repl = $2; $beg = $3; $len = $4; $pat =~ s/\d//g; if ($origpat eq $pat) { print "error - missing hyphenation point: $_"; exit 1; } push @patlist, $pat; $pattab{$pat} = $origpat; $repltab{$pat} = $repl; $replbeg{$pat} = $beg - 1; $repllen{$pat} = $len; } elsif (/^(.+)\/(.+)$/) { $origpat = $1; $pat = $1; $repl = $2; $pat =~ s/\d//g; if ($origpat eq $pat) { print "error - missing hyphenation point: $_"; exit 1; } push @patlist, $pat; $pattab{$pat} = $origpat; $repltab{$pat} = $repl; $replbeg{$pat} = 0; $repllen{$pat} = enclen($pat); } elsif (/^(.+)$/) { $origpat = $1; $pat = $1; $pat =~ s/\d//g; push @patlist, $pat; $pattab{$pat} = $origpat; } } } } foreach $pat (@patlist) { $patsize = length $pat; for $i (0..$patsize - 1) { for $j (1..$patsize - $i) { $subpat = substr ($pat, $i, $j); if (defined $pattab{$subpat}) { print "$pattab{$subpat} is embedded in $pattab{$pat}\n"; $newpat = substr $pat, 0, $i + $j; if (!defined $newpattab{$newpat}) { $newpattab{$newpat} = substr ($pat, 0, $i).$pattab{$subpat}; $ss = substr $pat, 0, $i; print "$ss+$pattab{$subpat}\n"; push @newpatlist, $newpat; if (defined $repltab{$subpat}) { $begcorr = (($pat =~ /^[.]/) && !($subpat =~ /^[.]/)) ? 1 : 0; $newrepltab{$newpat} = $repltab{$subpat}; $newreplbeg{$newpat} = $replbeg{$subpat} + enclen($ss) - $begcorr; $newrepllen{$newpat} = $repllen{$subpat}; } } else { $tmp = $newpattab{$newpat}; $newpattab{$newpat} = combine ($newpattab{$newpat}, $pattab{$subpat}); print "$tmp + $pattab{$subpat} -> $newpattab{$newpat}\n"; } } } } } foreach $pat (@newpatlist) { if (defined $newrepltab{$pat}) { print OUT $newpattab{$pat}."/".$newrepltab{$pat}.",".($newreplbeg{$pat}+1).",".$newrepllen{$pat}."\n"; } else { print OUT $newpattab{$pat}."\n"; } } #convert 'n1im' to 0n1i0m0 expresed as a list sub expand { my ($pat) = @_; my $last = '.'; my @exp = (); foreach $c (split (//, $pat)) { if ($last =~ /[\D]/ && $c =~ /[\D]/) { push @exp, 0; } push @exp, $c; $last = $c; } if ($last =~ /[\D]/) { push @exp, 0; } return @exp; } # Combine two patterns, i.e. .ad4der + a2d becomes .a2d4der # The second pattern needs to be a substring of the first (modulo digits) sub combine { my @exp = expand shift; my @subexp = expand shift; my $pat1, $pat2; my $i; $pat1 = join ('', map { $_ =~ /\d/ ? () : $_ } @exp); $pat2 = join ('', map { $_ =~ /\d/ ? () : $_ } @subexp); $begcorr = ($pat1 =~ /^[.]/) ? 1 : 0; for $i (0..length ($pat1) - length ($pat2)) { if (substr ($pat1, $i, length $pat2) eq $subpat) { for ($j = 0; $j < @subexp; $j += 2) { if ($subexp[$j] > $exp[2 * $i + $j]) { $exp[2 * $i + $j] = $subexp[$j]; if (defined $newrepltab{$pat2} && !defined $newrepltab{$pat1}) { $ss = substr ($pat1, 0, $i); $newrepltab{$pat1} = $newrepltab{$pat2}; $newreplbeg{$pat1} = $newreplbeg{$pat2} + enclen($ss) - $begcorr; $newrepllen{$pat1} = $newrepllen{$pat2}; } } } print ("$pat1 includes $pat2 at pos $i\n"); } } return join ('', map { $_ eq '0' ? () : $_ } @exp); } # 8 bit or UTF-8 character length (calculating right start position for discretionary hyphenation) sub enclen { my $nonchar = 0; my $len = length($_[0]); if ($encoding eq "UTF-8") { # length of an UTF-8 string equals to the count of the characters not started with '10' bits for ($i = 0; $i < $len; $i++) { if ((ord(substr($_[0], $i, 1)) >> 6) == 2) { $nonchar++; } } } return $len - $nonchar; } hyphen-2.8.9/tbhyphext.sh000077500000000000000000000004701520164222500154030ustar00rootroot00000000000000#!/bin/sh # tbhyphext.tex hyphenation extension macro converter to hyphenation patterns sed -n '/acad-e-my/,/Zeit-schrift/p' | tr A-Z a-z | tr ' ' '\n' | grep -v '^$' | awk '{printf "%c", "." for (i=1; i <= length($1); i++){printf "%c8", substr($1, i, 1)} print "."}' | sed 's/8-8/9/g;s/^\(..\)8/\1/;s/8\.$/./;' hyphen-2.8.9/tbhyphext.tex000066400000000000000000000365161520164222500156000ustar00rootroot00000000000000% Hyphenation exceptions for US English, based on hyphenation exception % log articles in TUGboat. % % Copyright 2007 TeX Users Group. % You may freely use, modify and/or distribute this file. % % This is an automatically generated file. Do not edit! % % Please contact the TUGboat editorial staff % for corrections and omissions. \hyphenation{ acad-e-my acad-e-mies ac-cu-sa-tive acro-nym acryl-amide acryl-amides acryl-alde-hyde add-a-ble add-i-ble adren-a-line aero-space af-ter-thought af-ter-thoughts agron-o-mist agron-o-mists al-ge-bra-i-cal-ly am-phet-a-mine am-phet-a-mines an-a-lyse an-a-lysed analy-ses an-iso-trop-ic an-iso-trop-i-cal-ly an-isot-ro-pism an-isot-ropy anom-aly anom-alies anti-deriv-a-tive anti-deriv-a-tives anti-holo-mor-phic an-tin-o-my an-tin-o-mies an-ti-nu-clear an-ti-nu-cle-on an-ti-rev-o-lu-tion-ary apoth-e-o-ses apoth-e-o-sis ap-pen-dix ar-chi-me-dean ar-chi-pel-ago ar-chi-pel-a-gos ar-chive ar-chives ar-chiv-ing ar-chiv-ist ar-chiv-ists ar-che-typ-al ar-che-typ-i-cal arc-tan-gent arc-tan-gents as-sign-a-ble as-sign-or as-sign-ors as-sist-ant-ship as-sist-ant-ships asymp-to-matic as-ymp-tot-ic asyn-chro-nous ath-er-o-scle-ro-sis at-mos-phere at-mos-pheres at-trib-uted at-trib-ut-able au-to-ma-tion au-tom-a-ton au-tom-a-ta au-to-num-ber-ing au-ton-o-mous auto-round-ing av-oir-du-pois band-leader band-leaders bank-rupt bank-rupt-cy bank-rupt-cies bar-onies base-line-skip ba-thym-e-try bathy-scaphe bean-ies be-hav-iour be-hav-iours bevies bib-li-og-ra-phy-style bi-dif-fer-en-tial big-gest bill-able bio-math-e-mat-ics bio-med-i-cal bio-med-i-cine bio-rhythms bit-map bit-maps bland-er bland-est blind-er blondes blue-print blue-prints bo-lom-e-ter book-sell-er book-sell-ers bool-ean bool-eans bor-no-log-i-cal bot-u-lism brusquer buf-fer buf-fers busier busiest bussing butted buzz-word buzz-words ca-coph-o-ny ca-coph-o-nies call-er call-ers cam-era-men cart-wheel cart-wheels ca-tarrhs cat-a-stroph-ic cat-a-stroph-i-cally cat-e-noid cat-e-noids cau-li-flow-er chap-ar-ral char-treuse chemo-ther-apy chemo-ther-a-pies chloro-meth-ane chloro-meth-anes cho-les-teric cig-a-rette cig-a-rettes cinque-foil co-asso-cia-tive co-gnac co-gnacs co-ker-nel co-ker-nels col-lin-ea-tion col-umns com-par-and com-par-ands com-pen-dium com-po-nent-wise comp-trol-ler comp-trol-lers con-form-able con-form-ist con-form-ists con-form-ity con-gress con-gresses con-trib-ute con-trib-utes con-trib-uted co-re-la-tion co-re-la-tions co-re-li-gion-ist co-re-li-gion-ists co-re-op-sis co-re-spon-dent co-re-spon-dents co-se-cant co-tan-gent cour-ses co-work-er co-work-ers crank-case crank-shaft croc-o-dile croc-o-diles cross-hatch cross-hatched cross-over cryp-to-gram cryp-to-grams cuff-link cuff-links cu-nei-form cus-tom-iz-a-ble cus-tom-ize cus-tom-izes cus-tom-ized dachs-hund dam-sel-fly dam-sel-flies ca-coph-o-ny ca-coph-o-nies dactyl-o-gram dactyl-o-graph data-base data-bases data-path data-paths date-stamp date-stamps de-clar-able de-fin-i-tive de-lec-ta-ble demi-semi-qua-ver demi-semi-qua-vers de-moc-ra-tism demos de-riv-a-tive de-riv-a-tives dia-lec-tic dia-lec-tics dia-lec-ti-cian dia-lec-ti-cians di-chloro-meth-ane dif-fract dif-fracts dif-frac-tion dif-frac-tions direr dire-ness dis-par-and dis-par-ands dis-traught-ly dis-trib-ute dis-trib-utes dis-trib-uted dou-ble-space dou-ble-spac-ing doll-ish drift-age driv-ers drom-e-dary drom-e-daries du-op-o-list du-op-o-lists du-op-oly dys-lexia dys-lec-tic east-end-ers eco-nom-ics econ-o-mist econ-o-mists ei-gen-class ei-gen-classes ei-gen-val-ue ei-gen-val-ues electro-mechan-i-cal electro-mechano-acoustic elit-ist elit-ists en-tre-pre-neur en-tre-pre-neur-ial ep-i-neph-rine equi-vari-ant equi-vari-ance eth-ane eth-yl-ene ever-si-ble evert everts evert-ed evert-ing ex-quis-ite ex-tra-or-di-nary fall-ing fermi-ons fi-nite-ly fla-gel-lum fla-gel-la flam-ma-bles fledg-ling flow-chart flow-charts fluoro-car-bon for-mi-da-ble for-mi-da-bly for-syth-ia forth-right free-loader free-loaders friend-lier fri-vol-ity fri-vol-i-ties friv-o-lous ga-lac-tic gal-axy gal-ax-ies gas-om-e-ter ge-o-des-ic ge-o-det-ic geo-met-ric geo-met-rics ge-o-strophic geo-ther-mal ge-ot-ro-pism gno-mon gno-mons grand-uncle grand-uncles griev-ance griev-ances griev-ous griev-ous-ly hair-style hair-styles hair-styl-ist hair-styl-ists half-space half-spaces half-way har-bin-ger har-bin-gers har-le-quin har-le-quins hatch-eries hemi-demi-semi-qua-ver hemi-demi-semi-qua-vers he-mo-glo-bin he-mo-phil-ia he-mo-phil-iac he-mo-phil-iacs hemo-rhe-ol-ogy he-pat-ic her-maph-ro-dite her-maph-ro-dit-ic he-roes hexa-dec-i-mal ho-lo-no-my ho-meo-mor-phic ho-meo-mor-phism ho-mo-thetic horse-rad-ish hot-bed hot-beds hy-dro-ther-mal hy-po-thal-a-mus ideals ideo-graphs idio-syn-crasy idio-syn-cra-sies idio-syn-cratic idio-syn-crat-i-cal-ly ig-nit-er ig-nit-ers ig-ni-tor ignore-spaces im-ped-ance im-ped-ances in-du-bi-ta-ble in-fin-ite-ly in-fin-i-tes-i-mal in-fra-struc-ture in-fra-struc-tures in-stall-er in-stall-ers in-ter-dis-ci-pli-nary in-ter-ga-lac-tic in-utile in-util-i-ty ir-re-duc-ible ir-re-duc-ibly ir-rev-o-ca-ble isot-ropy iso-trop-ic itin-er-ary itin-er-ar-ies je-re-mi-ads key-note key-notes key-stroke key-strokes kiln-ing lac-i-est lam-en-ta-ble land-scap-er land-scap-ers lar-ce-ny lar-ce-n-ist leaf-hop-per leaf-hop-pers let-ter-spac-ing life-span life-spans life-style life-styles light-weight lim-ou-sines line-backer line-spacing li-on-ess lith-o-graphed lith-o-graphs lo-bot-omy lo-bot-om-ize loges long-est lo-quac-ity love-struck macro-eco-nomics mal-a-prop-ism mal-a-prop-isms man-slaugh-ter man-u-script mar-gin-al math-e-ma-ti-cian math-e-ma-ti-cians mattes med-ic-aid medi-ocre medi-oc-ri-ties mega-lith mega-liths meta-bol-ic me-tab-o-lism me-tab-o-lisms me-tab-o-lite me-tab-o-lites meta-lan-guage meta-lan-guages meta-phor-ic meth-ane me-trop-o-lis me-trop-o-lises met-ro-pol-i-tan met-ro-pol-i-tans micro-eco-nomics mi-cro-fiche mi-cro-fiches micro-organ-ism micro-organ-isms mill-age mil-li-liter mimeo-graphed mimeo-graphs mim-ic-ries min-is mini-sym-po-sium mini-sym-po-sia mi-nut-er mi-nut-est mis-chie-vous-ly mi-sers mi-sog-a-my mod-el-ling mol-e-cule mol-e-cules mon-archs money-len-der money-len-ders mono-chrome mono-en-er-getic mon-oid mono-pole mono-poles mo-nop-oly mono-spline mono-splines mono-strofic mo-not-o-nies mo-not-o-nous mo-ron-ism mos-qui-to mos-qui-tos mos-qui-toes mud-room mud-rooms mul-ti-fac-eted mul-ti-plic-able multi-user neo-fields neo-nazi neo-nazis neph-ews neph-rite neph-ritic new-est news-let-ter news-let-ters nitro-meth-ane no-name non-ar-ith-met-ic non-emer-gency non-equi-vari-ance none-the-less non-euclid-ean non-iso-mor-phic non-pseudo-com-pact non-smooth non-uni-form non-uni-form-ly nor-ep-i-neph-rine not-with-stand-ing nu-cleo-tide nu-cleo-tides nut-crack-er nut-crack-ers oer-steds off-line off-load off-loads off-loaded oli-gop-o-list oli-gop-o-lists oli-gop-oly oli-gop-ol-ies op-er-and op-er-ands orang-utan orang-utans or-tho-don-tist or-tho-don-tists or-tho-ker-a-tol-ogy ortho-nitro-toluene over-view over-views ox-id-ic pad-ding pain-less-ly pal-ette pal-ettes par-a-bola par-a-bol-ic pa-rab-o-loid par-a-digm par-a-digms para-chute para-chutes para-di-methyl-benzene para-fluoro-toluene para-graph-er para-le-gal par-al-lel-ism para-mag-net-ism para-medic para-methyl-anisole pa-ram-e-trize para-mil-i-tary para-mount path-o-gen-ic peev-ish peev-ish-ness pen-ta-gon pen-ta-gons pe-tro-le-um phe-nom-e-non phenyl-ala-nine phi-lat-e-list phi-lat-e-lists pho-neme pho-nemes pho-ne-mic phos-phor-ic pho-to-graphs pho-to-off-set pic-a-dor pic-a-dors pipe-line pipe-lines pipe-lin-ing pi-ra-nhas placa-ble plant-hop-per plant-hop-pers pleas-ance plug-in plug-ins pol-ter-geist poly-ene poly-eth-yl-ene po-lyg-a-mist po-lyg-a-mists polyg-on-i-za-tion po-lyph-o-nous poly-styrene pome-gran-ate poro-elas-tic por-ous por-ta-ble post-am-ble post-am-bles post-hu-mous post-script post-scripts pos-tur-al pre-am-ble pre-am-bles pre-loaded pre-par-ing pre-print pre-prints pre-proces-sor pre-proces-sors pre-split-ting pre-wrap pre-wrapped priest-esses pret-ty-prin-ter pret-ty-prin-ting pro-ce-dur-al process pro-cur-ance prog-e-nies prog-e-ny pro-gram-mable prom-i-nent pro-mis-cu-ous prom-is-sory prom-ise prom-ises pro-pel-ler pro-pel-lers pro-pel-ling pro-hib-i-tive pro-hib-i-tive-ly pro-sciut-to pro-test-er pro-test-ers pro-tes-tor pro-tes-tors pro-to-lan-guage pro-to-typ-al prov-ince prov-inces pro-vin-cial prow-ess pseu-do-dif-fer-en-tial pseu-do-fi-nite pseu-do-fi-nite-ly pseu-do-forces pseu-dog-ra-pher pseu-do-group pseu-do-groups pseu-do-nym pseu-do-nyms pseu-do-word pseu-do-words psy-che-del-ic psychs pu-bes-cence quad-ding qua-drat-ic qua-drat-ics quad-ra-ture quad-ri-pleg-ic quaint-er quaint-est qua-si-equiv-a-lence qua-si-equiv-a-lences qua-si-equiv-a-lent qua-si-hy-po-nor-mal qua-si-rad-i-cal qua-si-resid-ual qua-si-smooth qua-si-sta-tion-ary qua-si-topos qua-si-tri-an-gu-lar qua-si-triv-ial quin-tes-sence quin-tes-sences quin-tes-sen-tial rab-bit-ry ra-di-og-ra-phy raff-ish raff-ish-ly ram-shackle rav-en-ous re-arrange-ment re-arrange-ments rec-i-proc-i-ties rec-i-proc-i-ty rec-tan-gle rec-tan-gles rec-tan-gu-lar re-di-rect re-di-rect-ion re-duc-ible re-echo re-phrase re-phrases re-phrased re-po-si-tion re-po-si-tions re-print re-prints re-stor-able retro-fit retro-fit-ted re-us-able re-use re-wire re-wrap re-wrapped re-write rhi-noc-er-os right-eous right-eous-ness ring-leader ring-leaders ro-bot ro-bots ro-botic ro-bot-ics round-table round-tables sales-clerk sales-clerks sales-woman sales-women sal-mo-nel-la sal-ta-tion sar-sa-par-il-la sauer-kraut scat-o-log-i-cal sched-ul-ing schiz-o-phrenic schnau-zer school-child school-child-ren school-teacher school-teach-ers scru-ti-ny scyth-ing sell-er sell-ers sec-re-tar-iat sec-re-tar-iats sem-a-phore sem-a-phores se-mes-ter semi-def-i-nite semi-di-rect semi-ho-mo-thet-ic semi-ring semi-rings semi-sim-ple semi-skilled sero-epi-de-mi-o-log-i-cal ser-vo-mech-anism ser-vo-mech-anisms ses-qui-pe-da-lian set-up set-ups se-vere-ly shape-able shoe-string shoe-strings side-step side-steps side-swipe sky-scraper sky-scrapers smoke-stack smoke-stacks snor-kel-ing so-le-noid so-le-noids solute solutes sov-er-eign sov-er-eigns spa-ces spe-cious spell-er spell-ers spell-ing spe-lunk-er spend-thrift spher-oid spher-oid-al sphin-ges spic-i-ly spin-ors spokes-woman spokes-women sports-cast sports-cast-er spor-tive-ly sports-wear sports-writer sports-writers spright-lier squea-mish stand-alone star-tling star-tling-ly sta-tis-tics stealth-ily steeple-chase stereo-graph-ic sto-chas-tic strange-ness strap-hanger strat-a-gem strat-a-gems stretch-i-er strip-tease strong-hold strong-est stu-pid-er stu-pid-est sub-dif-fer-en-tial sub-ex-pres-sion sub-ex-pres-sions sum-ma-ble super-ego super-egos su-prem-a-cist su-prem-a-cists sur-veil-lance swim-ming-ly symp-to-matic syn-chro-mesh syn-chro-nous syn-chro-tron taff-rail talk-a-tive ta-pes-try ta-pes-tries tar-pau-lin tar-pau-lins te-leg-ra-pher te-leg-ra-phers tele-ki-net-ic tele-ki-net-ics tele-ro-bot-ics tell-er tell-ers tem-po-rar-ily ten-ure test-bed text-width thal-a-mus ther-mo-elas-tic time-stamp time-stamps tool-kit tool-kits topo-graph-i-cal toques trai-tor-ous trans-ceiver trans-ceivers trans-gress trans-ver-sal trans-ver-sals trans-ves-tite trans-ves-tites tra-vers-a-ble tra-ver-sal tra-ver-sals tri-ethyl-amine treach-eries trou-ba-dour tur-key tur-keys turn-around turn-arounds typ-al un-at-tached un-err-ing-ly un-friend-ly un-friend-li-er vaguer vaude-ville vic-ars vil-lain-ess vis-ual vis-ual-ly vi-vip-a-rous voice-print vspace wad-ding wall-flower wall-flow-ers warm-est waste-water wave-guide wave-guides wave-let wave-lets web-like week-night week-nights wheel-chair wheel-chairs which-ever white-sided white-space white-spaces wide-spread wing-span wing-spans wing-spread witch-craft word-spac-ing work-around work-arounds work-horse work-horses wrap-around wretch-ed wretch-ed-ly yes-ter-year al-ge-brai-sche Al-le-ghe-ny Ar-kan-sas ATP-ase ATP-ases Aus-tral-asian auto-mati-sier-ter Be-die-nung Bembo bib-li-o-gra-phi-sche Bos-ton Brown-ian Bruns-wick Bu-da-pest Car-ib-bean Charles-ton Char-lottes-ville Co-lum-bia Czecho-slo-va-kia Del-a-ware Dijk-stra Duane dy-na-mi-sche Eng-lish Euler-ian Evan-ston Feb-ru-ary Fest-schrift Flor-i-da Flor-i-d-ian For-schungs-in-sti-tut Free-BSD funk-tsional Gauss-ian Ghost-script Ghost-View Grass-mann-ian Greifs-wald Grothen-dieck Grund-leh-ren Ha-da-mard Hai-fa Hamil-ton-ian Hel-sinki Her-mit-ian Hibbs Hok-kai-do Jac-kow-ski Jan-u-ary Ja-pa-nese Kad-om-tsev Kan-sas Karls-ruhe Kor-te-weg Krishna Krish-na-ism Krish-nan Lan-cas-ter Le-gendre Leices-ter Lip-schitz Lip-schitz-ian Loj-ban Lou-i-si-ana Mac-OS Man-ches-ter Mar-kov-ian Markt-ober-dorf Mass-a-chu-setts Max-well Mi-cro-soft Min-ne-ap-o-lis Min-ne-sota Mos-cow Nach-richten Nash-ville Net-BSD Net-scape Nij-me-gen Noe-ther-ian Noord-wijker-hout No-vem-ber Open-BSD Open-Office Pala-tino Pa-ler-mo Pe-trov-ski Pfaff-ian Phil-a-del-phia phil-o-soph-i-sche Poin-care Po-ten-tial-glei-chung Ra-dha-krish-nan raths-kel-ler Rie-mann-ian Ryd-berg schot-tische Schro-ding-er Schwa-ba-cher Schwarz-schild Sep-tem-ber Stokes-sche Stutt-gart Sus-que-han-na Tau-ber-ian tech-ni-sche Ten-nes-see To-ma-szew-ski ty-po-graphique Ukrain-ian ver-all-ge-mein-erte Ver-ein-i-gung Ver-tei-lun-gen viiith viith Wahr-schein-lich-keits-theo-rie Wer-ner Wer-ther-ian Win-ches-ter Wirt-schaft wis-sen-schaft-lich xviiith xviith xxiiird xxiind Ying-yong Shu-xue Ji-suan Zea-land Zeit-schrift } % EOF hyphen-2.8.9/tests/000077500000000000000000000000001520164222500141665ustar00rootroot00000000000000hyphen-2.8.9/tests/.cvsignore000066400000000000000000000000241520164222500161620ustar00rootroot00000000000000Makefile testSubDir hyphen-2.8.9/tests/Makefile.am000066400000000000000000000053501520164222500162250ustar00rootroot00000000000000TESTS = \ basealt2.test \ basealt.test \ base.test \ conv.test \ unicode.test \ alt.test \ alt2.test \ alt3.test \ alt4.test \ alt5.test \ alt6.test \ alt7.test \ longlines.test \ compound.test \ compound2.test \ compound3.test \ compound4.test \ compound5.test \ compound6.test \ compound7.test \ settings.test \ settings2.test \ settings3.test \ settings4.test \ lhmin.test \ rhmin.test \ lig.test \ hyphen.test \ num.test \ boundary.test \ recursion.test \ nohyphen2.test \ nohyphen3.test \ rhmin2.test \ replindex.test \ matchindex.test \ utf8cut.test distclean-local: -rm -rf testSubDir EXTRA_DIST = \ test.sh \ alt2.hyph \ alt2.pat \ alt2.word \ alt3.hyph \ alt3.pat \ alt3.word \ alt4.hyph \ alt4.pat \ alt4.word \ alt5.hyph \ alt5.pat \ alt5.word \ alt6.hyph \ alt6.pat \ alt6.word \ alt7.hyph \ alt7.pat \ alt7.word \ longlines.hyph \ longlines.pat \ longlines.word \ alt.hyph \ alt.pat \ alt.word \ basealt2.hyph \ basealt2.pat \ basealt2.word \ basealt.hyph \ basealt.pat \ basealt.word \ base.hyph \ base.pat \ base.word \ conv.dic \ conv.hyph \ conv.pat \ conv.word \ unicode.hyph \ unicode.pat \ unicode.word \ compound.hyph \ compound.pat \ compound.word \ compound2.hyph \ compound2.pat \ compound2.word \ compound3.hyph \ compound3.pat \ compound3.word \ compound4.hyph \ compound4.pat \ compound4.word \ compound5.hyph \ compound5.pat \ compound5.test \ compound5.word \ compound6.hyph \ compound6.pat \ compound6.test \ compound6.word \ compound7.hyph \ compound7.pat \ compound7.test \ compound7.word \ settings.hyph \ settings.pat \ settings.word \ settings2.hyph \ settings2.pat \ settings2.word \ settings3.hyph \ settings3.pat \ settings3.word \ settings4.hyph \ settings4.pat \ settings4.word \ alt2.test \ alt3.test \ alt4.test \ alt5.test \ alt6.test \ alt7.test \ longlines.test \ alt.test \ basealt2.test \ basealt.test \ base.test \ conv.test \ unicode.test \ compound.test \ compound2.test \ compound3.test \ compound4.test \ settings.test \ settings2.test \ settings3.test \ settings4.test \ lhmin.hyph \ lhmin.pat \ lhmin.word \ lhmin.test \ rhmin.hyph \ rhmin.pat \ rhmin.word \ rhmin.test \ lig.hyph \ lig.pat \ lig.test \ lig.word \ hyphen.hyph \ hyphen.pat \ hyphen.test \ hyphen.word \ num.hyph \ num.pat \ num.test \ num.word \ boundary.hyph \ boundary.pat \ boundary.test \ boundary.word \ recursion.hyph \ recursion.pat \ recursion.test \ recursion.word \ nohyphen2.hyph \ nohyphen2.pat \ nohyphen2.test \ nohyphen2.word \ nohyphen3.hyph \ nohyphen3.pat \ nohyphen3.test \ nohyphen3.word \ rhmin2.hyph \ rhmin2.pat \ rhmin2.test \ rhmin2.word \ replindex.hyph \ replindex.pat \ replindex.test \ replindex.word \ matchindex.hyph \ matchindex.pat \ matchindex.test \ matchindex.word \ utf8cut.hyph \ utf8cut.pat \ utf8cut.test \ utf8cut.word hyphen-2.8.9/tests/alt.hyph000066400000000000000000000000151520164222500156340ustar00rootroot00000000000000schiff=fahrt hyphen-2.8.9/tests/alt.pat000066400000000000000000000001221520164222500154470ustar00rootroot00000000000000ISO8859-1 % German prereform hyphenation: Schiffahrt -> Schiff-fahrt f1f/ff=f,1,2 hyphen-2.8.9/tests/alt.test000077500000000000000000000001451520164222500156520ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/alt.word000066400000000000000000000000131520164222500156350ustar00rootroot00000000000000schiffahrt hyphen-2.8.9/tests/alt2.hyph000066400000000000000000000000271520164222500157210ustar00rootroot00000000000000schif=fen schiff=fahrt hyphen-2.8.9/tests/alt2.pat000066400000000000000000000001771520164222500155430ustar00rootroot00000000000000ISO8859-1 % German prereform hyphenation: Schiffahrt -> Schiff-fahrt f1f if3fa/ff=f,2,2 % pattern added by substrings.pl: if1f hyphen-2.8.9/tests/alt2.test000077500000000000000000000001451520164222500157340ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/alt2.word000066400000000000000000000000241520164222500157210ustar00rootroot00000000000000schiffen schiffahrt hyphen-2.8.9/tests/alt3.hyph000066400000000000000000000000421520164222500157170ustar00rootroot00000000000000schif=fen schiff=fahrt tenerif=fa hyphen-2.8.9/tests/alt3.pat000066400000000000000000000002251520164222500155360ustar00rootroot00000000000000ISO8859-1 % German prereform hyphenation: Schiffahrt -> Schiff-fahrt f1f if3fa/ff=f,2,2 tenerif5fa % patterns added by substrings.pl: if1f tenerif1f hyphen-2.8.9/tests/alt3.test000077500000000000000000000001451520164222500157350ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/alt3.word000066400000000000000000000000361520164222500157250ustar00rootroot00000000000000schiffen schiffahrt teneriffa hyphen-2.8.9/tests/alt4.hyph000066400000000000000000000000171520164222500157220ustar00rootroot00000000000000asz=szony=nyal hyphen-2.8.9/tests/alt4.pat000066400000000000000000000001711520164222500155370ustar00rootroot00000000000000ISO8859-2 % Hungarian simplified double 2-character consonants: ssz -> sz-sz, nny -> ny-ny s1sz/sz=sz,1,3 n1ny/ny=ny,1,3 hyphen-2.8.9/tests/alt4.test000077500000000000000000000001451520164222500157360ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/alt4.word000066400000000000000000000000131520164222500157210ustar00rootroot00000000000000asszonnyal hyphen-2.8.9/tests/alt5.hyph000066400000000000000000000000101520164222500157140ustar00rootroot00000000000000oma=tje hyphen-2.8.9/tests/alt5.pat000066400000000000000000000001461520164222500155420ustar00rootroot00000000000000ISO8859-1 % Dutch example: omaatje -> oma-tje %aa1tje./a=tje,1,5 (alternative solution) aa1tje./=,2,1 hyphen-2.8.9/tests/alt5.test000077500000000000000000000001451520164222500157370ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/alt5.word000066400000000000000000000000101520164222500157170ustar00rootroot00000000000000omaatje hyphen-2.8.9/tests/alt6.hyph000066400000000000000000000000341520164222500157230ustar00rootroot00000000000000exá=ample exá=amplxá=ame hyphen-2.8.9/tests/alt6.pat000066400000000000000000000000271520164222500155410ustar00rootroot00000000000000UTF-8 xé1ém/á=a,2,2 hyphen-2.8.9/tests/alt6.test000077500000000000000000000001451520164222500157400ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/alt6.word000066400000000000000000000000341520164222500157260ustar00rootroot00000000000000exéémple exéémplxééme hyphen-2.8.9/tests/alt7.hyph000066400000000000000000000001601520164222500157240ustar00rootroot00000000000000b=bbbbbbbbbbbbbbbbbbbbbba=a=a=a=a=a=a=a=a=a=a=a=a=a=a=a b=bbbbbbbbbbbbbbbbbbbbbba=b=bbbbbbbbbbbbbbbbbbbbbba=b=b hyphen-2.8.9/tests/alt7.pat000066400000000000000000000001641520164222500155440ustar00rootroot00000000000000ISO8859-1 LEFTHYPHENMIN 1 RIGHTHYPHENMIN 1 % Check for buffer overflows .a1b. a9a ab3a/b=bbbbbbbbbbbbbbbbbbbbbb,1,2 hyphen-2.8.9/tests/alt7.test000077500000000000000000000001451520164222500157410ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/alt7.word000066400000000000000000000000721520164222500157310ustar00rootroot00000000000000abaaaaaaaaaaaaaaaaaaaaaaaaaa abaabaababababababababababab hyphen-2.8.9/tests/base.hyph000066400000000000000000001325451520164222500160040ustar00rootroot00000000000000aarhus abase abate abbeys abby abducts aber=ra=tions ab=hor=rer abil=i=ties ab=jur=ing ablest abodes abo=li=tion=ist abor=tion about abram abridged abruptly ab=sconds ab=sently ab=solved ab=sorp=tion ab=sti=nence ab=strac=tor abun=dance abuts abyssinian aca=pulco ac=cel=er=a=tor ac=cen=tu=ated ac=cepted ac=ces=si=bil=ity ac=ci=den=tal ac=cli=mated ac=com=mo=dat=ing ac=com=pa=ny=ing ac=com=plish=ments ac=cords ac=coun=tant ac=cre=tion ac=cul=tur=a=tion ac=cu=racy ac=cused aces achieve acid ac=knowl=edge=able acme acous=tics ac=qui=es=cent ac=quis=i=tive acres acrop=o=lis acti=nome=ters ac=ti=va=tors ac=tors ac=tu=ar=ial acute ada=gios adap=ta=tion adapts ad=dict=ing ad=di=tions ad=dresser ad=duc=ing aden ad=her=ents adi=a=bat=i=cally ad=join=ing ad=judg=ing ad=jured ad=just=ment ad=min=is=ter ad=min=is=tra=tively ad=mire ad=mis=sions ad=mixed ad=mo=ni=tions adopted adore adrian ad=sorbs adul=terer ad=um=brat=ing ad=van=ta=geous ad=ven=tur=ers ad=versely ad=ver=tises ad=visees ad=vo=cacy aer=ate aer=obac=ter aerosols af=fairs af=fec=tions af=fil=i=at=ing af=firmed af=flic=tion af=fords afghans afore=thought african=izes af=ter=im=age af=ter=ward age ager ag=glu=ti=nated ag=gra=va=tion ag=gres=sive ag=ile ag=i=ta=tor ag=o=nies agree=ably agri=cul=tur=ally aide ail=ing aims air=drops air=foil air=line air=planes air=tight akin alamo alas al=ba=tross al=bums al=co=holism aldrich alert=ing alexan=dria alga al=ge=rian al=go=rithms ali=cia aligned al=is=tair al=lan al=leges al=le=gory al=ler=gic al=ley=way al=lit=er=a=tion al=lo=ca=tor al=lots al=low=ing al=lure=ment al=maden al=nico aloof=ness al=pha=bet=ized al=sa=tian al=ter=ations al=ter=nates al=thaea al=tru=is=ti=cally alve=o=lar amal=ga=mate amass amaze ama=zons am=bigu=ous am=bled am=bushed amend amer=ica amer=i=cans amide am=mo=nia among amor=tized amour am=phib=ians am=pli=fiers am=pu=tated amuse=ment an=abap=tist ana=gram ana=logue an=a=lyt=ic=i=ties anaphoric anas=to=moses anatomy an=chorite an=dalu=sia an=dover anec=dote anes=thetic an=ge=leno an=gered an=glia an=gola an=gu=lar an=i=mated an=i=mism anita an=napo=lis an=ni=hi=lated an=no=ta=tion an=noy an=nu=ally an=nuls an=odes anoma=lously anselm ant an=tag=o=nizes an=te=date an=tholo=gies an=thro=po=mor=phi=cally an=tic=i=pates an=ti=dotes an=ti=mony an=ti=quate an=ti=semitism an=ti=thet=i=cal an=to=nio anx=ious any=way ap=a=thy apha=sia api=ary apoc=ryphal apol=o=gist apos=tolic ap=pall ap=par=ently ap=pear ap=pease=ment ap=pended ap=per=tains ap=plauds ap=pli=ca=ble ap=plier ap=pointer ap=por=tion=ing ap=prais=ers ap=pre=ci=a=tion ap=pre=hen=sively ap=proach ap=pro=pri=ate ap=proval ap=prox=i=mated april aptly aquifer ara=bi=ans aramco ar=bi=trat=ing ar=cades ar=chaism arche=ol=o=gist archimedes ar=chi=tec=tures arc=ing ar=dently are=quipa ar=gos ar=gu=ment arid=ity aris=to=crat arith=me=tize arm arm=chairs arm=ing armpits arousal ar=rack ar=range=ment ar=rears ar=rhe=nius ar=ro=gate ar=royo ar=te=rial arthri=tis ar=tic=u=lately ar=ti=fact ar=tillerist arts as=cen=dant as=cent as=cot ashamedly ash=tray asi=at=ics ask=ing as=per=sions as=pi=ra=tion ass as=sas=si=nated as=say as=sem=blies as=serter as=sess as=siduity as=sign=ing as=sist as=so=ciate as=so=ci=a=tor as=suaged as=sure as=syr=i=an=ize as=ter=oid as=ton=ish=ingly astride as=tro=nom=i=cally asym=met=ric asyn=chronously athe=ism ath=letes at=las at=om=iza=tion atone=ment at=ro=phies at=tach=ing at=tain at=tempt at=ten=dants at=ten=tion=al=ity at=ten=u=a=tor at=tired at=tracted at=tributable at=tune auburn au=di=bly au=diome=ter au=di=tions auger au=gust au=ral aus=cul=tated aus=terely aus=tri=an=ize au=then=ti=ca=tor au=thor=i=ties au=thors au=to=cor=re=late au=todecre=ments au=toin=dex au=toma=ton au=topi=lot au=tum=nal availer avari=cious av=enues avers avian avionic avoid=able avow awak=ened awards aw=ful=ness awry ax=i=o=log=i=cal ax=ioms ayes azure ba=belizes baby=ing bac=chus back=bend back=fill back=o=rder backscat=ters back=stitch back=tracks back=yard bad=ger baf=fle bag=gage bagro=dia bailiff baits bakes bal=ancers bald=win balka=niza=tion balks baller bal=loon ballplayer bal=sam bam=boo ban=dage band=pass bane ban=gui bank bankrupts bans bap=tism bap=tized bar=barism bar=bells bards barest barhop barks barn=hard barom=e=ters barr bar=ren bar=ron barter basalt base=less bash ba=sics bas=ket=ball bassinets batavia bather bath=tub bat=ted bat=ting bat=tle=ments baude=laire bawl=ing bay=o=net be beaded beaker bean=bag bearded beast be=at=i=fi=ca=tion beau beau=ti=fied beavers becker be=com=ingly bed=der bed=post bed=spread beecham beefy beethoven be=fell be=foul be=fud=dles beg=gary be=got=ten be=guil=ing be=hav=ior=ism be=hold be=ing be=lay bel=fry be=liev=able be=lit=tles belles bel=liger=ents bells be=long belt=ing be=moans bend=able bene=dic=tions ben=e=fi=ciary ben=gal bent be=queath be=rat=ing beres=ford berib=boned berlin=ers bernar=dine bernoulli bertie be=sets be=smirched be=spoke best=ing bet be=trayed bette be=tween be=wail be=wil=der=ment bianco bibles bi=car=bon=ate bi=con=vex bid=der bi=en=nial big=ger bi=har=monic bi=l=abial bilk bil=let billings bimet=allism bind bing=ham=ton bio=chem=istry bi=o=log=i=cally biopsy bipeds bird=baths birm=ing=hamize births bi=sec=tors bisques bites bit=terly bi=valves blab=ber=mouths black=burn black=foots black=mailed blacks blaine blamers bland blan=keters blares blas=phe=mous=ness blatz bleach=ers bleat=ing blem=ishes bless=ings blind=fold blinked bliss=fully bliz=zard bloch block=ers blond blood=i=est bloom blos=soms blow=fish blud=geons blueprint bluish blunted blur=ring blush=ing boarded boaster boathouse boatswain bobb=sey bo=den=heim body=build=ing bog=art bo=gus boil=ers bold=face bol=she=vist bolton bom=bas=tic bo=nan=zas bonds=man bon=ham bon=tempo book=cases book=keep=ers book=store booms booster boo=tle boot=strap=ping bor=den bo=re=alis born bor=row=ers bosses botanist bother bot=tler bo=tulism bounce bounden bou=quet bou=tique bowd=ler=iz=ing bowl bow=string box=ing boyfriend braced brad=bury brag=ger braille brain=storm brakes branch=ings bran=dish=ing brashly braun brav=ing bray=ing brazil bread bread=win=ners break=fast break=through breast=works breath=lessly breed=ing bren=nan brevet brew=ery bribers brick=lay=ers bridge bridge=work briefed brig brighten brighton brim=ming brings bris=tle britisher broaches broad=casts broadly broglie bro=ken=ness bronchial brooch brook=field broth brow=beat brow=n=ian bruce brunette brush=ing bru=tal=ized bryce buch=wald buck=ler bucky bud=dies bud=geters buff buf=fet=ings bug=ger bugs built bulging bull=doze bull=frog bul=ly=ing bum=bling bump=tious bun=dle bun=gler bunkhouse bunted buoys bu=reau=cracy burgher bur=glarproof=ing burke burn burn=ings burnt=ness bur=row=ing bursty busch bush=whacked busi=nesslike bus=tards butchered but=ter=cup but=ter=nut but=ton=holes bu=tyrate buz=zard bye by=pass=ing by=stander byzan=tinizes cab=i=net cache cac=tus cae=sarize cager ca=jole calais cal=cu=late cal=cu=lus cal=gary cal=ico callaghan cal=loused calm=ingly cal=tech ca=lypso camem=bert camino cam=paign=ing camps cana=di=an=ize can=celed can=di=dacy can=dler ca=nine can=nery can=non canon=i=cal canopy canto can=vassed ca=pa=ble ca=pac=i=tors capita cap=i=tal=iz=ers cap=ping cap=stone cap=ti=vates cap=turer car=a=vans car=bon=dale car=boniz=ing card=board car=di=ol=ogy care=fully ca=ress=ing car=i=ca=ture carls=bad car=na=tion car=o=line car=pen=ters car=riages car=ruthers carter car=ton carve cas=cades cashed cas=ings cas=sette castes casts catalina cat=a=pult catches cat=e=go=rizes cathe=dral catholi=cisms cat=tle caul=drons causer cau=tioner cav=a=lier=ness cav=ernous caw=ing ce=cil celanese celer=ity cel=list celti=cizes cen=sor=ing cen=taur cen=time=ter cen=tral=ized cen=troid cere=bral cer=tain=ties cer=ti=fies cezanne chaf=fey chair=ing chal=ices chal=leng=ing cham=paign chan=cel=lor change=abil=ity chan=neled chanter chapel chap=ter char=ac=ter=ize charge=able char=i=ta=ble char=lotte chars chart=ings chas=ing chas=tis=ers chat=tel chauf=feured cheaply check=book check=out cheek=bone cheer=i=ness cheeses chemise cher=ishes cheryl chests cheyennes chi=canos chides child=hood chill chime chi=nas chin=ning chi=ro=prac=tor chit chloro=plasts choir choose chop=ping chore=o=graph chou chris=ten=son chris=tian=iz=ing christoph chron=i=cle chronol=ogy chuck=les church=go=ing churn ci=cero=ni=an=ize cin=derella ci=pher=texts cir=cuitously cir=cu=lat=ing cir=cum=nav=i=gates cir=cum=stanced cir=cuses cities civet civ=i=lized claimed clam=bers clams clap=board clar=i=fi=ca=tions clash classes clas=si=fiers clat=tered claus=tro=pho=bia cleaned cleansed clearer cleaved clemente clerked cliches cliffs climb clincher clink clip=pers cloaks clock=ings clogs close=ness clos=ing cloth=ing cloud=ing clowns clucks clumsy clutch=ing coaches coali=tion coastal coat=ing coax=ing cob=web cock=pit co=coon codes cod=i=fies co=ef=fi=cient co=ex=ist cof=fer cog=i=tated cogs co=her=ing coils co=in=cid=ing colder col=icky col=lab=o=ra=tor col=lared col=lect=ing col=leges collins colom=bia colonies colons col=or=less colum=nize com=bated com=bi=na=tor comb=ings comedic cometary com=fort=ing comma com=mand=ment com=mem=o=ra=tive com=mended com=ment=ing com=mis=sion=ers com=mit=teemen com=mon=al=i=ties com=mon=wealth com=mu=ni=cated com=mu=nists com=mut=ing com=pactors com=pa=ra=bly com=par=i=son com=pas=sion com=pelling com=pen=satory com=pe=ti=tions com=pil=ers com=plaint com=pleted com=plex=i=ties com=pli=ca=tions com=pli=ment=ing com=pos=edly com=post com=pre=hen=si=bil=ity com=pres=sion com=pro=mis=ers com=pul=sory com=puted com=radely con=cate=na=tion con=cede con=ceived con=cen=tra=tors con=cep=tu=al=ized con=certed con=cise=ness con=coct con=cretes con=cur=ring con=demns con=di=tional con=doned con=duc=tion con=fec=tionery con=ferred con=fes=sions con=fi=den=tial con=fig=ure con=fin=ing con=fis=cates con=fo=cal con=found=ing con=fu=cian con=fu=sion congo con=gre=gat=ing con=gress=women con=joined con=junc=ture con=nected con=nec=tor con=nors con=quered con=rail con=se=crate con=sent=ing con=ser=va=tion con=served con=sid=ered con=sis=tent con=sol=ers con=so=nants con=spir=a=tor con=stant con=stituent con=sti=tu=tions con=structed con=structs con=sul=tant con=sumed con=sump=tions con=tain con=tam=i=nated con=tem=pla=tive con=tender con=tent=ment con=text con=ti=nents con=tin=u=a=tions con=tor=tions con=tract=ing con=tra=dict=ing con=trap=tions con=tribute con=trite con=trol=la=bil=ity con=tro=versy con=vened con=ven=tion=ally con=ver=santly con=ver=sion con=vex con=vict con=vinces con=voys cooked cool=ers coon co=op=er=a=tions co=or=di=nates copeland cop=ings co=pro=ces=sor co=quette cords corinthian corks cor=nered corns coro=nary cor=po=rately cor=rect cor=rect=ness cor=re=spond cor=ri=dors cor=rob=o=ra=tive cor=rup=tion cor=val=lis cos=mopoli=tan costs cots cotyle=don coughs coun=cil=woman coun=selors coun=ter=act=ing coun=ter=feited coun=ter=part coun=ter=sunk coun=try=wide cou=plings courser cour=te=sies court=rooms covenant cov=er=let cov=etous=ness cower cowl coypu crack=ers cra=dles craftsper=son cramps crank cranny crater craw=ford craze creaked creams cre=ation cre=dence cred=i=tor creeks cre=mates cres=cents cretin cricket crim=i=nal crip=ple criss=cross crit=i=cizes croaks cro=cus crop=per crosser crosstalk crowd crown=ing cru=ci=fix=ion cruel cruis=ing crum=pled cru=sade crushes crux cryp=tic crys=tal=lize cubans cu=cum=bers cuf=flink cul=mi=nate cul=tivable cul=tural cum=mings cup=board curb cur=ing curlers cur=rent cur=ry=ing cur=sory curtly curv=ing custer cus=tomiz=able cut cuts cyanamid cycli=cally cygnus cy=press cy=to=plasm dab=bles dadais=tic dahl dairy dali dam=ages damns damsel danc=ing dan=gle danize dare darken darn darted dar=winizes database dates daunted davy day=dreams daz=zled deaden deaf deal=ings deanna death de=bater de=bil=i=tates debtor debu=tante de=cay de=ceit de=cel=er=ate de=cent de=cid=abil=ity dec=i=mate de=ci=sion decks de=clarer de=clin=ers de=cod=ings de=com=po=si=tion dec=o=ra=tive de=creases decre=ments ded=i=cated deduct deed=ing deep deere de=feats de=fen=dant de=fen=es=trat=ing de=fer=ments de=fi=cien=cies de=fine def=i=ni=tions de=for=ma=tion defy degra=da=tion de=ify de=jected de=lay=ing deleter de=lib=er=ated del=i=ca=cies de=light=ful de=lim=it=ing deliri=ous de=liv=er=ies del=phic del=uged de=mand deme=ter de=mod=u=late demons demon=stra=tor de=mul=ti=plex denebola den=i=grates de=nom=i=na=tors de=not=ing dens=est den=tists deny=ing de=par=ture de=pen=dent de=pleted de=ploy de=pose de=pos=i=tors de=pre=ci=ated de=pri=va=tions de=queued dereg=u=late de=rive de=scend de=scents de=scrip=tively de=sert=ers de=serv=ings des=ig=na=tor de=sire des=o=late despatched de=spite desta=bi=lize de=stroyed de=struc=tive=ness de=tacher de=tained de=tec=tive de=te=ri=o=rated de=ter=mi=na=tion de=ter=min=is=tic de=trac=tor dev=as=tate de=vel=op=ment de=vi=a=tion de=vised de=vot=edly de=vours dexedrine di=ag=nose di=ag=o=nals dial di=a=logue di=a=mond di=ar=rhea dick=in=son dic=ta=to=rial did=dle dies di=et=rich dif=fer=en=tials dif=fer=ers dif=fusely di=gest dig=gings dig=its di=gress=ing di=lap=i=date dili=gence di=lu=tion di=men=sions dimmed dine din=ing dio=genes diph=thong dip=per di=rec=tion di=rec=torate dirt dis=able dis=af=fec=tion dis=al=low=ing dis=ap=pear=ances dis=ap=prove dis=as=sem=bles dis=bands dis=card=ing dis=cerns dis=ci=plines dis=clo=sure dis=con=nects dis=cord dis=cour=ag=ing dis=cov=ery dis=cre=tion dis=cuss dis=ease dis=fig=ure dis=grun=tle dis=gust=ingly dis=hon=estly dish=wa=ter dis=joint disk dis=lo=cates dis=may=ing dis=mis=sers dis=obe=di=ent dis=own dis=patched dis=pen=sary dis=persed dis=plac=ing dis=pleas=ing dis=po=si=tion dis=puter dis=qui=et=ing dis=rup=tion dis=sem=ble dis=senter dis=sim=i=lar=i=ties dis=so=ci=at=ing distaff dis=tastes dis=till=ing dis=tin=guish dis=torts dis=tresses dis=tribu=tiv=ity dis=turbed ditty di=ver=gence di=ver=si=fies di=vert=ing div=i=dend di=vin=ing di=vi=sors dix=ieland dober=man doc=toral doc=u=men=taries do=dec=a=he=dra doe dog=house dolan dol=lies domenico domi=cile dom=i=neer=ing don=ahue don=key doo=ley door=man dop=ers doric dort=mund doted dou=ble=header doubt doubts doves downey down=load=ing down=stairs doyle dra=co=nian drafty dra=gooned dram drape draughts draw=ings dreaded dream=ers dregs dress=ing dries driller drip drive=way droop drop=pers droves drudgery drum=mers drunkly du=al=ity dubuque ducts dug dull=ness dumbly dun=bar dun=geons du=pli=ca=ble dupont du=ra=tion dur=ward duster dutch=man dwarfed dwelt dye=ing dy=namism dysen=tery ear ear=marked earnest=ness earth earth=quakes eases east=erner easy eaves eben echoed ecol=ogy econ=o=mize ecuador ed=enizes edict edi=tion ed=mon=ton ed=u=cat=ing ed=wards ef=fect=ing ef=fi=cacy ef=fort=less=ness eggshell egyp=tian=ize eigen=state eighthes eis=ner eject=ing elab=o=rately elapses el=derly elec=tions elec=tri=cally elec=tro=cute elec=troen=cephalog=ra=phy elec=tron=ics el=e=men=tal el=e=va=tion elicited elim=i=nat=ing elite ella el=lip=soids elmhurst else elu=ci=da=tion ely eman=ci=pate em=bar=rass em=beds em=bod=ied em=brac=ing emer=ald emer=i=tus emil emits emo=tion=ally em=pha=siz=ing em=ploy=able em=po=rium emp=tily em=u=la=tor en=acted en=camp=ing en=chanter en=cir=cled en=coder en=counter en=cour=ag=ingly en=cum=bered en=dan=gers en=demic en=dorse en=dows en=dur=ingly en=fee=ble en=fran=chise en=gels en=gines en=glish=men en=gulf en=join en=joys en=light=ened en=livens enor=mity en=quirer en=riches en=sem=bles en=snar=ing en=sures en=ter=prise en=ter=tain=ment en=ticed en=ti=tle en=treat en=trepreneurs enu=mer=ated en=veloped en=v=i=ron en=vi=sioned ephemeral epi=cur=izes epis=co=palian epi=taphs epochs equal=ize equates equi=li=brate equips equiv=o=cally erased ere ergo er=lang erode er=ra=tum errs es=ca=lates es=capes es=corts es=pe=cially es=quires es=sen=tially es=tates es=ti=mated eter=nal eth=er=nets etruria eu=le=rian eura=sia eu=ro=peanized evade eval=u=a=tive evap=o=ra=tion even=hand=ed=ness events ev=er=glades ev=ery=thing ev=i=dences evinces evolve ex=ac=er=bated ex=ac=tions ex=ag=ger=a=tions ex=am=ined ex=as=per=ates ex=ceeded ex=cel=lently ex=cep=tions ex=change=able ex=ci=sion ex=cit=ingly ex=clam=a=tory ex=clu=sive=ness ex=cret=ing ex=cused ex=e=cu=tional ex=em=pli=fied ex=empts ex=er=tion ex=haust=edly ex=hi=bi=tions ex=ile ex=is=ten=tial=ist ex=or=bi=tant ex=panders ex=pect ex=pects ex=pe=di=tious ex=pen=di=ture ex=pe=ri=enc=ing ex=per=i=ments ex=pires ex=pla=na=tions ex=ploit ex=plo=rations ex=plo=sive ex=po=nen=ti=at=ing ex=ports ex=po=sure ex=press=ibil=ity ex=pul=sion ex=tem=po=ra=ne=ous ex=ten=sive ex=ter=mi=nate ex=tin=guished ex=tract ex=tra=ne=ous ex=trap=o=la=tion ex=tremely ex=ult eye=glasses eye=sight fa=bles fa=cade facile fac=sim=ile fac=to=ries fac=ulty fa=gin fail=soft faint=ness fair=ing faith=ful fakes fal=la=cious fal=mouth fal=si=fy=ing fa=mil=iar fam=i=lies fa=nati=cism fanci=ness fan=ning farad farewells farm=ers far=rell fas=ci=na=tion fasted fas=tid=i=ous fate fath=omed fat=ten faulkner fauna fa=vor=ing fayette fear=lessly feat feath=er=weight fed fee=ble=ness feeds feet fe=line fel=low=ships fem=i=nism fenc=ing fer=men=ta=tion fe=ro=ciously fer=tile fer=vent fes=tiv=ity fet=tered fever=ish fiat fi=brously fid=dled fief fiendish fif=teenth fight=ing fiji files filled film=ing filthy fi=nals finder fines fin=ger=print fin=ishes finnish fire=boat fire=men fire=wall firm=ing fis=cally fishes fis=sured fitly fitz=patrick fix=a=tion fix=ture flagged flak flamer flank=ing flash flask flat=tered flaunt=ing flaw=lessly fledglings fleetly flem=ish=ing flew flick=ing flinches flirt floated flood floors flo=ren=tine floss=ing flour=ished flow=er=i=ness fluc=tu=ate fluffier flu=o=resce flut=ing fly=ing fo=cal foes fogy fold=ers folksy fol=som font fooled foot=ball foot=ing for=age forbes forcer fore=arms fore=fa=thers for=eign fore=see=able fore=stalls for=ever forge for=get=table for=giv=ing for=lornly for=mal=ized for=ma=tively formi=cas for=mu=lated for=saken forth=with for=tiori for=tu=itously for=warder fought foun=da=tion founds four=some foxes frag=ile fra=grantly fram=ing fran=cie fran=coise frank=ing fraser fray freckle fred=erico free=ing frees freez=ing frenchizes fre=quented fresh=ened fresh=ness freudi=an=ism fric=tion friendlier friezes fright=ful frisia frivolity from fronts froth=ing frue=hauf fruits fuch=sia fu=jitsu full fum=bling func=tion=ally fun=da=men=tally fun=gal fun=nier fur=long fur=ni=ture fur=ther=more fuses fu=tur=is=tic gabled gad=getry gag=ing gaines galac=tic galaxy gal=lantly gal=lon gall=stone gam=bled games gang=plank gaped garbed gard=ner gar=landed gar=risoned gaseous gaspee gas=tric gath=ered gauche gaunt gawky gaze gear=ing gelatin gemma gen=er=al=ity gen=er=als generic ge=netic genre gen=tler geodesic ge=o=log=i=cal geo=phys=i=cal geral=dine ger=mane ger=mi=nates gestapo get=ting ghosted gibral=tar gig gig=gle gilds gilt ging=hams gipsy girl=ish giver glad=dest glance glar=ing glazed gleaner glenda glim=mer glints gloat glo=ria glo=ry=ing glove glow=ing glynn gnu goats gob=lins god=mother goethe gold=enly gold=s=tine gon=dola goode goodyear goren gor=ton got goth=i=ciz=ing goug=ing gov=ern=ment grab grace=fully gra=da=tions grad=ual graft grained grams grand=fa=ther grandpa grant gran=u=lates graph=i=cal gras=pable grassi=est grat=i=fi=ca=tion gra=tu=itously graves grayed grease gre=cian=ize greeks green=feld greens greeter grenades greyest grievances grif=fith grimes grinds gripped gritty gro=cers grooved gross=est gro=ton group grov=els growl=ing grubs grum=bling guano guard=edly gu=ber=na=to=rial guest guide=line guiltier guises gul=lah gum=ming gun=ner gur=gle gustafson guts guyer gym=nas=tics haas ha=bit=ual hacks hag hail hairier hale hall=mark halpern halve ham=burg=ers ham=mer=ing hamp=shire hand=books hand=i=cap hand=ker=chiefs hand=shake handy hang=man han=nah hansel hap=lessly hap=pily harbinger harder hard=ships harken harm=ful=ness har=mo=niously har=ness=ing har=ri=man harry har=vardize har=veys has=sle hat hate=fully hat=tie hauler hausa havoc hawthorne hay=wood head head=lands head=room heals healy hear=ings heartily heater heaved heav=i=ness he=brides hedge=hog heeds hegelian=izes heights heiresses he=li=copter hel=l=enized hel=met help=fully hem hemp hen=drick hen=ri=etta her=alds herder here=ford here=un=der her=mit hero=ically her=ring hert=zog hes=pe=rus het=eroge=nous heuser hexagon hi=ber=nate hid=den hi=er=ar=chic high=field high=nesses hikes hill=crest hilt hin=dered hin=dus=tan hint=ing hired his his=tograms hitch hither hit=ting hoarse=ness hobby hoe hoists holds hol=landaise hol=low=ness holo=caust homage home=o=mor=phism home=spun hom=ing ho=mo=sex=ual hon=esty hon=ey=moon=ing hon=o=raries hood=lum hooker hoosier=ize hooves hope=less=ness ho=race horn hor=ri=ble hor=rors horse=shoer hos=pi=tal=ize hostesses hotly hound=ing house=flies house=top hover howled hu=bert huey hugo hu=man=i=ties hum=bling hu=mid=i=fiers hu=mil=i=a=tion hu=mor=ers humpty hung hun=gry hunt=ley hurl=ing hur=ry=ing hus=bands husks hutchins hyde hy=giene hy=phen=ate hy=pothe=ses hys=ter=i=cal ib=sen ici=cle icosa=he=dron ide=al=ize iden=ti=cal iden=tify id=iosyn=crasy idles ig=nite ig=nores il=le=gal=ity il=log=i=cal il=lu=sions il=lus=tra=tive im=a=gen imag=ine im=brium im=ma=te=rial im=mensely im=mi=grat=ing im=mov=abil=ity im=pacted im=pale im=pa=tiently im=pedes im=pen=e=tra=ble im=per=fectly im=per=ma=nent im=per=son=ations im=pinges im=ple=mentable im=pli=cants im=plied im=por=tant im=poses im=po=tence im=prac=ti=cally im=press=ible im=press=ment im=pris=on=ments im=prove=ment im=pro=vis=ers im=pul=sion in=ac=ces=si=ble in=ad=e=quate inane in=audi=ble inca in=cas in=ces=santly in=ci=den=tally in=cit=ing in=closes in=clu=sive=ness in=com=pa=ra=ble in=com=pletely in=con=gruity in=con=sis=tent in=con=ve=nient in=cor=rect=ness in=cred=u=lous in=cu=bate in=cur=able in=de=ci=sive in=dent in=de=scrib=able in=dex=ing in=di=ca=tion in=dif=fer=ence in=dig=na=tion in=di=rectly in=dis=tinct in=di=vid=u=ally in=doc=tri=nat=ing in=du=bitable in=duc=tances in=ducts in=dus=tri=al=ist in=dus=try in=el=e=gant inertly in=ex=act in=ex=pli=ca=ble in=fantry in=fec=tion in=fe=rior in=fer=tile in=fi=nite in=fir=mary in=flated in=flict=ing in=form in=for=ma=tively in=fre=quently in=fu=ri=at=ing in=ge=nious=ness in=gra=ti=ate in=hab=ited in=her=ently in=her=itress in=hibitor in=im=i=cal ini=tial=ized ini=ti=at=ing in=jec=tion in=jured inker in=let in=ner in=nocu=ous=ness in=oc=u=late in=quire in=quis=i=tive in=scribed in=se=curely in=ser=tion in=sid=i=ous=ness in=sin=u=ated in=sis=tently in=som=nia in=spi=ra=tion in=stal=la=tion in=stances in=stan=ti=a=tions in=still in=sti=tutes in=struct in=structs in=stru=ments in=su=la=tion in=sur=ance in=sur=rec=tion in=te=grand in=tel=lect in=tel=li=gi=ble in=ten=si=fi=ca=tion in=ten=sively in=ter in=ter=cept in=ter=changed in=ter=com=mu=ni=cates in=ter=course in=ter=ested in=ter=fered in=ter=group in=ter=leaved in=ter=minable in=ter=mod=ule in=ter=na=tion=al=ity in=ter=per=sonal in=ter=posed in=ter=pret=ing in=ter=re=la=tions in=ter=rupt in=ter=sect=ing in=ter=state in=ter=ven=ing in=ter=wo=ven in=ti=ma=tion in=tol=er=ance in=tractabil=ity in=traof=fice in=trigued in=tro=duc=tions in=truder in=tu=ba=tion in=vaders in=va=lidi=ties in=vari=ants in=ven=tively in=verses in=vert=ing in=ves=tiga=tive in=vet=er=ate in=vites in=voked in=volves io=ni=ans ira irately irish=man ironic ir=ra=tional ir=reg=u=lar ir=re=press=ible ir=re=versibil=ity ir=ri=ta=ble irv=ing is=fa=han is=land iso=lated iso=mor=phisms is=suance it ital=i=cize item=iza=tions it=er=a=tion ito izves=tia jack=ets jacky ja=cobus jailer ja=maican janet janus jar=gon jaun=ti=ness jay jeanne jef=fer=so=nian jen=nifer jeremy jer=oboam jest je=suit=iz=ing jew=eled jews jin=gled joaquin joes john joiner jok=ers jolts jor=dan jose=phus jot=ting jour=nals joust=ing joy=ous ju=daica judge ju=dith ju=goslavia julie jump junc=tures ju=niper juras jury jus=ti=fiers jut=land kad=dish kamikazes kant karp ka=tow=ice keel=ing keep=ers kemp ken=ney ke=pler ker=ouac key key=pad khrushchevs kidde kid=ney kil=i=man=jaro kills kilo=joule ki=mono kin=dling king=pin kin=nick=in=nic kir=choff kisses kit=ing klein knap=sacks kneel knicker=bock=ers knights knocked knots knowl=edge knuck=les ko=dachrome ko=rea kraka=toa kro=necker kurd la=bel=ing la=borer labyrinths lac=erta lacks ladies la=goon laid=law lamarck lament lamp lanced land=ings lands lange lan=guish laos lapse largely lar=son lash=ing las=zlo later la=tin=ity lat=i=tudes laud=able laugh=lin laun=dered lau=rels laven=der law=fully law=suit lay=ers lazarus leaded leafed lea=guers le=an=der leap=ing leary leath=ern leav=ing lec=tures leeds left=ists le=gal=iza=tion leger leg=is=lated le=git=i=mate leila lemon lends le=niency lens leonardo les=bian les=son let=ter levee lev=elly levin lewdly lex=ing=ton li=belous lib=er=ated li=bido li=cense lick lied lifeboat life=time ligget light=hearted like like=ness lil=ian li=man limit lim=its lind lindy lin=early lin=gerie lin=ing lin=naeus li=oness liq=uid lise lis=tened list=ings lit=er=al=ness lithua=nia lit=ter=ing live liv=ers lizzie loaf loathing lob=ster lo=cally lo=ca=tor lock=ian lock=wood lodges log=a=rithm log=i=cally logs loi=ters lon=doniza=tion lon=ers long=ings look=ers looms loose=leaf loos=ing lords lorry lossi=est lo=tus louisa lour=des lovelace loves low=est loy=ally lucerne luck=ier lu=di=crous luke lu=mi=nously lunch lunged lur=ing lust luther lux=u=ri=antly lyle lynx mac mac=don=ald maces ma=chin=ery mackey macro=molecule mad=den mad=hya mad=sen mag=el=lanic mag=ill mag=ne=ti=z=able mag=nify maguire maids mail=man main=frames main=tained majesty maker mal=ady mal=colm mal=formed ma=li=cious=ness mal=one mal=ton man=age man=ag=ing manda=tory manger man=hole man=i=cur=ing manila ma=nip=u=la=tive mann manors man=tissa man=u=fac=tured mao maps marched mardis margo mari=nade mar=itime mar=ketabil=ity mark=ings mar=malade mar=riott mar=shal=ing mar=tial mar=tyr mar=vels mas=cara mask=able ma=sonite mas=sa=cred mast mas=ter=piece mas=tur=ba=tion match=less ma=te=ri=al=iz=ing math=e=mat=i=cally mat=ings ma=trix mat=tered ma=tured mauri=cio max=ima max=ims maybe may=oral mc=cabe mc=cluskey mc=don=nell mc=gov=ern mc=kee mclean mcpher=son meal=time mean=ing=ful meant mea=sure=ments me=chan=i=cally medal med=field me=di=a=tions medicine med=i=tat=ing medi=ums meet=ing mega=hertz meis=ter melcher melodies melpomene mem=ber=ship mem=o=randa mem=o=rizes menagerie mendelizes men=non=ite men=tal=i=ties men=tor mer=ce=nar=i=ness mer=ci=lessly merged mer=i=to=ri=ous mer=rill mesh mes=sen=ger messy met=al=liza=tion meta=phys=i=cal me=te=oritic me=thod=i=cally meth=ods metro mews mica mick mi=cro=bi=cide mi=croe=co=nomics mi=cron mi=cro=pro=cess=ing mi=cro=scope mi=crovaxes mid=dle=man mid=night mid=stream mid=win=ter mi=grate mikoyan mileage milk mill mil=likan mil=lionth mill=stones mil=tonized minaret mind=fully min=eral mini min=ima min=i=mizes min=istries mi=nor min=strels minute mir=a=cle miriam mis=car=riage mis=con=cep=tion mis=er=ably mis=giv=ings mis=led mis=plac=ing miss=ing mis=soula mis=take mistle=toe mis=un=der=stand mitch mitres mix=tures moats mocked modally mod=er=ated mod=ern=izer mod=icum mod=i=fy=ing mod=u=lar=iz=ing mod=ule moghul moines mol=davia moles mol=lusk mo=men=tar=ily monaco mon=day mon=go=lian mon=keyed mono=cotyle=don mono=lithic monos=table mon=roe mon=tague mont=gomery mon=u=ment mooned moor moped morass more=house morn mor=pho=log=i=cal morsels mort=gage mo=saic mosque mo=tels moth=er=land mo=tion=less=ness mot=ley mo=tor=ized mound moun=tain=ously mourn=ers mousy mov=able mov=ing muck mud=dled muf=fin mugs mul=lah mul=ti=com=puter mul=ti=ple mul=ti=pli=cand mul=ti=plies mul=ti=stage mum=bles mun=dane mu=ni=tions mur=der=ing mur=murs mus=covy mush=roomed mu=si=cians muskrat mus=sorgsky mu=ta=bil=ity mu=ta=tions mu=ti=lat=ing mut=ters myce=naean mys=te=ri=ous mytholo=gies na=gasaki nair naked=ness names nanook nap=kin nar=cotic nar=row=est nash na=tal na=tion=al=i=ties na=tions nat=u=ral=ist naugh=ti=ness navel navona ne=an=derthal nears neb=ula ne=ces=si=ta=tion neck=ties nee=dled needy neg=a=tives neg=li=gi=ble ne=groid neigh=bor=ing neo=clas=sic nero nest=ing nets neu=ral neu=tral neva new=bury=port new=man news=man next ni=belung nicholls nick=name niel=son night=fall ni=hilism nim=bler nineties nip=ponizes no=bil=ity noc=tur=nally noel nolan nom=i=nee non=con=ser=va=tive non=de=ter=min=ism non=govern=men=tal non=lin=ear=ity nonorthog=o=nal non=seg=mented non=ter=mi=nals nook nord=hoff nor=mal=iza=tion nor=man=iza=tions north north=ernly nor=walk nos=tradamus no=ta=rizes note no=tice=able no=ti=fies not=ting=ham no=vak novices nu=ances nu=clide nullary num=ber nu=mer=able nu=mis=matic nurs=ing nu=tri=tious nyquist oases obe=di=ent ob=fus=cate ob=jec=tively obliged oblit=er=at=ing ob=scene ob=serv=able ob=servers ob=so=letes ob=struc=tion ob=vi=ated oc=ca=sional oc=ci=den=tal=ize oc=clu=sions oc=cu=pied oc=curs oc=tag=o=nal octets oddly odi=ous o'dwyer of=fended of=fer of=fi=cer of=fi=ciously oft oil=cloth ojibwa old=en=burg oleo=mar=garine olivia olym=pus omi=nous=ness om=nipresent o'neill on=looker onus opaquely open=ings op=er=ate op=er=a=tor op=pen=heimer op=pose op=pressed opthalmic op=ti=mist op=ti=miz=ing opts or=anges or=bital or=ches=tral or=der or=di=nar=ily ores or=ga=ni=za=tion or=gans ori=en=tal=ized ori=fices orig=i=na=tion or=leans or=nate orr orville os=cil=lates o'shea os=teopath oth=ello otto ounces out=burst out=door out=grow=ing out=law=ing out=live out=per=forms out=rages out=stand=ing out=vot=ing out=wit=ting over=board over=crowds over=es=ti=mates over=hangs over=joyed over=load overnighter over=pro=duc=tion over=run=ning over=shad=ow=ing over=sized over=take overtly overuse over=work=ing owen own=er=ship ox=i=dized ozzie paci=fi=ca=tion pack=aged pack=ers padding pageant pag=i=nat=ing painful paint=ing pa=ja=mas pale pales=tine pal=lia=tive palo=mar panacea pan=demic pan=els panned pan=the=ist panty pa=per=ers par pa=rades paragon par=al=lel par=al=lels pa=ram=e=ter=ize para=mus para=phrases par=cel par=doned paren=the=ses pares parisian park=ers par=lay par=ody par=rots par=si=fal par=takes par=tic=i=pant par=tic=u=lar par=ti=tioned par=tridges pas=sage=way pas=sion pass=port pas=teur pas=ture patchy patents patho=gen=e=sis pa=tients pa=tri=cians pa=trolling pa=trons pat=tern=ing paula paulus pave=ment pawn payer pay=offs peace=fully peaks pearl peat pe=cu=liar pedant pe=di=a=tri=cian peel=ing peer=ing peking pem=broke pence pends pen=e=tra=tion penin=su=las penn=syl=va=nia pen=tagon peo=pled pep=pery per=ceived per=cents per=chance peren=ni=ally per=fect=ness per=forms per=i=he=lion pe=ri=od=i=cally per=ish=able perkins per=me=at=ing per=mit per=ni=cious per=pe=tra=tion per=pet=u=a=tion per=se=cut=ing per=se=veres per=sist per=sonal per=son=i=fied per=spi=ra=tion per=sua=sions per=turb pe=ruses per=va=sive pester pe=ters petri pet=ting phae=dra phaser phe=nomeno=log=i=cal philco philis=tinizes philoso=phies phoeni=cia phon=ing phos=pho=rus pho=to=genic pho=tos phyla physi=cist pi pick pick=et=ing pick=man pi=co=joule pic=tur=ing pied=fort pies pig=gy=backed pig=tail pil=fer=age pil=lar pi=lots pin=cush=ion pin=ing pin=na=cle pin=scher pi=o=neers pipelin=ing pi=rate pis=tols pitch=ing pithi=ness piti=less pi=tu=itary pix=els place=ment pla=gia=rist plain=field plain=tive=ness planeload plan=ets planocon=cave plant=ings plas=tic=ity plates pla=toon play=boy play=ing play=wrights pleas=ant pleat ple=nary pli=ant plots plows plug=gable plume plun=dered plung=ing plu=to=nium poc=a=hon=tas pod po=et=i=cal poincare pointy poi=sons po=laris po=lice pol=ish po=liter polka pol=luted poly=mer pomera=nia pompous=ness ponds pool pop pop=ping pop=u=lar=ized pop=u=lous pores port por=tend=ing por=tico por=tray posed po=si=tion posits pos=ses=sive pos=sums pos=te=ri=ori post=mas=ters postscript pot po=ten=tates po=tion pot=tery pounces pourer poverty pow=er=ful prac=ti=ca=ble prac=ti=tion=ers praise prancer prayer pre=al=lo=cated pre=car=i=ously prece=dents pre=ciously pre=cip=i=ta=tion pre=cludes pre=con=cep=tion pre=dat=ing pre=de=ter=mi=na=tion pred=i=ca=tion pre=dic=tive pre=dom=i=nately pre=emp=tive pref=ac=ing prefers preini=tial=izes pre=lim=i=nary premise pre=oc=cu=pied pre=pared pre=pos=ter=ously pre=rog=a=tives pre=scrip=tions pre=sen=ta=tions pre=served pres=i=den=tial press=ings pre=ston pre=sump=tu=ous=ness pre=tend=ing pre=texts pre=vail=ing pre=vent=ing pre=vi=ously pricers prides pri=mar=ily prim=ing princesses prin=ci=ples prior pris=on=ers pri=va=tions prizes pro=bate prob=ings pro=ce=dure pro=cess=ing procla=ma=tion pro=cre=ate pro=curer pro=duce pro=duc=tive pro=fes=sion prof=fered prof=itabil=ity pro=found pro=gram pro=gresses pro=hi=bi=tions pro=jec=tions pro=le=tariat pro=long promi=nent pro=moter promptest pro=mul=ga=tion pro=nounce=ment proofs propane prop=erly proph=esy pro=por=tion=ately pro=poser pro=pounded pro=rate pros=e=cutes prosodic prospec=tor prostate pro=tect=ing pro=tege protes=ta=tions pro=tons pro=to=zoan prouder prove=nance prov=i=dence pro=vi=sion pro=vokes prox=i=mal pruned prus=sian=ize pseu=doin=struc=tion psy=chi=a=trist psy=cho=log=i=cally psy=cho=so=matic pub pub=licly puck=ered puffed puller pulls pulse pump=kin punc=tu=ally pun=ish=able punt pup=peteer pur=chases purges pu=rina pur=pler pur=posed purse pur=su=ing push=down put=nam puz=zle=ment py=ongyang pythagore=anizes quad=ran=gle qua=dren=nial quag=mires quak=er=ess qual=i=fied qualm quan=ti=fiers quan=tize quar=reled quar=ter=ing quasar qua=ver=ing queerer queried ques=tion=able ques=tions quib=ble quick=lime qui=et=ing quince quit quiv=ers quon=set quo=tient ra=bin rach=mani=noff rack=e=teers ra=di=ance ra=di=a=tors ra=dio=g=ra=phy rae rages raider rail=roaded rain=bow rains rake ral=ston ram=i=fi=ca=tions rams rand randy rangy rank=ings ran=somer rap rapids rap=tur=ous ras=cally rasp=ing rat=for ra=tion ra=tio=nal=izes rat=tler rav=ager ravens rawl=ins rays reach re=acted re=ac=ti=va=tion reader read=justed re=aligned re=al=iz=able realm reaped rear re=ar=rest rea=son=ings re=as=signed reawak=ened re=bel=lions re=boot=ing re=buffed re=but=ted re=cal=i=brated re=ca=pit=u=lates re=ceded re=ceives re=cep=tive re=cife re=cip=ro=cat=ing recita=tions reck=oned re=claim=ing re=clin=ing rec=og=nize rec=ol=lect rec=om=mend re=com=piles rec=on=cil=i=a=tion re=con=nect re=con=sti=tuted recorder re=cover recre=at=ing recta re=cur re=curs=ing red re=de=clared re=de=fined re=de=vel=op=ment re=dis=played red=ness re=dress=ing re=ducibly reeds re=elects reen=force=ment reestab=lish=ing re=ex=am=in=ing ref=er=ences re=fer=ral re=fine re=flect=ing re=flexes re=for=ma=tory re=for=mu=lated re=frained re=fresh=ment refugee re=futed re=gally re=gen=er=at=ing reg=i=men=ta=tion regis re=gressed re=gret=table reg=u=larly reg=u=la=tors re=hears=ing re=im=bursable reined rein=hold re=in=stated rein=tro=duces re=it=er=a=tion re=joiced re=la=beled re=lat=ing rel=a=tives re=laxes rel=e=gate re=lents relic re=liev=ing re=lin=quish=ing reloader re=luc=tance re=mains reme=died re=mind rem=i=nis=cently re=mod=els re=motely re=mov=ing re=names ren=dezvous re=new=able re=nounc=ing rented re=open re=or=ga=nize re=pair=man re=pay=ing re=peat=edly re=pen=tance rep=e=ti=tious re=place=able re=plays repli=cate re=port repos=ing rep=re=sentably rep=re=sent=ing re=prieved re=proach re=pro=ducibil=i=ties re=pro=grams re=publics re=pulses re=puted re=quired req=ui=si=tions re=scind re=searchers re=sem=blances re=sent=ment reser=voir res=i=dent res=ig=na=tion re=sis=tance re=sis=tors re=solver re=sort=ing re=spect re=spec=tive re=sponded re=spon=si=ble restarts rest=ful restora=tions re=strain=ers re=stric=tive re=sul=tant re=sum=ing res=ur=rec=tors re=tail=ing re=tal=ia=tory re=ten=tive=ness retina re=tir=ing re=tract=ing re=trans=mis=sion ret=ri=bu=tion re=triever ret=ro=spec=tion re=type re=unit=ing re=vamp=ing rev=eler re=vere rever=i=fies re=verses re=viewer re=viser re=vival re=voked rev=o=lu=tion re=volvers rewind=ing rewrit=ing rhe=sus rhode rhyming rib=bons richard rich=mond rico ride ridiculed ri=fle rig=ging right=ful=ness rigor rims ring=ings ri=or=dan ripely rip=pling risk rit=u=ally river rivulet road=sters roar=ing rob=beries roberta robin=sonville rochester rocket rock=well rods roll ro=mance ro=man=izes romper roof=ing room=ing root rop=ing rose=bush rosetta rot ro=ta=tions ro=tund rough=ness round=ing roused routes rov=ing row=ley roy=alty rub=bing rubles rude=ness ruf=fian rugged=ness rule ru=ma=ni=ans rummy run=away runoff rup=tur=ing rus=sell rus=tic rustlers ruth=less=ness sab=bathize sachs sac=ri=fice sacro=sanct sad=dles sa=fari safes sage=brush said sails sal=able salerno saline sally salters salu=ta=tions sal=vages same sam=pling sana=to=rium sanc=tion=ing sand=burg san=dra san=est san=skrit sapling saran sari satchel satires sat=isfy sat=ur=na=lia saud sav=aged saver sa=vored saw=fish sax=onize say=ings scala scal=ing scam=pers scan=ners scape=goat scared scat=ter scenic schantz schelling schemers schmitt scholas=tic school=houses schroeder schuylkill scis=sor scoffs scope score=board scorner scotch=gard scotts=dale scouted scram=bled scrapes scratch=ing scream=ers screen=ings scrib=bled scripts scrump=tious scuf=fle sculp=tured scythe sea=gate seam seaquar=ium search=light sea=son=able seat se=ceded sec=ondary sec=re=tar=ial se=cre=tive sec=tions se=cur=ings sedi=tion see seedy seem=ing seer seg=men=ta=tions se=gundo seizures se=lect=man self=ishly sells se=man=tics semi=con=duc=tor semiper=ma=nently sen=ate seneca sense sens=ing sen=sual sen=ti=men=tally sep=a=rately sept se=quencers se=quen=tially serene se=ri=al=iz=able serif serra ser=vice serv=ings sets set=tler sev=en=teens sev=er=ance sev=ers sex sex=ual shack=led shadi=ness shaf=fer shak=ers shale shame=ful shang=haied shape=less shard shares sharp=en=ing shat=ter=ing shawano shear=ing sheds sheets shel=ley shelves sheri=dan shied shiftier shilling shiner shin=toizes ship=per shirk shiver shocker shoe=horn shooter shop=pers short=age short=ens shorts shoul=dered shoved showed shows shrewd shrilled shrink=ing shrugs shuf=fled shut=off shut=tles siberia sicken side=band sides sid=ings sierra sighed sigma sig=na=ture sig=ni=fi=ca=tion sikkim silent silken sills sil=ver=man sim=ile si=mon sim=plic=i=ties sim=plis=tic sim=u=la=tion sin=bad sinews singed sin=glet sin=gu=larly sin=ner sioux sirens sisy=phus sit=tings siva six=ties skate skep=ti=cal sketch=pad skid=ding skill=ful=ness skims skipped skir=mishes skulked sky sky=rock=ets slacks slang slash slaugh=ter slavic slavoni=cizes sledge=ham=mer sleep=less sleighs sliced slide slightly slings slips slo=gans slop=pi=ness slot=ting slower slug=gish=ness slums smacked small=time smasher smell smiles smith=so=nian smoked smol=dered smooth=ing smug smythe snap snap=shots snatched sneaki=est sneers sniffs snod=grass snorkel snow=belt snows snuffs soak soared sobers so=cial=ists so=ci=o=log=i=cal socks so=fas softly so=journ sol=dier solenoid solid solids so=los sol=vent somber som=er=set son sonny soothe so=phis=ti=ca=tion sor=did sor=est sor=rows soul sound=ness soured south=bound south=land so=vi=ets spacer spaded spaniardiza=tion spanked spare sparked sparsely spat spawned speak=ers spe=cial=ists spe=cialty spec=i=fied speckle spec=ta=tors spec=trog=ra=phy spec=u=lates speech=less speeds spellings spent spica spies spilt spin=ner spi=rally spir=i=tu=als spit=ing spleen splic=ing splits spoil=ing sponged spon=sor=ship spool=ers spores sportswriter spot=ter sprague spray=ing sprees springi=ness sprint sprouted spurn sput=tered squadrons squarer squat=ting squeaky squeez=ing squirmed stab sta=bi=lizes stacked staffing stagers stags stair=cases stale=mate stalling stam=mer stam=ped=ing stan=dard stand=ings stans star star=gate star=ring star=tles state statewide sta=tion=mas=ter stat=ues statu=to=rily staves stead=ier stealer steamer steele steeper steered stem stenog=ra=pher step=mother stereo=scopic ster=il=izer stetho=scope stew stick=ier stiff=ens stigma stillest stim=u=late sting=ing stipends stir=rer stitch=ing stock=holder stodgy stom=acher stood stop=gap stor=age storeyed stormi=est stouter strafe straight=ened strained strand=ing stran=gler stratagem strat=i=fies straw=berry streamer street=car strengths stretched strict strife stringed stringy striptease strode strolling stron=tium strug=gle stu=art stucco stu=dious stuffs stun stupid sturm styli styx sub=com=po=nents sub=di=rec=tory sub=dues sub=graph sub=jec=tive sub=lime sub=merges sub=mode sub=or=di=nate sub=pro=gram sub=schema sub=script=ing sub=se=quent sub=si=dies sub=sis=tent sub=stan=tially sub=sta=tion sub=strate sub=sys=tem sub=tle=ness sub=trac=tion sub=units sub=vert=ing suc=cess=ful suc=cinct=ness suck=ers sud=den suf=fer=ance suf=fi=ciency suf=fo=cated sug=ar=ings sug=gests suit=ably suits sulks sul=tan sum=mands sum=ma=tion sum=mon sumter sun=der sunken sun=shine su=per=com=put=ers su=per=groups su=pe=rior su=per=nat=u=ral su=per=sede su=per=vise sup=pers sup=ple=ment=ing sup=port sup=pose sup=press=ing surely surge surly sur=pass sur=pris=ingly sur=round sur=vey=ors sus sus=pended sus=pi=cions suther=land swab swal=low=ing swan swaps swat sweat swedes sweep=stakes sweet=est swellings swifter swim=suit swipe switch=boards swivel swords sykes sylvia sym=bol=ize sym=me=try sym=pa=thy syn=a=gogue syn=chro=nizes syn=di=ca=tion syn=ony=mously syn=the=size syr=ian sys=tem=at=i=cally taber=na=cle ta=ble=spoon=ful tab=u=late tacit tac=tic tail taipei tale talker tallchief tal=mudiza=tions tam=ing tanaka tan=gle tan=ta=liz=ing taos tapestry tar tar=iffs tasked taste=fully tat=tered taunts tav=erns taxi=cabs tay=lor teaches tear=ful tea=spoon=ful tech=nique te=dious teenaged tegu=ci=galpa tele=graph tele=o=log=i=cally tele=phony tele=vise teller tem=per=ance tem=pes=tu=ous tem=po=raries tempt=ingly ten=dency tenex tense tent tenure ter=mi=nat=ing termwise terre ter=rify ter=ror=ize testable tes=ti=fiers tex tex=tile thai=land thank=less thaw the=atri=cally theme the=ol=ogy the=o=riza=tion ther=a=pies thereof ther=mome=ter thes=saly thickly thim=bles think=ing thirsted this=tle thorns those thou=sand thread threat=ens thrift thrived throne through=out thrusters thumbed thun=derer thus tiburon tick=les ti=died tier tight=en=ers tilde tillich tim=bered time=outs timeta=bles ti=m=o=nizes tin=gling tin=kled tint tip=per=ary tire=lessly ti=tan tit=ter toasts to=geth=er=ness toi=lets tol=er=a=ble tol=er=a=tion toma=toes ton tonic tool tooth=paste top=most topsy tor=ment=ing tor=rent tor=tur=ing tossed to=tallers touch=able tough tourist tow=el=ing towns toys tracked trac=tor trader traf=ficked trailed trainer tramp trances transceivers tran=scribers trans=feral trans=formable trans=gressed tran=sis=tor=ized tran=si=tively trans=la=tion trans=mit=tal trans=par=ent transpon=der trans=pose trape=zoidal trauma traver=sal trays trea=sure treat=ing tree=top tremor tres=passed tri=an=gles tri=bunals tricked tricky trig=gered trilled trim=ming tripled tri=umphal triv=ially troop=ers trot=sky trou=bleshoots trow=els truck=ing truest trumped trunk trust=ingly try tubs tuft tum=bled tun=able tunisia tur=bu=lent turk=ize turn=ing tur=tle tu=tankhamen tut=tle twenty twiner twirling twitch=ing tyler type=writ=ers typ=ing tyranny ugh ul=cers um=brage un=ac=cept=ably un=aided unan=i=mous unattain=abil=ity un=aware un=blocked un=can=celled un=chang=ing un=closed un=con=di=tional un=con=trol=lable un=count=able un=de=cid=able un=der=brush un=der=flows un=der=lies un=der=mine un=der=plays un=der=stand=ings un=der=tak=ings un=der=writes undi=rected un=done un=easy un=equaled un=event=ful un=fair=ness un=fit un=for=mat=ted un=grate=fully un=harmed uni=di=rec=tion=al=ity uni=for=mity unin=dented un=in=ter=rupted unions uni=tar=ian unity uni=ver=si=ties un=kind=ness un=leashed un=link=ing un=lucky un=mer=ci=ful un=nec=es=sar=ily un=ob=tain=able un=paid un=prece=dented un=prov=able un=rav=el=ing un=rec=og=nized un=re=strained un=safely un=s=e=lected un=skilled un=steady un=syn=chro=nized un=tie un=to=ward un=used un=whole=some un=winds un=wrap up=dater up=holder up=land up=rightly up=sets up=turns urge uri=nates ur=su=line us=ages usenix usu=ally uti=liza=tion utopi=anizes ut=ters va=ca=tion vac=u=umed va=grantly va=lence valiant valid=ness valu=ably valves van=den=berg van=ished van=quish=ing vari=ably varies vary=ing vastly vau=dois vax veer=ing veg=e=tated ve=hic=u=lar ve=lasquez vene=tian ven=omous ven=tri=cles venus ver=bal=ized ver=dure ver=i=fier vern ver=sa=tile ver=te=brates vested vet=eri=nary via vi=bra=tions vi=cious=ness vic=tim=iz=ers vic=to=ries vi=dal vier view=ing vi=gnettes vil=i=fi=ca=tion vil=lages vinci vine=yard vi=o=la=tor vi=o=lins virgo virus vis=i=ble vis=ited vi=su=al=ize vi=tally vladimir vo=ca=tions voided vo=li=tion volt=ages vol=un=teer=ing voted vouch=ing voy=aged vul=garly waco waf=fles wag=ne=r=ian wail=ing waiter waives wak=ing wal=green wal=len=stein walls waltham wan=dered wan=ing wants ward ware=hous=ing warmer warn=ing war=ranted war=saw wash=burn wasps watch watch=man wa=ter=ing wa=tery wausau wave=length wax=ers we weak=nesses wear weari=somely weath=er=ford webs wed=lock weekly wei=d=man weights weiss=muller welder welles=ley wenches wes=leyan west=hamp=ton wet whacked wharves wheel whelp wher=ever whims whip=pany whirling whiskers whis=tled white=horse whitens whit=lock whit=tling whole=ness whoop wi=chita widen wid=owed wield=ing wilbur wile wilkin=son william willis wilshire wince wind=ing wine=head win=ing win=nie win=sett wiped wire=tap=pers wised wish=ful witches with=drew with=holds wit=ness=ing woe=fully wom=an=hood won=der=ful=ness woo wooden wood=stock woofer woonsocket words work=books work=man world=li=ness wor=rier wor=shiper worth=less wound=ing wrap=per wreathes wrenched wretch wring writ writ=ing wrote wyner xe=roxed yamaha yard yawner years yel=lowed yelped yes=ter=days yok=na=p=ataw=pha york=shire young=sters youth=ful=ness yukon zeal zen zeus zion=ism zoned zoroaster hyphen-2.8.9/tests/base.pat000066400000000000000000001072241520164222500156140ustar00rootroot00000000000000ISO8859-1 LEFTHYPHENMIN 2 RIGHTHYPHENMIN 3 .a2ch4 .ad4der .a2d .ad1d4 .a2f1t .a2f .a4l3t .am5at .4a1ma .an5c .a2n .2ang4 .an1i5m .an1t4 .an3te .anti5s .ant2i .a4r5s2 .2a2r .ar4t2ie4 .ar1ti .ar4ty .as3c .as1p .a2s1s .aster5 .a2tom5 .a1to .au1d .av4i .awn4 .ba4g .ba5na .ba2n .bas4e .ber4 .be5r1a .be3s1m .4bes4 .b4e5s2to .bri2 .but4ti .bu4t3t2 .cam4pe .1ca .ca4m1p .can5c .ca2n .capa5b .ca1pa .car5ol .c2a2r .ca4t .ce4la .2ch4 .chill5i .ch4il2 .chil1l .1ci2 .cit5r .2c1it .co3e2 .1co .co4r .cor5n1er .corn2e .de4moi2 .d4em .de1mo .de3o .de3r1a .de3r1i .de1s4c .des2 .dic1t2io5 .3di2c1t .do4t .1do .du4c .1du .du4m1b5 .earth5 .ear2t .e2a2r .eas3i .2e1b4 .eer4 .eg2 .e2l5d .el3em .enam3 .e1na .en3g .e2n3s2 .eq5ui5t .e1q .equ2 .eq2ui2 .er4ri .er1r4 .es3 .4eu3 .eye5 .fes3 .for5mer .1fo .fo2r .for1m .for2me .1ga2 .ge2 .gen3t4 .1gen .ge5o2g .1geo .1g2i5a .gi4b .go4r .1go .hand5i .ha2n .h4and .ha4n5k2 .he2 .hero5i2 .h2ero .h1es3 .he4t3 .hi3b .hi3er .h2ie4 .hon5ey .ho2n .hon3o .hov5 .id4l .2id .idol3 .i1do .im3m .im5p1i2n .i4m1p .im2pi .in1 .in3ci .2ine2 .4i4n2k2 .2i2n3s2 .ir5r4 .4ir .is4i .ju3r .la4cy .la4m .lat5er .l4ath5 .le2 .leg5e .len4 .lep5 .lev1 .l2i4g .li1g5a .li2n .l2i3o .l1i4t .ma1g5a5 .1ma .mal5o .ma1n5a .ma2n .mar5ti .m2a2r .me2 .mer3c .me5ter .me1te .m2is1 .mis4t5i .mon3e .1mo .mo2n .mo3ro .mo2r .mu5ta .1mu .mu2ta5b .ni4c .od2 .od1d5 .of5te .o2ft .or5a1to .o1ra .or3c .or1d .or3t .os3 .os4tl .4oth3 .out3 .ou2 .ped5al .2p2ed .p2e2d2a .pe5te .pe2t .pe5tit .p2i4e4 .pio5n4 .3p2i1o .pi2t .pre3m .pr2 .ra4c .ran4t .ra2n .ratio5n1a .ratio2n4 .ra1t2io .ree2 .re5mit .res2 .re5stat .res2t .res1ta .r2i4g .ri2t5u .ro4q .ros5t .row5d .ru4d .3s4c2i3e4 .s1ci .5se2l2f5 .sel1l5 .se2n .se5r2ie4 .ser1i .s2h2 .si2 .s3ing4 .2s1in .st4 .sta5b2l2 .s1ta .s2tab .s4y2 .1ta4 .te4 .3ten5a2n .te1na .th2 .ti2 .til4 .ti1m5o5 .1tim .ting4 .2t1in .t4i4n5k2 .to1n4a .1to .to2n .to4p .top5i .to2u5s .tou2 .trib5ut .tr4ib .u1n1a .un3ce .under5 .un1de .u2n1e .u4n5k2 .un5o .un3u4 .up3 .ure3 .us5a2 .2us .ven4de .ve5r1a .wil5i .wi2 .wil2 .ye4 4ab. a5bal a5ba2n abe2 ab5erd ab2i5a ab5i2t5ab abi2t abi1ta ab5lat ab2l2 ab5o5l1iz abol2i 4abr ab5rog ab3ul a4c2a2r a1ca ac5ard ac5aro a5ceou2 ac1er a5che4t a2ch ache2 4a2ci a3c2ie4 a2c1in a3c2io ac5rob act5if2 a2c1t ac3ul ac4um a2d ad4d1in ad1d4 ad5er. 2adi a3d4i3a ad3i1ca adi4er ad2ie4 a3d2io a3dit a5di1u ad4le ad3ow a1do ad5ra2n a1dr ad4su a2d1s2 4a1du a3du2c ad5um ae4r aer2i4e4 aer1i a2f a4f1f4 a4gab a1ga aga4n ag5el1l a1ge4o 4ag4eu ag1i 4ag4l2 ag1n a2go 3a3g4o4g ag3o3ni ago2n2 a5guer a2gue ag5ul a4gy a3ha a3he a4h4l4 a3ho ai2 a5i1a a3ic. ai5ly a4i4n ain5in a2ini a2i1n5o ait5en a2ite a1j ak1en al5ab al3a2d a4l2a2r 4aldi4 a2ld 2ale al3end a4lent2i a1len1t a5le5o al1i al4ia. al2i1a al2i4e4 al5lev al1l al2le 4allic all2i 4a2lm a5log. a4ly. a1ly 4a2lys4 5a5lys1t 5alyt 3alyz 4a1ma a2m5ab am3ag ama5ra am2a2r am5asc a4ma3tis a4m5a1to am5er1a am3ic am5if am5i1ly am1in am2i4no a2mo a5mo2n amor5i amo2r amp5en a4m1p a2n an3age a1na 3ana1ly a3n2a2r an3ar3c anar4i a3nati an2at 4and ande4s2 an1de an3dis1 an1dl an4dow an1do a5nee a3nen an5e2st. a1nes a2nest a3n4eu 2ang ang5ie4 an1gl2 a4n1ic a3nies an2ie4 an3i3f an4ime an1im a5nim1i a5n2ine an1in an3i4o a3n2ip an3is2h an3it a3ni1u an4kli a4nk2 an1k1l 5anniz a4n1n2 ano4 an5ot an4oth5 an2sa2 a2n1s2 an4s1co ans4c an4s1n4 an2sp ans3po an4st an4su2r an1su anta2l4 an1t an1ta an4t2ie4 ant2i 4an1to an2tr an4tw4 an3u1a an3ul a5nur 4ao ap2a2r4 a1pa ap5at ap5er3o a3ph4er 4aphi a4pilla apil1l ap5ill2a2r ap3i2n ap3i1ta a3pi2tu a2p2l2 apo4c5 ap5o1la apor5i a1p4or apos3t a1pos aps5e4s a2p1s2 ap2se a3pu aque5 aqu2 2a2r ar3a2c1t a5rade ara2d ar5adis1 ar2adi ar3al a5rame1te aram3et ar2an4g ara2n ara3p ar4at a5ra1t2io ar5a1t2iv a5rau ar5av4 araw4 arbal4 ar1b ar4cha2n ar1c ar3cha ar2ch ar5d2ine ard2i ard1in4 ar4dr ar5eas a3ree ar3en1t a5r2e2ss ar4fi ar1f ar4f4l2 ar1i ar5i2al ar2i3a ar3i2a2n a3ri5et ar2ie4 ar4im ar5in2at ar2i1na ar3i1o ar2iz ar2mi ar1m ar5o5d a5roni aro2n a3roo2 ar2p ar3q arre4 ar1r4 ar4sa2 a4rs2 ar2s2h 4as. a2s4ab asa2 as3an1t asa2n ashi4 as2h a5sia. as2i1a a3si1b a3sic 5a5si4t ask3i ask2 as4l2 a4soc a1so as5ph as4s2h a2ss as3ten as1t4r asu1r5a a1su asu2r a2ta at3ab2l2 a2tab at5ac at3alo ata2l at5ap ate5c at5e2ch at3e1go ateg4 at3en. at3er1a ater5n a5ter1na at3est at5ev 4ath ath5em ath2e a5the2n at4ho ath5om 4ati. a5t2i1a a2t5i5b at1ic at3if2 ation5a2r a1t2io atio2n atio1n1a at3i1tu a4tog a1to a2tom at5om2iz a4top a4tos2 a1tr at5rop at4sk2 a4t1s2 at4tag a4t3t2 at1ta at5te at4th a2tu at5u1a a4t5ue at3ul at3u1ra a2ty au4b augh3 au3gu au4l2 aun5d au3r au5si1b a2us a4ut5en au1th a2va av3ag4 a5va2n av4e4no av3er1a av5ern av5ery av1i avi4er av2ie4 av3ig av5oc a1vor 3away aw3i2 aw4ly aws4 ax4i5c ax3i ax4id ay5al aye4 ays4 azi4er a2z1i az2ie4 az2z5i a4z1z2 5ba. bad5ger ba2d ba4ge bal1a ban5dag ba2n b4and ban1d2a ban4e ban3i barbi5 b2a2r bar1b bar2i4a bar1i bas4si ba2ss 1bat ba4z 2b1b b2be b3ber bbi4na 4b1d 4be. beak4 bea2t3 4be2d b2e3d2a be3de b4e3di be3gi be5gu 1bel be1l2i be3lo 4be5m be5n2ig be5nu 4bes4 be3sp b2e5st4r 3bet be1t5iz be5tr be3tw4 be3w be5y1o4 2bf 4b3h bi2b b2i4d 3b2ie4 bi5en bi4er 2b3if 1bil bi3l2iz bil1i bin2a5r4 bi1na b4in4d bi5net b2ine bi3o2gr b2io bi5ou2 bi2t 3b2i3t2io bi1ti bi3tr 3bit5u1a bi1tu b5i4tz b1j bk4 b2l2 bl4ath5 b4le. blen4 5ble1sp bles2 b3lis b4lo blun4t 4b1m 4b3n bne5g 3bod bod3i bo4e bol3ic bol2i bom4bi bo4m1b bo1n4a bo2n bon5at 3boo2 5bor. 4b1o1ra bor5d 5bore 5bori 5bos4 b5o1ta b4oth5 bo4to boun2d3 bou2 4bp 4brit br4oth3 2b5s2 bsor4 b1so 2bt b2t4l b4to b3tr buf4fer1 bu4f1f bu4ga bu3l2i bu1mi4 bu4n bunt4i bun1t bu3re bus5ie4 b2us buss4e bu2ss 5bust 4bu1ta 3bu1t2io b4u1t2i b5u1to b1v 4b5w 5by. bys4 1ca cab3in ca1b2l2 ca2ch4 ca5den ca2d 4cag4 2c5ah ca3lat cal4la cal1l cal2l5in4 call2i 4calo c4an5d ca2n can4e ca4n4ic can5is can3iz can4ty can1t cany4 ca5per car5om c2a2r cast5er cas5t2ig cast2i 4cas4y c4a4th 4ca1t2iv cav5al ca2va c3c ccha5 c2ch c3c2i4a c1ci ccom1pa5 c1co cco4m1p cco2n4 ccou3t ccou2 2ce. 4ced. 4ce1den 3cei2 5cel. 3cel1l 1cen 3cenc 2cen4e 4ceni 3cen1t 3cep ce5ram cer1a 4ce1s4a2 3ces1si c2e2ss ces5si5b ces5t cet4 c5e4ta cew4 2ch 4ch. 4ch3ab 5cha4n1ic cha2n ch5a5nis che2 cheap3 4ch4ed ch5e5lo 3chemi ch5ene che2n ch3er. ch3e4r1s2 4ch1in 5chi2ne. ch2ine ch5i5n2e2ss chi1nes 5ch2ini 5ch2io 3chit chi2z 3cho2 ch4ti 1ci 3c2i1a ci2a5b ci2a5r ci5c 4cier c2ie4 5c4i2f3ic. ci1fi 4c4i5i4 ci4la 3cil1i 2cim 2cin c4i1na 3cin2at cin3em c2ine c1ing c5ing. 5c2i1no cio2n4 c2io 4cipe4 c2ip ci3ph 4cip4ic cip3i 4cis1ta 4cis1t2i 2c1it ci1t3iz ci1ti 5ciz ck1 ck3i 1c4l4 4cl2a2r c5la5ra1t2io clar4at 5clare cle4m 4clic clim4 c1ly4 c5n 1co co5ag c4oa coe2 2cog co4gr coi4 co3inc col5i 5colo col3o4r com5er co2me co1n4a co2n c4one con3g con5t co3pa cop3ic co4p2l2 4cor1b coro3n cos4e cov1 cove4 cow5a co2z5e co5z1i c1q cras5t cr2as 5crat. 5crat1ic cre3a2t 5c2r2ed 4c3re1ta cre4v2 cri2 cri5f c4rin cr2is4 5cri1ti cro4p2l2 crop5o cros4e cru4d 4c3s2 2c1t c2ta4b c1ta ct5ang cta2n c5tan1t c2te c3ter c4t4ic1u ctim3i c1tim ctu4r c1tu c4tw4 cud5 c4uf c4ui2 cu5i1ty 5cul2i cul4tis4 cul1ti cu4lt 3c4ul1tu2 cu2ma c3ume cu4mi 3cun cu3pi cu5py cu2r5a4b cu1ra cu5r2i3a 1c2us cus1s4i cu2ss 3c4ut cu4t2ie4 c4u1t2i 4c5u1t2iv 4cutr 1cy c2ze4 1d2a 5da. 2d3a4b da2ch4 4da2f 2dag da2m2 d2an3g da2n dard5 d2a2r dark5 4dary 3dat 4da1t2iv 4da1to 5dav4 dav5e 5day d1b d5c d1d4 2de. dea2f5 de4b5i2t d2e1b de4bo2n deca2n4 de1ca de4cil de1c2i de5com de1co 2d1ed 4dee. de5if dei2 del2i4e4 del2i de4l5i5q de5lo d4em 5dem. 3demic dem5ic. de5mil de4mo2n3s2 de1mo demo2n demo2r5 1den de4n2a2r de1na d4e3no denti5f2 den1t dent2i de3nu de1p de3pa depi4 de2pu d3e1q d4er1h4 5der3m4 d5ern5iz de4r5s2 des2 d2es. de1s2c de2s5o des3t2i d2e3st4r de4su de1t de2to de1v de2v3i4l de1vi 4dey 4d1f d4ga d3ge4t dg1i d2gy d1h2 5di. 1d4i3a dia5b d4i4cam di1ca d4ice 3di2c1t 3d2id 5di3en d2ie4 d1if di3ge d2ig di4la1to di1la d1in 1di1na 3di2ne. d2ine 5d2ini di5niz 1d2io dio5g di4p2l2 d2ip d4ir2 di1re dir1t5i dis1 5disi d4is3t d2i1ti 1d2i1v d1j d5k2 4d5la 3dle. 3dled 3dles. dles2 4d3l2e2ss 2d3lo 4d5lu 2d1ly d1m 4d1n4 1do 3do. do5de 5doe 2d5of d4og do4la dol2i4 do5lo4r dom5iz do3n2at do2n do1n1a doni4 doo3d doo2 do4p4p d4or 3dos 4d5out dou2 do4v 3dox d1p 1dr drag5o2n2 dra2go 4dr2ai2 dre4 dre2a5r 5dren dr4i4b dril4 dro4p 4drow 5drupli dru3p2l2 4dry 2d1s2 ds4p d4sw2 d4s4y d2th 1du d1u1a du2c d1u3ca duc5er 4duct. du2c1t 4duc4t1s2 du5el du4g d3ul4e dum4be du4m1b du4n 4dup du4pe d1v d1w d2y 5dyn dy4s2e dys5p e1a4b e3a2c1t ea2d1 ead5ie4 e2adi ea4ge ea5ger ea4l eal5er e2ale eal3ou2 eam3er e5and ea2n ear3a e2a2r ear4c ear5es ear4ic ear1i ear4il ear5k ear2t eart3e ea5sp e3a2ss east3 ea2t eat5en eath3i e4ath e5at3if2 e4a3tu ea2v eav3en eav5i eav5o 2e1b e4bel. e1bel e4be2l1s2 e4ben e4bi2t e3br e4ca2d e1ca ecan5c eca2n ec1ca5 ec3c e1ce ec5es1sa2 ec2e2ss e1c2i e4cib ec5ificat eci1fi ecifi1ca ec5i3f2ie4 ec5i1fy e2c3im e2c1i4t e5c2ite e4clam e1c4l4 e4cl2us e2col e1co e4com1m e4compe eco4m1p e4con1c eco2n e2cor ec3o1ra eco5ro e1cr e4crem ec4ta2n e2c1t ec1ta ec4te e1cu e4cul ec3u1la 2e2d2a 4ed3d4 e4d1er ede4s2 4edi e3d4i3a ed3ib ed3i1ca ed3im ed1it edi5z 4e1do e4dol edo2n2 e4dri e1dr e4dul e1du ed5u1l4o ee2c e4ed3i ee2f eel3i ee4ly ee2m ee4na ee4p1 ee2s4 eest4 ee4ty e5ex e1f e4f3ere efer1 1e4f1f e4fic e1fi 5ef2i1c4i efil4 e3f2i2ne e2fin ef5i5n2ite ef2ini efin2it 3efit efor5es e1fo efo2r e4fu4se. e3fu ef2us 4egal e1ga eger4 eg5ib eg4ic eg5ing e5git5 eg5n e4go. e1go e4gos eg1ul e5gur 5e1gy e1h4 eher4 ei2 e5ic e2i5d e2ig2 ei5g4l2 e3i4m1b e3in3f e1ing e5inst e2i2n1s2 eir4d e4ir e2it3e e2i3th e5i1ty e1j e4jud ej5udi eki4n ek1i ek4la ek1l e1la e4la. e4lac e3l4an4d ela2n e4l5a1t2iv e4law elax1a4 e3le2a el5ebra el2e1b ele3br 5elec e4led el3e1ga e5len e4l1er e1les2 e2l2f el2i e3libe4 e4l5ic. el3i1ca e3lier el2ie4 el5i3gib el2ig el4igi e5lim e4l3ing e3l2io e2lis el5is2h e3l2iv3 4ella el1l el4lab ell4o4 e5loc el5og el3op. el2s2h e2l1s2 el4ta e4lt e5lud el5ug e4mac e1ma e4mag e5ma2n em5a1na e4m5b e1me e2mel e4met em3i1ca em2i4e4 em5igra em2ig4 emi1gr em1in2 em5ine em3i3ni e4m2is em5is2h e5m4i2s1s em3iz 5emniz e4m1n emo4g e1mo emo3n2i5o emo2n em3pi e4m1p e4mul e1mu em5u1la emu3n2 e3my en5a2mo e1na e4nan1t en2a2n ench4er en2ch enche2 en3dic e5nea e5nee en3em en5ero en1er en5e1si e1nes e2n5est en3etr e3ne4w en5i4c3s2 e5n2ie4 e5nil e3n2i4o en3is2h en3it e5ni1u 5eniz 4e4n1n2 4eno e4no4g e4nos en3ov en4sw2 e2n1s2 ent5age en1t en1ta 4enth1es enth2e en3u1a en5uf e3ny. 4e4n3z e5of eo2g e4oi4 e3ol eop3a2r eo2pa e1or eo3re eo5rol eos4 e4ot eo4to e5out eou2 e5ow e2pa e3p4ai2 ep5anc epa2n e5pel e3pen1t ep5e5t2i1t2io epe2t epeti1ti ephe4 e4pli e1p2l2 e1po e4prec epr2 ep5re1ca e4p2r2ed ep3re1h4 e3pro e4prob ep4s4h e2p1s2 ep5ti5b e2p1t e4pu2t ep5u1ta e1q equi3l equ2 eq2ui2 e4q3ui3s er1a e2ra4b 4er4and era2n er3a2r 4er4ati. 2er1b er4b2l2 er3ch er1c er4che2 2e2re. e3re1a4l ere5co ere3in erei2 er5el. er3e1mo er5e1na er5ence 4erene er3en1t ere4q er5e2ss er3es2t eret4 er1h4 er1i e1r2i3a4 5erick1 e3rien er2ie4 eri4er er3in4e e1r2i1o 4erit er4i1u er2i4v e4ri1va er3m4 er4nis4 4er3n2it 5erniz er3no4 2ero er5ob e5r2oc ero4r er1ou2 e4r1s2 er3set er2se ert3er 4er2tl er3tw4 4eru eru4t 5erwau er1w e1s4a2 e4sa2ge. e4sages es2c e2s1ca es5ca2n e3scr es5cu e1s2e e2sec es5e1cr e4s5enc e4sert. e4ser4t1s2 e4ser1va 4es2h e3sha esh5e2n e1si e2sic e2s2id es5i1den e4s5ig1n4a es2ig e2s5im e2s4i4n esis4te e1sis e5si4u e5skin esk2 esk1i es4mi e2s1m e2sol e1so es3olu e2so2n es5o1n1a4 e1sp e2s3per es5pi1ra esp4ir es4pre espr2 2e2ss es4si4b es1si esta2n4 es1ta es3t2ig est2i es5tim 4es2to e3sto2n 2est4r e5stro estruc5 e2su2r e1su es5ur1r4 es4w2 e2ta4b e1ta e3ten4d e3teo ethod3 et1ic e5tide et2id e2t1in4 et2i4no e5t4ir e5t2i1t2io eti1ti et5i1t2iv 4e2t1n2 et5o1n1a e1to eto2n e3tra e3tre et3ric et5rif et3rog et5ros et3u1a e1tu et5ym e1ty e4t5z 4eu e5un e3up eu3ro e2us4 eute4 euti5l e4u1t2i eu5tr eva2p5 e1va e2vas ev5ast e5vea ev3el1l eve4l3o e5veng even4i ev1er e5v2er1b e1vi ev3id e2vi4l e4v1in e3v2i4v e5voc e5vu e1wa e4wag e5wee e3wh ewil5 ewi2 ew3in4g e3wit 1ex3p 5ey1c 5eye. eys4 1fa fa3b2l2 f4ab3r fa4ce 4fag fa4i4n4 fai2 fal2l5e fal1l 4f4a4ma fam5is 5f2a2r far5th fa3ta fa3th2e f4ath 4fa1to fau4lt5 fau4l2 4f5b 4fd 4fe. feas4 fe4ath3 fea2t f2e4b 4fe1ca 5fe2c1t 2fed fe3l2i fe4mo fen2d fen1d5e fer1 5fer1r4 fev4 4f1f f4fes f4f2ie4 f1fi f5f2in. f2fin f2f5is f4f2ly5 ff4l2 f2fy 4fh 1fi f2i3a 2f3ic. 4f3ical fi1ca f3ica2n 4ficate f3i1cen fi3cer f2i1c4i 5fi3c2i1a 5fic2ie4 4fi4c3s2 fi3cu fi5del f2id fight5 f2ig fil5i fil2l5in4 fil1l fill2i 4fi1ly 2fin 5fi1na f4in2d5 f2i2ne f1in3g f2i4n4n2 fis4t2i f4l2 f5l2e2ss fles2 flin4 flo3re f2ly5 4fm 4fn 1fo 5fo2n fon4de f2ond fon4t fo2r fo5rat fo1ra for5ay fore5t for4i for1t5a fos5 4f5p fra4t f5rea fres5c fri2 fril4 frol5 2f3s 2ft f4to f2ty 3fu fu5el 4fug fu4min fu1mi fu5ne fu3ri fusi4 f2us fu2s4s 4fu1ta 1fy 1ga ga2f4 5gal. 3gal1i ga3lo 2gam ga5met g5a2mo gan5is ga2n ga3niz gani5za1 4gano4 gar5n4 g2a2r ga2ss4 g4ath3 4ga1t2iv 4gaz g3b gd4 2ge. 2ged geez4 gel4in gel2i ge5lis ge5l1iz 4ge1ly 1gen ge4n2at ge1na g5e5niz 4g4eno 4geny 1geo ge3om g4ery 5ge1si geth5 4ge1to ge4ty ge4v 4g1g2 g2ge g3ger gglu5 ggl2 g1go4 gh3in gh5out ghou2 gh4to 5gi. 1g2i4a gi2a5r g1ic 5gi3c2i1a g2i1ci g4i1co gien5 g2ie4 5gies. gil4 g3i1men 3g4in. g4in5ge 5g4i2n1s2 5g2io 3g4ir gir4l g3is1l2 gi4u 5g2iv 3giz gl2 gla4 gl2ad5i gla2d 5glas 1gle gli4b g3l2ig 3glo glo3r g1m g4my g1n4a g4na. gne4t4t2 g1ni g2n1in g4n2i4o g1no g4no4n 1go 3go. gob5 5goe 3g4o4g go3is goi2 go2n2 4g3o3n1a gon5do5 g2ond go3ni 5goo2 go5riz gor5ou2 5gos. gov1 g3p 1gr 4gra1d2a gra2d g4r2ai2 gra2n2 5gra4ph. g5ra3ph4er 5graph1ic gr4aphi 4g3ra1phy 4gray gre4n 4gress. gr2e2ss 4grit g4ro gruf4 gs2 g5ste gth3 gu4a 3guar2d gu2a2r 2gue 5gui5t g2ui2 3gun 3g2us 4gu4t g3w 1gy 2g5y3n gy5ra h3ab4l2 ha2ch4 hae4m hae4t h5agu ha3la hala3m ha4m han4ci ha2n han4cy 5hand. h4and h2an4g hang5er han1g5o h5a5niz ha4n4k2 han4te han1t ha2p3l2 ha2p5t ha3ra2n h2a2r ha5r2as har2d hard3e har4le4 har1l harp5en har2p har5ter ha2s5s haun4 5haz haz3a1 h1b 1hea2d1 3he2a2r he4ca2n he1ca h5ecat h4ed h4e5do5 he3l4i hel4lis hel1l hell2i hel4ly h5elo he4m4p he2n he1na4 hen5at he1o5r hep5 h4er1a hera3p her4ba h2er1b here5a h3ern h5er1ou2 h2ero h3ery h1es he2s5p he4t he2t4ed h4eu4 h1f h1h hi5a2n h2i1a hi4co high5 h2ig h4il2 himer4 h4i1na hion4e h2io hio2n h2i4p hir4l h4ir hi3ro hir4p hir4r4 his3el h4ise h4i2s4s hith5er h2ith hith2e h2i2v 4hk 4h1l4 hla2n4 h2lo hlo3ri 4h1m hmet4 2h1n h5odiz h5o2d1s2 ho4g ho1ge4 hol5a2r ho1la 3hol4e ho4ma ho2me3 ho1n4a ho2n ho5ny 3hood hoo2 hoo2n4 hor5at ho1ra ho5r2is hort3e ho5ru hos4e ho5sen hos1p 1ho2us hou2 house3 hov5el 4h5p 4hr4 hree5 hro5niz hro2n hro3po 4h1s2 h4s2h h4t2a2r h1ta ht1en ht5es h4ty hu4g hu4min hu1mi hun5ke hu4nk2 hun4t hus3t4 h2us hu4t h1w h4war4t hw2a2r hy3pe hy3ph hy2s 2i1a i2al iam4 iam5e1te i2a2n 4ianc ian3i 4ian4t ia5pe ia2ss4 i4a1t2iv ia4tric ia1tr i4a2tu ibe4 ib3er1a ib5ert ib5i1a ib3in ib5it. ibi2t ib5ite i1b2l2 ib3li i5bo i1br i2b5ri i5bu4n 4icam i1ca 5icap 4ic2a2r i4car. i4cara icas5 i4cay iccu4 ic3c 4iceo 4i2ch 2i1ci i5c2id ic5i1na i2cin i2c2ip ic3i1pa i4c1ly4 i1c4l4 i2c5oc i1co 4i1cr 5icra i4cry ic4te i2c1t ic1tu2 ic4t3u1a ic3u1la ic4um ic5uo i3cur 2id i4dai2 i1d2a id5anc ida2n id5d4 ide3a4l ide4s2 i2di id5i2a2n i1d4i3a idi4a2r i5d2ie4 i1d3io idi5ou2 id1it id5i1u i3dle i4dom i1do id3ow i4dr i2du id5uo 2ie4 ied4e 5ie5ga ie2ld3 ie1n5a4 ien4e i5e4n1n2 i3ent2i ien1t i1er. i3es2c i1est i3et 4if. if5ero ifer1 iff5en i4f1f if4fr 4i2f3ic. i1fi i3f2ie4 i3f4l2 4i2ft 2ig iga5b i1ga ig3er1a ight3i 4igi i3gib ig3il4 ig3in ig3it i4g4l2 i2go ig3or ig5ot i5gre i1gr ig2u5i2 ig1ur i3h 4i5i4 i3j 4ik i1la il3a4b i4l4ade ila2d i2l5am ila5ra il2a2r i3leg il1er ilev4 i2l5f il1i il3i1a il2ib il3io il4ist 2il1it il2iz ill5ab il1l 4i2l1n2 il3o1q il4ty i4lt il5ur il3v i4mag i1ma im3age ima5ry im2a2r iment2a5r i1men i3men1t imen1ta 4imet im1i im5i1d4a im2id imi5le i5m2ini 4imit im4ni i4m1n i3mo2n i1mo i2mu im3u1la 2in. i4n3au i1na 4inav incel4 in3cer 4ind in5dling 2ine i3nee in4er4a2r in1er iner1a i5n2e2ss i1nes 4in1ga 4inge in5gen 4ingi in5gling ingl2 4in1go 4in1gu 2ini i5ni. i4n4i1a in3i4o in1is i5ni4te. in2it in2ite 5i3n2i1t2io ini1ti in3i1ty 4i4nk2 4i4n1l 2i4n1n2 2i1no i4no4c ino4s i4not 2i2n1s2 in3se insu1r5a in1su insu2r 2int. in1t 2in4th in1u i5n2us 4iny 2io 4io. io1ge4 io2gr i1ol io4m ion3at io2n io1n1a ion4ery ion1er ion3i i2o5ph ior3i i4os i4o5th i5oti io4to i4our iou2 2ip ipe4 iphr2as4 ip4hr4 ip3i ip4ic ip4re4 ipr2 ip3ul i3qua iqu2 iq5ue1f iq3u2id iq2ui2 iq3ui3t 4ir i1ra i2ra4b i4rac ird5e ire4de i2r2ed i4re1f i4rel4 i4res ir5gi irg2 ir1i iri5de ir2id ir4is iri3tu 5i5r2iz ir4min ir1m iro4g 5iron. iro2n ir5ul 2is. is5ag isa2 is3a2r isas5 2is1c is3ch2 4ise is3er 3i4s3f is5ha2n is2h is3ho2n3 isho4 ish5op is3i1b is2i4d i5sis is5i1t2iv isi1ti 4is4k2 isla2n4 is1l2 4is4m1s2 i2s1m i2so iso5mer i3som iso2me is1p is2pi is4py 4i2s1s is4sal is1sa2 issen4 is4s1e4s is4ta. is1ta is1te is1t2i ist4ly is2tl 4istral ist4r is1tra i2su is5us 4i3ta. i1ta ita4bi i2tab i4tag 4ita5m i3ta2n i3tat 2ite it3er1a i5ter1i it4es 2ith i1ti 4i1t2i1a 4i2tic it3i1ca 5i5tick1 i2t3ig it5il1l i2tim 2i1t2io 4itis i4ti2s4m i2t5o5m i1to 4ito2n i4tram i1tra it5ry 4i4t3t2 it3u1at i1tu itu1a i5tud2 it3ul 4itz. i4tz i1u 2iv iv3el1l iv3en. i4v3er. i4vers. ive4r1s2 iv5il. i2vil iv5io iv1it i5vore iv3o3ro i4v3ot 4i5w ix4o 4iy 4iz2a2r2 iza1 i2z1i4 5izon1t i1zo izo2n 5ja jac4q ja4p 1je je4r5s2 4jes4t2ie4 jest2i 4jes2ty jew3 jo4p 5judg 3ka. k3ab k5ag kais4 kai2 kal4 k1b k2ed 1kee ke4g ke5l2i k3en4d k1er kes4 k3e2st. ke4ty k3f kh4 k1i 5ki. 5k2ic k4il1l kilo5 k4im k4in. kin4de k4ind k5i5n2e2ss k2ine ki1nes kin4g k2i4p kis4 k5is2h kk4 k1l 4k3ley 4k1ly k1m k5nes 1k2no ko5r kos2h4 k3ou2 kro5n 4k1s2 k4sc ks4l2 k4s4y k5t k1w lab3ic l4abo l4a2ci4 l4ade la2d la3d2y lag4n la2m3o 3l4and la2n lan4dl lan5et lan4te lan1t lar4g2 l2a2r lar3i las4e la5ta2n la2ta 4latel2i4 4la1t2iv 4lav la4v4a 2l1b lbin4 4l1c2 lce4 l3ci 2ld l2de ld4ere ld4er1i ldi4 ld5is1 l3dr l4dri le2a le4bi l2e1b le2ft5 le1f 5leg. 5le4g1g2 le4mat le1ma lem5at1ic 4len. 3lenc 5le2ne. 1len1t le3ph le4pr2 le2ra5b ler1a ler4e 3lerg2 3l4er1i l4ero les2 le5s1co les2c 5lesq 3l2e2ss 5less. l3e1va lev4er. lev1er lev4er1a lev4e4r1s2 3ley 4leye 2lf l5fr 4l1g4 l5ga lg2a2r3 l4ges l1go3 2l3h li4ag l2i1a li2am4 liar5iz li2a2r liar1i li4as li4a1to li5bi 5lic2io l2i1ci li4cor li1co 4li4c3s2 4lict. li2c1t l4icu l3i1cy l3i1d2a l2id lid5er 3li2di lif3er1 l4i4f1f li4f4l2 5ligate l2ig li1ga 3ligh li4gra li1gr 3l4ik 4l4i4l lim4b2l2 li4m1b lim3i li4mo l4i4m4p l4i1na 1l4ine lin3ea l2in3i link5er l4i4nk2 li5og l2io 4l4iq lis4p l1it l2it. 5lit3i1ca li1ti l4i2tic l5i5ti4c3s2 liv3er l2iv l1iz 4lj lka3 l3kal4 lka4t l1l l4law l2le l5le2a l3lec l3leg l3lel l3le4n l3le4t ll2i l2lin4 l5l4i1na ll4o lloq2ui5 llo1q lloqu2 l2l5out llou2 l5low 2lm l5met lm3ing l4mo2d1 l1mo lmo2n4 2l1n2 3lo. lob5al lo4ci 4lof 3log1ic l5o1go 3logu lom3er lo2me 5long lo2n lon4i l3o3niz lood5 loo2 5lo4pe. lop3i l3o4p1m lo1ra4 lo4ra1to lo5r2ie4 lor5ou2 5los. los5et 5los5o3phiz lo2so los4op los2oph 5los5o1phy los4t lo4ta loun5d lou2 2lout 4lov 2lp lpa5b l1pa l3pha l5phi lp5ing lpi2n l3pit l4p2l2 l5pr2 4l1r 2l1s2 l4sc l2se l4s2ie4 4lt lt5ag l1ta ltane5 lta2n l1te lten4 lter1a4 lth3i l5ties. lt2ie4 ltis4 l1tr l1tu2 ltu1r3a lu5a lu3br lu2ch4 lu3ci lu3en luf4 lu5id l2ui2 lu4ma 5lu1mi l5umn. lu4m1n 5lum3n4i1a lu3o luo3r 4lup lu2ss4 l2us lus3te 1lut l5ven l5vet4 2l1w 1ly 4lya 4ly1b ly5me4 ly3no 2lys4 l5y3s2e 1ma 2mab ma2ca ma5ch2ine ma2ch ma4ch1in ma4c4l4 mag5in mag1i 5mag1n 2mah ma2id5 mai2 4ma2ld ma3l2ig mal1i ma5lin mal4l2i mal1l mal4ty ma4lt 5ma3n4i1a ma2n man5is man3iz 4map ma5ri2ne. m2a2r mar1i mar2in4e ma5r2iz mar4ly mar1l mar3v ma5sce mas4e mas1t 5mate m4ath3 ma3tis 4mati3za1 ma1tiz 4m1b m1ba4t5 m5bil m4b3ing mb2i4v 4m5c 4me. 2med 4med. 5me3d4i3a m4edi me3d2ie4 m5e5d2y me2g mel5o2n me4l4t me2m me1m1o3 1men me1n4a men5ac men4de 4mene men4i me2n1s4 men1su5 3men1t men4te me5o2n m5er1sa2 me4r1s2 2mes 3mest2i me4ta met3a2l me1te me5thi m4etr 5met3ric me5tr2ie4 me3try me4v 4m1f 2mh 5mi. m2i3a mi1d4a m2id mid4g m2ig4 3mil3i1a mil1i m5i5l2ie4 m4il1l mi1n4a 3m4ind m5i3nee m2ine m4ingl2 min5gli m5ing1ly min4t m4in1u miot4 m2io m2is mi4s4er. m4ise mis3er mis5l2 mis4t2i m5i4stry mist4r 4m2ith m2iz 4mk 4m1l m1m mma5ry m1ma mm2a2r 4m1n m1n4a m4n1in mn4o 1mo 4mocr 5moc5ra1tiz mo2d1 mo4go mois2 moi2 mo4i5se 4m2ok mo5lest moles2 mo3me mon5et mo2n mon5ge mo3n4i3a mon4i2s1m mon1is mon4ist mo3niz monol4 mo3ny. mo2r 4mo5ra. mo1ra mos2 mo5sey mo3sp m4oth3 m5ouf mou2 3mo2us mo2v 4m1p mpara5 m1pa mp2a2r mpa5rab mp4a4r5i m3pe2t mphas4 m2pi mp2i4a mp5ies mp2ie4 m4p1i2n m5p4ir mp5is mpo3ri m1p4or mpos5ite m1pos m4po2us mpou2 mpov5 mp4tr m2p1t m2py 4m3r 4m1s2 m4s2h m5si 4mt 1mu mul2a5r4 mu1la 5mu4lt mul1ti3 3mum mun2 4mup mu4u 4mw 1na 2n1a2b n4abu 4nac. na4ca n5a2c1t nag5er. nak4 na4l1i na5l2i1a 4na4lt na5mit n2a2n nan1ci4 nan4it na4nk4 nar3c n2a2r 4nare nar3i nar4l n5ar1m n4as nas4c nas5t2i n2at na3ta2l na2ta nat5o5m2iz na2tom na1to n2au nau3se na2us 3naut nav4e 4n1b4 nc2a2r5 n1ca n4ces. n3cha n2ch n5cheo nche2 n5ch4il2 n3chis n2c1in n1ci n2c4it ncou1r5a n1co ncou2 n1cr n1cu n4dai2 n1d2a n5da2n n1de nd5e2st. ndes2 ndi4b n5d2if n1dit n3diz n5du2c n1du ndu4r nd2we nd1w 2ne. n3e2a2r n2e2b neb3u ne2c 5neck1 2ned ne4gat ne1ga ne4g5a1t2iv 5nege ne4la nel5iz nel2i ne5mi ne4mo 1nen 4nene 3neo ne4po ne2q n1er ne2ra5b ner1a n4er3a2r n2ere n4er5i ner4r4 1nes 2nes. 4ne1sp 2nest 4nes4w2 3net1ic ne4v n5eve ne4w n3f n4gab n1ga n3gel nge4n4e n1gen n5gere n3ger1i ng5ha n3gib ng1in n5git n4gla4 ngl2 ngov4 n1go ng5s2h ngs2 n1gu n4gum n2gy 4n1h4 nha4 nhab3 nhe4 3n4i1a ni3a2n ni4ap ni3ba ni4b2l2 n2i4d ni5di ni4er n2ie4 ni2fi ni5ficat nifi1ca n5i1gr n2ig n4ik4 n1im ni3m2iz nim1i n1in 5ni2ne. n2ine nin4g n2i4o 5n2is. nis4ta n2it n4ith 3n2i1t2io ni1ti n3itor ni1to ni3tr n1j 4nk2 n5k2ero nk1er n3ket nk3in nk1i n1k1l 4n1l n5m nme4 nmet4 4n1n2 nne4 nni3al n3n4i1a nn2i4v nob4l2 no3ble n5o1c4l4 4n3o2d 3noe 4nog no1ge4 nois5i noi2 no5l4i 5nol1o1gis 3nomic n5o5m2iz no4mo no3my no4n non4ag no1n1a non5i n5oniz 4nop 5nop5o5l2i no2r5ab no1ra no4rary nor2a2r 4nos2c nos4e nos5t no5ta 1nou2 3noun nov3el3 nowl3 n1p4 npi4 npre4c npr2 n1q n1r nru4 2n1s2 n2s5ab nsa2 nsati4 ns4c n2se n4s3e4s ns2id1 ns2ig4 n2s1l2 n2s3m n4soc n1so ns4pe n5spi nsta5b2l2 ns1ta ns2tab n1t n2ta4b n1ta nte4r3s2 nt2i n5ti2b nti4er nt2ie4 nti2f2 n3t2ine n2t1in n4t3ing nt2i4p ntrol5l2i ntrol1l n4t4s2 ntu3me n1tu n3tum nu1a nu4d nu5en nuf4fe nu4f1f n3ui4n n2ui2 3nu3it n4um nu1me n5u1mi 3nu4n n3uo nu3tr n1v2 n1w4 nym4 nyp4 4nz n3za1 4oa oa2d3 o5a5les2 o2ale oard3 o2a2r oas4e oast5e oat5i ob3a3b o5b2a2r o1be4l o1bi o2bin ob5ing o3br ob3ul o1ce o2ch4 o3che4t oche2 ocif3 o1ci o4cil o4clam o1c4l4 o4cod o1co oc3rac oc5ra1tiz ocre3 5ocrit ocri2 octo2r5a o2c1t oc1to oc3u1la o5cure od5d1ed od1d4 od3ic o1d2i3o o2do4 od4or3 o4d5uct. o1du odu2c odu2c1t o4d5uc4t1s2 o4el o5eng o3er oe4ta o3ev o2fi of5ite of4i4t4t2 o2g5a5r o1ga o4g5a1t2iv o4ga1to o1ge o5gene o1gen o5geo o4ger o3g2ie4 1o1gis og3it o4gl2 o5g2ly 3ogniz og1ni o4g4ro o1gr og2u5i2 1o1gy 2o2g5y3n o1h2 ohab5 oi2 oic3es oi3der o2id oi4f1f4 o2ig4 oi5let o3ing oint5er oin1t o5i2s1m oi5so2n oi2so oist5en ois1te oi3ter o2ite o5j 2ok o3ken ok5ie4 ok1i o1la o4la2n ola2ss4 o2l2d ol2d1e ol3er o3les2c oles2 o3let ol4fi o2lf ol2i o3l2i1a o3lice ol5id. ol2id o3li4f o5l4i4l ol3ing o5l2io o5l2is. ol3is2h o5l2ite ol1it o5l2i1t2io oli1ti o5l2iv oll2i4e4 ol1l oll2i ol5o3giz olo4r ol5p2l2 o2lp o4l2t ol3ub ol3ume ol3un o5l2us ol2v o2ly o2m5ah o1ma oma5l om5a1tiz om2be o4m1b om4b2l2 o2me om3e1n4a o1men om5er2se ome4r1s2 o4met om5e3try om4etr o3m2i3a om3ic. om3i1ca o5m2id om1in o5m2ini 5ommend om1m om1men omo4ge o1mo o4mo2n om3pi o4m1p ompro5 ompr2 o2n o1n1a on4ac o3n2a2n on1c 3oncil on1ci 2ond on5do o3nen o2n5est o1nes on4gu on1ic o3n2i4o on1is o5ni1u on3key o4nk2 on4odi o4n3o2d on3o3my o2n3s2 on5spi4 onspi1r5a onsp4ir on1su4 onten4 on1t on3t4i onti2f5 on5um on1va5 on1v2 oo2 ood5e ood5i o2o4k oop3i o3ord oost5 o2pa o2p2e5d op1er 3oper1a 4op4erag 2oph o5pha2n o5ph4er op3ing opi2n o3pit o5po2n o4posi o1pos o1pr2 op1u opy5 o1q o1ra o5ra. o4r3ag or5al1iz oral1i or5an4ge ora2n or2ang ore5a o5re1a4l or3ei2 or4e5s2h or5e2st. ores2t orew4 or4gu org2 4o5r2i3a or3i1ca o5ril or1in o1r2i1o or3i1ty o3ri1u or2mi or1m orn2e o5rof or3oug orou2 or5pe or1p 3orrh4 or1r4 or4se o4rs2 ors5en orst4 or3thi or3thy or4ty o5rum o1ry os3al osa2 os2c os4ce o3scop os1co 4oscopi o5scr os4i4e4 os5i1t2iv osi1ti os3i1to os3i1ty o5si4u os4l2 o2so o2s4pa os4po os2ta o5stati os5til ost2i os5tit o4ta2n o1ta otele4g ot3er. ot5e4r1s2 o4tes 4oth oth5e1si oth2e oth1es oth3i4 ot3ic. ot5i1ca o3tice o3tif2 o3tis oto5s2 o1to ou2 ou3b2l2 ouch5i ou2ch ou5et ou4l ounc5er oun2d ou5v2 ov4en over4ne ove4r3s2 ov4ert o3vis o4vi1ti4 o5v4ol ow3der ow3el ow5est3 ow1i2 own5i o4wo2 oy1a 1pa pa4ca pa4ce pa2c4t p4a2d 5paga4n pa1ga p3agat p4ai2 pa4i4n4 p4al pa1n4a pa2n pan3el pan4ty pan1t pa3ny pa1p pa4pu para5b2l2 p2a2r pa2rab par5age par5d2i 3pare par5el p4a4r1i par4is pa2te pa5ter 5pathic p4ath pa5thy pa4tric pa1tr pav4 3pay 4p1b pd4 4pe. 3pe4a pear4l pe2a2r pe2c 2p2ed 3pede 3p4edi pe3d4i3a4 ped4ic p4ee pee4d pek4 pe4la pel2i4e4 pel2i pe4n2a2n pe1na p4enc pen4th pen1t pe5o2n p4era. per1a pera5b2l2 pe2ra4b p4erag p4er1i peri5st per2is per4mal per3m4 per1ma per2me5 p4ern p2er3o per3ti p4e5ru per1v pe2t pe5ten pe5tiz 4pf 4pg 4ph. phar5i ph2a2r ph4e3no phe2n ph4er ph4es. ph1es ph1ic 5ph2ie4 ph5ing 5phis1t2i 3phiz p4h2l4 3phob 3phone pho2n 5phoni pho4r 4p4h1s2 ph3t 5phu 1phy p2i3a pi2a2n4 pi4c2ie4 p2i1ci pi4cy p4id p5i1d2a pi3de 5pi2di 3piec p2ie4 pi3en pi4grap p2ig pi1gr pi3lo pi2n p4in. p4ind4 p4i1no 3p2i1o pio2n4 p3ith pi5tha pi2tu 2p3k2 1p2l2 3pla2n plas5t pl2i3a pli5er pl2ie4 4pl2ig pli4n ploi4 plu4m plu4m4b 4p1m 2p3n po4c 5pod. po5em po3et5 5po4g poin2 poi2 5poin1t poly5t po2ly po4ni po2n po4p 1p4or po4ry 1pos po2s1s p4ot po4ta 5poun pou2 4p1p ppa5ra p1pa pp2a2r p2pe p4p2ed p5pel p3pen p3per p3pe2t ppo5s2ite p1pos pr2 pray4e4 5pre1c2i pre5co pre3e2m pre4f5ac pre1f pre1fa pre4la pr1e3r4 p3re1s2e 3pr2e2ss pre5ten pre3v2 5pr2i4e4 prin4t3 pr2i4s pri2s3o p3ro1ca pr2oc prof5it pro2fi pro3l pros3e pro1t 2p1s2 p2se ps4h p4si1b 2p1t p2t5a4b p1ta p2te p2th p1ti3m ptu4r p1tu p4tw4 pub3 pue4 puf4 pu4l3c2 pu4m pu2n pur4r4 5p2us pu2t 5pute put3er pu3tr put4t1ed pu4t3t2 put4t1in p3w qu2 qua5v4 2que. 3quer 3quet 2rab ra3bi rach4e2 ra2ch r5a1c4l4 raf5fi ra2f ra4f1f4 ra2f4t r2ai2 ra4lo ram3et r2ami ra3ne5o ra2n ran4ge r2ang r4ani ra5no4 rap3er 3ra1phy rar5c r2a2r rare4 rar5e1f 4raril rar1i r2as ratio2n4 ra1t2io rau4t ra5vai2 ra2va rav3el ra5z2ie4 ra2z1i r1b r4bab r4bag rbi2 r2b3i4f r2bin r5b2ine rb5ing. rb4o r1c r2ce r1cen4 r3cha r2ch rch4er rche2 r4ci4b r1ci r2c4it rcum3 r4dal r1d2a rd2i r1d4i4a rdi4er rd2ie4 rd1in4 rd3ing 2re. re1a4l re3a2n re5ar1r4 re2a2r 5rea2v re4aw r5ebrat r2e1b re3br rec5ol1l re2col re1co re4c5ompe reco4m1p re4cre re1cr 2r2ed re1de re3dis1 r4edi red5it re4fac re1f re1fa re2fe re5fer. refer1 re3fi re4fy reg3is re5it rei2 re1l2i re5lu r4en4ta ren1t ren4te re1o re5pi2n re4posi re1po re1pos re1pu r1er4 r4er1i r2ero4 r4e5ru r4es. re4spi re1sp res4s5i4b r2e2ss res1si res2t re5s2ta2l res1ta r2e3st4r re4ter re4ti4z re3tri r4eu2 re5u1t2i rev2 re4val re1va rev3el r5ev5er. rev1er re5ve4r1s2 re5vert re5vi4l re1vi rev5olu re4wh r1f r3fu4 r4fy rg2 rg3er r3get r3g1ic rgi4n rg3ing r5gis r5git r1gl2 rgo4n2 r1go r3gu rh4 4rh. 4rhal r2i3a ria4b ri4ag r4ib rib3a ric5as5 ri1ca r4ice 4r2i1ci 5ri5c2id ri4c2ie4 r4i1co rid5er r2id ri3enc r2ie4 ri3en1t ri1er ri5et rig5a2n r2ig ri1ga 5r4igi ril3iz ril1i 5rima2n ri1ma rim5i 3ri1mo rim4pe ri4m1p r2i1na 5rina. r4in4d r2in4e rin4g r2i1o 5riph r2ip riph5e ri2p2l2 rip5lic r4iq r2is r4is. r2is4c r3is2h ris4p ri3ta3b ri1ta r5ited. r2ite ri2t1ed rit5er. rit5e4r1s2 r4i2t3ic ri1ti ri2tu rit5ur riv5el r2iv riv3et riv3i r3j r3ket rk4le rk1l rk4lin r1l rle4 r2led r4l2ig r4lis rl5is2h r3lo4 r1m rma5c r1ma r2me r3men rm5e4r1s2 rm3ing r4ming. r4m2io r3mit r4my r4n2a2r r1na r3nel r4n1er r5net r3ney r5nic r1nis4 r3n2it r3n2iv rno4 r4nou2 r3nu rob3l2 r2oc ro3cr ro4e ro1fe ro5fil ro2fi r2ok2 ro5k1er 5role. rom5e1te ro2me ro4met rom4i ro4m4p ron4al ro2n ro1n1a ron4e ro5n4is ron4ta ron1t 1room roo2 5root ro3pel rop3ic ror3i ro5ro ro2s5per ro2s4s ro4th2e r4oth ro4ty ro4va rov5el rox5 r1p r4pe4a r5pen1t rp5er. r3pe2t rp4h4 rp3ing rpi2n r3po r1r4 rre4c rre4f r4re1o rre4s2t rr2i4o rr2i4v rro2n4 rros4 rrys4 4rs2 r1sa2 rsa5ti rs4c r2se r3sec rse4cr r4s5er. rs3e4s r5se5v2 r1s2h r5sha r1si r4si4b rso2n3 r1so r1sp r5sw2 rta2ch4 r1ta r4tag r3t2e1b r3ten4d r1te5o r1ti r2t5i2b rt2i4d r4tier rt2ie4 r3t2ig rtil3i rtil4l r4ti1ly r4tist r4t2iv r3tri rtr2oph4 rt4s2h4 r4t1s2 ru3a ru3e4l ru3en ru4gl2 ru3i4n r2ui2 rum3p2l2 ru4m2p ru2n ru4nk5 run4ty run1t r5usc2 r2us ru2t1i5n r4u1t2i rv4e rvel4i r3ven rv5er. r5vest rv4e2s r3vey r3vic r3v2i4v r3vo r1w ry4c 5rynge ryn5g ry3t sa2 2s1ab 5sack1 sac3ri2 s3a2c1t 5sai2 sa4l2a2r4 s4a2l4m sa5lo sa4l4t 3sanc sa2n san4de s4and s1ap sa5ta 5sa3t2io sa2t3u sau4 sa5vor 5saw 4s5b scan4t5 s1ca sca2n sca4p scav5 s4ced 4s3cei2 s4ces s2ch2 s4cho2 3s4c2ie4 s1ci 5sc4in4d s2cin scle5 s1c4l4 s4cli scof4 s1co 4scopy5 scou1r5a scou2 s1cu 4s5d 4se. se4a seas4 sea5w se2c3o 3se2c1t 4s4ed se4d4e s5edl se2g se1g3r 5sei2 se1le 5se2l2f 5selv 4se1me se4mol se1mo sen5at se1na 4senc sen4d s5e2ned sen5g s5en1in 4sen4t1d sen1t 4sen2tl se2p3a3 4s1er. s4er1l s2er4o 4ser3vo s1e4s s4e5s2h ses5t 5se5um s4eu 5sev sev3en sew4i2 5sex 4s3f 2s3g s2h 2sh. sh1er 5shev sh1in sh3io 3sh2i4p sh2i2v5 sho4 sh5o2l2d sho2n3 shor4 short5 4sh1w si1b s5ic3c 3si2de. s2id 5side4s2 5si2di si5diz 4sig1n4a s2ig sil4e 4si1ly 2s1in s2i1na 5si2ne. s2ine s3ing 1s2io 5sio2n sio1n5a s4i2r si1r5a 1sis 3s2i1t2io si1ti 5si1u 1s2iv 5siz sk2 4ske s3ket sk5ine sk1i sk5in4g s1l2 s3lat s2le sl2ith5 sl1it 2s1m s3ma smal1l3 sma2n3 smel4 s5men 5s4m2ith smo2l5d4 s1mo s1n4 1so so4ce so2ft3 so4lab so1la so2l3d2 so3lic sol2i 5sol2v 3som 3s4on. so2n so1n1a4 son4g s4op 5soph1ic s2oph s5o3phiz s5o1phy sor5c sor5d 4sov so5vi 2s1pa 5sp4ai2 spa4n spen4d 2s5peo 2sper s2phe 3sph4er spho5 spil4 sp5ing spi2n 4s3p2i1o s4p1ly s1p2l2 s4po2n s1p4or4 4sp4ot squal4l squ2 s1r 2ss s1sa2 ssas3 s2s5c s3sel s5sen5g s4ses. ss1e4s s5set s1si s4s2ie4 ssi4er s4s5i1ly s4s1l2 ss4li s4s1n4 sspen4d4 ss2t ssu1r5a s1su ssu2r ss5w2 2st. s2tag s1ta s2ta2l stam4i 5st4and sta2n s4ta4p 5stat. s4t1ed stern5i s5t2ero ste2w ste1w5a s3th2e st2i s4ti. s5t2i1a s1tic 5s4tick1 s4t2ie4 s3tif2 st3ing s2t1in 5st4ir s1tle s2tl 5stock1 s1to sto2m3a 5stone sto2n s4top 3store st4r s4tra2d s1tra 5stra2tu s4tray s4tr2id 4stry 4st3w4 s2ty 1su su1al su4b3 su2g3 su5is s2ui2 suit3 s4ul su2m su1m3i su2n su2r 4sv sw2 4s1wo2 s4y 4sy1c 3syl syn5o sy5rin 1ta 3ta. 2tab ta5bles2 tab2l2 5tab5o5l1iz tabol2i 4t4a2ci ta5do ta2d 4ta2f4 tai5lo tai2 ta2l ta5la tal5en t2ale tal3i 4talk tal4lis tal1l tall2i ta5log ta5mo tan4de ta2n t4and 1tan1ta3 tan1t ta5per ta5p2l2 tar4a t2a2r 4tar1c 4tare ta3r2iz tar1i tas4e ta5s4y 4tat1ic ta4tur ta2tu taun4 tav4 2taw tax4is tax3i 2t1b 4tc t4ch tch5e4t tche2 4t1d 4te. te2ad4i tea2d1 4tea2t te1ce4 5te2c1t 2t1ed t4e5di 1tee teg4 te5ger4 te5gi 3tel. tel2i4 5te2l1s2 te2ma2 tem3at 3ten2a2n te1na 3tenc 3tend 4te1nes 1ten1t ten4tag ten1ta 1teo te4p te5pe ter3c 5ter3d 1ter1i ter5ies ter2ie4 ter3is teri5za1 5t4er3n2it ter5v 4tes. 4t2e2ss t3ess. teth5e 3t4eu 3tex 4tey 2t1f 4t1g 2th. tha2n4 th2e 4thea th3eas the5a2t the3is thei2 3the4t th5ic. th5i1ca 4th4il2 5th4i4nk2 4t4h1l4 th5ode 5thod3ic 4thoo2 thor5it tho5riz 2t4h1s2 1t2i1a ti4ab ti4a1to 2ti2b 4tick1 t4i1co t4ic1u 5ti2di t2id 3tien t2ie4 tif2 ti5fy 2t2ig 5tigu til2l5in4 til1l till2i 1tim 4ti4m1p tim5ul ti2mu 2t1in t2i1na 3ti2ne. t2ine 3t2ini 1t2io ti5oc tion5ee tio2n 5tiq ti3sa2 3t4ise ti2s4m ti5so tis4p 5tisti1ca tis1t2i tis1tic ti3tl ti4u 1t2iv ti1v4a 1tiz ti3za1 ti3ze4n ti2ze 2tl t5la tla2n4 3tle. 3tled 3tles. tles2 t5let. t5lo 4t1m tme4 2t1n2 1to to3b to5crat 4to2do4 2tof to2gr to5ic toi2 to2ma to4m4b to3my ton4a4l1i to2n to1n1a to3n2at 4tono 4tony to2ra to3r2ie4 tor5iz tos2 5tour tou2 4tout to3w2a2r 4t1p 1tra t2ra3b tra5ch tr4a2ci4 tra2c4it trac4te tra2c1t tr2as4 tra5ven trav5e2s5 tre5f tre4m trem5i 5tr2i3a tri5ces tr4ice 5tri3c2i1a t4r2i1ci 4tri4c3s2 2trim tr2i4v tro5m4i tron5i tro2n 4trony tro5phe tr2oph tro3sp tro3v tr2u5i2 tr2us4 4t1s2 t4sc ts2h4 t4sw2 4t3t2 t4tes t5to t1tu4 1tu tu1a tu3a2r tu4b4i tud2 4tue 4tuf4 5t2u3i2 3tum tu4nis tu1ni 2t3up. 3ture 5turi tur3is tur5o tu5ry 3t2us 4tv tw4 4t1wa twis4 twi2 4t1wo2 1ty 4tya 2tyl type3 ty5ph 4tz t2z4e 4uab uac4 ua5na ua2n uan4i uar5an1t u2a2r uara2n uar2d uar3i uar3t u1at uav4 ub4e u4bel u3ber u4b2ero u1b4i u4b5ing u3b4le. ub2l2 u3ca uci4b u1ci u2c4it ucle3 u1c4l4 u3cr u3cu u4cy ud5d4 ud3er ud5est udes2 ude1v4 u1dic ud3ied ud2ie4 ud3ies ud5is1 u5dit u4do2n u1do ud4si u2d1s2 u4du u4ene ue2n1s4 uen4te uen1t uer4il uer1i 3u1fa u3f4l2 ugh3e2n ug5in 2ui2 uil5iz uil1i ui4n u1ing uir4m u4ir ui1ta4 u2iv3 ui4v4er. u5j 4uk u1la ula5b u5lati ul2ch4 u4l1c2 5ulche2 ul3der u2ld ul2de ul4e u1len ul4gi u4l1g4 ul2i u5l2i1a ul3ing ul5is2h ul4l2a2r ul1l ul4li4b ull2i ul4lis 4u2l3m u1l4o 4u2l1s2 uls5e4s ul2se ul1ti u4lt ul1tra3 ul1tr 4ul1tu2 u3lu ul5ul ul5v u2m5ab u1ma um4bi u4m1b um4b1ly umb2l2 u1mi u4m3ing umor5o u1mo umo2r u4m2p un2at4 u1na u2ne un4er u1ni un4im u2n1in un5is2h un2i3v u2n3s4 un4sw2 un2t3a4b un1t un1ta un4ter. un4tes unu4 un5y u4n5z u4o4rs2 u5os u1ou2 u1pe upe4r5s2 u5p2i3a up3ing upi2n u3p2l2 u4p3p upport5 up1p4or up2t5i2b u2p1t up1tu4 u1ra 4ura. u4rag u4r2as ur4be ur1b ur1c4 ur1d ure5a2t ur4fer1 ur1f ur4fr u3rif uri4fic uri1fi ur1in u3r2i1o u1rit ur3iz ur2l url5ing. ur4no4 uros4 ur4pe ur1p ur4pi urs5er u4rs2 ur2se ur5tes ur3th2e ur1ti4 ur4t2ie4 u3ru 2us u5sa2d usa2 u5sa2n us4ap usc2 us3ci use5a u5s2i1a u3sic us4lin us1l2 us1p us5s1l2 u2ss us5tere us1t4r u2su usu2r4 u2ta4b u1ta u3tat 4u4te. 4utel 4uten uten4i 4u1t2i uti5l2iz util1i u3t2ine u2t1in ut3ing utio1n5a u1t2io utio2n u4tis 5u5tiz u4t1l u2t5of u1to uto5g uto5mat1ic uto2ma u5to2n u4tou2 u4t1s4 u3u uu4m u1v2 ux1u3 u2z4e 1va 5va. 2v1a4b vac5il v4a2ci vac3u vag4 va4ge va5l2i4e4 val1i val5o val1u va5mo va5niz va2n va5pi var5ied v2a2r var1i var2ie4 3vat 4ve. 4ved veg3 v3el. vel3l2i vel1l ve4lo v4e1ly ven3om v4eno v5enue v4erd 5v2e2re. v4erel v3eren ver5enc v4eres ver3ie4 ver1i vermi4n ver3m4 3ver2se ve4r1s2 ver3th v4e2s 4ves. ves4te ve4te vet3er ve4ty vi5al1i v2i1a vi2al 5vi2a2n 5vi2de. v2id 5vi2d1ed 4v3i1den 5vide4s2 5vi2di v3if vi5gn v2ig v4ik4 2vil 5v2il1it vil1i v3i3l2iz v1in 4vi4na v2inc v4in5d 4ving vi1o3l v2io v3io4r vi1ou2 v2i4p vi5ro v4ir vis3it vi3so vi3su 4vi1ti vit3r 4vi1ty 3v2iv 5vo. voi4 3v2ok vo4la v5ole 5vo4l2t 3vol2v vom5i vo2r5ab vo1ra vori4 vo4ry vo4ta 4vo1tee 4vv4 v4y w5ab2l2 2wac wa5ger wa2g5o wait5 wai2 w5al. wam4 war4t w2a2r was4t wa1te wa5ver w1b wea5r2ie4 we2a2r wear1i we4ath3 wea2t we4d4n4 weet3 wee5v wel4l w1er west3 w3ev whi4 wi2 wil2 wil2l5in4 wil1l will2i win4de w4ind win4g w4ir4 3w4ise w2ith3 wiz5 w4k wl4es2 wl3in w4no 1wo2 wom1 wo5v4en w5p wra4 wri4 wri1ta4 w3s2h ws4l2 ws4pe w5s4t 4wt wy4 x1a xac5e x4a2go xam3 x4ap xas5 x3c2 x1e xe4cu1to xe1cu xe3c4ut x2ed xer4i x2e5ro x1h xhi2 xh4il5 xhu4 x3i x2i5a xi5c xi5di x2id x4ime xi5m2iz xim1i x3o x4ob x3p xp4an4d x1pa xpa2n xpec1to5 xpe2c xpe2c1t x2p2e3d x1t2 x3ti x1u xu3a xx4 y5ac 3y2a2r4 y5at y1b y1c y2ce yc5er y3ch ych4e2 ycom4 y1co ycot4 y1d y5ee y1er y4er1f yes4 ye4t y5gi 4y3h y1i y3la ylla5b2l2 yl1l y3lo y5lu ymbol5 y4m1b yme4 ym1pa3 y4m1p yn3c4hr4 yn2ch yn5d yn5g yn5ic 5ynx y1o4 yo5d y4o5g yom4 yo5net yo2n y4o2n3s2 y4os y4p2ed yper5 yp3i y3po y4po4c yp2ta y2p1t y5pu yra5m yr5i3a y3ro yr4r4 ys4c y3s2e ys3i1ca y1s3io 3y1sis y4so y2ss4 ys1t ys3ta ysu2r4 y1su y3thin yt3ic y1w za1 z5a2b z2a2r2 4zb 2ze ze4n ze4p z1er z2e3ro zet4 2z1i z4il z4is 5zl 4zm 1zo zo4m zo5ol zoo2 zte4 4z1z2 z4zy .as9s8o9c8i8a8te. .as1so .asso1ci .asso3c2i1a .as9s8o9c8i8a8t8es. .de8c9l8i9n8a9t8i8on. .de1c4l4 .decl4i1na .declin2at .declina1t2io .declinatio2n .ob8l8i8g9a9t8o8ry. .ob2l2 .obl2ig .obli1ga .obliga1to .obligato1ry .ph8i8l9a8n9t8h8r8o8p8ic. .ph4il2 .phi1la .phila2n .philan1t .philant4hr4 .philanthrop3ic .pr8e8s8e8nt. .p3re1s2e .presen1t .pr8e8s8e8n8ts. .presen4t4s2 .pr8o8j8e8ct. .pro5j .pro1je .proje2c1t .pr8o8j8e8c8ts. .projec4t1s2 .re8c8i9p8r8o8c8i8ty. .re1c2i .rec2ip .recipr2 .recipr2oc .recipro1ci .recipro2c1it .reciproci1ty .re9c8o8g9n8i9z8a8n8ce. .re1co .re2cog .rec3ogniz .recog1ni .recogniza1 .recogniza2n .re8f9o8r9m8a9t8i8on. .re1f .re1fo .refo2r .refor1m .refor1ma .reforma1t2io .reformatio2n .re8t9r8i9b8u9t8i8on. .re3tri .retr4ib .retri3bu1t2io .retrib4u1t2i .retributio2n .ta9b8le. .2tab .tab2l2 hyphen-2.8.9/tests/base.test000077500000000000000000000001451520164222500160040ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/base.word000066400000000000000000001202371520164222500160020ustar00rootroot00000000000000aarhus abase abate abbeys abby abducts aberrations abhorrer abilities abjuring ablest abodes abolitionist abortion about abram abridged abruptly absconds absently absolved absorption abstinence abstractor abundance abuts abyssinian acapulco accelerator accentuated accepted accessibility accidental acclimated accommodating accompanying accomplishments accords accountant accretion acculturation accuracy accused aces achieve acid acknowledgeable acme acoustics acquiescent acquisitive acres acropolis actinometers activators actors actuarial acute adagios adaptation adapts addicting additions addresser adducing aden adherents adiabatically adjoining adjudging adjured adjustment administer administratively admire admissions admixed admonitions adopted adore adrian adsorbs adulterer adumbrating advantageous adventurers adversely advertises advisees advocacy aerate aerobacter aerosols affairs affections affiliating affirmed affliction affords afghans aforethought africanizes afterimage afterward age ager agglutinated aggravation aggressive agile agitator agonies agreeably agriculturally aide ailing aims airdrops airfoil airline airplanes airtight akin alamo alas albatross albums alcoholism aldrich alerting alexandria alga algerian algorithms alicia aligned alistair allan alleges allegory allergic alleyway alliteration allocator allots allowing allurement almaden alnico aloofness alphabetized alsatian alterations alternates althaea altruistically alveolar amalgamate amass amaze amazons ambiguous ambled ambushed amend america americans amide ammonia among amortized amour amphibians amplifiers amputated amusement anabaptist anagram analogue analyticities anaphoric anastomoses anatomy anchorite andalusia andover anecdote anesthetic angeleno angered anglia angola angular animated animism anita annapolis annihilated annotation annoy annually annuls anodes anomalously anselm ant antagonizes antedate anthologies anthropomorphically anticipates antidotes antimony antiquate antisemitism antithetical antonio anxious anyway apathy aphasia apiary apocryphal apologist apostolic appall apparently appear appeasement appended appertains applauds applicable applier appointer apportioning appraisers appreciation apprehensively approach appropriate approval approximated april aptly aquifer arabians aramco arbitrating arcades archaism archeologist archimedes architectures arcing ardently arequipa argos argument aridity aristocrat arithmetize arm armchairs arming armpits arousal arrack arrangement arrears arrhenius arrogate arroyo arterial arthritis articulately artifact artillerist arts ascendant ascent ascot ashamedly ashtray asiatics asking aspersions aspiration ass assassinated assay assemblies asserter assess assiduity assigning assist associate associator assuaged assure assyrianize asteroid astonishingly astride astronomically asymmetric asynchronously atheism athletes atlas atomization atonement atrophies attaching attain attempt attendants attentionality attenuator attired attracted attributable attune auburn audibly audiometer auditions auger august aural auscultated austerely austrianize authenticator authorities authors autocorrelate autodecrements autoindex automaton autopilot autumnal availer avaricious avenues avers avian avionic avoidable avow awakened awards awfulness awry axiological axioms ayes azure babelizes babying bacchus backbend backfill backorder backscatters backstitch backtracks backyard badger baffle baggage bagrodia bailiff baits bakes balancers baldwin balkanization balks baller balloon ballplayer balsam bamboo bandage bandpass bane bangui bank bankrupts bans baptism baptized barbarism barbells bards barest barhop barks barnhard barometers barr barren barron barter basalt baseless bash basics basketball bassinets batavia bather bathtub batted batting battlements baudelaire bawling bayonet be beaded beaker beanbag bearded beast beatification beau beautified beavers becker becomingly bedder bedpost bedspread beecham beefy beethoven befell befoul befuddles beggary begotten beguiling behaviorism behold being belay belfry believable belittles belles belligerents bells belong belting bemoans bendable benedictions beneficiary bengal bent bequeath berating beresford beribboned berliners bernardine bernoulli bertie besets besmirched bespoke besting bet betrayed bette between bewail bewilderment bianco bibles bicarbonate biconvex bidder biennial bigger biharmonic bilabial bilk billet billings bimetallism bind binghamton biochemistry biologically biopsy bipeds birdbaths birminghamize births bisectors bisques bites bitterly bivalves blabbermouths blackburn blackfoots blackmailed blacks blaine blamers bland blanketers blares blasphemousness blatz bleachers bleating blemishes blessings blindfold blinked blissfully blizzard bloch blockers blond bloodiest bloom blossoms blowfish bludgeons blueprint bluish blunted blurring blushing boarded boaster boathouse boatswain bobbsey bodenheim bodybuilding bogart bogus boilers boldface bolshevist bolton bombastic bonanzas bondsman bonham bontempo bookcases bookkeepers bookstore booms booster bootle bootstrapping borden borealis born borrowers bosses botanist bother bottler botulism bounce bounden bouquet boutique bowdlerizing bowl bowstring boxing boyfriend braced bradbury bragger braille brainstorm brakes branchings brandishing brashly braun braving braying brazil bread breadwinners breakfast breakthrough breastworks breathlessly breeding brennan brevet brewery bribers bricklayers bridge bridgework briefed brig brighten brighton brimming brings bristle britisher broaches broadcasts broadly broglie brokenness bronchial brooch brookfield broth browbeat brownian bruce brunette brushing brutalized bryce buchwald buckler bucky buddies budgeters buff buffetings bugger bugs built bulging bulldoze bullfrog bullying bumbling bumptious bundle bungler bunkhouse bunted buoys bureaucracy burgher burglarproofing burke burn burnings burntness burrowing bursty busch bushwhacked businesslike bustards butchered buttercup butternut buttonholes butyrate buzzard bye bypassing bystander byzantinizes cabinet cache cactus caesarize cager cajole calais calculate calculus calgary calico callaghan calloused calmingly caltech calypso camembert camino campaigning camps canadianize canceled candidacy candler canine cannery cannon canonical canopy canto canvassed capable capacitors capita capitalizers capping capstone captivates capturer caravans carbondale carbonizing cardboard cardiology carefully caressing caricature carlsbad carnation caroline carpenters carriages carruthers carter carton carve cascades cashed casings cassette castes casts catalina catapult catches categorizes cathedral catholicisms cattle cauldrons causer cautioner cavalierness cavernous cawing cecil celanese celerity cellist celticizes censoring centaur centimeter centralized centroid cerebral certainties certifies cezanne chaffey chairing chalices challenging champaign chancellor changeability channeled chanter chapel chapter characterize chargeable charitable charlotte chars chartings chasing chastisers chattel chauffeured cheaply checkbook checkout cheekbone cheeriness cheeses chemise cherishes cheryl chests cheyennes chicanos chides childhood chill chime chinas chinning chiropractor chit chloroplasts choir choose chopping choreograph chou christenson christianizing christoph chronicle chronology chuckles churchgoing churn ciceronianize cinderella ciphertexts circuitously circulating circumnavigates circumstanced circuses cities civet civilized claimed clambers clams clapboard clarifications clash classes classifiers clattered claustrophobia cleaned cleansed clearer cleaved clemente clerked cliches cliffs climb clincher clink clippers cloaks clockings clogs closeness closing clothing clouding clowns clucks clumsy clutching coaches coalition coastal coating coaxing cobweb cockpit cocoon codes codifies coefficient coexist coffer cogitated cogs cohering coils coinciding colder colicky collaborator collared collecting colleges collins colombia colonies colons colorless columnize combated combinator combings comedic cometary comforting comma commandment commemorative commended commenting commissioners committeemen commonalities commonwealth communicated communists commuting compactors comparably comparison compassion compelling compensatory competitions compilers complaint completed complexities complications complimenting composedly compost comprehensibility compression compromisers compulsory computed comradely concatenation concede conceived concentrators conceptualized concerted conciseness concoct concretes concurring condemns conditional condoned conduction confectionery conferred confessions confidential configure confining confiscates confocal confounding confucian confusion congo congregating congresswomen conjoined conjuncture connected connector connors conquered conrail consecrate consenting conservation conserved considered consistent consolers consonants conspirator constant constituent constitutions constructed constructs consultant consumed consumptions contain contaminated contemplative contender contentment context continents continuations contortions contracting contradicting contraptions contribute contrite controllability controversy convened conventionally conversantly conversion convex convict convinces convoys cooked coolers coon cooperations coordinates copeland copings coprocessor coquette cords corinthian corks cornered corns coronary corporately correct correctness correspond corridors corroborative corruption corvallis cosmopolitan costs cots cotyledon coughs councilwoman counselors counteracting counterfeited counterpart countersunk countrywide couplings courser courtesies courtrooms covenant coverlet covetousness cower cowl coypu crackers cradles craftsperson cramps crank cranny crater crawford craze creaked creams creation credence creditor creeks cremates crescents cretin cricket criminal cripple crisscross criticizes croaks crocus cropper crosser crosstalk crowd crowning crucifixion cruel cruising crumpled crusade crushes crux cryptic crystallize cubans cucumbers cufflink culminate cultivable cultural cummings cupboard curb curing curlers current currying cursory curtly curving custer customizable cut cuts cyanamid cyclically cygnus cypress cytoplasm dabbles dadaistic dahl dairy dali damages damns damsel dancing dangle danize dare darken darn darted darwinizes database dates daunted davy daydreams dazzled deaden deaf dealings deanna death debater debilitates debtor debutante decay deceit decelerate decent decidability decimate decision decks declarer decliners decodings decomposition decorative decreases decrements dedicated deduct deeding deep deere defeats defendant defenestrating deferments deficiencies define definitions deformation defy degradation deify dejected delaying deleter deliberated delicacies delightful delimiting delirious deliveries delphic deluged demand demeter demodulate demons demonstrator demultiplex denebola denigrates denominators denoting densest dentists denying departure dependent depleted deploy depose depositors depreciated deprivations dequeued deregulate derive descend descents descriptively deserters deservings designator desire desolate despatched despite destabilize destroyed destructiveness detacher detained detective deteriorated determination deterministic detractor devastate development deviation devised devotedly devours dexedrine diagnose diagonals dial dialogue diamond diarrhea dickinson dictatorial diddle dies dietrich differentials differers diffusely digest diggings digits digressing dilapidate diligence dilution dimensions dimmed dine dining diogenes diphthong dipper direction directorate dirt disable disaffection disallowing disappearances disapprove disassembles disbands discarding discerns disciplines disclosure disconnects discord discouraging discovery discretion discuss disease disfigure disgruntle disgustingly dishonestly dishwater disjoint disk dislocates dismaying dismissers disobedient disown dispatched dispensary dispersed displacing displeasing disposition disputer disquieting disruption dissemble dissenter dissimilarities dissociating distaff distastes distilling distinguish distorts distresses distributivity disturbed ditty divergence diversifies diverting dividend divining divisors dixieland doberman doctoral documentaries dodecahedra doe doghouse dolan dollies domenico domicile domineering donahue donkey dooley doorman dopers doric dortmund doted doubleheader doubt doubts doves downey downloading downstairs doyle draconian drafty dragooned dram drape draughts drawings dreaded dreamers dregs dressing dries driller drip driveway droop droppers droves drudgery drummers drunkly duality dubuque ducts dug dullness dumbly dunbar dungeons duplicable dupont duration durward duster dutchman dwarfed dwelt dyeing dynamism dysentery ear earmarked earnestness earth earthquakes eases easterner easy eaves eben echoed ecology economize ecuador edenizes edict edition edmonton educating edwards effecting efficacy effortlessness eggshell egyptianize eigenstate eighthes eisner ejecting elaborately elapses elderly elections electrically electrocute electroencephalography electronics elemental elevation elicited eliminating elite ella ellipsoids elmhurst else elucidation ely emancipate embarrass embeds embodied embracing emerald emeritus emil emits emotionally emphasizing employable emporium emptily emulator enacted encamping enchanter encircled encoder encounter encouragingly encumbered endangers endemic endorse endows enduringly enfeeble enfranchise engels engines englishmen engulf enjoin enjoys enlightened enlivens enormity enquirer enriches ensembles ensnaring ensures enterprise entertainment enticed entitle entreat entrepreneurs enumerated enveloped environ envisioned ephemeral epicurizes episcopalian epitaphs epochs equalize equates equilibrate equips equivocally erased ere ergo erlang erode erratum errs escalates escapes escorts especially esquires essentially estates estimated eternal ethernets etruria eulerian eurasia europeanized evade evaluative evaporation evenhandedness events everglades everything evidences evinces evolve exacerbated exactions exaggerations examined exasperates exceeded excellently exceptions exchangeable excision excitingly exclamatory exclusiveness excreting excused executional exemplified exempts exertion exhaustedly exhibitions exile existentialist exorbitant expanders expect expects expeditious expenditure experiencing experiments expires explanations exploit explorations explosive exponentiating exports exposure expressibility expulsion extemporaneous extensive exterminate extinguished extract extraneous extrapolation extremely exult eyeglasses eyesight fables facade facile facsimile factories faculty fagin failsoft faintness fairing faithful fakes fallacious falmouth falsifying familiar families fanaticism fanciness fanning farad farewells farmers farrell fascination fasted fastidious fate fathomed fatten faulkner fauna favoring fayette fearlessly feat featherweight fed feebleness feeds feet feline fellowships feminism fencing fermentation ferociously fertile fervent festivity fettered feverish fiat fibrously fiddled fief fiendish fifteenth fighting fiji files filled filming filthy finals finder fines fingerprint finishes finnish fireboat firemen firewall firming fiscally fishes fissured fitly fitzpatrick fixation fixture flagged flak flamer flanking flash flask flattered flaunting flawlessly fledglings fleetly flemishing flew flicking flinches flirt floated flood floors florentine flossing flourished floweriness fluctuate fluffier fluoresce fluting flying focal foes fogy folders folksy folsom font fooled football footing forage forbes forcer forearms forefathers foreign foreseeable forestalls forever forge forgettable forgiving forlornly formalized formatively formicas formulated forsaken forthwith fortiori fortuitously forwarder fought foundation founds foursome foxes fragile fragrantly framing francie francoise franking fraser fray freckle frederico freeing frees freezing frenchizes frequented freshened freshness freudianism friction friendlier friezes frightful frisia frivolity from fronts frothing fruehauf fruits fuchsia fujitsu full fumbling functionally fundamentally fungal funnier furlong furniture furthermore fuses futuristic gabled gadgetry gaging gaines galactic galaxy gallantly gallon gallstone gambled games gangplank gaped garbed gardner garlanded garrisoned gaseous gaspee gastric gathered gauche gaunt gawky gaze gearing gelatin gemma generality generals generic genetic genre gentler geodesic geological geophysical geraldine germane germinates gestapo getting ghosted gibraltar gig giggle gilds gilt ginghams gipsy girlish giver gladdest glance glaring glazed gleaner glenda glimmer glints gloat gloria glorying glove glowing glynn gnu goats goblins godmother goethe goldenly goldstine gondola goode goodyear goren gorton got gothicizing gouging government grab gracefully gradations gradual graft grained grams grandfather grandpa grant granulates graphical graspable grassiest gratification gratuitously graves grayed grease grecianize greeks greenfeld greens greeter grenades greyest grievances griffith grimes grinds gripped gritty grocers grooved grossest groton group grovels growling grubs grumbling guano guardedly gubernatorial guest guideline guiltier guises gullah gumming gunner gurgle gustafson guts guyer gymnastics haas habitual hacks hag hail hairier hale hallmark halpern halve hamburgers hammering hampshire handbooks handicap handkerchiefs handshake handy hangman hannah hansel haplessly happily harbinger harder hardships harken harmfulness harmoniously harnessing harriman harry harvardize harveys hassle hat hatefully hattie hauler hausa havoc hawthorne haywood head headlands headroom heals healy hearings heartily heater heaved heaviness hebrides hedgehog heeds hegelianizes heights heiresses helicopter hellenized helmet helpfully hem hemp hendrick henrietta heralds herder hereford hereunder hermit heroically herring hertzog hesperus heterogenous heuser hexagon hibernate hidden hierarchic highfield highnesses hikes hillcrest hilt hindered hindustan hinting hired his histograms hitch hither hitting hoarseness hobby hoe hoists holds hollandaise hollowness holocaust homage homeomorphism homespun homing homosexual honesty honeymooning honoraries hoodlum hooker hoosierize hooves hopelessness horace horn horrible horrors horseshoer hospitalize hostesses hotly hounding houseflies housetop hover howled hubert huey hugo humanities humbling humidifiers humiliation humorers humpty hung hungry huntley hurling hurrying husbands husks hutchins hyde hygiene hyphenate hypotheses hysterical ibsen icicle icosahedron idealize identical identify idiosyncrasy idles ignite ignores illegality illogical illusions illustrative imagen imagine imbrium immaterial immensely immigrating immovability impacted impale impatiently impedes impenetrable imperfectly impermanent impersonations impinges implementable implicants implied important imposes impotence impractically impressible impressment imprisonments improvement improvisers impulsion inaccessible inadequate inane inaudible inca incas incessantly incidentally inciting incloses inclusiveness incomparable incompletely incongruity inconsistent inconvenient incorrectness incredulous incubate incurable indecisive indent indescribable indexing indication indifference indignation indirectly indistinct individually indoctrinating indubitable inductances inducts industrialist industry inelegant inertly inexact inexplicable infantry infection inferior infertile infinite infirmary inflated inflicting inform informatively infrequently infuriating ingeniousness ingratiate inhabited inherently inheritress inhibitor inimical initialized initiating injection injured inker inlet inner innocuousness inoculate inquire inquisitive inscribed insecurely insertion insidiousness insinuated insistently insomnia inspiration installation instances instantiations instill institutes instruct instructs instruments insulation insurance insurrection integrand intellect intelligible intensification intensively inter intercept interchanged intercommunicates intercourse interested interfered intergroup interleaved interminable intermodule internationality interpersonal interposed interpreting interrelations interrupt intersecting interstate intervening interwoven intimation intolerance intractability intraoffice intrigued introductions intruder intubation invaders invalidities invariants inventively inverses inverting investigative inveterate invites invoked involves ionians ira irately irishman ironic irrational irregular irrepressible irreversibility irritable irving isfahan island isolated isomorphisms issuance it italicize itemizations iteration ito izvestia jackets jacky jacobus jailer jamaican janet janus jargon jauntiness jay jeanne jeffersonian jennifer jeremy jeroboam jest jesuitizing jeweled jews jingled joaquin joes john joiner jokers jolts jordan josephus jotting journals jousting joyous judaica judge judith jugoslavia julie jump junctures juniper juras jury justifiers jutland kaddish kamikazes kant karp katowice keeling keepers kemp kenney kepler kerouac key keypad khrushchevs kidde kidney kilimanjaro kills kilojoule kimono kindling kingpin kinnickinnic kirchoff kisses kiting klein knapsacks kneel knickerbockers knights knocked knots knowledge knuckles kodachrome korea krakatoa kronecker kurd labeling laborer labyrinths lacerta lacks ladies lagoon laidlaw lamarck lament lamp lanced landings lands lange languish laos lapse largely larson lashing laszlo later latinity latitudes laudable laughlin laundered laurels lavender lawfully lawsuit layers lazarus leaded leafed leaguers leander leaping leary leathern leaving lectures leeds leftists legalization leger legislated legitimate leila lemon lends leniency lens leonardo lesbian lesson letter levee levelly levin lewdly lexington libelous liberated libido license lick lied lifeboat lifetime ligget lighthearted like likeness lilian liman limit limits lind lindy linearly lingerie lining linnaeus lioness liquid lise listened listings literalness lithuania littering live livers lizzie loaf loathing lobster locally locator lockian lockwood lodges logarithm logically logs loiters londonization loners longings lookers looms looseleaf loosing lords lorry lossiest lotus louisa lourdes lovelace loves lowest loyally lucerne luckier ludicrous luke luminously lunch lunged luring lust luther luxuriantly lyle lynx mac macdonald maces machinery mackey macromolecule madden madhya madsen magellanic magill magnetizable magnify maguire maids mailman mainframes maintained majesty maker malady malcolm malformed maliciousness malone malton manage managing mandatory manger manhole manicuring manila manipulative mann manors mantissa manufactured mao maps marched mardis margo marinade maritime marketability markings marmalade marriott marshaling martial martyr marvels mascara maskable masonite massacred mast masterpiece masturbation matchless materializing mathematically matings matrix mattered matured mauricio maxima maxims maybe mayoral mccabe mccluskey mcdonnell mcgovern mckee mclean mcpherson mealtime meaningful meant measurements mechanically medal medfield mediations medicine meditating mediums meeting megahertz meister melcher melodies melpomene membership memoranda memorizes menagerie mendelizes mennonite mentalities mentor mercenariness mercilessly merged meritorious merrill mesh messenger messy metallization metaphysical meteoritic methodically methods metro mews mica mick microbicide microeconomics micron microprocessing microscope microvaxes middleman midnight midstream midwinter migrate mikoyan mileage milk mill millikan millionth millstones miltonized minaret mindfully mineral mini minima minimizes ministries minor minstrels minute miracle miriam miscarriage misconception miserably misgivings misled misplacing missing missoula mistake mistletoe misunderstand mitch mitres mixtures moats mocked modally moderated modernizer modicum modifying modularizing module moghul moines moldavia moles mollusk momentarily monaco monday mongolian monkeyed monocotyledon monolithic monostable monroe montague montgomery monument mooned moor moped morass morehouse morn morphological morsels mortgage mosaic mosque motels motherland motionlessness motley motorized mound mountainously mourners mousy movable moving muck muddled muffin mugs mullah multicomputer multiple multiplicand multiplies multistage mumbles mundane munitions murdering murmurs muscovy mushroomed musicians muskrat mussorgsky mutability mutations mutilating mutters mycenaean mysterious mythologies nagasaki nair nakedness names nanook napkin narcotic narrowest nash natal nationalities nations naturalist naughtiness navel navona neanderthal nears nebula necessitation neckties needled needy negatives negligible negroid neighboring neoclassic nero nesting nets neural neutral neva newburyport newman newsman next nibelung nicholls nickname nielson nightfall nihilism nimbler nineties nipponizes nobility nocturnally noel nolan nominee nonconservative nondeterminism nongovernmental nonlinearity nonorthogonal nonsegmented nonterminals nook nordhoff normalization normanizations north northernly norwalk nostradamus notarizes note noticeable notifies nottingham novak novices nuances nuclide nullary number numerable numismatic nursing nutritious nyquist oases obedient obfuscate objectively obliged obliterating obscene observable observers obsoletes obstruction obviated occasional occidentalize occlusions occupied occurs octagonal octets oddly odious o'dwyer offended offer officer officiously oft oilcloth ojibwa oldenburg oleomargarine olivia olympus ominousness omnipresent o'neill onlooker onus opaquely openings operate operator oppenheimer oppose oppressed opthalmic optimist optimizing opts oranges orbital orchestral order ordinarily ores organization organs orientalized orifices origination orleans ornate orr orville oscillates o'shea osteopath othello otto ounces outburst outdoor outgrowing outlawing outlive outperforms outrages outstanding outvoting outwitting overboard overcrowds overestimates overhangs overjoyed overload overnighter overproduction overrunning overshadowing oversized overtake overtly overuse overworking owen ownership oxidized ozzie pacification packaged packers padding pageant paginating painful painting pajamas pale palestine palliative palomar panacea pandemic panels panned pantheist panty paperers par parades paragon parallel parallels parameterize paramus paraphrases parcel pardoned parentheses pares parisian parkers parlay parody parrots parsifal partakes participant particular partitioned partridges passageway passion passport pasteur pasture patchy patents pathogenesis patients patricians patrolling patrons patterning paula paulus pavement pawn payer payoffs peacefully peaks pearl peat peculiar pedant pediatrician peeling peering peking pembroke pence pends penetration peninsulas pennsylvania pentagon peopled peppery perceived percents perchance perennially perfectness performs perihelion periodically perishable perkins permeating permit pernicious perpetration perpetuation persecuting perseveres persist personal personified perspiration persuasions perturb peruses pervasive pester peters petri petting phaedra phaser phenomenological philco philistinizes philosophies phoenicia phoning phosphorus photogenic photos phyla physicist pi pick picketing pickman picojoule picturing piedfort pies piggybacked pigtail pilferage pillar pilots pincushion pining pinnacle pinscher pioneers pipelining pirate pistols pitching pithiness pitiless pituitary pixels placement plagiarist plainfield plaintiveness planeload planets planoconcave plantings plasticity plates platoon playboy playing playwrights pleasant pleat plenary pliant plots plows pluggable plume plundered plunging plutonium pocahontas pod poetical poincare pointy poisons polaris police polish politer polka polluted polymer pomerania pompousness ponds pool pop popping popularized populous pores port portending portico portray posed position posits possessive possums posteriori postmasters postscript pot potentates potion pottery pounces pourer poverty powerful practicable practitioners praise prancer prayer preallocated precariously precedents preciously precipitation precludes preconception predating predetermination predication predictive predominately preemptive prefacing prefers preinitializes preliminary premise preoccupied prepared preposterously prerogatives prescriptions presentations preserved presidential pressings preston presumptuousness pretending pretexts prevailing preventing previously pricers prides primarily priming princesses principles prior prisoners privations prizes probate probings procedure processing proclamation procreate procurer produce productive profession proffered profitability profound program progresses prohibitions projections proletariat prolong prominent promoter promptest promulgation pronouncement proofs propane properly prophesy proportionately proposer propounded prorate prosecutes prosodic prospector prostate protecting protege protestations protons protozoan prouder provenance providence provision provokes proximal pruned prussianize pseudoinstruction psychiatrist psychologically psychosomatic pub publicly puckered puffed puller pulls pulse pumpkin punctually punishable punt puppeteer purchases purges purina purpler purposed purse pursuing pushdown putnam puzzlement pyongyang pythagoreanizes quadrangle quadrennial quagmires quakeress qualified qualm quantifiers quantize quarreled quartering quasar quavering queerer queried questionable questions quibble quicklime quieting quince quit quivers quonset quotient rabin rachmaninoff racketeers radiance radiators radiography rae rages raider railroaded rainbow rains rake ralston ramifications rams rand randy rangy rankings ransomer rap rapids rapturous rascally rasping ratfor ration rationalizes rattler ravager ravens rawlins rays reach reacted reactivation reader readjusted realigned realizable realm reaped rear rearrest reasonings reassigned reawakened rebellions rebooting rebuffed rebutted recalibrated recapitulates receded receives receptive recife reciprocating recitations reckoned reclaiming reclining recognize recollect recommend recompiles reconciliation reconnect reconstituted recorder recover recreating recta recur recursing red redeclared redefined redevelopment redisplayed redness redressing reducibly reeds reelects reenforcement reestablishing reexamining references referral refine reflecting reflexes reformatory reformulated refrained refreshment refugee refuted regally regenerating regimentation regis regressed regrettable regularly regulators rehearsing reimbursable reined reinhold reinstated reintroduces reiteration rejoiced relabeled relating relatives relaxes relegate relents relic relieving relinquishing reloader reluctance remains remedied remind reminiscently remodels remotely removing renames rendezvous renewable renouncing rented reopen reorganize repairman repaying repeatedly repentance repetitious replaceable replays replicate report reposing representably representing reprieved reproach reproducibilities reprograms republics repulses reputed required requisitions rescind researchers resemblances resentment reservoir resident resignation resistance resistors resolver resorting respect respective responded responsible restarts restful restorations restrainers restrictive resultant resuming resurrectors retailing retaliatory retentiveness retina retiring retracting retransmission retribution retriever retrospection retype reuniting revamping reveler revere reverifies reverses reviewer reviser revival revoked revolution revolvers rewinding rewriting rhesus rhode rhyming ribbons richard richmond rico ride ridiculed rifle rigging rightfulness rigor rims ringings riordan ripely rippling risk ritually river rivulet roadsters roaring robberies roberta robinsonville rochester rocket rockwell rods roll romance romanizes romper roofing rooming root roping rosebush rosetta rot rotations rotund roughness rounding roused routes roving rowley royalty rubbing rubles rudeness ruffian ruggedness rule rumanians rummy runaway runoff rupturing russell rustic rustlers ruthlessness sabbathize sachs sacrifice sacrosanct saddles safari safes sagebrush said sails salable salerno saline sally salters salutations salvages same sampling sanatorium sanctioning sandburg sandra sanest sanskrit sapling saran sari satchel satires satisfy saturnalia saud savaged saver savored sawfish saxonize sayings scala scaling scampers scanners scapegoat scared scatter scenic schantz schelling schemers schmitt scholastic schoolhouses schroeder schuylkill scissor scoffs scope scoreboard scorner scotchgard scottsdale scouted scrambled scrapes scratching screamers screenings scribbled scripts scrumptious scuffle sculptured scythe seagate seam seaquarium searchlight seasonable seat seceded secondary secretarial secretive sections securings sedition see seedy seeming seer segmentations segundo seizures selectman selfishly sells semantics semiconductor semipermanently senate seneca sense sensing sensual sentimentally separately sept sequencers sequentially serene serializable serif serra service servings sets settler seventeens severance severs sex sexual shackled shadiness shaffer shakers shale shameful shanghaied shapeless shard shares sharpening shattering shawano shearing sheds sheets shelley shelves sheridan shied shiftier shilling shiner shintoizes shipper shirk shiver shocker shoehorn shooter shoppers shortage shortens shorts shouldered shoved showed shows shrewd shrilled shrinking shrugs shuffled shutoff shuttles siberia sicken sideband sides sidings sierra sighed sigma signature signification sikkim silent silken sills silverman simile simon simplicities simplistic simulation sinbad sinews singed singlet singularly sinner sioux sirens sisyphus sittings siva sixties skate skeptical sketchpad skidding skillfulness skims skipped skirmishes skulked sky skyrockets slacks slang slash slaughter slavic slavonicizes sledgehammer sleepless sleighs sliced slide slightly slings slips slogans sloppiness slotting slower sluggishness slums smacked smalltime smasher smell smiles smithsonian smoked smoldered smoothing smug smythe snap snapshots snatched sneakiest sneers sniffs snodgrass snorkel snowbelt snows snuffs soak soared sobers socialists sociological socks sofas softly sojourn soldier solenoid solid solids solos solvent somber somerset son sonny soothe sophistication sordid sorest sorrows soul soundness soured southbound southland soviets spacer spaded spaniardization spanked spare sparked sparsely spat spawned speakers specialists specialty specified speckle spectators spectrography speculates speechless speeds spellings spent spica spies spilt spinner spirally spirituals spiting spleen splicing splits spoiling sponged sponsorship spoolers spores sportswriter spotter sprague spraying sprees springiness sprint sprouted spurn sputtered squadrons squarer squatting squeaky squeezing squirmed stab stabilizes stacked staffing stagers stags staircases stalemate stalling stammer stampeding standard standings stans star stargate starring startles state statewide stationmaster statues statutorily staves steadier stealer steamer steele steeper steered stem stenographer stepmother stereoscopic sterilizer stethoscope stew stickier stiffens stigma stillest stimulate stinging stipends stirrer stitching stockholder stodgy stomacher stood stopgap storage storeyed stormiest stouter strafe straightened strained stranding strangler stratagem stratifies strawberry streamer streetcar strengths stretched strict strife stringed stringy striptease strode strolling strontium struggle stuart stucco studious stuffs stun stupid sturm styli styx subcomponents subdirectory subdues subgraph subjective sublime submerges submode subordinate subprogram subschema subscripting subsequent subsidies subsistent substantially substation substrate subsystem subtleness subtraction subunits subverting successful succinctness suckers sudden sufferance sufficiency suffocated sugarings suggests suitably suits sulks sultan summands summation summon sumter sunder sunken sunshine supercomputers supergroups superior supernatural supersede supervise suppers supplementing support suppose suppressing surely surge surly surpass surprisingly surround surveyors sus suspended suspicions sutherland swab swallowing swan swaps swat sweat swedes sweepstakes sweetest swellings swifter swimsuit swipe switchboards swivel swords sykes sylvia symbolize symmetry sympathy synagogue synchronizes syndication synonymously synthesize syrian systematically tabernacle tablespoonful tabulate tacit tactic tail taipei tale talker tallchief talmudizations taming tanaka tangle tantalizing taos tapestry tar tariffs tasked tastefully tattered taunts taverns taxicabs taylor teaches tearful teaspoonful technique tedious teenaged tegucigalpa telegraph teleologically telephony televise teller temperance tempestuous temporaries temptingly tendency tenex tense tent tenure terminating termwise terre terrify terrorize testable testifiers tex textile thailand thankless thaw theatrically theme theology theorization therapies thereof thermometer thessaly thickly thimbles thinking thirsted thistle thorns those thousand thread threatens thrift thrived throne throughout thrusters thumbed thunderer thus tiburon tickles tidied tier tighteners tilde tillich timbered timeouts timetables timonizes tingling tinkled tint tipperary tirelessly titan titter toasts togetherness toilets tolerable toleration tomatoes ton tonic tool toothpaste topmost topsy tormenting torrent torturing tossed totallers touchable tough tourist toweling towns toys tracked tractor trader trafficked trailed trainer tramp trances transceivers transcribers transferal transformable transgressed transistorized transitively translation transmittal transparent transponder transpose trapezoidal trauma traversal trays treasure treating treetop tremor trespassed triangles tribunals tricked tricky triggered trilled trimming tripled triumphal trivially troopers trotsky troubleshoots trowels trucking truest trumped trunk trustingly try tubs tuft tumbled tunable tunisia turbulent turkize turning turtle tutankhamen tuttle twenty twiner twirling twitching tyler typewriters typing tyranny ugh ulcers umbrage unacceptably unaided unanimous unattainability unaware unblocked uncancelled unchanging unclosed unconditional uncontrollable uncountable undecidable underbrush underflows underlies undermine underplays understandings undertakings underwrites undirected undone uneasy unequaled uneventful unfairness unfit unformatted ungratefully unharmed unidirectionality uniformity unindented uninterrupted unions unitarian unity universities unkindness unleashed unlinking unlucky unmerciful unnecessarily unobtainable unpaid unprecedented unprovable unraveling unrecognized unrestrained unsafely unselected unskilled unsteady unsynchronized untie untoward unused unwholesome unwinds unwrap updater upholder upland uprightly upsets upturns urge urinates ursuline usages usenix usually utilization utopianizes utters vacation vacuumed vagrantly valence valiant validness valuably valves vandenberg vanished vanquishing variably varies varying vastly vaudois vax veering vegetated vehicular velasquez venetian venomous ventricles venus verbalized verdure verifier vern versatile vertebrates vested veterinary via vibrations viciousness victimizers victories vidal vier viewing vignettes vilification villages vinci vineyard violator violins virgo virus visible visited visualize vitally vladimir vocations voided volition voltages volunteering voted vouching voyaged vulgarly waco waffles wagnerian wailing waiter waives waking walgreen wallenstein walls waltham wandered waning wants ward warehousing warmer warning warranted warsaw washburn wasps watch watchman watering watery wausau wavelength waxers we weaknesses wear wearisomely weatherford webs wedlock weekly weidman weights weissmuller welder wellesley wenches wesleyan westhampton wet whacked wharves wheel whelp wherever whims whippany whirling whiskers whistled whitehorse whitens whitlock whittling wholeness whoop wichita widen widowed wielding wilbur wile wilkinson william willis wilshire wince winding winehead wining winnie winsett wiped wiretappers wised wishful witches withdrew withholds witnessing woefully womanhood wonderfulness woo wooden woodstock woofer woonsocket words workbooks workman worldliness worrier worshiper worthless wounding wrapper wreathes wrenched wretch wring writ writing wrote wyner xeroxed yamaha yard yawner years yellowed yelped yesterdays yoknapatawpha yorkshire youngsters youthfulness yukon zeal zen zeus zionism zoned zoroaster hyphen-2.8.9/tests/basealt.hyph000066400000000000000000000001301520164222500164650ustar00rootroot00000000000000paral=lel oma=tje café=tje schiff=fahrt druk=ker bridzs=dzsel asz=szony=nyal till=lata hyphen-2.8.9/tests/basealt.pat000066400000000000000000000002471520164222500163120ustar00rootroot00000000000000UTF-8 l·1l/l=l,1,3 a1atje./a=t,1,3 e1etje./é=tje,1,5 .schif1fahrt/ff=f,5,2 c1k/k=k,1,2 d1dzsel./dzs=dzs,1,4 .as3szon/sz=sz,2,3 n1nyal./ny=ny,1,3 .til1lata./ll=l,3,2 hyphen-2.8.9/tests/basealt.test000077500000000000000000000001451520164222500165050ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/basealt.word000066400000000000000000000001141520164222500164720ustar00rootroot00000000000000paral·lel omaatje cafeetje schiffahrt drucker briddzsel asszonnyal tillata hyphen-2.8.9/tests/basealt2.hyph000066400000000000000000000001271520164222500165550ustar00rootroot00000000000000paral=lel oma=tje caf=tje schiff=fahrt druk=ker bridzs=dzsel asz=szony=nyal till=lata hyphen-2.8.9/tests/basealt2.pat000066400000000000000000000002511520164222500163670ustar00rootroot00000000000000ISO8859-1 l1l/l=l,1,3 a1atje./a=t,1,3 e1etje./=tje,1,5 .schif1fahrt/ff=f,5,2 c1k/k=k,1,2 d1dzsel./dzs=dzs,1,4 .as3szon/sz=sz,2,3 n1nyal./ny=ny,1,3 .til1lata./ll=l,3,2 hyphen-2.8.9/tests/basealt2.test000077500000000000000000000001451520164222500165670ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/basealt2.word000066400000000000000000000001131520164222500165530ustar00rootroot00000000000000parallel omaatje cafeetje schiffahrt drucker briddzsel asszonnyal tillata hyphen-2.8.9/tests/boundary.hyph000066400000000000000000000000061520164222500166770ustar00rootroot00000000000000apple hyphen-2.8.9/tests/boundary.pat000066400000000000000000000000121520164222500165100ustar00rootroot00000000000000UTF-8 1.a hyphen-2.8.9/tests/boundary.test000077500000000000000000000001451520164222500167150ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/boundary.word000066400000000000000000000000061520164222500167020ustar00rootroot00000000000000apple hyphen-2.8.9/tests/compound.hyph000066400000000000000000000000161520164222500167010ustar00rootroot00000000000000mo=tor=cy=cle hyphen-2.8.9/tests/compound.pat000066400000000000000000000003361520164222500165220ustar00rootroot00000000000000ISO8859-1 COMPOUNDLEFTHYPHENMIN 2 COMPOUNDRIGHTHYPHENMIN 3 % 1st (compound) level motor1cycle % 2nd (non compound) level NEXTLEVEL .mo1tor. .cy1cle. % check independency of the 1st and 2nd hyphenation levels .motor2cycle. hyphen-2.8.9/tests/compound.test000077500000000000000000000001451520164222500167160ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/compound.word000066400000000000000000000000131520164222500167010ustar00rootroot00000000000000motorcycle hyphen-2.8.9/tests/compound2.hyph000066400000000000000000000000461520164222500167660ustar00rootroot00000000000000fő=nök=asz=szony asz=szony=fő=nök hyphen-2.8.9/tests/compound2.pat000066400000000000000000000001631520164222500166020ustar00rootroot00000000000000UTF-8 % 1st (compound) level szony1fő ök1assz % 2nd (non compound) level NEXTLEVEL .as1szony./sz=,2,1 .fő1nök. hyphen-2.8.9/tests/compound2.test000077500000000000000000000001451520164222500170000ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/compound2.word000066400000000000000000000000361520164222500167700ustar00rootroot00000000000000főnökasszony asszonyfőnök hyphen-2.8.9/tests/compound3.hyph000066400000000000000000000000211520164222500167600ustar00rootroot00000000000000ki=lo=watt=ti=me hyphen-2.8.9/tests/compound3.pat000066400000000000000000000004231520164222500166020ustar00rootroot00000000000000ISO8859-1 % Norwegian example: % non-standard hyphenation at compound boundary (kilowattime -> kilowatt-time) % and recursive compound hyphenation (kilowatt->kilo-watt) % 1st (compound) level wat1time/tt=t,3,2 .kilo1watt. % 2nd (non compound) level NEXTLEVEL .ki1lo. .ti1me. hyphen-2.8.9/tests/compound3.test000077500000000000000000000001451520164222500170010ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/compound3.word000066400000000000000000000000141520164222500167650ustar00rootroot00000000000000kilowattime hyphen-2.8.9/tests/compound4.hyph000066400000000000000000000000141520164222500167630ustar00rootroot00000000000000motor=cycle hyphen-2.8.9/tests/compound4.pat000066400000000000000000000003361520164222500166060ustar00rootroot00000000000000ISO8859-1 COMPOUNDLEFTHYPHENMIN 3 COMPOUNDRIGHTHYPHENMIN 4 % 1st (compound) level motor1cycle % 2nd (non compound) level NEXTLEVEL .mo1tor. .cy1cle. % check independency of the 1st and 2nd hyphenation levels .motor2cycle. hyphen-2.8.9/tests/compound4.test000077500000000000000000000001451520164222500170020ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/compound4.word000066400000000000000000000000131520164222500167650ustar00rootroot00000000000000motorcycle hyphen-2.8.9/tests/compound5.hyph000066400000000000000000000000111520164222500167610ustar00rootroot00000000000000post=e=a hyphen-2.8.9/tests/compound5.pat000066400000000000000000000001571520164222500166100ustar00rootroot00000000000000UTF-8 LEFTHYPHENMIN 1 RIGHTHYPHENMIN 1 COMPOUNDLEFTHYPHENMIN 1 COMPOUNDRIGHTHYPHENMIN 1 .post1 NEXTLEVEL e1 a1 hyphen-2.8.9/tests/compound5.test000077500000000000000000000001451520164222500170030ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/compound5.word000066400000000000000000000000071520164222500167710ustar00rootroot00000000000000postea hyphen-2.8.9/tests/compound6.hyph000066400000000000000000000000111520164222500167620ustar00rootroot00000000000000me=a=que hyphen-2.8.9/tests/compound6.pat000066400000000000000000000001531520164222500166050ustar00rootroot00000000000000UTF-8 LEFTHYPHENMIN 1 RIGHTHYPHENMIN 1 COMPOUNDLEFTHYPHENMIN 1 COMPOUNDRIGHTHYPHENMIN 1 1que. NEXTLEVEL e1 hyphen-2.8.9/tests/compound6.test000077500000000000000000000001451520164222500170040ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/compound6.word000066400000000000000000000000071520164222500167720ustar00rootroot00000000000000meaque hyphen-2.8.9/tests/compound7.hyph000066400000000000000000000000721520164222500167720ustar00rootroot00000000000000bbbb./ll=a-abaabaababababababa3unbbb hyphen-2.8.9/tests/compound7.pat000066400000000000000000000007021520164222500166060ustar00rootroot00000000000000ISO8859-1 LEFTasszonnyalUTFN-8 EXTLEVEL l·nnyalUTFnyalUTF-8 NEXTLEVEL l%nnyalë/ab3a/bbbb1atje./a=t3e,e,; 1tje 5t1,,.schif1fahrt/ffBB-8 NEXTLEVEHYPHENMIN 1 RIGHTHYPHENMIN 1 % Check for b%h Ceck for buffer overflows .a1b. a9a ab3a/bbbb./ll=a-abaabaababababababa3 e ;etje 5t1,l.s@chif1fahrt/ffBB- NEXTLEVEL l·nnyalë/e=e,1,2 at1aje./sz=sz,2,3 n1nyal./ny=Oy,1,3 bus1s/ss=s,3,2 7-/=-,1,1 .til1låta./ll=l,3bbbbb,2, 1<2 hyphen-2.8.9/tests/compound7.test000077500000000000000000000001441520164222500170040ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyphhyphen-2.8.9/tests/compound7.word000066400000000000000000000000361520164222500167750ustar00rootroot00000000000000aba.unabababababababa-bababab hyphen-2.8.9/tests/conv.dic000066400000000000000000000004031520164222500156110ustar00rootroot00000000000000UTF-8 s2sz s3szon/sz=sz,1,3 vas4szon vas2sz avas1as5szon/sz=sz,6,3 avasas2sz .éavasasszonyo1kat .éavas1as5szon/sz=sz,7,3 .éavasas2sz pas3szon/sz=sz,3,3 pas2sz .klas3szon/sz=sz,4,3 .klas2sz kakas5szonda kakas2sz kakas3szon/sz=sz,5,3 kakas7szondan/sz=sz,6,3 hyphen-2.8.9/tests/conv.hyph000066400000000000000000000002361520164222500160260ustar00rootroot00000000000000ssz massza asz=szony avas=asz=szony javas=asz=szony vasszon klasz=szon aklasz=szon pasz=szon kopasz=szon kakasz=szon kakasz=szond kakas=szonda kakasz=szondan hyphen-2.8.9/tests/conv.pat000066400000000000000000000003511520164222500156400ustar00rootroot00000000000000s2sz s3szon/sz=sz,1,3 vas4szon avas1as5szon/sz=sz,6,3 .éavasasszonyo1kat pas3szon/sz=sz,3,3 .klas3szon/sz=sz,4,3 kakas5szonda kakas7szondan/sz=sz,6,3 % patterns added by substrings.pl: kakas3szon/sz=sz,5,3 .éavas1as5szon/sz=sz,8,3 hyphen-2.8.9/tests/conv.test000077500000000000000000000001451520164222500160370ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/conv.word000066400000000000000000000002071520164222500160270ustar00rootroot00000000000000ssz massza asszony avasasszony javasasszony vasszon klasszon aklasszon passzon kopasszon kakasszon kakasszond kakasszonda kakasszondan hyphen-2.8.9/tests/hyphen.hyph000066400000000000000000000000361520164222500163520ustar00rootroot00000000000000foobar'foobar-foobar’foobar hyphen-2.8.9/tests/hyphen.pat000066400000000000000000000000571520164222500161710ustar00rootroot00000000000000UTF-8 NOHYPHEN -,',’ 1-1 1'1 1’1 NEXTLEVEL hyphen-2.8.9/tests/hyphen.test000077500000000000000000000001451520164222500163650ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/hyphen.word000066400000000000000000000000361520164222500163550ustar00rootroot00000000000000foobar'foobar-foobar’foobar hyphen-2.8.9/tests/lhmin.hyph000066400000000000000000000000101520164222500161560ustar00rootroot00000000000000mi=ért hyphen-2.8.9/tests/lhmin.pat000066400000000000000000000001071520164222500160010ustar00rootroot00000000000000UTF-8 % test patterns for lefthyphenmin fix for UTF-8 patterns mi1ért hyphen-2.8.9/tests/lhmin.test000077500000000000000000000001451520164222500162010ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/lhmin.word000066400000000000000000000000071520164222500161670ustar00rootroot00000000000000miért hyphen-2.8.9/tests/lig.hyph000066400000000000000000000000111520164222500156230ustar00rootroot00000000000000maf=fia hyphen-2.8.9/tests/lig.pat000066400000000000000000000001021520164222500154400ustar00rootroot00000000000000UTF-8 % Unicode ligature hyphenation (ffi -> f=fi) ffi1/f=fi,1,1 hyphen-2.8.9/tests/lig.test000077500000000000000000000001451520164222500156450ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/lig.word000066400000000000000000000000071520164222500156330ustar00rootroot00000000000000maffia hyphen-2.8.9/tests/longlines.hyph000066400000000000000000000000071520164222500170470ustar00rootroot00000000000000a=bc=d hyphen-2.8.9/tests/longlines.pat000066400000000000000000000006521520164222500166710ustar00rootroot00000000000000ISO8859-1 LEFTHYPHENMIN 1 RIGHTHYPHENMIN 1 % Check whether characters over MAX_CHARS are not treated as new line % This test is valid as long as MAX_CHARS is 100 % % Following pattern should result in a=bc=d hyphenation a1b2c1d % and should not be overriden by pattern from too long comment (over MAX_CHARS characters) %|------------------------------ this part is 100 characters long --------------------------------|a8b9c8d hyphen-2.8.9/tests/longlines.test000077500000000000000000000001451520164222500170640ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/longlines.word000066400000000000000000000000051520164222500170500ustar00rootroot00000000000000abcd hyphen-2.8.9/tests/matchindex.hyph000066400000000000000000000000041520164222500171760ustar00rootroot00000000000000ax= hyphen-2.8.9/tests/matchindex.pat000066400000000000000000000000241520164222500170140ustar00rootroot00000000000000ISO8859-1 1a/x=,1,0 hyphen-2.8.9/tests/matchindex.test000077500000000000000000000001451520164222500172160ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/matchindex.word000066400000000000000000000000031520164222500172000ustar00rootroot00000000000000aa hyphen-2.8.9/tests/nohyphen2.hyph000066400000000000000000000000121520164222500167630ustar00rootroot00000000000000ba=n=a=na hyphen-2.8.9/tests/nohyphen2.pat000066400000000000000000000000331520164222500166020ustar00rootroot00000000000000UTF-8 NOHYPHEN 1a1 NOHYPHENhyphen-2.8.9/tests/nohyphen2.test000077500000000000000000000001451520164222500170040ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/nohyphen2.word000066400000000000000000000000071520164222500167720ustar00rootroot00000000000000banana hyphen-2.8.9/tests/nohyphen3.hyph000066400000000000000000000000121520164222500167640ustar00rootroot00000000000000ba=n=a=na hyphen-2.8.9/tests/nohyphen3.pat000066400000000000000000000000421520164222500166030ustar00rootroot00000000000000UTF-8 NOHYPHEN ',,- 1a1 NEXTLEVEL hyphen-2.8.9/tests/nohyphen3.test000077500000000000000000000001451520164222500170050ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/nohyphen3.word000066400000000000000000000000071520164222500167730ustar00rootroot00000000000000banana hyphen-2.8.9/tests/num.hyph000066400000000000000000000002171520164222500156570ustar00rootroot00000000000000foobar foobar=foobar barfoo=barfoo 123foobar=foobar foobar=foobar123 123foobar=foobar123 123barfoo=barfoo barfoo=barfoo123 123barfoo=barfoo123 hyphen-2.8.9/tests/num.pat000066400000000000000000000000731520164222500154730ustar00rootroot00000000000000UTF-8 LEFTHYPHENMIN 4 RIGHTHYPHENMIN 4 foo1 NEXTLEVEL bar1 hyphen-2.8.9/tests/num.test000077500000000000000000000001451520164222500156710ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/num.word000066400000000000000000000002071520164222500156610ustar00rootroot00000000000000foobar foobarfoobar barfoobarfoo 123foobarfoobar foobarfoobar123 123foobarfoobar123 123barfoobarfoo barfoobarfoo123 123barfoobarfoo123 hyphen-2.8.9/tests/recursion.hyph000066400000000000000000000000041520164222500170630ustar00rootroot00000000000000aab hyphen-2.8.9/tests/recursion.pat000066400000000000000000000001241520164222500167020ustar00rootroot00000000000000ISO8859-1 COMPOUNDLEFTHYPHENMIN 1 COMPOUNDRIGHTHYPHENMIN 1 a1b/ab=,1,1 NEXTLEVEL 1b hyphen-2.8.9/tests/recursion.test000077500000000000000000000001451520164222500171030ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/recursion.word000066400000000000000000000000041520164222500170660ustar00rootroot00000000000000aab hyphen-2.8.9/tests/replindex.hyph000066400000000000000000000000031520164222500170430ustar00rootroot00000000000000aa hyphen-2.8.9/tests/replindex.pat000066400000000000000000000000271520164222500166650ustar00rootroot00000000000000ISO8859-1 1a/aa=,127,1 hyphen-2.8.9/tests/replindex.test000077500000000000000000000001451520164222500170640ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/replindex.word000066400000000000000000000000031520164222500170460ustar00rootroot00000000000000aa hyphen-2.8.9/tests/rhmin.hyph000066400000000000000000000000401520164222500161670ustar00rootroot00000000000000övéit అం=గ=డిధర hyphen-2.8.9/tests/rhmin.pat000066400000000000000000000001631520164222500160110ustar00rootroot00000000000000UTF-8 RIGHTHYPHENMIN 3 % test patterns for righthyphenmin fix for UTF-8 patterns övé1it అం1గ1డి1ధర hyphen-2.8.9/tests/rhmin.test000077500000000000000000000001451520164222500162070ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/rhmin.word000066400000000000000000000000361520164222500161770ustar00rootroot00000000000000övéit అంగడిధర hyphen-2.8.9/tests/rhmin2.hyph000066400000000000000000000000071520164222500162540ustar00rootroot00000000000000banana hyphen-2.8.9/tests/rhmin2.pat000066400000000000000000000000501520164222500160660ustar00rootroot00000000000000ISO8859-1 RIGHTHYPHENMIN 4 an1a/x=x,,20 hyphen-2.8.9/tests/rhmin2.test000077500000000000000000000001451520164222500162710ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/rhmin2.word000066400000000000000000000000071520164222500162570ustar00rootroot00000000000000banana hyphen-2.8.9/tests/settings.hyph000066400000000000000000000000301520164222500167110ustar00rootroot00000000000000f=ooba=r ff=oof=ooba=rr hyphen-2.8.9/tests/settings.pat000066400000000000000000000000631520164222500165330ustar00rootroot00000000000000ISO8859-1 LEFTHYPHENMIN 1 RIGHTHYPHENMIN 1 f1o a1r hyphen-2.8.9/tests/settings.test000077500000000000000000000001451520164222500167320ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/settings.word000066400000000000000000000000231520164222500167160ustar00rootroot00000000000000foobar ffoofoobarr hyphen-2.8.9/tests/settings2.hyph000066400000000000000000000000251520164222500167770ustar00rootroot00000000000000ő=ő=ő=ő=ő=ő=ő hyphen-2.8.9/tests/settings2.pat000066400000000000000000000000531520164222500166140ustar00rootroot00000000000000UTF-8 LEFTHYPHENMIN 1 RIGHTHYPHENMIN 1 ő1 hyphen-2.8.9/tests/settings2.test000077500000000000000000000001451520164222500170140ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/settings2.word000066400000000000000000000000171520164222500170030ustar00rootroot00000000000000őőőőőőő hyphen-2.8.9/tests/settings3.hyph000066400000000000000000000000231520164222500167760ustar00rootroot00000000000000őő=ő=ő=ő=őő hyphen-2.8.9/tests/settings3.pat000066400000000000000000000000531520164222500166150ustar00rootroot00000000000000UTF-8 LEFTHYPHENMIN 2 RIGHTHYPHENMIN 2 ő1 hyphen-2.8.9/tests/settings3.test000077500000000000000000000001451520164222500170150ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/settings3.word000066400000000000000000000000171520164222500170040ustar00rootroot00000000000000őőőőőőő hyphen-2.8.9/tests/settings4.hyph000066400000000000000000000000071520164222500170010ustar00rootroot00000000000000reëel hyphen-2.8.9/tests/settings4.pat000066400000000000000000000000641520164222500166200ustar00rootroot00000000000000UTF-8 LEFTHYPHENMIN 1 RIGHTHYPHENMIN 4 e1ë/e=e,1,2 hyphen-2.8.9/tests/settings4.test000077500000000000000000000001451520164222500170160ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/settings4.word000066400000000000000000000000071520164222500170040ustar00rootroot00000000000000reëel hyphen-2.8.9/tests/test.sh000077500000000000000000000027221520164222500155070ustar00rootroot00000000000000#!/bin/bash function check_valgrind_log () { if [ "$VALGRIND" != "" ]; then if [ -f $TEMPDIR/test.pid* ]; then log=`ls $TEMPDIR/test.pid*` if ! grep -q 'ERROR SUMMARY: 0 error' $log; then echo "Fail in $NAME $1 checking detected by Valgrind" echo "$log Valgrind log file moved to $TEMPDIR/badlogs" cat $log mv $log $TEMPDIR/badlogs exit 1 fi if grep -q 'LEAK SUMMARY' $log; then echo "Memory leak in $NAME $1 checking detected by Valgrind" echo "$log Valgrind log file moved to $TEMPDIR/badlogs" cat $log mv $log $TEMPDIR/badlogs exit 1 fi rm -f $log fi fi } TESTDIR="${srcdir:-.}" TEMPDIR="./testSubDir" NAME="$1" if [ ! -d $TEMPDIR ]; then mkdir $TEMPDIR fi shopt -s expand_aliases alias example='../libtool --mode=execute -dlopen ../.libs/libhyphen*.la ../example' if [ "$VALGRIND" != "" ]; then rm -f $TEMPDIR/test.pid* if [ ! -d $TEMPDIR/badlogs ]; then mkdir $TEMPDIR/badlogs fi if [ ! -f ../.libs/lt-example ]; then echo "Use make check before Valgrind tests" else alias example='../libtool --mode=execute -dlopen ../.libs/libhyphen*.la valgrind --tool=$VALGRIND --leak-check=yes --show-reachable=yes --log-file=$TEMPDIR/test.pid ../example' fi fi example $TESTDIR/$1 $TESTDIR/$2 >$TEMPDIR/test.out$$ diff $TEMPDIR/test.out$$ $TESTDIR/$3 || exit 1 #diff $TEMPDIR/test.out$$ $TESTDIR/$3 && rm -f $TEMPDIR/*$$ || exit 1 check_valgrind_log "VALGRIND LOG" hyphen-2.8.9/tests/unicode.hyph000066400000000000000000000002241520164222500165040ustar00rootroot00000000000000paral=lel re=eel oma=tje café=tje eight=teen druk=ker schiff=fahrt Μα=ίου asz=szony=nyal bridzs=dzsel buss=sjåfør 100=-sekundowy till=låta hyphen-2.8.9/tests/unicode.pat000066400000000000000000000003661520164222500163270ustar00rootroot00000000000000UTF-8 NEXTLEVEL l·1l/l=l,1,3 e1ë/e=e,1,2 a1atje./a=t,1,3 e1etje./é=tje,1,5 eigh1teen/t=t,5,1 .schif1fahrt/ff=f,5,2 c1k/k=k,1,2 1ΐ/=ί,1,1 d1dzsel./dzs=dzs,1,4 .as3szon/sz=sz,2,3 n1nyal./ny=ny,1,3 bus1s/ss=s,3,2 7-/=-,1,1 .til1låta./ll=l,3,2 hyphen-2.8.9/tests/unicode.test000077500000000000000000000001451520164222500165200ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyph hyphen-2.8.9/tests/unicode.word000066400000000000000000000002021520164222500165030ustar00rootroot00000000000000paral·lel reëel omaatje cafeetje eighteen drucker schiffahrt Μαΐου asszonnyal briddzsel bussjåfør 100-sekundowy tillåta hyphen-2.8.9/tests/utf8cut.hyph000066400000000000000000000000041520164222500164540ustar00rootroot00000000000000tes hyphen-2.8.9/tests/utf8cut.pat000066400000000000000000000000301520164222500162670ustar00rootroot00000000000000UTF-8 a1b/test=repl,1,10hyphen-2.8.9/tests/utf8cut.test000077500000000000000000000001441520164222500164730ustar00rootroot00000000000000#!/bin/sh DIR="`dirname $0`" NAME="`basename $0 .test`" $DIR/test.sh $NAME.pat $NAME.word $NAME.hyphhyphen-2.8.9/tests/utf8cut.word000066400000000000000000000000021520164222500164550ustar00rootroot00000000000000ab