diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2016-10-06 21:30:09 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2016-10-06 21:30:09 +0000 |
commit | aa7798c94fa57f6c00fab4393c9fe91334864371 (patch) | |
tree | 61b5a60e9c086b1ba44b4718e7666304a8edab6f | |
download | src-aa7798c94fa57f6c00fab4393c9fe91334864371.tar.gz src-aa7798c94fa57f6c00fab4393c9fe91334864371.zip |
Import heirloom doctools snapshot from git as of 161006vendor/heirloom-doctools/20161006
Notes
Notes:
svn path=/vendor/heirloom-doctools/dist/; revision=306788
svn path=/vendor/heirloom-doctools/20161006/; revision=306789; tag=vendor/heirloom-doctools/20161006
686 files changed, 397356 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES new file mode 100644 index 000000000000..77946f32085b --- /dev/null +++ b/CHANGES @@ -0,0 +1,353 @@ +2016-09-07 + Escapes \A and \T had unnecessary restrictions regarding the + allowed character set. This let to problems when e.g. gen- + erating man pages with TOC using -dToc. 8-bit characters are + allowed now. + +2016-08-20 + dpost generates valid PostScript when using fonts + with spaces in the glyph names. + (Marcin CieÅ›lak (@FreeBSD)) + +2016-04-27 + -mdoc: Table of contents with hyperlinks and PDF bookmarks + added. + +2016-03-28 + -man: Table of contents with hyperlinks and PDF bookmarks ad- + ded. + +2016-03-15 + eqn bug fixed which had caused crash for DWB neqn test (has + same code). + +2016-03-08 + grap bug fixed which had cause a double free(3) crash. + +Release 160308 +============== + +2016-03-08 + refer: Bug introduced in commit + 89b1284c1de8071f3d7bb3a308cb080b8e2f311b fixed. (Reported by + Anthony J. Bentley (@OpenBSD)) + +Release 160217 +============== + +2016-02-17 + tbl: Invalid memory access bug fixed. (When testing if a + line starts with '_' or '=' it did not check if the string is + empty.) + +2016-02-16 + .tr bugfix: When the first character given to .tr was un- + known, all character translations had been done wrong. + +2016-02-11 + tbl troff bug fixed: Height of table had been calculated + wrong. This could lead to graphics artifacts if a table is + at page bottom. + +2016-02-10 + Many changes to -man and -mdoc. Heirloom's manual page for- + matting is now quite compatible to groff. + +2016-02-08 + Operator 'v' added for ".if". (Some manpages using this.) + +2016-02-02 + -ms: Macros .QS and .QE added. + +2016-01-29 + Support for groff's notation \[uXXXX] added. + +2016-01-26 + nroff: Use of new names for .char now possible. (Up to now + only names found in the tab file could be used.) + +2016-01-01 + Spaces are now allowed in filenames of .cf, .fp, .lf, .nx, + and .so requests. The documentation stated that %20 could be + used to escape spaces. However this was not implemented. + The implementation has now been changed to allow spaces by + quoting the filename with '"'. Additionally character codes + up to 255 are allowed now in filenames. (Bug reported by + Jacob Parker (https://github.com/jacobp100).) + +2015-12-23 + groff's operator ".if F <font>" added. + +2015-12-18 + Support for groff's notation \[char<n>] added. + +2015-12-10 + File system case-sensitivity issue fixed. (Reported by Henry + McGilton.) + +2015-10-28 + Set previous font to current font in case of unknown font. + This is the groff behaviour. E.g. \fIfoo\fP \f(CWbar\fP blah + did underline "blah" in AT&T nroff. + +2015-09-23 + \n[.ns] implemented (had only been documented up to now). + +2015-09-21 + Basic HTML support added. + +2015-09-18 + Escape \I added (test if argument is a valid identifier). \I + is equivalent to groff's \A. + +2015-07-14 + PDFMark: \X'SetBorderStyle' added. + +2015-07-08 + Special groff compatibility mode for manual pages added which + is enabled when register .g is set to 1. + +2015-06-24 + .box bug fixed: .box did discard part of roff's state. + +2015-06-22 + mm(7): .PGFORM added to allow line length change inside docu- + ment. + +2015-06-10 + .ie-.el bug fixed. Up to now .ie-.el did not work fully re- + liable in AT&T roff. (Found during -mdoc debugging.) + +2015-06-08 + mdoc: Macro Lb with library definitions for FreeBSD and + NetBSD added. + +2015-06-05 + nroff -T37 (default), -Tlp and -Tlocale: Display of pic(7) + drawings implemented. + +2015-06-04 + troff -Tpost: All font description files now uppercase (for + use on case-insensitive file systems) and use of groff font + names instead of traditional names now possible with .ft and + \f. + +2015-05-26 + Bugfix: nroff: Local motions had not been local (did stay in + effect across line boundary). + + nroff: Request \D'l ...' added. + +2015-05-02 + mdoc(7): .El: List type stack bug fixed. + +Release 150406 +============== + +2015-04-02 + Renamed otfdump(1) into otf_info(1) to avoid conflicts with + other tools with the same name. + +2015-03-27 + man, mdoc: Special characters for troff updated. + + Bugfix: pic: C precedence error found by clang. + +2015-03-26 + tbl: Key letter 'x' added (a GNU tbl extension). + +2015-03-22 + mdoc macros updated for troff output. + +2015-03-20 + Workaround to handle some .char problems added. The .char + implementation needs to be changed eventually. Currently the + translation takes place in the input stage but it has to be + in the output stage. + + man macros (nroff mode): + - Allow nine instead of six arguments + - Document formated as one large page + - mandoc(1) output layout (indent, left adjust, line length + etc.) adapted + - Workaround for pod2man(1) bug (causes empty first page) ad- + ded + + Minor mdoc macro changes (indent and some special charac- + ters). + +2015-03-19 + \\ can now be used in fields and tables to output a \ but it + is anyway recommended to use \(rs or at least \e instead. + (Traditionally AT&T roff did reduce \\ to \ in fields and + tables so \\\\ had been need to be input for printing one \.) + + Bugfix: roff: Don't recognize . (dot) as a number. Now a + path string like "./." is recognized as "not a number" in- + stead of "division by zero". + +2015-03-18 + Bugfix: roff: Prevent NULL pointer access when using .tr + with characters redefined by .char. + + Bugfix: tbl: Prevent uninitialized pointer access. + +2015-03-13 + Bugfix: Using basic control character (normally ".") or no- + break control charatcer (normally "'") as first argument to + .char made roff unuseable. + +2015-03-02 + tbl: Option -Tlp configures output of table lines with ASCII + characters -, =, |, and + (similar to GNU nroff -Tascii). + Option -Tlocale in a non-UTF-8 locale now behaves as -Tlp. + + Bugfix: tbl with option -TX: Double lines had not been + displayed correctly. + +2015-02-27 + tbl: Option -Tlocale added which (in an UTF-8 locale) en- + ables output of table lines with Unicode glyphs. + +2015-02-26 + Bugfix: The zero width flag (set e.g. by \z or \L) did not + work for Unicode characters. As a consequence e.g. \L could + not be used width \U'2551' to draw a double vertical line. + +2015-02-18 + Bugfix: When there were several .ft requests to not mounted + fonts in short succession the output was wrong. + +2015-02-12 + Read-only register .S added for DWB compatibility. + +2014-12-23 + mdoc: Footer had not been displayed if page length was + reached. + +Release 141217 +============== + +2014-12-16 + mdoc updated for processing up-to-date manpages. Still much + work needs to be done on mdoc. + + nroff: Special character names of arbitrary length are now + possible. + + nroff: Many special characters to -Tlp and -Tlocale (UTF-8) + added. + +2014-12-15 + nroff: Compiled in "tab.lp" and "tab.utf8" removed. The + "nterm" directory is now required for nroff (at least with + file "tab.lp" or "tab.utf8"). + +2014-12-13 + Macro 'lsm' and number registers 'lsn' and 'lss' added. + +2014-12-05 + Bugfix: .unformat: \e gets restored now. + +2014-11-06 + Distingtion between BSD and non-BSD manuals removed (Anthony + J. Bentley). + + pic, tbl, eqn: Allow whitespace between '.' and PS, PE, PF, + TS, TE, EQ, EN. + +2014-11-05 + With command line option '-rcR=1' -man manpages are displayed + as one large single page. + +Release 141029 +============== + +2014-10-29 + Documentation revised by Pierre-Jean Fichet: doc/fonts/ + changed to use free available OTF fonts. + +2014-10-27 + col(1) bugfix: Avoid to access chars before string. + + troff: fdprintf changed back to libc fprintf. + + troff: 32 bit bug in register and macro allocation fixed + (Bug reported by Anthony J. Bentley). + + nroff/troff made -Wall clean. + +2014-10-22 + OpenSolaris col(1) added. + +2014-10-06 + Drawing of filled polygon (\D'P ...'), filled circle (\D'C + ...') and filled ellipse (\D'E ...') added. + +2014-09-21 + *roff: Option -V for version information added. + +2014-09-14 + Any version of roff (e.g. UNIX V7) does count \} as a macro + argument regarding \n(.$. This makes \n(.$ rather random if + you cannot force users to put \} on a separate line *or* to + put it behind the macro call and substract 1 from \n(.$. To + make \n(.$ meaningful again this bug has been fixed now, i.e. + \} is not considered as a macro argument anymore. + +2014-09-07 + Documentation revised by Pierre-Jean Fichet: doc/just/ and + doc/quickstart/ changed to use free available OTF fonts. + +2014-09-03 + Bug reported by Pierre-Jean Fichet fixed: If character '"' + is used in a .char request it did not work in a .if request + as the string compare delimiter. + +2014-08-28 + Bug reported by Blake McBride fixed: Very old versions of + the mm macros inserted cut marks in the document for + typesetters which had used endless paper rolls. Although + they are only of historical significance they had never been + removed in the Solaris version of mm. They are now switched + of (via .rm )k). + +2014-08-23 + Bugfix by Steffen Nurpmeso: In .rm code a function return + value is unchecked used as a pointer. + +2014-08-20 + eqn(1) did not compile because of bison to BSD yacc differ- + ences. Sorry, had not tested on Linux this time... + +2014-08-18 + Experimental bugfix: When .bp is directly followed by .. and + .bp triggers a macro which calls a macro then document text + is printed at that trap position. This bug is also in other + ditroff derivatives (e.g. DWB and Plan9). It is difficult to + track the bug to it's root cause so it is an experimental fix + at the moment. + +2014-08-17 + \fP after \fS did set the font before the previous font and + not the previous one. + +2014-08-16 + Bug reported by Pierre-Jean Fichet fixed: If character "!" + is used in a .char request it did not work in a .if request + as the NOT operator. + +2014-08-14 + The eqn parser used type int for all token values--even + pointers. This may work fine on 32 bit hardware but causes + problems on 64 bit. A new data type had been introduced to + separate int tokens from pointers. + + Also a bug in the parser regarding movements (e.g. FWD) had + been fixed. + +2014-07-27 + A variable had been initilized after use. This variable + minus a literal value is used as an array index. When data + from the array is read an invalid memory segment is accessed. + This had caused crashes on at least OpenBSD. diff --git a/CHANGES_GR b/CHANGES_GR new file mode 100644 index 000000000000..db46cb0ce5dc --- /dev/null +++ b/CHANGES_GR @@ -0,0 +1,1213 @@ +Release ... +* [nt]roff: Fix the execution order of output line traps to be left-to-right, + and execute them before page traps, as documented (bug report by + Pierre-Jean Fichet). +* troff/dpost: Support for URI links in PDF documents has been added + (contributed by Michael Piotrowski). +* [nt]roff: Hyphenation patterns for Dutch have been added (contributed + by Erwin Koning). +* troff/dpost: "kern" tables in TrueType fonts were indexed wrongly, which + mostly led to missing kerning pairs but might have led to completely wrong + kerning pairs under rare circumstances (patch by Matthew Fischer). +* troff: The ".connectchar" request has been added to customize the set + of characters that are drawn as overlapping with the "\l" function. +* troff: Allow "\~" to shrink, not just to stretch (bugreport by Roy Fisher). +* troff/dpost: Embed TrueType fonts without a PostScript field correctly + (bug reported by FENG Yu Ning). +* troff/dpost: Include the last character in a TrueType "post" 2.0 table + which was previously omitted; same for the last entry of the last subtable + in the "cmap" table (patch by Matthew Fischer). +* troff/dpost: Accept "cmap" entries with Platform ID 3, Encoding ID 0 + (Symbol) as Unicode tables (patch by Matthew Fischer). +* troff/dpost: Handle TrueType fonts with format 12 cmap tables (UCS-4) + (patch by Matthew Fischer). +* troff/dpost: Handle TrueType fonts in which glyphs appear multiple times + in Unicode tables gracefully (bugreport by Matthew Fischer). +* troff/dpost: Handle TrueType files with a unitsPerEm value less than + 1000 ((bugreport by Matthew Fischer). +* troff: Do not apply font-specific character translation inside \D, + which led to wrong output e.g. with \D'l' with an OpenType font with + the small caps feature activated (bug reported by Russ Cox). +* dpost: Fixed the width of the "\(ul" character such that the lines of + wide boxed tables do not stick out at the right end anymore (bugreport + by Roy Fisher). +* troff: The "\X" and "\Y" escape sequences are no longer interpreted + in copy mode, as there is no case when this would be useful, and the + behavior now matches groff and Plan 9 troff (thanks to Russ Cox). +* dpost: Fixed a case in which invalid backslash sequences were generated + when insane sizes appeared in intermediate troff input (bug reported by + Russ Cox). +* refer: The "-p" option now works with files that are not in the + current directory (bug reported by Michael Piotrowski). +* lookbib: This version does not support the "-n" option, which was + described in the BSD-derived manual page (thanks to Michael Piotrowski). +* [nt]roff: Do not go into an infinite loop if a tab character appears in + the arguments to ".warn" (bug reported by Russ Cox). +* [nt]roff: Fixed a possible crash on 64-bit machines due to the choice + of an int for ptrdiff_t in paragraph-at-once justification (Steve Kargl), + and another one in the hyphenation code (Sean Jensen). + +Release 080407 +* [nt]roff: A type definition problem that caused an endless loop on + 64-bit systems has been fixed. +* [nt]roff: The ".warn" request now accepts full numeric expressions + instead of plain numbers only. +* -mg macros: When reading the output of "ls" to emulate ".mso", use + nofill mode to avoid artifacts from paragraph adjustment that cause + the request to fail. +* eqn: Before an equation or binary operator, print a "\|" instead of + a "\^" if the preceding character is italic. The previous behavior + resulted from a too far-reaching change in release 051107. (Bug + reported by Joerg van den Hoff.) +* eqn: Do not displace "hat" and "tilde" horizontally (bug reported by + Joerg van den Hoff). +* eqn: Fixed the types of yylex() and yypv. + +Release 070908 +* troff: The ".hw" request now works correctly for words that contain + ligatures (bug reported by Dirk-Wilhelm Peters). +* troff: Hyphenate correctly when a hyphenation point occurs inside a + ligature that follows a non-ASCII character. Previously, the word was + actually hyphenated too early in this situation (bug reported by + Dirk-Wilhelm Peters). +* troff: Clear the font width cache before mounting a Type 1, TrueType, + or OpenType font. The previous failure to do so could lead to improper + alignment of lines when a font was mounted on the same font position + that was previously used (bug reported by Dirk-Wilhelm Peters). +* [nt]roff: When converting floating point values in exponential notation + (1.234e5 etc.) to integers, apply the exponent before computing the final + position of the decimal point for better rounding behavior (bug reported + by Dirk-Wilhelm Peters). + +Release 070524 +* [nt]roff: Fixed an endless loop that occurred when ".ns" was active at + the end of a document and ".bp" was called from the page trap macro. +* dpost: When including a picture, the PostScript "save" and "restore" + operators are now executed in correct order. Previously, the state + before page initialization was restored before including a picture. + Thus, graphics attributes such as colors were reset to the state + before page initialization, and drawing (as with pic) did not work + afterwards but resulted in a PostScript error. +* [nt]roff: With paragraph-at-once adjustment, if a ".in" was encountered + before any input, its argument was ignored. This lead to zero indent in + combination with the 6h Edition manual page macros, and has been fixed. +* troff: Do not break a line at a zero-width character, as e.g. inside a + "\X'...'" or "\z'...'". +* troff: The ".flig" request can now use the \[] names for ff, ffi, and + ffl ligatures properly, i.e. ".flig R ff \[ff]" works (bug reported by + Sebastian Leusch). +* troff: Pseudo-ligatures for ff, ffi, and ffl are no longer added to fonts + that do not contain the respective base characters. This makes it possible + to use a fallback sequence like ".fallback R XX FF", where XX does not + contain ff ligatures, but FF does, and to get the ligatures from font FF + as expected (bug reported by Sebastian Leusch). +* [nt]roff: Using ".hy" or ".nh" is now effective for the last word of a + "\@{...\@}" inline environment. +* The file "grap.defines" is now installed again; it was omitted in the + previous release. +* When generating a RPM package, install all manual pages into + "/usr/share/man/5man" to avoid conflicts with manual pages of + packages supplied by the distribution default packages. + +Release 070318 +* [nt]roff: The concept of an "inline environment" has been introduced. + An inline environment contains the values of the current point size, the + current font, the current escape character, and other similar parameters. + It can be saved with "\@{" and then restored with "\@}". Unlike the "\s0" + and "\fP" escape sequences, inline environments form a stack. Thus after + executing "\fB...\@{\fR...\@{\fI...\@}...\@}", the current font is "B" + again, while it would be "I" with "\fB...\fR...\fI...\fP...\fP". Inline + environments can be used to represent constructs like "<i>...</i>" in + HTML, which would be translated as "\@{\fI...\@}". +* [nt]roff: A modulo zero operation (N%0) is now ignored and causes a + warning of the "range" type to be issued. It could previously lead to + a core dump because of an arithmetic exception. +* [nt]roff: In paragraph-at-once adjustment mode, ".in" and ".ll", when + invoked from traps, now have a permanent effect; such settings were + previously discarded at the end of the paragraph. What still does not + work is "'in" outside a trap with a value relative to the indent set + inside a trap. +* [nt]roff: An internal problem with paragraph-at-once line breaking mode + has been fixed; it caused a ".in" or ".ll" command to be ignored under + rare circumstances. +* [nt]roff: At the end of input in paragraph-at-once line breaking mode, + make sure that any partial paragraph is flushed before executing other + termination procedures. The previous failure to do so lead to missing + output at the end of the document if it did not fit on the current page. +* troff, dpost: OpenType and TrueType fonts with Unicode platformID cmap + tables are now supported for reading Unicode character mapping tables. + Previously, only Microsoft platformID cmap tables were supported, and + others were ignored. +* troff, dpost: Fixed a null pointer dereference that occurred when an + illegal glyph ID was encountered in the "liga" table of an OpenType + font. +* troff, dpost: Apple TrueType fonts with a "true" header magic are now + actually supported; they could previously only be read by otfdump. +* [nt]roff: ".ev \}" has now been actually fixed (Bugreport by Dirk-Wilhelm + Peters.) +* -man macros: ".P" is now recognized; it is the same as ".PP". +* -man macros: ".I \fR other-args" is not ignored anymore; same for + ".B", ".SM", and ".SB". +* Unix 6th Edition manual macro packages have been added. +* -mandoc macros: Recognize Unix 6th Edition pages. +* showfont.sh: Font file arguments with absolute path names are now + supported. + +Release 070202 +* [nt]roff: The "\J" escape sequence has been introduced to specify a + default line breaking penalty; useful to discourage line breaks within + a person's name or a formula. Relative values in the "\j" sequence now + refer to the default penalty value. +* dpost: A manual page has been added since it has now been released by + Sun under the CDDL license. +* -man macros: The ".TP" macro has been fixed not to spread the initial + string. This is particularly for use in combination with "-mpadj" since + paragraph-at-once line breaking can lead to more spreading in the first + line. +* [nt]roff: Special characters like "\}" do now terminate environment + names in arguments to the ".ev" and ".evc" requests as with other names. + Thus ".ev \}" is no longer misinterpreted as an attempt to change to an + environment named "\}". (Bugreport by Dirk-Wilhelm Peters.) +* dpost: Cast size_t arguments to long for printf (Stefan Tramm). +* The reference manual now uses the free TeX Gyre Termes fonts available + from <http://www.janusz.nowacki.strefa.pl/>. For this and the other + documentation texts, README files have been added to explain which + fonts are needed in order to build them. (Thanks to Werner Lemberg for + notification.) +* Several manual pages have been moved from "BSD Compatibility" to the + standard sections if they had not actually been part of the SVR4 BSD + compatibility package. + +Release 061212 +* [nt]roff: Relative numbers can be used with the ".pshape" request now; + they refer to the preceding indent and line length pair, or, for the + initial pair, to the standard indent and line lenght settings. +* [nt]roff: A warning of the "range" category is now printed when the + indent is set to a value exceeding the line length. +* troff: In ".ad p" mode, when a line break was inserted after an + existing hyphen or em dash, another hyphen was added when the previous + characters formed a kerning pair. This has been fixed. +* troff: In ".ad p" mode, when the character before the first interword + space formed a kerning pair with the space character, the line length + was incorrectly computed, and the line was prolongated by this amount. + This has been fixed. +* troff: The "\{", "\}", and "\x" escape sequences inhibited kerning in + the adjustment computation but not in the output routine, which could + lead to prolongated output lines. They now inhibit kerning completely. +* eqn: Generated equations no longer start with "\x'0'". This allows + kerning with the preceding character in an inline equation. +* nroff: The content of a "\X" function is now ignored (instead of being + printed with zero width). +* nroff: Combining UTF-8 characters are now assumed to have width zero. +* nroff: The ".rd" request has been fixed; it had not been working since + the last release. +* troff: The ".rd" request now accepts locale-dependent input characters. +* [nt]roff: Fixed an error in ".ad p" mode which could lead to core dumps + with ".ev" requests that were not properly paired. +* nroff: Hyphenation of words containing non-ASCII characters now really + works; such characters were erroneously dropped with the last release, + leading to incorrect hyphenations in some cases. +* troff: Use of the "\s+[n]", "\s-[n]", "\s+'n'", or "\s-'n'" escape + sequence forms now leaves the arithmetic unit handling in a clean + state. The previous failure to do so lead to wrong numeric results + under certain circumstances; in particular, it caused the "over" eqn + keyword to produce incorrect output. + +Release 061114 +* [nt]roff: The units "t" (printer's point), "T" (printer's pica), "D" + (Didot point) and "C" (cicero) have been introduced. +* [nt]roff: ".ad p" mode no longer employs a temporary diversion; the + lines are now written directly to the current output level, possibly + interrupted by trap processing. This makes it possible to use "'in" + and ".ll" inside a paragraph, although the line breaking decisions + may be suboptimal in this case. +* [nt]roff: The ".hypp" request now accepts a third argument specifying + a penalty for hyphenating the last word of a paragraph. +* nroff: Characters are now internally stored as 64-bit integers as + in troff. As a consequence, hyphenation of words in international + languages now works if non-ASCII characters are involved. +* [nt]roff: A memory allocation error that could occur with extensive + use of output-line traps has been fixed. +* [nt]roff: A control character written in a diversion is now correctly + interpreted when the diversion is re-read (unless in groff compatibility + mode). This fixes the ".AU" macro of "-mm". +* [nt]roff: The "\R" escape sequence works correctly again; in the last + release, it had inserted the letter "R" into the text. +* [nt]roff: Long names including a string in their name are now handled + correctly, e.g. ".nr x\*yz 1" no longer tries to set the register "x\*y" + to the value "z". +* [nt]roff: Fixed some more memory access problems that had been introduced + with support for local variables. +* [nt]roff: Fixed a non-local goto error that could lead to segmentation + faults with ".ad p" at the end of the input. +* [nt]roff: Fixed a problem in ".bp" that could lead to the page number + being reset to zero in ".ad p" mode. +* [nt]roff: A null pointer dereference in ".ad p" mode that occured when + nofill mode was activated while a partial paragraph was present has been + fixed. +* -ms: The ".IX" index macro now works in ".padj" mode. +* -me: The ".(x" and ".)x" index macros now work in ".padj" mode. +* A "-mpadj" macro set has been added. It simply executes ".do padj" + and is useful to enable paragraph-at-once adjustment from the command + line. + +Release 061106 +* [nt]roff: Support for paragraph-based justification has been added, + enabled with ".ad p". The "Justification in Heirloom Troff" document + has been expanded to cover the new features. +* [nt]roff: The ".hylen" request has been introduced to control the + minimum number of characters a word must contain in order to be subject + to hyphenation. The default is 5 independent of whether the ".hylang" + request is active (in that case, it previously had been 4). +* [nt]roff: The ".pshape" request has been introduced to control the shape + of a paragraph in ".ad p" mode. +* [nt]roff: The ".hypp" request has been introduced to control penalties + of hyphenation points in ".ad p" mode. +* [nt]roff: The ".padj" request has been added; it enables ".ad p" mode + globally in all environments. It is most useful to enable paragraph-at- + once adjustment in existing documents. +* [nt]roff: The "\j" escape sequence has been introduced to specify custom + penalties for line breaks in ".ad p" mode. +* troff: The ".char" request is now able to construct replacements for + otherwise unknown locale-specific characters. +* troff: Fixed a typo in the hyphenation code that could result in the + insertion of a large negative vertical motion in a word containing a + character above Unicode point U+0800. +* troff: Fixed "\H" and "\S" to become effective if positioned directly + after a font change (Bugreport by Dirk-Wilhelm Peters). +* [nt]roff: The ".pull" request (introduced in the previous release) has + been removed again. It is recommended that the traditional approach to + re-divert text is used instead. +* [nt]roff: Fixed an invalid memory access that had been introduced with + local strings in the last release. +* troff: Fixed a segmentation violation if a ligature in a hyphenated + word was not in the current font (Bugreport by Dirk-Wilhelm Peters). +* troff, dpost: Fixed a rounding error when reading TrueType metrics. +* dpost: Fixed a bug introduced with the previous release that caused + PostScript errors on a page following colored text unless the "-e" + option was explicitly specified. +* dpost: Now handles DSC font comments in included PostScript files and + supplies glyph data for them if specified with a troff ".fp" request. +* dpost: Fixed to compile on NetBSD again (Bugreport by Dirk-Wilhelm Peters). +* eqn: Handles fractional point sizes with "size" and "gsize" now. +* tbl: Fixed a segmentation fault with empty tables that occurred due + to the changed memory layout introduced in the last release. +* A "Quickstart Guide" document has been added. It is aimed at people + who know other variants of troff to some extent and want to explore + Heirloom troff. + +Release 061010 +* A simplistic XSLT stylesheet to convert OpenDocument text to troff input + has been added. See the comments in the file "stuff/odt2tr.xsl" for usage + instructions. +* [nt]roff: Local strings and number registers are now supported. They can + be defined using ".lds", ".lnr", and ".lnrf". A local string or register + is visible only in the instance of the macro in which is has been defined + and can then be accessed like a standard global string or register. +* [nt]roff: The ".pull" request has been introduced to print text of a given + height from a diversion and remove it afterwards. +* [nt]roff: The ".writem" request has been added to write the contents of + a string, macro, or diversion to a file stream. +* [nt]roff: The ".dwh" and ".dch" requests have been introduced to allow + multiple diversion traps in the same diversion. +* [nt]roff: The ".trin" (translate but retranslate with ".asciify") and + ".trnt" (translate but not in transparent mode) requests have been added. +* [nt]roff: The "\n[.dilev]" register contains the current diversion level. +* [nt]roff: The "\B" escape sequence (check for valid numerical expression) + is now available in regular mode too, not only in groff compatibility mode. +* troff: The second argument to the ".fkern" request now specifies a minimum + absolute amount for kerning pairs read from font metrics files. Kerning + pairs with smaller adjustments are ignored. +* tbl: Can now optionally use graphic drawing commands (troff "\D") instead + of repeated-character line drawing (troff "\l" and "\L"). The "graphics" + option enables it per table, and the "-g" command line option enables it + globally. +* tbl: The static limits on the number of table lines, columns, and heading + lines have been removed. In effect, all lines of a table are considered + when the column widths are computed, and ".T&" can occur at any line. +* tbl: The "nokeep" option causes tbl not to write a ".ne" command for a + boxed table. +* troff: The CW, CI, CB, and CX fonts no longer substitute the "fi" and "fl" + ligatures with the "devps" device. This is consistent with "devpost". +* [nt]roff: If a word starts with a motion followed by a hyphenation + indicator, such as "\h'1m'\%text" or "\|\%text", hyphenation for the + word is now suppressed, and no hyphen is generated. +* [nt]roff: When text from a diversion is output or rediverted, it is no + longer subject to character translations specified with ".tr" and ".ftr". +* [nt]roff: In groff compatibility mode, unless a string is interpolated + with explicit arguments, the arguments to the surrounding macro instance + remain visible and can be referenced by "\$" from within the string. +* [nt]roff: The ".length" and ".index" request now strip an initial """ in + their last argument to allow initial white space. +* [nt]roff: The blank line macro is not called when a diversion is reread + in nofill mode anymore. +* troff: The escape sequence "\s[0]" now resets the point size to the + previous value as "\s0" does. +* [nt]roff: Arbitrary delimiters are now allowed with "\s''" escape + sequences. +* [nt]roff: Fixed a bug that caused ".shift" without arguments to be ignored + if the last previous numerical expression was invalid. +* troff: The indent of the current line is no longer part of a PDF link + that continues from the previous line. +* [nt]roff: ".rm" and ".rr" no longer issue a warning if one of their + arguments is not a defined macro or register, respectively. +* troff: Fixed an error that sometimes caused the "x X Track" command to miss + in intermediate output. +* troff, dpost: The short font name is now part of the "x font" commands + in intermediate output for Type 1, TrueType, and OpenType fonts. +* troff: Before generating an "x X" command because of a "\X" or "\Y" escape + sequence, the current horizonal position is now emitted to intermediate + output. This makes input like "\h'1i'\X'anything'" work as expected. +* troff: Changes between environments with different ".ss" settings are now + handled correctly. +* dpost: The default encoding for the "ps" device is now "3". +* dpost: The PostScript "awidthshow" operator is now used with the "-e2" and + "-e3" encoding options, resulting in reasonable output in combination with + the ".track" request. +* dpost: With the "-e2" and "-e3" encoding options, use only word spaces as + indicated by troff for the "widthshow" PostScript operator. This usually + results in slightly larger PostScript output but is better encodable when + distilled to PDF so that PDF files become smaller. +* troff: An internal character width caching error has been fixed; it could + lead to misaligned characters when setting text in fonts containing more + than 400 characters. +* troff, dpost: Can now handle fonts with up to 65534 characters. +* eqn: Avoid to recognize delimiters inside troff escape sequences with "(" + or "[" as well as directly behind a sequence of backslash characters. +* -mm macros: Fixed a bug which caused .ML output to disappear unless in + troff -x0 mode. + +Release 060905 +* [nt]roff: The new ".brnl" request causes a break each time a newline is + encountered at the end of a text input line. Unlike nofill mode, text is + still wrapped to the line length. +* [nt]roff: The new ".brpnl" request causes a break and a spread each time + a newline is encountered at the end of a text input line (as if it were + attached a "\p"). The "\p" escape sequence changes its semantics in this + mode and causes a break without a spread. +* [nt]roff: The new ".lpfx" request allows to print a string whenever + a new output line is started. This is mainly useful to implement a + historic form of block quotation. +* [nt]roff: The predefined number registers "\n[.in]", "\n[.hy]", + "\n[.int]", "\n[.lt]", "\n[.pn]", "\n[.psr]", and "\n[.sr]" have been + added. +* [nt]roff: The semantics of the number registers "\n(.x" (remaining space + on current output line) and "\n(.y" (current actual indent) are now + documented. +* [nt]roff: The "\n[.kc]" register has been introduced; it holds the width + of a word interrupted with "\c" on output. +* [nt]roff: Control and escape characters written in a diversion are now + regular characters in groff compatibility mode. +* [nt]roff: It is not a fatal error if the file specified with ".so" is not + accessible in groff compatibility mode. +* [nt]roff: The value of the "\n(.k" register is computed differently in + groff compability mode now. +* [nt]roff: The -mg macros now provide the fonts "C" and "CR". +* [nt]roff: The -mg macros now provide an emulation of the ".mso" request. +* [nt]roff: The command line options "-ds=x" and "-ra=N" are now accepted, + thus the string or register name before "=" can consist of more than one + character. +* [nt]roff: The ".rd" request now works again; it caused a segmentation + fault since several releases. +* [nt]roff: Formatting of a ".char" object immediately before a trap is + executed no longer causes pending input text to disappear (bug reported + by Sebastian Leusch). +* troff: The escape sequence form "\s[+-]'n'" now works with fractional + point sizes. +* troff: With xflag 0, fractional parts and units are now ignored with + the ".ps" command. +* [nt]roff: With xflag 0, ".if !..." works correctly again. +* [nt]roff: When copying text to a macro, if a line appeared that was a + prefix of the terminating macro, its last character was copied twice + (e.g. "..." with the standard ".." was copied as "...."). This has been + fixed. +* -me macros: The macros now work with xflag > 0. +* [nt]roff: The distance to the next trap, and, accordingly, the "\n(.t" + register, can now be larger than the maximum allowed motion with "\h" + and "\v". This allows very long pages without a "trap botch" error, + although vertical motions on such pages may require multiple "\v" + commands. +* [nt]roff: Fixed a reallocation problem that caused segmentation faults + with some compilers. +* [nt]roff: Fixed the "-u" option not to cause a segmentation fault. +* [nt]roff: The "\n(.S" predefined number register has been removed again + since it conflicts with use of this name by "dot -Tpic". (The "\n[.tabs]" + register continues to be available with the same semantics.) +* troff: There is now a "lc_ctype" keyword in the DESC file for the sake + of legacy post-processors that do not understand "x X LC_CTYPE". +* dpost: Use the device given by "x T" in intermediate language for reading + font files only if its name starts with "ps" or if it has the "afmfonts" + keyword in its DESC file; otherwise use "devpost". +* tbl: The forms "f (X)", "w (x)", and "fX." are now accepted in column + specifications. + +Release 060813 +* [nt]roff: A new type of traps is available: output-line traps. They are + set with the new "\P" escape sequence and are invoked when the line that + contains the corresponding sequence has been output. +* [nt]roff: The ".index" request has been added to determine the position + of a string within a string or macro. +* [nt]roff: Floating-point registers have been introduced; they can be + created and modified with the ".nrf" request and are otherwise like + standard integer number registers, with which they share a common name + space. +* [nt]roff: The ".if f expr" condition has been introduced to evaluate + an expression with floating-point computation. +* [nt]roff: Exponential notation, as in "1e+10", is now supported in + numerical expressions. +* [nt]roff: Debugging requests for watching macros, strings, and number + registers have been added. +* [nt]roff: The ".errprint" request has been added to write custom strings + in the same format as internal error messages. +* [nt]roff: The ".cp" request has been added to control compatibility with + groff. +* [nt]roff: The "-mg" macro package has been added for improved support of + groff documents, preprocessors, and macro sets. +* [nt]roff: The ".while", ".break", and ".continue" requests have been + added as another method to process input repeatedly. +* [nt]roff: Space characters inside parentheses in numerical expressions + are now permissible, i.e. they are discarded and do not terminate the + expression. +* [nt]roff: The ".char", ".fchar", and ".rchar" requests have been added + to transform a single input character to multiple output characters. +* [nt]roff: The ".ecs" and ".ecr" requests have been added to save and + restore the escape character. +* [nt]roff: The ".shc" request has been added to set the soft hyphen + character. +* [nt]roff: The ".hcode" request has been added to specify character + mappings for hyphenation purposes. +* [nt]roff: The sets of sentence-ending and transparent characters are + now configurable with the ".sentchar" and ".transchar" requests. +* [nt]roff: The set of optional line break characters (normally hyphen + and em dash) is now configurable with the ".breakchar" request. +* [nt]roff: The ".nhychar" request defines a set of hyphenation- + inhibiting characters (as hyphen and em dash with traditional troff + hyphenation). +* troff: The second argument to the ".ss" request now actually sets the + size of the sentence-end space instead of just switching it on or off. +* [nt]roff: The ".unformat" and ".asciify" requests have been added to + remove the effects of adjustment, and font and point size information, + respectively, from a diversion. +* [nt]roff: The "\Z'string'" escape sequence (print string and restore + the position afterwards) has been introduced. +* [nt]roff: The ".als" request has been added to create an alias name + for a request, macro, or string. +* [nt]roff: The ".aln" request has been added to create an alias name + for a number register. +* [nt]roff: The ".rnn" request has been added to rename a number register. +* [nt]roff: The ".box" request has been added; it is like ".di" but saves + and restores a previous partially filled line. +* [nt]roff: The ".spacewidth" request has been introduced to default to + the width of the space character as obtained from the font metrics file. +* [nt]roff: The ".rj" request (right-align next input lines) has been + added. The ".rj" number register that holds the number of remaining + lines to be right-adjusted has been added. +* [nt]roff: The ".ce" number register that holds the number of remaining + lines to be centered with the ".ce" request has been added. +* troff: The "\Yx", "\Y(xx", or "\Y[xxx]" escape sequence has been added + to output the contents of the string or macro x, xx, or xxx, respectively, + as a device control function. +* [nt]roff: The "\$0" escape sequence has been added to refer to the name + of the current macro or string. +* [nt]roff: The "(c;e)" numerical expression function has been added to + evaluate "e" using "c" as default scale indicator. +* [nt]roff: The "M" (Em/100), "s" (= "u"), and "z" (= "p") scale indicators + have been added. +* [nt]roff: The ".ta T Nt Mu" syntax to set tab stops repeatedly is now + supported. +* [nt]roff: The "\n(.S" and "\n[.tabs]" registers have been added to save + and restore tab stops. +* [nt]roff: The "\n[.ev]" number register has been added as a method to + determine the name of the current environment. +* troff: The "\n[rst]" and "\n[rsb]" registers are set by the width function + to the highest and lowest extent of the bounding box of any character. + This currently only works for Type 1 and TrueType fonts. +* troff: The "\n[.cht]" and "\n[.cdp]" registers are set to the highest + and lowest extent of the bounding box of the previous character. This + currently only works for Type 1 and TrueType fonts. +* [nt]roff: In extension level 1, long string "\*[xxx]", register "\n[xxx]", + and font "\f[xxx]" names are no longer recognized unless they are on a + line beginning with the ".do" request. +* [nt]roff: The "\n[.ps]" number register, which holds the current font + size in device units, has been added. +* [nt]roff: The "\E" escape sequence has been fixed; it does not resolve + to a printable but to an effective escape character now. +* [nt]roff: The "\)" escape sequence (like "\&" but transparent for + sentence ending) has been added. +* [nt]roff: Static limits on word and line size have been eliminated. +* [nt]roff: The "\{", "\}", "\&", "\%", "\c", and "\(space)" escape + sequences terminate two-character request names now. +* [nt]roff: The ".tm" and ".write" commands now discard formatted motion + sequences. +* troff: The ".psbb" request now reads a "%%HiResBoundingBox" DSC comment + in preference to "%%BoundingBox"; the registers it assigns to are now + floating-point registers. +* troff: The ".psbb" request now properly supports the "(atend)" syntax in + PostScript DSC input files. +* nroff: The ".psbb" request has been made a no-op since nroff cannot + otherwise handle EPS documents anyway. +* [nt]roff: The "right-brace" warning category has been added. +* [nt]roff: Calls of ".vs" that result in negative numbers are now + ignored. +* [nt]roff: The width function "\w" now takes pairwise kerning into + account. +* [nt]roff: The ".return" request has been fixed not to ignore the next + line of input when followed by text on the same line. +* [nt]roff: The second argument of the ".ss" request now also applies + to sequences of space characters that follow a sentence end character. +* [nt]roff: The "\k[name]" escape sequence has been fixed to work if + "name" has not been previously been used. +* [nt]roff: The "\(dq" character has been introduced as an alternate name + for the ASCII double quote character. +* dpost: Character height and slant changes now only apply to the current + font as documented. +* tbl: When ending macros in generated code, ".00" is now used instead + of "..". This allows the use of ".ig" and similar requests within "T{" + etc. without interference. +* pic: Accept "{lower|upper} {left|right} of" as aliases for ".nw", ".sw", + ".ne", and ".se". +* pic: Continued newlines in expressions like "center \<newline>of" are + now accepted. + +Release 060716 +* troff: The ".letadj" request has been added to enable dynamic letter + spacing and letter reshaping when justifying lines. +* troff: Font and size attributes of space (and newline) characters in + input are now honored for computing widths and kerning pairs. Previously, + font and size of space characters were always that of the next printable + character; this is retained with the -x0 option. This means that e.g. in + "\f(CWabc \fRdef", the size of the space is now computed from the + constant width font instead of the roman font. +* [nt]roff, dpost, daps: The character name "\(rs" for backslash has been + introduced. +* nroff: "\[xx]" and "\C'xx'" result in the same character as "\(xx" now. +* [nt]roff: The ".nx" request now works again, it previously caused + a segmentation fault because of a null pointer dereference (bug + reported by Michael Hobgood). +* [nt]roff: With the ".hylang" request, words that consist of four + characters are now subject to hyphenation (with the traditional + hyphenation, five characters are the minimum length). +* [nt]roff: The ".hy" request accepts the additional flags 16 and 32 that + allow the last or first character of a word, respectively, to be split + off. +* troff: Giving no arguments to ".minss" now deactivates this mechanism. +* troff: ".minss" now has no effect unless in ".ad b" mode as documented. +* [nt]roff: The ".ss", ".sss", ".minss", ".lspmin", ".letss", ".lspmax", + ".lshmin", ".lshmax", ".lc_ctype", ".hylang", and ".fzoom" number + registers have been added to retrieve the current values set with the + respective requests. +* [nt]roff: The forms "\s+-'dd'", "\s+-[dd]", and "\s[+-dd]" of the size + change escape sequence are now understood. +* [nt]roff: The ".nop text" request (use text as input) has been added. +* [nt]roff: The escape sequence "\R'R +-N'" to set the value of a number + register has been added. +* [nt]roff: String references now accept arguments with the \*[xx arg ...] + escape sequence. +* [nt]roff: The ".blm xx" request has been added, it causes ".xx" to be + called whenever a blank line is encountered. +* [nt]roff: The ".itc" request (input trap not counting "\c") has been + added. +* [nt]roff: The ".hlm" request and the ".hln" and ".hlc" number registers + have been added to control the maximum number of consecutive hyphenated + lines. +* [nt]roff: The "\#" escape sequence (comment including newline) has been + added. +* [nt]roff: With xflag 3 and warning "mac" deactivated, if ".xx" was a + defined request and ".xxx" was not, ".xx" was executed for ".xxx". +* [nt]roff: Several segmentation violations that occurred with arbitrary + binary data as input have been fixed. +* troff, dpost, otfdump: The operator 12 in CFF Top DICT entries was not + handled correctly, resulting in misleading error messages with some + OpenType fonts. This has been fixed (bug reported by D. Jeff Dionne). + +Release 060619 +* troff: The ".minss" request has been added. It allows troff to decrease + the size of the word space below the value set by ".ss" when adjusting + lines at both margins. +* troff: The ".kernpair", ".kernafter", ".kernbefore", ".lhang", and + ".rhang" requests now also accept groups of characters to which the + same kerning/hanging value is applied. +* [nt]roff: It is now possible to use strings inside macros names (e.g. + ".xx\*(yy" as documented. +* [nt]roff: The ".if d", ".if n", and ".rr" requests erroneously applied + to a shorter two-character name if an undefined longer name was given + as an argument; this has been fixed. +* troff: The ".fkern" request now properly refers to a single mounted + instance of a font; it previously affected all mounted instances of + one font metrics file. +* troff: Character replacements with ".tr" where the target character + does not originate from the current font but is found in the fallback + sequence are now performed correctly. Previously, an invalid heap + access could occur, resulting in the choice of random characters. +* troff: Margin characters set with ".mc" are now correctly placed in + combination with hanging characters set with ".rhang". +* [nt]roff: It is legal to call ".it" or ".dt" without arguments, thus + a warning is no longer issued in this case. +* troff: Selecting one of the base fonts with ".ft" without a previous + ".fp" works again; it was broken in the last release. + +Release 060430 +* troff/dpost: Links and anchors in PDF documents can now be defined; + "\A" and "\T" escape sequences have been introduced for this. +* [nt]roff: Tail-recursion elimination for macro calls has been added. + This allows recursive macro calls of arbitrary depths when the call + to itself occurs in the last line of the macro. +* troff: The ".fkern" request has been introduced to disable the use of + the kerning tables of specific fonts. +* [nt]roff: The "\V" escape sequence has been introduced; it prints the + value of an environment variable. +* troff: An explicit "N" font register argument to the ".fp" request may + now be an arbitrary number between 1 and 255. +* troff: The "\n[.fp]" number register has been introduced to make it + possible to determine the next unused font register. +* [nt]roff: The "-daS" command line option has been added to define the + string "a" to "S". +* [nt]roff: The ".output" request has been added to write a command to + intermediate output regardless of whether there is a current diversion + or not (unlike "\!"). +* [nt]roff: A warning is now issued when a non-ASCII byte is found in + a name (of a request, number register, etc.) with the "input" warning + category. +* [nt]roff: Long request names as second arguments to macro definitions + (as in ".de xx longname") are now handled correctly. +* [nt]roff: The ".close" request has been fixed; repeated calls to it + could previously result in lost file stream descriptors. +* troff, otfdump, dpost: The end of floating point values in CFF data is + now properly recognized; the previous failure to do so could result in + errors like "invalid operand b0 range 255" with valid OpenType fonts. +* troff: In TrueType fonts with version 3.0 "post" tables, characters that + lack a Unicode mapping can now be accessed as "\[index0xN]". +* [nt]roff: The need for the sbrk() system call has been eliminated; the + regular system malloc() is now used. + +Release 060409 +* dpost: An error that could lead to invalid PostScript output when the + last character of a long output string sequence was a backslash has + been fixed. +* troff: The ".flig" request has been enhanced to enable the definition + of arbitrary font-specific ligatures, e.g. ".flig R Th \[T_h]" could + be used for a "Th" ligature. The previous syntax is still accepted. +* troff: If a hyphentation point occurs within an automatically created + ligature, the ligature is now split into its parts. +* troff: The "\;" escape sequence has been introduced as a ligature + suppressor without other side-effects. +* troff: The ".fdeferlig" request has been introduced. It defers building + of a ligature by one character, e.g. if both "ff" and "fi" are defined + as ligatures and "ffi" appears in input, a single "f" followed by the + "fi" ligature can be constructed instead of a "ff" ligature followed by + a single "i". +* [nt]roff: The hyphenation language as set by the ".hylang" request is + now specific to the current environment. +* [nt]roff: The ".substring" and ".length" requests have been added to + replace a string by a substring of it and to determine the length of + a string, respectively. +* troff: No longer prints a warning when a font selected with ".ft" is + not currently mounted but can be mounted in position 0. +* nroff: No longer prints a warning when a font is selected with ".ft". +* nroff: Multibyte characters are now emboldened correctly. Previously, + the number of backspace characters output corresponded to the length + of the multibyte sequence instead of the column width of the character + (bug reported by Alexander E. Patrakov). +* dpost: The line width for drawing has been fixed; previously, lines + were 100 times too slim with the "ps" device. +* troff: The "\C'xxx'" escape sequence is now available; it selects a + named character with the same effect as "\[xxx]". + +Release 060321 +* An revised version of the "Nroff/Troff User's Manual" is now available + in the directory "doc/troff". It replaces the "NEWS" and "PDFS" text + files; these have been removed. +* A typeset version of "Font Handling in Troff With PostScript Devices" + is now available in the directory "doc/fonts". It replaces the "FONTS" + text file that has been removed. +* [nt]roff: Hyphenation is now enabled by default. This is compatible + with most other versions of troff, but differs from Solaris troff. +* troff/dpost: The characters \(or \- \` \' " # < > @ \ ^ ~ are now + taken from the current font instead of the special font by default + if possible with the "ps" and "psmed" devices. The new DESC keyword + "allpunct" controls this. +* troff: Kerning pairs from font metrics files that include "\[name]" + characters now work correctly; they could previously apply to wrong + characters with font files containing more than 260 characters, and + were ineffective with smaller ones. +* troff: OpenType and TrueType kerning pairs with a position difference + of zero are now completely ignored. They could previously overwrite a + previous positioning difference for the same pair. Also if a kerning + pair occurs more than once in the metrics file, the first definition + read is now used instead of the last one. +* troff: In an OpenType font, if a kerning pair occurs in both a "Pair + Positioning Adjustment" format 1 (kerning by specific glyphs) and a + format 2 (kerning by glyph classes) table, the format 1 definition + is now always used. +* tbl: Storage space expansions because of long lines inside a table are + now done properly. +* troff: The "\n[.ascender]" and "\n[.descender]" registers contain the + typical extents of the current font above and below the base line, + scaled to the current point size. +* troff: Zero-width space characters are no longer considered word space + when a line is justified. This fixes "\X" device control functions in + diversions. +* dpost: The metrics of the underscore character in the PostScript Symbol + font (which is mapped to "\(ul" and is used to draw horizontal lines) + are now dynamically adjusted in the generated PostScript code. This + works around varying metrics of this character in different versions + of the Symbol font. Note that this does not work in PDF unless the + font is embedded at the time the document is distilled. +* dpost: The "\(sq" glyph is now filled in any font with a "Weight" entry + of "Bold", "Ultra", or "Heavy". +* dpost: The "post" device works again; dpost previously crashed with a + null pointer dereference when it was used. +* troff/dpost: EPS files that contain carriage-return characters as + newline indicators are now correctly handled with the ".psbb" request + and the picture inclusion mechanism. +* [nt]roff: The "\(.z" number register handles diversion names longer + than two characters properly now. +* [nt]roff: Requests like ".bd" or ".kernpair" now warn when an invalid + font name is given. +* [nt]roff: No "illegal number" warning is printed anymore when a "\}" is + found as part of a possibly numeric argument, as in e.g. ".bp \}". +* [nt]roff: The ".mc" request does not require an argument so no warning + is printed if it is given none. +* dpost: When a PDFMark Bookmark command is issued at the beginning of + a page of intermediate output before any text has been printed, the + value "4" is now substracted automatically to make the PDF viewer + show the whole page top including margin. +* -mm macros: An error that was introduced when the macros were converted + to use spaces between a request name and its arguments has been fixed. + It sometimes caused the page offset to be wrong. + +Release 060221 +* [nt]roff: With the ".hylang" request, the individual parts of words + composed by "-" or "\(em" characters are now subject to hyphenation. +* troff: The ".fspacewidth" request has been introduced to set the width + of the space character of a font. +* troff: For monospaced fonts, the space width is now set to the size of + the "space" character in the AFM/TrueType/OpenType font metrics. This + matches the traditional behavior of the "post" device with the "Courier" + font, but was previously not done for "ps", which led to incorrect + formatting. +* troff: Non-ASCII small characters were erroneously mapped to uppercase + input characters. They are now mapped to lowercase input characters as + it is done for ASCII characters. +* troff: When a regular font was chosen as fallback for an expert font, + non-ASCII characters were selected from the regular font even if a + matching character in the expert font existed. +* [nt]roff: Additional conditions are available with ".if": "c" to test + for a glyph in the current font, "d" to test for the existence of a + macro, and "r" to test for the existence of a number register. +* [nt]roff: Three additional operators for numeric expressions are + available: "<>" (not equal), "<?" (minimum), and ">?" (maximum). +* [nt]roff: The input line number is now adjusted at a different place, + fixing many glitches which previously caused it to be wrong. +* tbl: The ".lf" troff request is now used internally to adjust troff's + idea of the current input file and line number, making troff warnings + more helpful. +* tbl: The ".warn" troff request is now used internally to save, disable, + and restore warning messages around those portions of tbl output which + use potentially undefined requests or registers. +* pic: The comments before ".PS" containing bounding box information are + now prefixed by '.\"' instead of '...' for compatibility with ".warn". +* [nt]roff: The "\n[.warn]" number register is now properly changed after + a call to ".warn" with no arguments. +* pic/dpost: The PostScript implementation of the "Dl" (draw line) + operation now rounds the current point to the troff device resolution + when testing for equality. This is another fix for "box fill 0" in pic. +* troff/dpost: A "x X LC_CTYPE localename" device command has been added. + This ensures that troff and dpost use the same locale for generating + PDF bookmark entries. +* dpost: CFF font data is now ASCII hex encoded in PostScript output. + +Release 060208 +* troff: Eastern European characters for Unicode/PostScript conversion + have been added (patch by Vladimir B. Machulsky). +* troff, dpost: Font file names can now contain spaces or bytes outside + the ASCII range. A "%xx" escape sequence, where "xx" are hexadecimal + digits, has been introduced in order to achieve this. The description + of ".fp" in the "NEWS" file contains details on this. +* [nt]roff: The ".vpt" request has been added to make it possible to + disable vertical position traps. +* dpost: With the ".track" command, the tracking amount was not properly + initialized at every page of PostScript output. This could result in + incorrect arrangements of characters. +* [nt]roff: Diagnostic messages now include the number of the current + output page. +* [nt]roff: Page breaks inside a diversion are now properly ignored. +* dpost: When a font was mounted replacing another font on the same + physical position, non-ASCII characters were not printed correctly + afterwards (bug reported by Vladimir B. Machulsky). +* dpost: The BookMark device command now causes "/XYZ" destination keys + to be written to PDF documents. This has the effect that the current + zoom factor is retained when a bookmark is selected. +* pic, grap: Fixed 8-bit input in label texts (bug reported by Vladimir + B. Machulsky). +* troff: The ".trimat", ".bleedat", and ".cropat" requests caused some + following requests (e.g. ".fp") to fail because of an improper reset + of number scaling (bug reported by Sebastian Leusch). +* troff: If the "\~" character appeared as part of the first word of + a line not immediately following a break, the current line and the + line before it were not justified correctly (bug reported by + Christian Schaper). +* [nt]roff: The ".spreadwarn" request was wrongly called ".spreadlimit" + in the NEWS file. + +Release 060114 +* troff: The internal codes for PostScript characters are now unique across + all fonts. In effect, requests like ".tr" or ".lc" now handle arbitrary + characters correctly, including locale-dependent ones. +* [nt]roff: The ".mk" request now accepts long register names. +* [nt]roff: Using ".wh" with an undefined long macro name now works as with + undefined short names; the macro is executed once it has been created. +* troff/dpost: PostScript characters are now passed as "CPSname" in the + intermediate output (instead of "Nnnn"). +* troff/dpost/otfdump: Apple TrueType fonts with a "true" header magic can + now be read (thanks to Stefan Tramm). +* troff/dpost/otfdump: TrueType handling has been made more robust against + an error in Microsoft/Unicode "cmap" subtables. +* dpost: Error messages now include the number of the current output page. +* dpost: Color bars can now be generated with "-M colorbars", star targets + with "-M startargets", and all marks are enabled with "-M all". +* dpost: The ".mediasize" request now also causes a "%%DocumentMedia:" DSC + comment to be written. This enables some PostScript previewer programs + to determine the document size. +* troff: On a font mounted with ".fps punct", the "\(en" character is now + available as expected. +* pic/dpost: The PostScript implementation of the "Dl" (draw line) + operation has been fixed to move to the beginning of the line properly + even when "inpath" is set. This fixes "box fill 0" for pic. +* dpost: The geometry setup for drawing commands is now executed in the + setup section for each page. This makes pic work with filters that + re-arrange pages in PostScript. + +Release 051227 +* [nt]roff: A new extension level "3" is available. In this level, undefined + long requests whose first two characters form an existing short request + are ignored instead of being interpreted as short requests. Also string + and number register references are interpreted at any position of a + long request name in this level. +* troff: Unicode mapping tables from OpenType and TrueType fonts are now + used for converting input characters. +* troff: Locale-dependent input characters for which no matching glyph can + be found are now replaced by spaces. +* troff: The ".fps" request has been introduced to map troff special + characters like "\(*a" or "\(+-" to a custom font. +* [nt]roff: The warning category "missing" is now available; it includes + warnings about missing required arguments to requests. +* [nt]roff: The warning category "delim" is now available; it includes + warnings about missing delimiters to escape sequences. +* troff: The ".trimat", ".bleedat, and ".cropat" " requests have been added + to include advice about the "TrimBox", "BleedBox", and "CropBox" page + parameters to a PDF distiller command, particularly for PDF/X generation. +* dpost: The "-M" option has been added. It can be used to print cut marks + ("-M cut"), registration marks ("-M registration"), or both cut marks and + registration marks ("-M cut:registration") in combination with the + ".trimat" troff request. +* [nt]roff: The ".af" request now handles long register names correctly. +* troff: Kerning now works correctly in combination with leaders and + fields. +* troff: The ".tm" and ".write" requests now correctly handle locale- + dependent input characters as well as one-character escape sequences + that are interpreted in copy mode such as "\&". +* [nt]roff: The "-msafe" macro now correctly removes the ".do pso", + ".do open", and ".do opena" requests in -x1 (default) mode. They + were previously removed in -x2 mode only. + +Release 051212 +* [nt]roff: The ".pso" request has been added; it reads the output of + a command as input to troff. +* [nt]roff: The ".tmc" request has been added; it works like ".tm" but + does not terminate the message with a newline. +* [nt]roff: The ".open", ".opena", ".write", ".writec", and ".close" + requests have been added. They work like ".tm" but write to a named + file. +* [nt]roff: The ".warn" request has been added; it enables additional + warning messages. The "\n[.warn]" register prints bits representing + the warning categories that are currently enabled. +* [nt]roff: The ".spreadlimit" request has been added; it can be used + to print a warning when the adjustment computed for an output line + exceeds a certain value. +* [nt]roff: The ".mediasize" request has been added; it causes dpost to + specify the page size using the PostScript "setpagedevice" operator. + This is mainly useful for creating PDF documents. +* [nt]roff: The "\n[hours]", "\n[minutes]", "\n[seconds]", and "\n[year]" + registers have been added to print more parts of the current time. +* [nr]roff: Availability of extensions is now controlled using an "-xN" + option, where "N" is the extension level. The previous "-x" and "-X" + options are still accepted. +* [nt]roff: A "-msafe" macro package has been added; it disables those + requests that allow to execute commands or to write to files. It is + mainly useful for viewing manual pages. +* pic: An "-S" option has been added to disable the "sh" element. +* grap: An "-S" option has been added to disable the "sh" command. +* nroff: Recognize the "\s'n'" escape sequence and discard it for + compatibility with troff. +* dpost: When writing Type 42 fonts, write the sfnts array in a different + order to avoid an error with Acrobat Distiller. + +Release 051202 +* [nt]roff: When text is written to a diversion in nofill mode, spacing + characters are preserved. This allows the text in the diversion to be + adjusted later when it is actually printed. The "-X" option disables + the new behavior. +* [nt]roff: The static limit on the number of if-else constructs has + been removed. +* [nt]roff: The static limit on the number of nested diversions has been + removed. +* [nt]roff: A maximum of 2000 characters (bytes) is now allowed as the + total of all arguments to a macro. +* dpost: The inclusion of PostScript pictures has been fixed; it could + generate invalid PostScript programs since release 051025 under certain + circumstances. +* dpost: A "x X PSSetup" device request to support a "\X'PSSetup: ...'" + escape sequence has been added. It can be used to include arbitrary + PostScript code in the setup section of the output file. +* dpost/troff -mcolor: CMYK colors and arbitrary PostScript color spaces + can now be used. The "setcolor" procedure in "color.ps" has been renamed + to "_setcolor" in order to make this possible. +* [nt]roff: A ".psbb" command is now available to retrieve the bounding box + of a PostScript document (particularly of an EPS image). +* dpost: DSC comments of included EPS images are now preserved. +* dpost: PostScript pictures that contain binary data can be included now. +* pic: Troff commands that begin with a "'" are now passed through. +* grap: Negative zeros in coordinate tick labels are now avoided. +* -man macros: Fixed the output of a very long line following ".TP". +* -mdoc macros: Changed the names of Courier fonts to \f(CW \f(CI to + match those of troff. +* RPM package builds now require the new "Heirloom Development Tools" + package from <http://heirloom.sourceforge.net/devtools.html> to be + installed. + +Release 051107 +* The "checknr" utility has been added from OpenSolaris source code. +* The "ptx" utility has been added from Unix 7th Edition source code. +* When a locale-dependent or font-specific character was used directly + after a macro that ended with a font switch, it was chosen from the + old font. This has been fixed. +* The ".hidechar" request now works correctly if the selected font is + not the current font. +* eqn: More narrow spaces are inserted at some roman/italic font changes + now to better match the appearance of the current fonts. +* grap: The file "grap.defines" has been moved to $(LIBDIR). + +Release 051031 +* The "-mpm" macros and the "pm" program have been added from Plan 9 source + code. They form a "-ms"-like package for vertical justification; the file + "mpm/README" explains some details. +* eqn: The generated troff program is now resolution-independent; the "-r" + option is no longer needed and is ignored. +* dpost: The elements of overbars, brackets, and braces align better now, in + particular in respect to documents distilled by Ghostscript. +* In the "man" macro package, ".B" and similar font change macros now accept + more than six arguments. +* tbl: The maximum length for "w(...)" width specifications has been raised + from 10 to 100. +* The "make install" procedures of refer and vgrind have been fixed to work + with RPM and similar package builds. + +Release 051025 +* The "pic" and "grap" utilities have been added from Plan 9 sources. +* The "vgrind" utility has been added from OpenSolaris sources. +* "refer" and related utilites have been added from OpenSolaris sources. +* [nt]roff: The new ".recursionlimit" request allows to change the maximum + permitted recursion depth for macro invocations from the default 512. + +Release 051015 +* troff, dpost, otfdump: Handle TrueType files with version 3.0 "post" table + and no Microsoft/Unicode "cmap" subtable. +* otfdump: Kerning information was omitted for all but the first font when + multiple font file arguments were given. This has been fixed. +* troff: Fonts that contain possible ligatures (fi, fl, etc.) in their file + names are now mounted correctly. +* dpost: Allow only the glyph at position 0 to be named ".notdef" when + generating Type 42 font data. +* dpost: No longer leaves a stale temporary file in /var/tmp. +* tbl: Inspects the first 4000 rows of a table now (instead of the first 200) + in order to determine column widths and "T{" blocks. +* tbl: Can handle more than 62 "T{" blocks per table now. + +Release 051011 +* troff/dpost: Support for OpenType fonts has been added. This includes + support for CFF-based (PostScript) OpenType fonts as well as support for + most TrueType fonts. +* otfdump: New utility that prints the contents of an OpenType font file in + an ASCII format just as troff interprets it. +* troff: A ".ftr" request has been introduced as a font-specific variant of + the ".tr" request. +* troff: A ".feature" request has been introduced to access special features + of OpenType fonts. +* troff: Kerning is now applied to pairs of characters that originate from + the same font mounted at two different positions. +* dpost: Can now access all characters in a large PostScript font, not only + the first 255. +* dpost: If the data in a PFB file to be included does not end with a + newline character, add one to the generated PostScript to achieve a + consistent DSC structure (Bugreport by Sebastian Leusch). +* dpost: The limit of characters with "x X" commands has been raised from + 50 to 4096. This in particular allows to supply fonts with long path + names. +* The "-mcolor" macros have been added from Plan 9 sources. + +Release 050920 +* troff: The handling of locale-dependent characters in copy mode has been + fixed. Previously when such a character was given e.g. in an argument to + a macro, it was chosen from the font in effect at the time when the macro + call was read, instead of the one in effect at the time when the macro + was executed. +* troff: The lookup of kerning pairs from the predefined tables has been + fixed. It previously located inappropriate pairs in some cases. +* troff: Is now more resistent against invalid AFM files whose character + count following the "StartCharMetrics" keyword is too large. Previously, + no characters outside the default troff character set were accessible + with such files. +* dpost: When an AFM-based font was mounted more than once in troff, + localized input characters are now printed properly in all positions. + Previously, localized characters were only printed properly on the + position that was used first in the document. +* troff: Several requests for handling fonts did not recognize font names + with more than two characters correctly with the "-x" option; they have + been fixed. +* troff: The characters "\(aa", "\(ga", """, "\-", "<", ">", "@", "\", "^", + and "~" are now always chosen from the Times Roman special font with + AFM-based devices too, as it has been the case with other devices. To get + the character from another PostScript font, use the PostScript character + name, e.g. "\[less]". In contrast, "\(12", "\(14", and "\(34" are now + chosen from the current font, as it has been the case with historic C/A/T + output, but not with -Tpost. +* [nt]roff: The "-mm" macros no longer print "Sun Microsystems" in calls to + ".AU" macros and the like. +* troff: The "\S" escape sequence has been fixed; its use could lead to core + dumps with the previous release. +* troff: The procedure to determine whether to set the "2" value of the + "\n(ct" register with AFM fonts should now work properly. This fixes the + position of accents above lower-case characters with eqn. +* dpost: The maximum number of fonts that can appear in a single PostScript + output file has been raised to 1536. +* eqn: All Greek upper-case letters, i.e. "ALPHA", "BETA", etc. are now + recognized. +* [nt]roff: The escape sequence \U'n' sets the character at Unicode position + "U+n", where "n" is a hexadecimal number. + +Release 050915 +* troff: Can now directly handle .afm/.pfb/.pfa files (i.e. PostScript + Type 1 fonts) to select fonts. The ".fp" request has been extended + for this, and the "TROFFONTS" environment variable specifies path + names to search for font files. See the file "FONTS" for details. +* troff: Can now handle Type 42 fonts (i.e. TrueType fonts that have been + converted for use by PostScript interpreters). +* troff: Handles input characters according to LC_CTYPE now in combination + with the new font setup. In a UTF-8 locale, most characters that are + present in standard, Expert, and Symbol PostScript fonts are supported; + otherwise, a locale-specific subset of them is available. +* troff: A PostScript device with a resolution of 72000 dpi, named "ps", + is available, and is used by default. +* troff: Support for pairwise kerning has been added. The default tables + are read from the AFM files. In addition, a ".kernpair" request has been + introduced to add or replace kerning pairs; it can construct kerning + pairs for characters from different fonts. The ".kernafter" and + ".kernbefore" requests add a constant amount of space to specific + characters. +* dpost: The PostScript output is now expected to conform to Adobe's + Document Structuring Conventions, version 3.0. +* dpost: PDF Bookmarks, titles and authorship information can be included + into the generated PostScript for further processing by the distiller + utility. See the file "PDFS" for details. +* [nt]roff: Hyphenation for languages other than English has been added + using the "libhnj" variant from the OpenOffice project. The ".hylang" + request has been introduced to select between languages. Hyphenation + files have been derived from TeX sources. +* troff: The paper size can be selected with the ".papersize" request. + This is important for correct placement of pages on PostScript printers. +* troff: Any point size can now be used with PostScript devices, including + fractional sizes. +* troff: The ".fzoom" request allows to zoom the characters of a font. +* troff: Hanging characters are supported. +* [nt]roff: The ".lc_ctype" request can be used to set the LC_CTYPE + localization setting from within a document. +* troff: It is now possible to use "\[name]", where name is a character + defined in the .afm file for the current font. +* troff: The ".track" request for tracking letter space has been added. +* troff: The ".fallback" request for selecting the order in which fonts + are searched for missing characters in the current font has been added. +* troff: The ".hidechar" request hides characters from a font which are + then searched using the fallback sequence. +* troff: Ligatures from expert fonts can be used transparently with the + ".flig" request. +* [nt]roff: Environments selected with the ".ev" command can be given + names, and their number is no longer statically limited. +* [nt]roff: The ".evc" request copies another environment to the current + one. +* [nt]roff: The ".chop" request deletes the last character from a macro, + string, or diversion. +* [nt]roff: The ".return" request returns immediately from a macro. +* [nt]roff: The "\:" escape inserts an optional line break but generates + no hyphen if the line is split. +* [nt]roff: The "\~" escape is similar to "\ " but inserts a space that + stretches like a regular " " when the line is adjusted. +* [nt]roff: The "\E" escape is similar to "\e" but is not interpreted in + copy mode. +* [nt]roff: The ".shift" request shifts the arguments to a macro. +* [nt]roff: The "\$(.." and "\$[...]" escapes can be used to refer to + macro arguments. +* troff/dpost: The "\X'Sync'" escape forces dpost to write position and + font information to the generated PostScript. This is sometimes useful + to ensure that following "\X'PS: ...'" escapes work as expected. +* troff: The "-a" option now generates locale-dependent output, with best + results in UTF-8 locales. +* The "-mpictures" macros have been added from Plan 9 sources. +* The "picpack" preprocessor has been added. +* eqn: The default resolution has been changed to 72000 dpi to match that + of troff. The "-r" option was introduced to change it. +* eqn: Handles "\[]" and "\*[]" now. +* troff, dpost: Device and font descriptions are now read directly from + text files; the "makedev" utility is no longer needed. +* [nt]roff: The ".xflag" request controls the availability of extensions + like the "-x" and "-X" command line options. +* The file "NEWS" describes new troff language features. +* tbl: The specification "decimalpoint(x)" can now be used to make the + character "x" the decimal point for numeric columns. +* tbl: There can now be up to 100 columns in a table. +* [nt]roff: There is no static limit on the number of "-m" options anymore. +* [nt]roff: There is no static limit on the ".hw" table anymore. +* [nt]roff: There is no static limit on the pushback buffer anymore; this + makes it possible to use longer arguments to macros. +* [nt]roff: The output of long names with ".pm" and stack dumps has been + fixed. +* [nt]roff: Nested long-name string references \*[\*...] now work. +* [nt]roff: Tabulators as in ".XY\t" are now correctly handled with -x. +* The "-man" macro no longer produces cut marks when used with troff. +* tbl: Two bugs that had been introduced with support for lines of unlimited + length have been fixed. They resulted in printing a stray character when + more than one input file was used, and in improper handling of input lines + continued with a backslash. +* A new malloc() replacement has been added for performance reasons. +* A bug in the previously supplied realloc() replacement could result in + heap corruption. + +Release 050816 +* nroff: A special terminal name, -Tlocale, has been introduced. With this + option, UTF-8 output is generated if permitted by the current LC_CTYPE + locale, and regular -Tlp output otherwise. +* [nt]roff: A new option, "-x", enables the recognition of extended + features that may affect compatibility with previous versions. The "-X" + option disables these features; this is currently the default. Note + that the features enabled with -x are under development and subject + to change. +* [nt]roff: With the -x option, it is now possible to use ".de", ".ds", + ".nr", and similar requests with more than two-character name arguments, + as in ".de longname", and to access such macros later with ".longname", + strings with "\*[longname]", and number registers with "\n[longname]". +* [nt]roff: The "\$@" and "\$*" escape sequences to print all arguments + to a macro are now understood with the -x option. +* troff: The ".ss" command now accepts a second numeric argument with the + -x option. If it is zero, no second space character is printed between + sentences. Otherwise, a second space character with the same width as + the first one is printed. +* [nt]roff: The static block list limit NBLIST has been removed, memory + is now dynamically allocated as needed. +* [nt]roff: There is no static limit on the number of macros/strings and + the number of number registers anymore. +* -man: A defect in the supplied -man macro package caused headers and + footers to be garbled when they were printed between parts of a tbl table + that was split across pages. + +Release 050813 +* Initial release. diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000000..e290446ffa05 --- /dev/null +++ b/LICENSE @@ -0,0 +1,345 @@ +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1 + +1. Definitions. + + 1.1. "Contributor" means each individual or entity that creates or + contributes to the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original Software, + prior Modifications used by a Contributor (if any), and the + Modifications made by that particular Contributor. + + 1.3. "Covered Software" means (a) the Original Software, or (b) + Modifications, or (c) the combination of files containing Original + Software with files containing Modifications, in each case including + portions thereof. + + 1.4. "Executable" means the Covered Software in any form other than Source + Code. + + 1.5. "Initial Developer" means the individual or entity that first makes + Original Software available under this License. + + 1.6. "Larger Work" means a work which combines Covered Software or portions + thereof with code not governed by the terms of this License. + + 1.7. "License" means this document. + + 1.8. "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 the Source Code and Executable form of any of + the following: + + A. Any file that results from an addition to, deletion from or modification + of the contents of a file containing Original Software or previous + Modifications; + + B. Any new file that contains any part of the Original Software or previous + Modification; or + + C. Any new file that is contributed or otherwise made available under the + terms of this License. + + 1.10. "Original Software" means the Source Code and Executable form of + computer software code that is originally released under this + License. + + 1.11. "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.12. "Source Code" means (a) the common form of computer software code in + which modifications are made and (b) associated documentation + included in or with such code. + + 1.13. "You" (or "Your") means an individual or a legal entity exercising + rights under, and complying with all of the terms of, this License. + 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. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to + third party intellectual property claims, the Initial Developer hereby + grants You a world-wide, royalty-free, non-exclusive license: + + (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 Software (or portions + thereof), with or without Modifications, and/or as part of a Larger + Work; and + + (b) under Patent Claims infringed by the making, using or selling of + Original Software, to make, have made, use, practice, sell, and offer + for sale, and/or otherwise dispose of the Original Software (or + portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the + date Initial Developer first distributes or otherwise makes the + Original Software available to a third party 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 Software, or (2) for + infringements caused by: (i) the modification of the Original + Software, or (ii) the combination of the Original Software with other + software or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and 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 Software 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 distributes or otherwise makes the + Modifications available to a third party. + + (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) 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 (3) under Patent Claims + infringed by Covered Software in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Availability of Source Code. + + Any Covered Software that You distribute or otherwise make available in + Executable form must also be made available in Source Code form and that + Source Code form must be distributed only under the terms of this License. + You must include a copy of this License with every copy of the Source Code + form of the Covered Software You distribute or otherwise make available. + You must inform recipients of any such Covered Software in Executable form + as to how they can obtain such Covered Software in Source Code form in a + reasonable manner on or through a medium customarily used for software + exchange. + + 3.2. Modifications. + + The Modifications that You create or to which You contribute are governed + by the terms of this License. You represent that You believe Your + Modifications are Your original creation(s) and/or You have sufficient + rights to grant the rights conveyed by this License. + + 3.3. Required Notices. + + You must include a notice in each of Your Modifications that identifies You + as the Contributor of the Modification. You may not remove or alter any + copyright, patent or trademark notices contained within the Covered + Software, or any notices of licensing or any descriptive text giving + attribution to any Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered Software in Source + Code form that alters or restricts the applicable version of this License + or the recipients' rights hereunder. You may choose to offer, and to charge + a fee for, warranty, support, indemnity or liability obligations to one or + more recipients of Covered Software. However, you may do so only on Your + own behalf, and not on behalf of the Initial Developer or any Contributor. + You must make it absolutely clear that any such warranty, support, + indemnity or liability obligation is offered by You alone, and You hereby + agree to indemnify 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.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered Software under the + terms of this License or under the terms of 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 form does not attempt to limit or alter the recipient's rights + in the Source Code form from the rights set forth in this License. If You + distribute the Covered Software in Executable form 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 + 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.6. Larger Works. + + You may create a Larger Work by combining Covered Software 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 Software. + +4. Versions of the License. + + 4.1. New Versions. + + Oracle is the initial license steward and may publish revised and/or new + versions of this License from time to time. Each version will be given a + distinguishing version number. Except as provided in Section 4.3, no one + other than the license steward has the right to modify this License. + + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise make the Covered + Software available under the terms of the version of the License under + which You originally received the Covered Software. If the Initial + Developer includes a notice in the Original Software prohibiting it from + being distributed or otherwise made available under any subsequent version + of the License, You must distribute and make the Covered Software available + under the terms of the version of the License under which You originally + received the Covered Software. Otherwise, You may also choose to use, + distribute or otherwise make the Covered Software available under the terms + of any subsequent version of the License published by the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a new license for + Your Original Software, You may create and use a modified version of this + License if You: (a) rename the license and remove any references to the + name of the license steward (except to note that the license differs from + this License); and (b) otherwise make it clear that the license contains + terms which differ from this License. + +5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE 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 SOFTWARE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE + ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS + WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU + (NOT 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 + SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + + 6.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. Provisions + which, by their nature, must remain in effect beyond the termination + of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding declaratory + judgment actions) against Initial Developer or a Contributor (the + Initial Developer or Contributor against whom You assert such claim is + referred to as "Participant") alleging that the Participant Software + (meaning the Contributor Version where the Participant is a + Contributor or the Original Software where the Participant is the + Initial Developer) directly or indirectly infringes any patent, then + any and all rights granted directly or indirectly to You by such + Participant, the Initial Developer (if the Initial Developer is not + the Participant) and all Contributors under Sections 2.1 and/or 2.2 of + this License shall, upon 60 days notice from Participant terminate + prospectively and automatically at the expiration of such 60 day + notice period, unless if within such 60 day period You withdraw Your + claim with respect to the Participant Software against such + Participant either unilaterally or pursuant to a written agreement + with Participant. + + 6.3. If You assert a patent infringement claim against Participant alleging + that the Participant Software 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. + + 6.4. In the event of termination under Sections 6.1 or 6.2 above, all end + user licenses that have been validly granted by You or any distributor + hereunder prior to termination (excluding licenses granted to You by + any distributor) shall survive termination. + +7. 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 SOFTWARE, 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. + +8. U.S. GOVERNMENT END USERS. + + The Covered Software is a "commercial item," as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as + that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) 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 Software with only those rights set forth herein. This U.S. + Government Rights clause is in lieu of, and supersedes, any other FAR, + DFAR, or other clause or provision that addresses Government rights in + computer software under this License. + +9. 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 the law of the jurisdiction + specified in a notice contained within the Original Software (except to the + extent applicable law, if any, provides otherwise), excluding such + jurisdiction's conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located in the + jurisdiction and venue specified in a notice contained within the Original + Software, 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. You agree that You alone are + responsible for compliance with the United States export administration + regulations (and the export control laws and regulation of any other + countries) when You use, distribute or otherwise make available any Covered + Software. + +10. 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. + +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE +(CDDL) + +The code released under the CDDL shall be governed by the laws of the State of +California (excluding conflict-of-law provisions). Any litigation relating to +this License shall be subject to the jurisdiction of the Federal Courts of the +Northern District of California and the state courts of the State of +California, with venue lying in Santa Clara County, California. diff --git a/LICENSE.d/BERKELEY.LICENSE b/LICENSE.d/BERKELEY.LICENSE new file mode 100644 index 000000000000..f538faf82561 --- /dev/null +++ b/LICENSE.d/BERKELEY.LICENSE @@ -0,0 +1,30 @@ +Copyright (c) 1980, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowedgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/LICENSE.d/CALDERA.LICENSE b/LICENSE.d/CALDERA.LICENSE new file mode 100644 index 000000000000..aa0ed95f222f --- /dev/null +++ b/LICENSE.d/CALDERA.LICENSE @@ -0,0 +1,31 @@ +Copyright(C) Caldera International Inc. 2001-2002. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + Redistributions of source code and documentation must retain the + above copyright notice, this list of conditions and the following + disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed or owned by Caldera + International, Inc. + Neither the name of Caldera International, Inc. nor the names of + other contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA +INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE +LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSE.d/COPYING.LGPL b/LICENSE.d/COPYING.LGPL new file mode 100644 index 000000000000..b1e3f5a26387 --- /dev/null +++ b/LICENSE.d/COPYING.LGPL @@ -0,0 +1,504 @@ + 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. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 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. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/LICENSE.d/LPPL-1-0.LICENSE b/LICENSE.d/LPPL-1-0.LICENSE new file mode 100644 index 000000000000..9425aab83cd5 --- /dev/null +++ b/LICENSE.d/LPPL-1-0.LICENSE @@ -0,0 +1,211 @@ +LaTeX Project Public License +============================ + +LPPL Version 1.0 1999-03-01 + +Copyright 1999 LaTeX3 Project + Everyone is permitted to copy and distribute verbatim copies + of this license document, but modification is not allowed. + + +Preamble +======== + +The LaTeX Project Public License (LPPL) is the license under which the +base LaTeX distribution is distributed. As described below you may use +this licence for any software that you wish to distribute. + +It may be particularly suitable if your software is TeX related (such +as a LaTeX package file) but it may be used for any software, even if +it is unrelated to TeX. + +To use this license, the files of your distribution should have an +explicit copyright notice giving your name and the year, together +with a reference to this license. + +A typical example would be + + %% pig.sty + %% Copyright 2001 M. Y. Name + + % This program can redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or (at your option) any later version. + +Given such a notice in the file, the conditions of this document would +apply, with: + +`The Program' referring to the software `pig.sty' and +`The Copyright Holder' referring to the person `M. Y. Name'. + +To see a real example, see the file legal.txt which carries the +copyright notice for the base latex distribution. + +This license gives terms under which files of The Program may be +distributed and modified. Individual files may have specific further +constraints on modification, but no file should have restrictions on +distribution other than those specified below. +This is to ensure that a distributor wishing to distribute a complete +unmodified copy of The Program need only check the conditions in this +file, and does not need to check every file in The Program for extra +restrictions. If you do need to modify the distribution terms of some +files, do not refer to this license, instead distribute The Program +under a different license. You may use the parts of the text of LPPL as +a model for your own license, but your license should not directly refer +to the LPPL or otherwise give the impression that The Program is +distributed under the LPPL. + + + +The LaTeX Project Public License +================================ +Terms And Conditions For Copying, Distribution And Modification +=============================================================== + + +WARRANTY +======== + +There is no warranty for The Program, to the extent permitted by +applicable law. Except when otherwise stated in writing, The +Copyright Holder provides The Program `as is' without warranty of any +kind, either expressed or implied, including, but not limited to, the +implied warranties of merchantability and fitness for a particular +purpose. The entire risk as to the quality and performance of the +program is with you. Should The Program prove defective, you assume +the cost of all necessary servicing, repair or correction. + +In no event unless required by applicable law or agreed to in writing +will The Copyright Holder, or any of the individual authors named in +the source for The Program, be liable to you for damages, including +any general, special, incidental or consequential damages arising out +of any use of The Program or out of inability to use The Program +(including but not limited to loss of data or data being rendered +inaccurate or losses sustained by you or by third parties as a result +of a failure of The Program to operate with any other programs), even +if such holder or other party has been advised of the possibility of +such damages. + + +DISTRIBUTION +============ + +Redistribution of unchanged files is allowed provided that all files +that make up the distribution of The Program are distributed. +In particular this means that The Program has to be distributed +including its documentation if documentation was part of the original +distribution. + +The distribution of The Program will contain a prominent file +listing all the files covered by this license. + +If you receive only some of these files from someone, complain! + +The distribution of changed versions of certain files included in the +The Program, and the reuse of code from The Program, are allowed +under the following restrictions: + + * It is allowed only if the legal notice in the file does not + expressly forbid it. + See note below, under "Conditions on individual files". + + * You rename the file before you make any changes to it, unless the + file explicitly says that renaming is not required. Any such changed + files must be distributed under a license that forbids distribution + of those files, and any files derived from them, under the names used + by the original files in the distribution of The Program. + + * You change any `identification string' in The Program to clearly + indicate that the file is not part of the standard system. + + * If The Program includes an `error report address' so that errors + may be reported to The Copyright Holder, or other specified + addresses, this address must be changed in any modified versions of + The Program, so that reports for files not maintained by the + original program maintainers are directed to the maintainers of the + changed files. + + * You acknowledge the source and authorship of the original version + in the modified file. + + * You also distribute the unmodified version of the file or + alternatively provide sufficient information so that the + user of your modified file can be reasonably expected to be + able to obtain an original, unmodified copy of The Program. + For example, you may specify a URL to a site that you expect + will freely provide the user with a copy of The Program (either + the version on which your modification is based, or perhaps a + later version). + + * If The Program is intended to be used with, or is based on, LaTeX, + then files with the following file extensions which have special + meaning in LaTeX Software, have special modification rules under the + license: + + - Files with extension `.ins' (installation files): these files may + not be modified at all because they contain the legal notices + that are placed in the generated files. + + - Files with extension `.fd' (LaTeX font definitions files): these + files are allowed to be modified without changing the name, but + only to enable use of all available fonts and to prevent attempts + to access unavailable fonts. However, modified files are not + allowed to be distributed in place of original files. + + - Files with extension `.cfg' (configuration files): these files + can be created or modified to enable easy configuration of the + system. The documentation in cfgguide.tex in the base LaTeX + distribution describes when it makes sense to modify or generate + such files. + + +The above restrictions are not intended to prohibit, and hence do +not apply to, the updating, by any method, of a file so that it +becomes identical to the latest version of that file in The Program. + +======================================================================== + +NOTES +===== + +We believe that these requirements give you the freedom you to make +modifications that conform with whatever technical specifications you +wish, whilst maintaining the availability, integrity and reliability of +The Program. If you do not see how to achieve your goal whilst +adhering to these requirements then read the document cfgguide.tex +in the base LaTeX distribution for suggestions. + +Because of the portability and exchangeability aspects of systems +like LaTeX, The LaTeX3 Project deprecates the distribution of +non-standard versions of components of LaTeX or of generally available +contributed code for them but such distributions are permitted under the +above restrictions. + +The document modguide.tex in the base LaTeX distribution details +the reasons for the legal requirements detailed above. +Even if The Program is unrelated to LaTeX, the argument in +modguide.tex may still apply, and should be read before +a modified version of The Program is distributed. + + +Conditions on individual files +============================== + +The individual files may bear additional conditions which supersede +the general conditions on distribution and modification contained in +this file. If there are any such files, the distribution of The +Program will contain a prominent file that lists all the exceptional +files. + +Typical examples of files with more restrictive modification +conditions would be files that contain the text of copyright notices. + + * The conditions on individual files differ only in the + extent of *modification* that is allowed. + + * The conditions on *distribution* are the same for all the files. + Thus a (re)distributor of a complete, unchanged copy of The Program + need meet only the conditions in this file; it is not necessary to + check the header of every file in the distribution to check that a + distribution meets these requirements. diff --git a/LICENSE.d/LUCENT.LICENSE b/LICENSE.d/LUCENT.LICENSE new file mode 100644 index 000000000000..a5d7d87d79f0 --- /dev/null +++ b/LICENSE.d/LUCENT.LICENSE @@ -0,0 +1,258 @@ +The Plan 9 software is provided under the terms of the +Lucent Public License, Version 1.02, reproduced below, +with the following exceptions: + +1. No right is granted to create derivative works of or + to redistribute (other than with the Plan 9 Operating System) + the screen imprinter fonts identified in subdirectory + /lib/font/bit/lucida and printer fonts (Lucida Sans Unicode, Lucida + Sans Italic, Lucida Sans Demibold, Lucida Typewriter, Lucida Sans + Typewriter83), identified in subdirectory /sys/lib/postscript/font. + These directories contain material copyrights by B&H Inc. and Y&Y Inc. + +2. The printer fonts identified in subdirectory /sys/lib/ghostscript/font + are subject to the GNU GPL, reproduced in the file /LICENSE.gpl. + +3. The ghostscript program in the subdirectory /sys/src/cmd/gs is + covered by the Aladdin Free Public License, reproduced in the file + /LICENSE.afpl. + +=================================================================== + +Lucent Public License Version 1.02 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE +PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a. in the case of Lucent Technologies Inc. ("LUCENT"), the Original + Program, and + b. in the case of each Contributor, + + i. changes to the Program, and + ii. additions to the Program; + + where such changes and/or additions to the Program were added to the + Program by such Contributor itself or anyone acting on such + Contributor's behalf, and the Contributor explicitly consents, in + accordance with Section 3C, to characterization of the changes and/or + additions as Contributions. + +"Contributor" means LUCENT and any other entity that has Contributed a +Contribution to the Program. + +"Distributor" means a Recipient that distributes the Program, +modifications to the Program, or any part thereof. + +"Licensed Patents" mean patent claims licensable by a Contributor +which are necessarily infringed by the use or sale of its Contribution +alone or when combined with the Program. + +"Original Program" means the original version of the software +accompanying this Agreement as released by LUCENT, including source +code, object code and documentation, if any. + +"Program" means the Original Program and Contributions or any part +thereof + +"Recipient" means anyone who receives the Program under this +Agreement, including all Contributors. + +2. GRANT OF RIGHTS + + a. Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare derivative works of, publicly display, + publicly perform, distribute and sublicense the Contribution of such + Contributor, if any, and such derivative works, in source code and + object code form. + + b. Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, if + any, in source code and object code form. The patent license granted + by a Contributor shall also apply to the combination of the + Contribution of that Contributor and the Program if, at the time the + Contribution is added by the Contributor, such addition of the + Contribution causes such combination to be covered by the Licensed + Patents. The patent license granted by a Contributor shall not apply + to (i) any other combinations which include the Contribution, nor to + (ii) Contributions of other Contributors. No hardware per se is + licensed hereunder. + + c. Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. Each + Contributor disclaims any liability to Recipient for claims brought by + any other entity based on infringement of intellectual property rights + or otherwise. As a condition to exercising the rights and licenses + granted hereunder, each Recipient hereby assumes sole responsibility + to secure any other intellectual property rights needed, if any. For + example, if a third party patent license is required to allow + Recipient to distribute the Program, it is Recipient's responsibility + to acquire that license before distributing the Program. + + d. Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. + +3. REQUIREMENTS + +A. Distributor may choose to distribute the Program in any form under +this Agreement or under its own license agreement, provided that: + + a. it complies with the terms and conditions of this Agreement; + + b. if the Program is distributed in source code or other tangible + form, a copy of this Agreement or Distributor's own license agreement + is included with each copy of the Program; and + + c. if distributed under Distributor's own license agreement, such + license agreement: + + i. effectively disclaims on behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + ii. effectively excludes on behalf of all Contributors all liability + for damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; and + iii. states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party. + +B. Each Distributor must include the following in a conspicuous + location in the Program: + + Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights + Reserved. + +C. In addition, each Contributor must identify itself as the +originator of its Contribution in a manner that reasonably allows +subsequent Recipients to identify the originator of the Contribution. +Also, each Contributor must agree that the additions and/or changes +are intended to be a Contribution. Once a Contribution is contributed, +it may not thereafter be revoked. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the +like. While this license is intended to facilitate the commercial use +of the Program, the Distributor who includes the Program in a +commercial product offering should do so in a manner which does not +create potential liability for Contributors. Therefore, if a +Distributor includes the Program in a commercial product offering, +such Distributor ("Commercial Distributor") hereby agrees to defend +and indemnify every Contributor ("Indemnified Contributor") against +any losses, damages and costs (collectively"Losses") arising from +claims, lawsuits and other legal actions brought by a third party +against the Indemnified Contributor to the extent caused by the acts +or omissions of such Commercial Distributor in connection with its +distribution of the Program in a commercial product offering. The +obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. +In order to qualify, an Indemnified Contributor must: a) promptly +notify the Commercial Distributor in writing of such claim, and b) +allow the Commercial Distributor to control, and cooperate with the +Commercial Distributor in, the defense and any related settlement +negotiations. The Indemnified Contributor may participate in any such +claim at its own expense. + +For example, a Distributor might include the Program in a commercial +product offering, Product X. That Distributor is then a Commercial +Distributor. If that Commercial Distributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Distributor's responsibility +alone. Under this section, the Commercial Distributor would have to +defend claims against the Contributors related to those performance +claims and warranties, and if a court requires any Contributor to pay +any damages as a result, the Commercial Distributor must pay those +damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY +WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely +responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its +exercise of rights under this Agreement, including but not limited to +the risks and costs of program errors, compliance with applicable +laws, damage to or loss of data, programs or equipment, and +unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. EXPORT CONTROL + +Recipient agrees that Recipient alone is responsible for compliance +with the United States export administration regulations (and the +export control laws and regulation of any other countries). + +8. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with +respect to a patent applicable to software (including a cross-claim or +counterclaim in a lawsuit), then any patent licenses granted by that +Contributor to such Recipient under this Agreement shall terminate as +of the date such litigation is filed. In addition, if Recipient +institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and +survive. + +LUCENT may publish new versions (including revisions) of this +Agreement from time to time. Each new version of the Agreement will be +given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new +version of the Agreement is published, Contributor may elect to +distribute the Program (including its Contributions) under the new +version. No one other than LUCENT has the right to modify this +Agreement. Except as expressly stated in Sections 2(a) and 2(b) above, +Recipient receives no rights or licenses to the intellectual property +of any Contributor under this Agreement, whether expressly, by +implication, estoppel or otherwise. All rights in the Program not +expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and +the intellectual property laws of the United States of America. No +party to this Agreement will bring a legal action under this Agreement +more than one year after the cause of action arose. Each party waives +its rights to a jury trial in any resulting litigation. + diff --git a/LICENSE.d/OPENSOLARIS.LICENSE b/LICENSE.d/OPENSOLARIS.LICENSE new file mode 100644 index 000000000000..535dec222d73 --- /dev/null +++ b/LICENSE.d/OPENSOLARIS.LICENSE @@ -0,0 +1,385 @@ +Unless otherwise noted, all files in this distribution are released +under the Common Development and Distribution License (CDDL), +Version 1.0 only. Exceptions are noted within the associated +source files. + +-------------------------------------------------------------------- + + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 + +1. Definitions. + + 1.1. "Contributor" means each individual or entity that creates + or contributes to the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Software, prior Modifications used by a Contributor (if any), + and the Modifications made by that particular Contributor. + + 1.3. "Covered Software" means (a) the Original Software, or (b) + Modifications, or (c) the combination of files containing + Original Software with files containing Modifications, in + each case including portions thereof. + + 1.4. "Executable" means the Covered Software in any form other + than Source Code. + + 1.5. "Initial Developer" means the individual or entity that first + makes Original Software available under this License. + + 1.6. "Larger Work" means a work which combines Covered Software or + portions thereof with code not governed by the terms of this + License. + + 1.7. "License" means this document. + + 1.8. "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 the Source Code and Executable form of + any of the following: + + A. Any file that results from an addition to, deletion from or + modification of the contents of a file containing Original + Software or previous Modifications; + + B. Any new file that contains any part of the Original + Software or previous Modifications; or + + C. Any new file that is contributed or otherwise made + available under the terms of this License. + + 1.10. "Original Software" means the Source Code and Executable + form of computer software code that is originally released + under this License. + + 1.11. "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.12. "Source Code" means (a) the common form of computer software + code in which modifications are made and (b) associated + documentation included in or with such code. + + 1.13. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms + of, this License. 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. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and + subject to third party intellectual property claims, the Initial + Developer hereby grants You a world-wide, royalty-free, + non-exclusive license: + + (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 Software (or portions thereof), + with or without Modifications, and/or as part of a Larger + Work; and + + (b) under Patent Claims infringed by the making, using or + selling of Original Software, to make, have made, use, + practice, sell, and offer for sale, and/or otherwise + dispose of the Original Software (or portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are + effective on the date Initial Developer first distributes + or otherwise makes the Original Software available to a + third party 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 + Software, or (2) for infringements caused by: (i) the + modification of the Original Software, or (ii) the + combination of the Original Software with other software + or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and + 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 Software 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 distributes or + otherwise makes the Modifications available to a third + party. + + (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) 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 (3) under Patent + Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. + +3. Distribution Obligations. + + 3.1. Availability of Source Code. + + Any Covered Software that You distribute or otherwise make + available in Executable form must also be made available in Source + Code form and that Source Code form must be distributed only under + the terms of this License. You must include a copy of this + License with every copy of the Source Code form of the Covered + Software You distribute or otherwise make available. You must + inform recipients of any such Covered Software in Executable form + as to how they can obtain such Covered Software in Source Code + form in a reasonable manner on or through a medium customarily + used for software exchange. + + 3.2. Modifications. + + The Modifications that You create or to which You contribute are + governed by the terms of this License. You represent that You + believe Your Modifications are Your original creation(s) and/or + You have sufficient rights to grant the rights conveyed by this + License. + + 3.3. Required Notices. + + You must include a notice in each of Your Modifications that + identifies You as the Contributor of the Modification. You may + not remove or alter any copyright, patent or trademark notices + contained within the Covered Software, or any notices of licensing + or any descriptive text giving attribution to any Contributor or + the Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered Software in + Source Code form that alters or restricts the applicable version + of this License or the recipients' rights hereunder. You may + choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of + Covered Software. However, you may do so only on Your own behalf, + and not on behalf of the Initial Developer or any Contributor. + You must make it absolutely clear that any such warranty, support, + indemnity or liability obligation is offered by You alone, and You + hereby agree to indemnify 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.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered Software + under the terms of this License or under the terms of 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 form does not attempt to + limit or alter the recipient's rights in the Source Code form from + the rights set forth in this License. If You distribute the + Covered Software in Executable form 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 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.6. Larger Works. + + You may create a Larger Work by combining Covered Software 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 Software. + +4. Versions of the License. + + 4.1. New Versions. + + Sun Microsystems, Inc. is the initial license steward and may + publish revised and/or new versions of this License from time to + time. Each version will be given a distinguishing version number. + Except as provided in Section 4.3, no one other than the license + steward has the right to modify this License. + + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise make the + Covered Software available under the terms of the version of the + License under which You originally received the Covered Software. + If the Initial Developer includes a notice in the Original + Software prohibiting it from being distributed or otherwise made + available under any subsequent version of the License, You must + distribute and make the Covered Software available under the terms + of the version of the License under which You originally received + the Covered Software. Otherwise, You may also choose to use, + distribute or otherwise make the Covered Software available under + the terms of any subsequent version of the License published by + the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a new + license for Your Original Software, You may create and use a + modified version of this License if You: (a) rename the license + and remove any references to the name of the license steward + (except to note that the license differs from this License); and + (b) otherwise make it clear that the license contains terms which + differ from this License. + +5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE 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 + SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR + PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND + PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY + COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT 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 SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS + DISCLAIMER. + +6. TERMINATION. + + 6.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. + Provisions which, by their nature, must remain in effect beyond + the termination of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding + declaratory judgment actions) against Initial Developer or a + Contributor (the Initial Developer or Contributor against whom You + assert such claim is referred to as "Participant") alleging that + the Participant Software (meaning the Contributor Version where + the Participant is a Contributor or the Original Software where + the Participant is the Initial Developer) directly or indirectly + infringes any patent, then any and all rights granted directly or + indirectly to You by such Participant, the Initial Developer (if + the Initial Developer is not the Participant) and all Contributors + under Sections 2.1 and/or 2.2 of this License shall, upon 60 days + notice from Participant terminate prospectively and automatically + at the expiration of such 60 day notice period, unless if within + such 60 day period You withdraw Your claim with respect to the + Participant Software against such Participant either unilaterally + or pursuant to a written agreement with Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 above, + all end user licenses that have been validly granted by You or any + distributor hereunder prior to termination (excluding licenses + granted to You by any distributor) shall survive termination. + +7. 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 SOFTWARE, 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 LOST PROFITS, LOSS OF GOODWILL, WORK + STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL + INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO + NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR + CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT + APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. + + The Covered Software is a "commercial item," as that term is + defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial + computer software" (as that term is defined at 48 + C.F.R. 252.227-7014(a)(1)) 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 Software with only those + rights set forth herein. This U.S. Government Rights clause is in + lieu of, and supersedes, any other FAR, DFAR, or other clause or + provision that addresses Government rights in computer software + under this License. + +9. 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 the law of the jurisdiction specified in a notice contained + within the Original Software (except to the extent applicable law, + if any, provides otherwise), excluding such jurisdiction's + conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located + in the jurisdiction and venue specified in a notice contained + within the Original Software, 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. You agree + that You alone are responsible for compliance with the United + States export administration regulations (and the export control + laws and regulation of any other countries) when You use, + distribute or otherwise make available any Covered Software. + +10. 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. + +-------------------------------------------------------------------- + +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND +DISTRIBUTION LICENSE (CDDL) + +For Covered Software in this distribution, this License shall +be governed by the laws of the State of California (excluding +conflict-of-law provisions). + +Any litigation relating to this License shall be subject to the +jurisdiction of the Federal Courts of the Northern District of +California and the state courts of the State of California, with +venue lying in Santa Clara County, California. diff --git a/README b/README new file mode 100644 index 000000000000..b51a32d357bb --- /dev/null +++ b/README @@ -0,0 +1,137 @@ +README file for the Heirloom Documentation Tools +================================================ + +The Heirloom Documentation Tools provide troff, nroff, and relat- +ed utilities to format manual pages and other documents for out- +put on terminals and printers. They are portable and enhanced +versions of the utilities released by Sun as part of OpenSolaris, +and, for pic, grap, mpm, and some minor parts, by Lucent as part +of Plan 9. + +nroff is most prominently used to format Unix manual pages for +viewing them on a terminal. This implementation consumes rela- +tively few system resources and is thus suitable for small system +distributions. It has been enhanced to generate UTF-8 output. + +troff generates typesetter output from the same document source +code as nroff. Thus a special use of it is to prepare manual +pages for printing. troff is a general-purpose typesetting pro- +cessor, though. Significant features have been added in this im- +plementation; see the "Nroff/Troff User's Manual", "Font Handling +in Troff with PostScript Devices", and "Justification in Heirloom +Troff" for details. All documents are included in the "doc" sub- +directory of the source code distribution; compiled PDF files can +be downloaded from the project home page. + +Currently, troff is almost exclusively targeted at generating +output for PostScript interpreters. Its principal device in- +dependence has been retained, though; the intermediate output +language is largely unchanged. The troff driver for the Autolo- +gic APS-5 is still included. It is untested since it would be +surprising to find a phototypesetter of this type that is still +in use, but serves as an experimentation aid for device indepen- +dence. + +The source code has been compiled successfully on: + +OpenBSD CURRENT +NetBSD 6.1.5, 7, CURRENT +FreeBSD 8.4, 9.3, 10.1, CURRENT +Linux Slackware 14.1, OpenSuse Tumbleweed +Mac OS X +SmartOS + +To build and install manually: + +- Adjust the installation paths and compiler settings in the file + "mk.config", which is in makefile syntax. + +- Execute "make", followed by "make install". "make mrproper" + will destroy all generated files. + +troff currently reads several binary files which are built dur- +ing the compilation process. It is thus not possible to cross- +compile. + +The locale-dependent character input in troff assumes that the C +library represents wchar_t values as Unicode characters. This is +the case on any modern Unix system. + +The "pm" utility requires a C++ compiler. If such a compiler is +not available, delete the "mpm" directory from the list of sub- +directories to build in the top-level "makefile". The "pm" util- +ity is rarely used, so it should not be too dramatic if it is +missing. + +In order to use the utilities for formatting manual pages, note +the following: + +- You will normally want to use "nroff -Tlocale". By default, + nroff generates output for a Teletype Model 37 with half-line + capabilities which will lead to weird results with any xterm or + CRT terminal. + +- tbl(1) should be used with option -Tlocale when producing input + for nroff and with option -g when producing input for troff. + +- "nroff -Tlocale" will generate UTF-8 output if permitted by the + current setting of the LC_CTYPE locale, and the same as "nroff + -Tlp" otherwise. + +- Macro names are normally restricted to two characters for com- + patibility with previous versions of nroff. With "nroff -mg", + long macro names and other groff extensions are accepted. You + will normally want to enable this because you are much more + likely to encounter manual pages written with groff in mind + than manual pages that require strict Unix compatibility. + +- You need to filter the output of nroff through "col -x". + +- You need at least the "an" macro file to format manual pages. + If you also want to use the Berkeley "doc" macros, you also + need "doc*" and "andoc". "nroff -mandoc" will then switch au- + tomatically between the two macro packages. + +- Heirloom nroff can optimize line breaking over whole para- + graphs. This results in fewer ugly holes of successive spaces + in the output. To enable it with manual pages, add "-mpadj" to + the command line. + +- It is recommended that the "-msafe" macro package is used when + viewing manual pages. It will remove those requests that al- + low to call programs or to write to files. If your man com- + mand runs with privileges, you then also need to ensure that + the "TROFFMACS" environment variable is unset when nroff is ex- + ecuted. Otherwise, a malicious user might replace the "safe" + macro package with his own version. + +- Thus a complete pipeline to format manual pages for viewing is: + + tbl -Tlocale input.1 | neqn | nroff -Tlocale -mg -msafe \ + -mpadj -mandoc | col -x + +- If you like italic text to appear underlined and boldfaced text + to appear bold on a CRT or X Window System terminal, also add a + call to the "ul" filter: + + tbl -Tlocale input.1 | neqn | nroff -Tlocale -mg -msafe \ + -mpadj -mandoc | col -x | ul + +- To print manual pages with troff, use + + tbl -g input.1 | eqn | troff -mg -msafe -mpadj -mandoc | \ + dpost | lp + +- You should of course configure your "man" command such that + it executes these pipelines automatically for you. For the + "man" command from the Heirloom Toolchest, suitable entries in + "/etc/default/man" are: + + NROFF=/usr/local/ucb/nroff -Tlocale -mg -msafe -mpadj + TROFF=/usr/local/ucb/troff -mg -msafe -mpadj + TBL=/usr/local/ucb/tbl -Tlocale + EQN=/usr/local/ucb/eqn + NEQN=/usr/local/ucb/neqn + TCAT=/usr/local/ucb/dpost + COL=/usr/local/ucb/col -x | ul + MACSET=-mandoc diff --git a/README.md b/README.md new file mode 100644 index 000000000000..7c7081fc70ac --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +For information about the Heirloom doctools please visit the project +[webpage](http://n-t-roff.github.io/heirloom/doctools.html). + +Stable source code versions are available in the +[releases archive](https://github.com/n-t-roff/heirloom-doctools/releases). + +Development snapshots can be downloaded as a zip archive with the "Download ZIP" button +or with the git command +```bash +git clone https://github.com/n-t-roff/heirloom-doctools.git +``` +Installation paths and compiler settings are adjusted in `mk.config`. +The software is build with `make` and installed with `make install`. +Generated files are removed with `make mrproper` afterwards. +A git repository can be kept up-to-date with +`git pull`. + +Bugs can be reported at the +[issue list](https://github.com/n-t-roff/heirloom-doctools/issues). +Please wait before creating a patch or a pull request, +since someone else could already be working on this issue or has a solution. + +If there are any problems please send a mail to +<troff [at] arcor [dot] de>. + +The GNU roff (groff) [mailing list](https://lists.gnu.org/mailman/listinfo/groff) is used for Heirloom doctools announcements and can also be used for discussions. +The subject need to start with `[Heirloom]` in this case. + +It is recommended to subscribe to the groff mailing list for every ∗roff user. +But please *don't* send Heirloom bug reports to the groff list, use the +[issue list](https://github.com/n-t-roff/heirloom-doctools/issues) +instead. diff --git a/checknr/Makefile.mk b/checknr/Makefile.mk new file mode 100644 index 000000000000..646fc7dc7553 --- /dev/null +++ b/checknr/Makefile.mk @@ -0,0 +1,21 @@ +OBJ = checknr.o + +FLAGS = $(DEFINES) -I../include + +.c.o: + $(CC) $(CFLAGS) $(WARN) $(CPPFLAGS) $(FLAGS) -c $< + +all: checknr + +checknr: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) $(OBJ) $(LIBS) -o checknr + +install: + $(INSTALL) -c checknr $(ROOT)$(BINDIR)/checknr + $(STRIP) $(ROOT)$(BINDIR)/checknr + $(INSTALL) -c -m 644 checknr.1 $(ROOT)$(MANDIR)/man1/checknr.1 + +clean: + rm -f $(OBJ) checknr core log *~ + +mrproper: clean diff --git a/checknr/checknr.1 b/checknr/checknr.1 new file mode 100644 index 000000000000..aca24711722a --- /dev/null +++ b/checknr/checknr.1 @@ -0,0 +1,143 @@ +.\" +.\" This code contains changes by +.\" Gunnar Ritter, Freiburg i. Br., Germany, 2005. All rights reserved. +.\" +.\" Conditions 1, 2, and 4 and the no-warranty notice below apply +.\" to these changes. +.\" +.\" +.\" Copyright (c) 1980 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowedgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" from 4.3BSD checknr.1 6.2 (Berkeley) 5/7/86 +.\".TH CHECKNR 1 "May 7, 1986" +.\" +.\" Sccsid @(#)checknr.1b 1.2 (gritter) 11/6/05 +.\" +.TH CHECKNR 1 "11/6/05" "Heirloom Documentation Tools" "BSD System Compatibility" +.UC 4 +.SH NAME +checknr \- check nroff/troff files +.SH SYNOPSIS +.HP +.ad l +.nh +\fBchecknr\fR +[\fB\-fs\fR] +[\fB\-a.\fIx1\fB.\fIy1\fB.\fIx2\fB.\fIy2\fB.\fR\ ...\ \fB.\fIxn\fB.\fIyn\fR] +[\fB\-c.\fIx1\fB.\fIx2\fB.\fIx3\fR\ ...\ \fB.\fIxn\fR] +[\fIfile\fR ...] +.br +.hy 1 +.ad b +.SH DESCRIPTION +.I Checknr +checks a list of +.IR nroff (1) +or +.IR troff (1) +input files for certain kinds of errors +involving mismatched opening and closing delimiters +and unknown commands. +If no files are specified, +.I checknr +checks the standard input. +Delimeters checked are: +.IP (1) +Font changes using \efx ... \efP. +.IP (2) +Size changes using \esx ... \es0. +.IP (3) +Macros that come in open ... close forms, for example, +the .TS and .TE macros which must always come in pairs. +.PP +.I Checknr +knows about the +.IR ms (7) +and +.IR me (7) +macro packages. +.PP +Additional pairs of macros can be added to the list using the +.B \-a +option. +This must be followed by groups defining pairs of macros. +The characters in each group are +a period, +the first macro name, +another period, +and the second macro name. +For example, to define a pair .BS and .ES, use \-\fBa\fP.BS.ES +.PP +The +.B \-c +option defines commands which would otherwise be complained about +as undefined. +.PP +The +.B \-f +option requests +.I checknr +to ignore \ef font changes. +.PP +The +.B \-s +option requests +.I checknr +to ignore \es size changes. +.PP +.I Checknr +is intended to be used on documents that are prepared with +.I checknr +in mind, much the same as +.I lint. +It expects a certain document writing style for \ef and \es commands, +in that each \efx must be terminated with \efP and +each \esx must be terminated with \es0. +While it will work to directly go into the next font or explicitly +specify the original font or point size, +and many existing documents actually do this, +such a practice will produce complaints from +.I checknr. +Since it is probably better to use the \efP and \es0 forms anyway, +you should think of this as a contribution to your document +preparation style. +.SH SEE\ ALSO +nroff(1), troff(1), checkeq(1), ms(7), me(7) +.SH DIAGNOSTICS +Complaints about unmatched delimiters. +.br +Complaints about unrecognized commands. +.br +Various complaints about the syntax of commands. +.SH NOTES +Does not correctly recognize certain reasonable constructs, +such as conditionals. diff --git a/checknr/checknr.c b/checknr/checknr.c new file mode 100644 index 000000000000..b7dde0af2004 --- /dev/null +++ b/checknr/checknr.c @@ -0,0 +1,669 @@ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +/* + * Copyright (c) 1980 Regents of the University of California. + * All rights reserved. The Berkeley software License Agreement + * specifies the terms and conditions for redistribution. + */ + +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* from OpenSolaris "checknr.c 1.8 05/06/02 SMI" */ + +/* + * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany + */ +#if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4 +#define USED __attribute__ ((used)) +#elif defined __GNUC__ +#define USED __attribute__ ((unused)) +#else +#define USED +#endif +static const char sccsid[] USED = "@(#)/usr/ucb/checknr.sl 1.3 (gritter) 11/6/05"; + +/* + * checknr: check an nroff/troff input file for matching macro calls. + * we also attempt to match size and font changes, but only the embedded + * kind. These must end in \s0 and \fP resp. Maybe more sophistication + * later but for now think of these restrictions as contributions to + * structured typesetting. + */ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <ctype.h> +#include "global.h" + +static int maxstk; /* Stack size */ +#define MAXBR 100 /* Max number of bracket pairs known */ +#define MAXCMDS 500 /* Max number of commands known */ + +/* + * The stack on which we remember what we've seen so far. + */ +static struct stkstr { + int opno; /* number of opening bracket */ + int pl; /* '+', '-', ' ' for \s, 1 for \f, 0 for .ft */ + int parm; /* parm to size, font, etc */ + int lno; /* line number the thing came in in */ +} *stk; +static int stktop; + +/* + * The kinds of opening and closing brackets. + */ +static struct brstr { + char *opbr; + char *clbr; +} br[MAXBR] = { + /* A few bare bones troff commands */ +#define SZ 0 + { "sz", "sz" }, /* also \s */ +#define FT 1 + { "ft", "ft" }, /* also \f */ + /* the -mm package */ + { "AL", "LE" }, + { "AS", "AE" }, + { "BL", "LE" }, + { "BS", "BE" }, + { "DF", "DE" }, + { "DL", "LE" }, + { "DS", "DE" }, + { "FS", "FE" }, + { "ML", "LE" }, + { "NS", "NE" }, + { "RL", "LE" }, + { "VL", "LE" }, + /* the -ms package */ + { "AB", "AE" }, + { "BD", "DE" }, + { "CD", "DE" }, + { "DS", "DE" }, + { "FS", "FE" }, + { "ID", "DE" }, + { "KF", "KE" }, + { "KS", "KE" }, + { "LD", "DE" }, + { "LG", "NL" }, + { "QS", "QE" }, + { "RS", "RE" }, + { "SM", "NL" }, + { "XA", "XE" }, + { "XS", "XE" }, + /* The -me package */ + { "(b", ")b" }, + { "(c", ")c" }, + { "(d", ")d" }, + { "(f", ")f" }, + { "(l", ")l" }, + { "(q", ")q" }, + { "(x", ")x" }, + { "(z", ")z" }, + /* Things needed by preprocessors */ + { "EQ", "EN" }, + { "TS", "TE" }, + /* Refer */ + { "[", "]" }, + { NULL, NULL } +}; + +/* + * All commands known to nroff, plus macro packages. + * Used so we can complain about unrecognized commands. + */ +static char *knowncmds[MAXCMDS] = { +"$c", "$f", "$h", "$p", "$s", "(b", "(c", "(d", "(f", "(l", "(q", "(t", +"(x", "(z", ")b", ")c", ")d", ")f", ")l", ")q", ")t", ")x", ")z", "++", +"+c", "1C", "1c", "2C", "2c", "@(", "@)", "@C", "@D", "@F", "@I", "@M", +"@c", "@e", "@f", "@h", "@m", "@n", "@o", "@p", "@r", "@t", "@z", "AB", +"AE", "AF", "AI", "AL", "AM", "AS", "AT", "AU", "AX", "B", "B1", "B2", +"BD", "BE", "BG", "BL", "BS", "BT", "BX", "C1", "C2", "CD", "CM", "CT", +"D", "DA", "DE", "DF", "DL", "DS", "DT", "EC", "EF", "EG", "EH", "EM", +"EN", "EQ", "EX", "FA", "FD", "FE", "FG", "FJ", "FK", "FL", "FN", "FO", +"FQ", "FS", "FV", "FX", "H", "HC", "HD", "HM", "HO", "HU", "I", "ID", +"IE", "IH", "IM", "IP", "IX", "IZ", "KD", "KE", "KF", "KQ", "KS", "LB", +"LC", "LD", "LE", "LG", "LI", "LP", "MC", "ME", "MF", "MH", "ML", "MR", +"MT", "ND", "NE", "NH", "NL", "NP", "NS", "OF", "OH", "OK", "OP", "P", +"P1", "PF", "PH", "PP", "PT", "PX", "PY", "QE", "QP", "QS", "R", "RA", +"RC", "RE", "RL", "RP", "RQ", "RS", "RT", "S", "S0", "S2", "S3", "SA", +"SG", "SH", "SK", "SM", "SP", "SY", "T&", "TA", "TB", "TC", "TD", "TE", +"TH", "TL", "TM", "TP", "TQ", "TR", "TS", "TX", "UL", "US", "UX", "VL", +"WC", "WH", "XA", "XD", "XE", "XF", "XK", "XP", "XS", "[", "[-", "[0", +"[1", "[2", "[3", "[4", "[5", "[<", "[>", "[]", "]", "]-", "]<", "]>", +"][", "ab", "ac", "ad", "af", "am", "ar", "as", "b", "ba", "bc", "bd", +"bi", "bl", "bp", "br", "bx", "c.", "c2", "cc", "ce", "cf", "ch", +"chop", "cs", "ct", "cu", "da", "de", "di", "dl", "dn", "do", "ds", +"dt", "dw", "dy", "ec", "ef", "eh", "el", "em", "eo", "ep", "ev", +"evc", "ex", "fallback", "fc", "feature", "fi", "fl", "flig", "fo", +"fp", "ft", "ftr", "fz", "fzoom", "hc", "he", "hidechar", "hl", "hp", +"ht", "hw", "hx", "hy", "hylang", "i", "ie", "if", "ig", "in", "ip", +"it", "ix", "kern", "kernafter", "kernbefore", "kernpair", "lc", "lg", +"lhang", "lc_ctype", "li", "ll", "ln", "lo", "lp", "ls", "lt", "m1", +"m2", "m3", "m4", "mc", "mk", "mo", "n1", "n2", "na", "ne", "nf", "nh", +"nl", "nm", "nn", "np", "nr", "ns", "nx", "of", "oh", "os", "pa", +"papersize", "pc", "pi", "pl", "pm", "pn", "po", "pp", "ps", "q", +"r", "rb", "rd", "re", "recursionlimit", "return", "rhang", "rm", +"rn", "ro", "rr", "rs", "rt", "sb", "sc", "sh", "shift", "sk", "so", +"sp", "ss", "st", "sv", "sz", "ta", "tc", "th", "ti", "tl", "tm", "tp", +"tr", "track", "u", "uf", "uh", "ul", "vs", "wh", "xflag", "xp", "yr", +0 +}; + +static int lineno; /* current line number in input file */ +static char *line; /* the current line */ +static size_t linesize; /* allocated size of current line */ +static char *cfilename; /* name of current file */ +static int nfiles; /* number of files to process */ +static int fflag; /* -f: ignore \f */ +static int sflag; /* -s: ignore \s */ +static int ncmds; /* size of knowncmds */ +static int slot; /* slot in knowncmds found by binsrch */ + +static void growstk(void); +static void usage(void); +static void process(FILE *f); +static void complain(int i); +static void prop(int i); +static void chkcmd(char *line, char *mac); +static void nomatch(char *mac); +static int eq(char *s1, char *s2); +static void pe(int lineno); +static void checkknown(char *mac); +static void addcmd(char *line); +static void addmac(char *mac); +static int binsrch(char *mac); +static char *fgetline(char **line, size_t *linesize, size_t *llen, FILE *fp); + +static void +growstk(void) +{ + stktop++; + if (stktop >= maxstk) { + maxstk *= 2; + stk = realloc(stk, sizeof *stk * maxstk); + } +} + +int +main(int argc, char **argv) +{ + FILE *f; + int i; + char *cp, *cq, c; + + stk = calloc(sizeof *stk, maxstk = 100); + /* Figure out how many known commands there are */ + while (knowncmds[ncmds]) + ncmds++; + while (argc > 1 && argv[1][0] == '-') { + switch (argv[1][1]) { + + /* -a: add pairs of macros */ + case 'a': + /* look for empty macro slots */ + for (i = 0; br[i].opbr; i++) + ; + cp = &argv[1][3]; + while (*cp) { + size_t s; + if (i >= MAXBR - 3) { + printf("Only %d known pairs allowed\n", + MAXBR/2); + exit(1); + } + for (cq = cp; *cq && *cq != '.'; cq++); + if (*cq != '.') + usage(); + *cq = 0; + s = cq - cp + 1; + br[i].opbr = malloc(s); + n_strcpy(br[i].opbr, cp, s); + *cq = '.'; + cp = &cq[1]; + for (cq = cp; *cq && *cq != '.'; cq++); + c = *cq; + *cq = 0; + s = cq - cp + 1; + br[i].clbr = malloc(s); + n_strcpy(br[i].clbr, cp, s); + *cq = c; + cp = c ? &cq[1] : cq; + /* knows pairs are also known cmds */ + addmac(br[i].opbr); + addmac(br[i].clbr); + i++; + } + break; + + /* -c: add known commands */ + case 'c': + cp = &argv[1][3]; + while (*cp) { + for (cq = cp; *cq && *cq != '.'; cq++); + c = *cq; + *cq = 0; + addmac(cp); + *cq = c; + cp = c ? &cq[1] : cq; + } + break; + + /* -f: ignore font changes */ + case 'f': + fflag = 1; + break; + + /* -s: ignore size changes */ + case 's': + sflag = 1; + break; + default: + usage(); + } + argc--; argv++; + } + + nfiles = argc - 1; + + if (nfiles > 0) { + for (i = 1; i < argc; i++) { + cfilename = argv[i]; + f = fopen(cfilename, "r"); + if (f == NULL) { + perror(cfilename); + exit(1); + } + else { + process(f); + fclose(f); + } + } + } else { + cfilename = "stdin"; + process(stdin); + } + return (0); +} + +static void +usage(void) +{ + printf("Usage: checknr -s -f -a.xx.yy.xx.yy... -c.xx.xx.xx...\n"); + exit(1); +} + +static void +process(FILE *f) +{ + int i, n; + char mac[512]; /* The current macro or nroff command */ + int pl; + + stktop = -1; + for (lineno = 1; fgetline(&line, &linesize, NULL, f); lineno++) { + if (line[0] == '.') { + /* + * find and isolate the macro/command name. + */ + strncpy(mac, line+1, sizeof mac-1)[sizeof mac-1] = 0; + if (isspace(mac[0]&0377)) { + pe(lineno); + printf("Empty command\n"); + } else { + for (i = 1; mac[i]; i++) + if (isspace(mac[i]&0377)) { + mac[i] = 0; + break; + } + } + + /* + * Is it a known command? + */ + checkknown(mac); + + /* + * Should we add it? + */ + if (eq(mac, "de")) + addcmd(line); + + chkcmd(line, mac); + } + + /* + * At this point we process the line looking + * for \s and \f. + */ + for (i = 0; line[i]; i++) + if (line[i] == '\\' && (i == 0 || line[i-1] != '\\')) { + if (!sflag && line[++i] == 's') { + pl = line[++i]&0377; + if (isdigit(pl)) { + n = pl - '0'; + pl = ' '; + } else + n = 0; + while (isdigit(line[++i]&0377)) + n = 10 * n + line[i] - '0'; + i--; + if (n == 0) { + if (stk[stktop].opno == SZ) { + stktop--; + } else { + pe(lineno); + printf( + "unmatched \\s0\n"); + } + } else { + growstk(); + stk[stktop].opno = SZ; + stk[stktop].pl = pl; + stk[stktop].parm = n; + stk[stktop].lno = lineno; + } + } else if (!fflag && line[i] == 'f') { + n = line[++i]; + if (n == 'P') { + if (stk[stktop].opno == FT) { + stktop--; + } else { + pe(lineno); + printf( + "unmatched \\fP\n"); + } + } else { + growstk(); + stk[stktop].opno = FT; + stk[stktop].pl = 1; + stk[stktop].parm = n; + stk[stktop].lno = lineno; + } + } + } + } + /* + * We've hit the end and look at all this stuff that hasn't been + * matched yet! Complain, complain. + */ + for (i = stktop; i >= 0; i--) { + complain(i); + } +} + +static void +complain(int i) +{ + pe(stk[i].lno); + printf("Unmatched "); + prop(i); + printf("\n"); +} + +static void +prop(int i) +{ + if (stk[i].pl == 0) + printf(".%s", br[stk[i].opno].opbr); + else switch (stk[i].opno) { + case SZ: + printf("\\s%c%d", stk[i].pl, stk[i].parm); + break; + case FT: + printf("\\f%c", stk[i].parm); + break; + default: + printf("Bug: stk[%d].opno = %d = .%s, .%s", + i, stk[i].opno, br[stk[i].opno].opbr, + br[stk[i].opno].clbr); + } +} + +/* ARGSUSED */ +static void +chkcmd(char *line, char *mac) +{ + int i; + + /* + * Check to see if it matches top of stack. + */ + if (stktop >= 0 && eq(mac, br[stk[stktop].opno].clbr)) + stktop--; /* OK. Pop & forget */ + else { + /* No. Maybe it's an opener */ + for (i = 0; br[i].opbr; i++) { + if (eq(mac, br[i].opbr)) { + /* Found. Push it. */ + growstk(); + stk[stktop].opno = i; + stk[stktop].pl = 0; + stk[stktop].parm = 0; + stk[stktop].lno = lineno; + break; + } + /* + * Maybe it's an unmatched closer. + * NOTE: this depends on the fact + * that none of the closers can be + * openers too. + */ + if (eq(mac, br[i].clbr)) { + nomatch(mac); + break; + } + } + } +} + +static void +nomatch(char *mac) +{ + int i, j; + + /* + * Look for a match further down on stack + * If we find one, it suggests that the stuff in + * between is supposed to match itself. + */ + for (j = stktop; j >= 0; j--) + if (eq(mac, br[stk[j].opno].clbr)) { + /* Found. Make a good diagnostic. */ + if (j == stktop-2) { + /* + * Check for special case \fx..\fR and don't + * complain. + */ + if (stk[j+1].opno == FT && + stk[j+1].parm != 'R' && + stk[j+2].opno == FT && + stk[j+2].parm == 'R') { + stktop = j -1; + return; + } + /* + * We have two unmatched frobs. Chances are + * they were intended to match, so we mention + * them together. + */ + pe(stk[j+1].lno); + prop(j+1); + printf(" does not match %d: ", stk[j+2].lno); + prop(j+2); + printf("\n"); + } else for (i = j+1; i <= stktop; i++) { + complain(i); + } + stktop = j-1; + return; + } + /* Didn't find one. Throw this away. */ + pe(lineno); + printf("Unmatched .%s\n", mac); +} + +/* eq: are two strings equal? */ +static int +eq(char *s1, char *s2) +{ + return (strcmp(s1, s2) == 0); +} + +/* print the first part of an error message, given the line number */ +static void +pe(int lineno) +{ + if (nfiles > 1) + printf("%s: ", cfilename); + printf("%d: ", lineno); +} + +static void +checkknown(char *mac) +{ + + if (eq(mac, ".")) + return; + if (binsrch(mac) >= 0) + return; + if (mac[0] == '\\' && mac[1] == '"') /* comments */ + return; + + pe(lineno); + printf("Unknown command: .%s\n", mac); +} + +/* + * We have a .de xx line in "line". Add xx to the list of known commands. + */ +static void +addcmd(char *line) +{ + char *mac; + + /* grab the macro being defined */ + mac = line+4; + while (isspace(*mac&0377)) + mac++; + if (*mac == 0) { + pe(lineno); + printf("illegal define: %s\n", line); + return; + } + mac[2] = 0; + if (isspace(mac[1]&0377) || mac[1] == '\\') + mac[1] = 0; + addmac(mac); +} + +/* + * Add mac to the list. We should really have some kind of tree + * structure here but this is a quick-and-dirty job and I just don't + * have time to mess with it. (I wonder if this will come back to haunt + * me someday?) Anyway, I claim that .de is fairly rare in user + * nroff programs, and the loop below is pretty fast. + */ +static void +addmac(char *mac) +{ + char **src, **dest, **loc; + size_t s; + + if (binsrch(mac) >= 0) { /* it's OK to redefine something */ +#ifdef DEBUG + printf("binsrch(%s) -> already in table\n", mac); +#endif + return; + } + /* binsrch sets slot as a side effect */ +#ifdef DEBUG +printf("binsrch(%s) -> %d\n", mac, slot); +#endif + if (ncmds >= MAXCMDS) { + printf("Only %d known commands allowed\n", MAXCMDS); + exit(1); + } + loc = &knowncmds[slot]; + src = &knowncmds[ncmds-1]; + dest = src+1; + while (dest > loc) + *dest-- = *src--; + s = strlen(mac) + 1; + *loc = malloc(s); + n_strcpy(*loc, mac, s); + ncmds++; +#ifdef DEBUG + printf("after: %s %s %s %s %s, %d cmds\n", + knowncmds[slot-2], knowncmds[slot-1], knowncmds[slot], + knowncmds[slot+1], knowncmds[slot+2], ncmds); +#endif +} + +/* + * Do a binary search in knowncmds for mac. + * If found, return the index. If not, return -1. + */ +static int +binsrch(char *mac) +{ + char *p; /* pointer to current cmd in list */ + int d; /* difference if any */ + int mid; /* mid point in binary search */ + int top, bot; /* boundaries of bin search, inclusive */ + + top = ncmds-1; + bot = 0; + while (top >= bot) { + mid = (top+bot)/2; + p = knowncmds[mid]; + d = p[0] - mac[0]; + if (d == 0) + d = strcmp(&p[1], &mac[1]); + if (d == 0) + return (mid); + if (d < 0) + bot = mid + 1; + else + top = mid - 1; + } + slot = bot; /* place it would have gone */ + return (-1); +} + +#define LSIZE 256 + +static char * +fgetline(char **line, size_t *linesize, size_t *llen, FILE *fp) +{ + int c; + size_t n = 0; + + if (*line == NULL || *linesize < LSIZE + n + 1) + *line = realloc(*line, *linesize = LSIZE + n + 1); + for (;;) { + if (n >= *linesize - LSIZE / 2) + *line = realloc(*line, *linesize += LSIZE); + c = getc(fp); + if (c != EOF) { + (*line)[n++] = c; + (*line)[n] = '\0'; + if (c == '\n') + break; + } else { + if (n > 0) + break; + else + return NULL; + } + } + if (llen) + *llen = n; + return *line; +} diff --git a/col/Makefile.mk b/col/Makefile.mk new file mode 100644 index 000000000000..d739a4dd19ff --- /dev/null +++ b/col/Makefile.mk @@ -0,0 +1,22 @@ +BIN = col + +OBJ = col.o + +FLAGS = $(DEFINES) -I../include + +all: $(BIN) + +$(BIN): $(OBJ) + $(CC) ${CFLAGS} $(LDFLAGS) $(OBJ) -o $(BIN) + +install: + $(INSTALL) -c $(BIN) $(ROOT)$(BINDIR)/$(BIN) + $(STRIP) $(ROOT)$(BINDIR)/$(BIN) + +clean: + rm -f $(OBJ) $(BIN) core log *~ + +mrproper: clean + +.c.o: + ${CC} ${CFLAGS} ${CPPFLAGS} $(FLAGS) -c $< diff --git a/col/col.c b/col/col.c new file mode 100644 index 000000000000..4b2a2f77e291 --- /dev/null +++ b/col/col.c @@ -0,0 +1,654 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +/* + * col - filter reverse carraige motions + * + */ + + +#include <stdio.h> +#include <ctype.h> +#include <locale.h> +#include <limits.h> +#include <stdlib.h> +#include <wctype.h> +#include <unistd.h> +#include <wchar.h> +#include "global.h" + +#define PL 256 +#define ESC '\033' +#define RLF '\013' +#define SI '\017' +#define SO '\016' +#define GREEK 0200 +#define LINELN 4096 +#define gettext(x) x +#ifndef iswascii +# define iswascii(c) isascii(c) +#endif + +wchar_t *page[PL]; +wchar_t lbuff[LINELN], *line; +wchar_t *lbuffend = lbuff + LINELN - 1; +wchar_t ws_blank[2] = {' ', 0}; +char esc_chars, underline, temp_off, smart; +int bflag, xflag, fflag, pflag; +int greeked; +int half; +int cp, lp; +int ll, llh, mustwr; +int pcp = 0; +char *pgmname; + +#define USAGEMSG "usage:\tcol [-bfxp]\n" + +static void outc(wchar_t); +static void store(int); +static void fetch(int); +static void emit(wchar_t *, int); +static void incr(void); +static void decr(void); +static void wsinsert(wchar_t *, int); +static void incr_line(int); +static int wcscrwidth(wchar_t); + +int +main(int argc, char **argv) +{ + int i, n; + int opt; + int greek; + int c; + wchar_t wc; + char byte; + static char fbuff[BUFSIZ]; + + setbuf(stdout, fbuff); + (void) setlocale(LC_ALL, ""); + pgmname = argv[0]; + + while ((opt = getopt(argc, argv, "bfxp")) != EOF) + switch (opt) { + case 'b': + bflag++; + break; + case 'x': + xflag++; + break; + case 'f': + fflag++; + break; + case 'p': + pflag++; + break; + case '?': + default: + (void) fprintf(stderr, gettext(USAGEMSG)); + exit(2); + } + + argc -= optind; + if (argc >= 1) { + (void) fprintf(stderr, gettext(USAGEMSG)); + exit(2); + } + + for (ll = 0; ll < PL; ll++) + page[ll] = 0; + + smart = temp_off = underline = esc_chars = '\0'; + cp = 0; + ll = 0; + greek = 0; + mustwr = PL; + line = lbuff; + + while ((c = getwchar()) != EOF) { + if (underline && temp_off && c > ' ') { + outc(ESC); + if (*line) { + incr_line(1); + } + *line = 'X'; + incr_line(1); + *line = temp_off = '\0'; + } + if (c != '\b') + if (esc_chars) + esc_chars = '\0'; + switch (c) { + case '\n': + if (underline && !temp_off) { + if (*line) + incr_line(1); + *line = ESC; + incr_line(1); + *line = 'Y'; + incr_line(1); + *line = '\0'; + temp_off = '1'; + } + incr(); + incr(); + cp = 0; + continue; + + case '\0': + continue; + + case ESC: + c = getwchar(); + switch (c) { + case '7': /* reverse full line feed */ + decr(); + decr(); + break; + + case '8': /* reverse half line feed */ + if (fflag) + decr(); + else { + if (--half < -1) { + decr(); + decr(); + half += 2; + } + } + break; + + case '9': /* forward half line feed */ + if (fflag) + incr(); + else { + if (++half > 0) { + incr(); + incr(); + half -= 2; + } + } + break; + + default: + if (pflag) { /* pass through esc */ + outc(ESC); + incr_line(1); + *line = c; + incr_line(1); + *line = '\0'; + esc_chars = 1; + if (c == 'X') + underline = 1; + if (c == 'Y' && underline) + underline = temp_off = '\0'; + if (c == ']') + smart = 1; + if (c == '[') + smart = '\0'; + } + break; + } + continue; + + case SO: + greek = GREEK; + /* greeked++; FIXME: temporarily disabled */ + continue; + + case SI: + greek = 0; + continue; + + case RLF: + decr(); + decr(); + continue; + + case '\r': + cp = 0; + continue; + + case '\t': + cp = (cp + 8) & -8; + continue; + + case '\b': + if (esc_chars) { + *line = '\b'; + incr_line(1); + *line = '\0'; + } else if (cp > 0) + cp--; + continue; + + case ' ': + cp++; + continue; + + default: + if (iswprint(c)) { /* if printable */ + if (!greek) { + outc((wchar_t)c); + cp += wcscrwidth(c); + } + /* + * EUC (apply SO only when there can + * be corresponding character in CS1) + */ + else if (iswascii(c)) { + byte = (c | greek); + n = mbtowc(&wc, &byte, 1); + if (!iswcntrl(c) && !iswspace(c) && + n == 1) { + outc(wc); + cp += wcscrwidth(wc); + } else { + outc((wchar_t)c); + cp += wcscrwidth(c); + } + } else { + outc((wchar_t)c); + cp += wcscrwidth(c); + } + + if ((cp + 1) > LINELN) { + (void) fprintf(stderr, + gettext("col: Line too long\n")); + exit(2); + } + } + continue; + } + } + + for (i = 0; i < PL; i++) + if (page[(mustwr+i)%PL] != 0) + emit(page[(mustwr+i) % PL], mustwr+i-PL); + emit(ws_blank, (llh + 1) & -2); + return (0); +} + +static void +outc(wchar_t c) +{ + int n, i; + int width, widthl, widthc; + wchar_t *p1; + wchar_t c1; + char esc_chars = '\0'; + if (lp > cp) { + line = lbuff; + lp = 0; + } + + while (lp < cp) { + if (*line != '\b') + if (esc_chars) + esc_chars = '\0'; + switch (*line) { + case ESC: + incr_line(1); + esc_chars = 1; + break; + case '\0': + *line = ' '; + lp++; + break; + case '\b': + /* if ( ! esc_chars ) */ + lp--; + break; + default: + lp += wcscrwidth(*line); + } + incr_line(1); + } + while (*line == '\b') { + /* + * EUC (For a multi-column character, backspace characters + * are assumed to be used like "__^H^HXX", where "XX" + * represents a two-column character, and a backspace + * always goes back by one column.) + */ + for (n = 0; *line == '\b'; incr_line(1)) { + n++; + lp--; + } + while (n > 0 && lp < cp) { + i = *line; + incr_line(1); + i = wcscrwidth(i); + n -= i; + lp += i; + } + } + while (*line == ESC) + incr_line(6); + widthc = wcscrwidth(c); + widthl = wcscrwidth(*line); + if (bflag || (*line == '\0') || *line == ' ') { + if (*line == '\0' || widthl == widthc) { + *line = c; + } else if (widthl > widthc) { + n = widthl - widthc; + wsinsert(line, n); + *line = c; + incr_line(1); + for (i = 0; i < n; i++) { + *line = ' '; + incr_line(1); + } + line = lbuff; + lp = 0; + } else { + n = widthc - widthl; + if (line < lbuffend) { + for (p1 = line+1; n > 0 && p1 < lbuffend; + n -= wcscrwidth(i)) { + i = *p1++; + } + *line = c; + if (p1 < lbuffend) { + n_wcscpy(line+1, p1, lbuffend - + line - 1); + } else { + (void) fprintf(stderr, + gettext("col: Line too long.\n")); + exit(1); + } + } else { + (void) fprintf(stderr, + gettext("col: Line too long.\n")); + exit(1); + } + } + } else { + if (smart && (widthl == 1) && (widthc == 1)) { + wchar_t c1, c2, c3, c4, c5, c6, c7; + incr_line(1); + c1 = *line; + *line = ESC; + incr_line(1); + c2 = *line; + *line = '['; + incr_line(1); + c3 = *line; + *line = '\b'; + incr_line(1); + c4 = *line; + *line = ESC; + incr_line(1); + c5 = *line; + *line = ']'; + incr_line(1); + c6 = *line; + *line = c; + incr_line(1); + while (c1) { + c7 = *line; + *line = c1; + incr_line(1); + c1 = c2; + c2 = c3; + c3 = c4; + c4 = c5; + c5 = c6; + c6 = c7; + } + } else { + if ((widthl == 1) && (widthc == 1)) { + wchar_t c1, c2, c3; + incr_line(1); + c1 = *line; + *line = '\b'; + incr_line(1); + c2 = *line; + *line = c; + incr_line(1); + while (c1) { + c3 = *line; + *line = c1; + incr_line(1); + c1 = c2; + c2 = c3; + } + } else { + width = (widthc > widthl) ? widthc : widthl; + for (i = 0; i < width; i += wcscrwidth(c1)) { + c1 = *line; + incr_line(1); + } + wsinsert(line, width + (width - widthc + 1)); + for (i = 0; i < width; i++) { + *line = '\b'; + incr_line(1); + } + *line = c; + incr_line(1); + for (i = widthc; i < width; i++) { + *line = ' '; + incr_line(1); + } + } + } + lp = 0; + line = lbuff; + } +} + +static void +store(int lno) +{ + size_t bufsiz; + lno %= PL; + if (page[lno] != 0) + free((char *)page[lno]); + bufsiz = wcslen(lbuff) + 2; + page[lno] = (wchar_t *)malloc(bufsiz * sizeof(wchar_t)); + if (page[lno] == 0) { + /* fprintf(stderr, "%s: no storage\n", pgmname); */ + exit(2); + } + n_wcscpy(page[lno], lbuff, bufsiz); +} + +static void +fetch(int lno) +{ + wchar_t *p; + + lno %= PL; + p = lbuff; + while (*p) + *p++ = '\0'; + line = lbuff; + lp = 0; + if (page[lno]) + n_wcscpy(line, page[lno], LINELN); +} + +static void +emit(wchar_t *s, int lineno) +{ + static int cline = 0; + int ncp; + wchar_t *p, *begin = s; + int cshifted; + char chr[MB_LEN_MAX + 1]; + + int c; + static int gflag = 0; + + if (*s) { + if (gflag) { + (void) putwchar(SI); + gflag = 0; + } + while (cline < lineno - 1) { + (void) putwchar('\n'); + pcp = 0; + cline += 2; + } + if (cline != lineno) { + (void) putwchar(ESC); + (void) putwchar('9'); + cline++; + } + if (pcp) + (void) putwchar('\r'); + pcp = 0; + p = s; + while (*p) { + ncp = pcp; + while (*p++ == ' ') { + if ((++ncp & 7) == 0 && !xflag) { + pcp = ncp; + (void) putwchar('\t'); + } + } + if (!*--p) + break; + while (pcp < ncp) { + (void) putwchar(' '); + pcp++; + } + if (greeked) { + if (wctomb(chr, *p) == 1) { + if (gflag != (*chr & GREEK) && + *p != '\b' && + isascii(*chr ^ (gflag ^ GREEK)) && + !iscntrl(*chr ^ (gflag ^ GREEK)) && + !isspace(*chr ^ (gflag ^ GREEK))) { + if (gflag) + (void) putwchar(SI); + else + (void) putwchar(SO); + gflag ^= GREEK; + } + } + } + c = *p; + if (greeked) { + if (wctomb(chr, (wchar_t)c) == 1) { + cshifted = (*chr ^ GREEK); + if (isascii(cshifted) && + !iscntrl(cshifted) && + !isspace(cshifted)) + (void) putwchar(*chr & ~GREEK); + } else + (void) putwchar(c); + } else + (void) putwchar(c); + if (c == '\b') { + if (p-begin >= 2 && *(p-2) && *(p-2) == ESC) { + pcp++; + } else + pcp--; + } else { + pcp += wcscrwidth(c); + } + p++; + } + } +} + +static void +incr(void) +{ + store(ll++); + if (ll > llh) + llh = ll; + if (ll >= mustwr && page[ll%PL]) { + emit(page[ll%PL], ll - PL); + mustwr++; + free((char *)page[ll%PL]); + page[ll%PL] = 0; + } + fetch(ll); +} + +static void +decr(void) +{ + if (ll > mustwr - PL) { + store(ll--); + fetch(ll); + } +} + +static void +wsinsert(wchar_t *s, int n) +{ + wchar_t *p1, *p2; + + + p1 = s + wcslen(s); + p2 = p1 + n; + while (p1 >= s) + *p2-- = *p1--; +} + +/* + * incr_line - increments line pointer and checks for array out of bounds + * amt: assumed to be >= 1 + * exit on error to avoid line pointer accessing out of the array + */ +static void +incr_line(int amt) +{ + if (line < lbuffend - amt + 1) { + line += amt; + } else { + (void) fprintf(stderr, gettext("col: Line too long.\n")); + exit(1); + } +} + + +static int +wcscrwidth(wchar_t wc) +{ + int nc; + + if (wc == 0) { + /* + * if wc is a null character, needs to + * return 1 instead of 0. + */ + return (1); + } + nc = wcwidth(wc); + if (nc > 0) { + return (nc); + } else { + return (0); + } +} diff --git a/configure b/configure new file mode 100755 index 000000000000..0afb7c398090 --- /dev/null +++ b/configure @@ -0,0 +1,235 @@ +#!/bin/sh + +# Copyright (c) 2016, Carsten Kunze <carsten.kunze@arcor.de> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +usage () { + echo "Usage: $0 [-s]" + echo " -s Silence output" + exit $1 +} + +SFLAG= +MAKE= +DEFS= +LIB_LEX= +LIB_CURSES= +cat /dev/null > compat.h + +while [ $# -gt 0 ]; do + case $1 in + -s) SFLAG=1;; + *) + echo "$0: $1: Unknown option" >&2 + usage 1;; + esac + shift +done + +check_for () { + [ -e $LOG ] && echo >>$LOG + A="Checking for $1 ... " + echo "$A" >>$LOG + [ -z "$SFLAG" ] && printf "$A" +} + +compile () { + rm -f ${TMPNAM}.o $TMPNAM $OUT $ERR + $MAKE -f $OUTMK $TMPNAM > $OUT 2> $ERR + RESULT=$? + cat $OUT $ERR >> $LOG + if [ $RESULT -eq 0 ]; then true; else false; fi +} + +test_result () { + RESULT=$? + RESULT_TEXT=${1:-0} # 1: omit "no", 2: say nothing + if [ $RESULT -eq 0 ]; then + echo success >>$LOG + [ -z "$SFLAG" -a $RESULT_TEXT -lt 2 ] && \ + echo "yes$PASS_TEXT" + PASS_TEXT= + [ -e $TMPC ] && rm -f $TMPC + true + else + [ -z "$SFLAG" -a $RESULT_TEXT -lt 1 ] && echo no + if [ -e $TMPC ]; then + echo "Failed program:" >>$LOG + pr -n -t $TMPC >>$LOG + rm -f $TMPC + fi + false + fi +} + +gen_mk () { + [ $# -eq 0 ] && rm -f $OUTMK + [ -n "$LEX" ] && echo "LEX=$LEX" >> $OUTMK + [ -n "$FLOAT_STORE" ] && echo "FLOAT_STORE=$FLOAT_STORE" >> $OUTMK + [ -n "$DEFS" ] && echo "DEFINES=$DEFS" >> $OUTMK + [ -n "$INCDIR_CURSES" ] && echo "INCDIR_CURSES=$INCDIR_CURSES" >> $OUTMK + [ -n "$RPATH_CURSES" ] && echo "RPATH_CURSES=$RPATH_CURSES" >> $OUTMK + [ -n "$LIBDIR_CURSES" ] && echo "LIBDIR_CURSES=$LIBDIR_CURSES" \ + >> $OUTMK + [ -n "$LIB_CURSES" ] && echo "LIB_CURSES=$LIB_CURSES" >> $OUTMK + [ -n "$LIB_AVLBST" ] && echo "LIB_AVLBST=$LIB_AVLBST" >> $OUTMK + [ -n "$LIB_LEX" ] && echo "LIB_LEX=$LIB_LEX" >> $OUTMK + [ -n "$__CDBG" ] && echo "__CDBG=$__CDBG" >> $OUTMK + [ -n "$__SAN" ] && echo "__SAN=$__SAN" >> $OUTMK + cat $INMK >> $OUTMK || exit 1 +} +check_make () { + check_for "make(1)" + + cat <<EOT >$TMPMK +all: + true +EOT + make -f $TMPMK >> $LOG 2>&1 + test_result && { + MAKE=make + return + } + + echo "Failed makefile:" >>$LOG + pr -n -t $TMPMK >>$LOG + + check_for "bmake(1)" + + cat <<EOT >$TMPMK +all: + true +EOT + bmake -f $TMPMK >> $LOG 2>&1 + test_result && MAKE=bmake +} +check_lex () { + check_for '$(LEX)' + + cat <<EOT >$TMPL +%% +%% +int main() { return 0; } +int yywrap(void) { return 0; } +EOT + compile + test_result && return + + check_for 'flex(1)' + + LEX=flex + gen_mk + compile + test_result && return + + check_for 'lex(1)' + + LEX=lex + gen_mk + compile + test_result && return +} +check_strlcpy () { + check_for "strlcpy(3)" + + cat <<EOT >$TMPC +#include <string.h> +int +main(int argc, char **argv) { + char a[10]; + (void)argc; + strlcpy(a, *argv, sizeof a); + return 0; +} +EOT + compile + if test_result; then + DEFS="$DEFS -DHAVE_STRLCPY" + else + H=compat.h + grep -q '<sys/types\.h>' $H 2>/dev/null || cat <<EOT >>$H +#include <sys/types.h> +EOT + cat <<EOT >>$H +size_t strlcpy(char *, const char *, size_t); +EOT + fi +} +check_strlcat () { + check_for "strlcat(3)" + + cat <<EOT >$TMPC +#include <string.h> +int +main(int argc, char **argv) { + char a[10]; + (void)argc; + *a = 0; + strlcat(a, *argv, sizeof a); + return 0; +} +EOT + compile + if test_result; then + DEFS="$DEFS -DHAVE_STRLCAT" + else + H=compat.h + grep -q '<sys/types\.h>' $H 2>/dev/null || cat <<EOT >>$H +#include <sys/types.h> +EOT + cat <<EOT >>$H +size_t strlcat(char *, const char *, size_t); +EOT + fi +} +check_wcslcpy () { + check_for "wcslcpy(3)" + + cat <<EOT >$TMPC +#include <stdio.h> +#include <wchar.h> +int +main() { + wchar_t a, b; + a = getwchar(); + wcslcpy(&b, &a, 1); + return 0; +} +EOT + compile + test_result && DEFS="$DEFS -DHAVE_WCSLCPY" +} + [ ! -s compat.h ] && rm compat.h +OUTMK=cfg.mk +INMK=mk.config +CFG=config +TMPNAM=.$CFG +TMPMK=${TMPNAM}.mk +TMPC=${TMPNAM}.c +TMPL=${TMPNAM}.l +OUT=${TMPNAM}.out +ERR=${TMPNAM}.err +LOG=${CFG}.log +rm -f $LOG +gen_mk + +check_make +check_lex +check_strlcpy +check_strlcat +check_wcslcpy + +gen_mk +cat version.mk >> $OUTMK || exit 1 +rm -f $TMPNAM* diff --git a/doc/fonts/README b/doc/fonts/README new file mode 100644 index 000000000000..8f234482c664 --- /dev/null +++ b/doc/fonts/README @@ -0,0 +1,13 @@ +README for the Heirloom Troff Font Handling Manual +================================================== + +To build this manual, you need the Garamond Premier Pro +Opticals fonts from Adobe, and need to set the TROFFONTS +variable accordingly. + +Note that as of autumn 2005, it was not possible to +download fonts bought directly from Adobe using a Linux +system. There are many other shops that sell Adobe fonts, +though, and these usually allow downloads for Linux users. + +Gunnar Ritter 01/08/07 diff --git a/doc/fonts/doc.more b/doc/fonts/doc.more new file mode 100644 index 000000000000..ec6911ae3e2b --- /dev/null +++ b/doc/fonts/doc.more @@ -0,0 +1,1518 @@ + + + + + + Font Handling in Troff With PostScript + Devices + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FONT HANDLING IN TROFF + + WITH POSTSCRIPT DEVICES + + + + + + Gunnar Ritter + + 10/24/06 + + + + + + + + + + + + + + + + + + + + + + + + Heirloom Documentation Tools + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://nâ€t†+ roff.github.io/heirloom/doctools.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _T_h_e _b_a_s_i_c_s + + Heirloom _t_r_o_f_f understands two ways to + select PostScript fonts. + The current method can access PostScript + font files directly. Fonts are selected + using an extended ‘‘.fp’’ request. As + simple examples, + + .fp 0 R somefont pfb + .ft R + Here is some text in somefont. + Here is some text in somefont. + + or, with the Linux Libertine font used in + this document, + + .fp 0 R LinLibertine_R otf + .ft R + Here is some text in Linux Libertine Regular. + Here is some text in Linux Libertine Regular. + + But it is also possible to have differ†+ ent names for the metrics and glyph data + files, as in + + .fp 0 R mykerning.afm somefont.pfb + .ft R + This text prints in somefont using modified kerning. + This text prints in somefont using modified kerning. + + The default higherâ€resolution ‘‘ps’’ + PostScript device always uses AFM files; + it supports the conventional ‘‘.fp’’ re†+ quest for backwards compatibility to se†+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lect preâ€installed fonts from the PDF + base set. + With fonts selected by this method, lo†+ calized input processing is performed ac†+ cording to the LC_CTYPE environment vari†+ able, or according to a documentâ€specific + value set by the ‘‘.lc_ctype’’ request: + + . Enable long request names. + .do xflag 3 + . de_DE.utf8 is for GNU libc; de_DE.UTFâ€8 works elsewhere. + .lc_ctype de_DE.utf8 + Deutscher Text mit ‹Anführungszeichen› + Deutscher Text mit ‹Anführungszeichen› + .sp + The first five small letters of the Greek alphabet: α β γ δ ε + The first five small letters of the Greek alphabet: α β γ δ ε + + Note that any use of AFM, OpenType, or + TrueType files requires that the output + of _t_r_o_f_f is passed to the exactly match†+ ing version of _d_p_o_s_t, i.e. to the one + that was delivered with the same release + of this package. Sending such _t_r_o_f_f out†+ put directly to a print spooler that in†+ vokes a system version of _d_p_o_s_t will thus + usually not work. + The historical method requires font ta†+ bles to be generated manually. It is + still supported, and is still the default + for the lowerâ€resolution ‘‘post’’ Post†+ Script device, but it is not recommend†+ ed anymore that it is used for adding + fonts. Localized input processing accord†+ ing to LC_CTYPE is not available with + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + this method. + + + _I_n_s_t_a_l_l_i_n_g _P_o_s_t_S_c_r_i_p_t _T_y_p_e _1 _f_o_n_t_s + + Making additional fonts available is + easy with the current method. If you buy + a PostScript Type 1 font for use with + _t_r_o_f_f, select the Windows version. You + will get a set of files from the ven†+ dor. Only two of them are of interest for + _t_r_o_f_f: + + xxxxxxxx.afm + This is the metrics file. _t_r_o_f_f ac†+ cesses it to learn the widths of char†+ acters in the font. + + xxxxxxxx.pfb + This file contains the actual glyph + data. _t_r_o_f_f does not really need this + file, but the printer or PDF converter + does. In many cases, it is most con†+ venient to include the data directly + into the .ps file generated, as in the + examples above. + + Create a directory to hold your fonts. + For compatibility with future ver†+ sions of _t_r_o_f_f, it is recommended that + it is put outside the _t_r_o_f_f hierar†+ chy /usr/ucblib/doctools; something be†+ low /usr/local may be a good choice. + For each font you want to install, copy + or link both the AFM and the PFB file + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + into the directory. Set the TROFFONTS + environment variable to this directory; + if you have multiple font directories, + you can separate them in TROFFONTS by + colons, just as in the PATH variable for + the shell, e.g. ‘‘TROFFONTS=/usr/local/ + share/fonts:/usr/share/fonts export TROF†+ FONTS’’. Write the definition in your + ‘‘.profile’’ or a similar startup file to + make it permanent. You can now use the + fonts with _t_r_o_f_f. If you want to install + more fonts later, it is sufficient to put + them into the font directory. + + + _I_n_s_t_a_l_l_i_n_g _O_p_e_n_T_y_p_e _o_r _T_r_u_e_T_y_p_e _f_o_n_t_s + + The procedure for OpenType and True†+ Type fonts is nearly the same as for + Type 1 fonts, except that there is only + one file ‘‘FontName.otf’’ (or ‘‘Font†+ Name.ttf’’) with them that contains both + metrics and glyph data. Just copy this + file to a directory given in the TROF†+ FONTS path. + + + _U_s_i_n_g _O_p_e_n_T_y_p_e _f_e_a_t_u_r_e_s + + Highâ€quality OpenType fonts may contain + feature tables that allow special typo†+ graphic effects. For example, the Lin†+ ux Libertine font contains superscripts + characters that can be accessed with the + ‘‘.feature’’ request in _t_r_o_f_f: + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .do xflag 3 + .fp 1 R LinLibertine_R otf + .fp 0 U LinLibertine_R otf + .feature U +sups + .ft R + Regular text which ends with\fUsuperscript\fR. + Regular text which ends withsuperscript. + + To retrieve a list of features in an + individual font that are available with + _t_r_o_f_f, use ‘‘otf_info s font.otf’’. Typi†+ cal useful features are: + + +c2sc converts capitals to small capitals + +case substitutions for use in combination with + text in allâ€capital letters + +onum oldâ€style numerals + +pnum proportional (lining) numerals + +pnum +onum proportional oldâ€style numerals + +smcp converts lowerâ€case letters to small capitals + +smcp +c2sc converts all letters to small capitals + +titl titling characters + +sups superscript + +infs subscript + +zero slashed zero + + Features such as ‘‘aalt’’ or ‘‘ornm’’ + which only map sets of very special char†+ acters to different positions are nor†+ mally not useful with _t_r_o_f_f since these + characters can be accessed directly us†+ ing ‘‘[name]’’ escape sequences anyway. + To make an individual alternate character + the default, the ‘‘.ftr’’ request can be + used: + + + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ._d_o _x_f_l_a_g _3 + ._f_p _0 _R _L_i_n_L_i_b_e_r_t_i_n_e__R _o_t_f + ._f_t_r _R _h\[_h._a_l_t] + ._f_t _R + _U_s_i_n_g _a_l_t_e_r_n_a_t_e _c_h_a_r_a_c_t_e_r _i_n _t_h_e _w_o_r_d ‘‘_h_e_l_l_o.’’ + Using alternate character in the word ‘‘ello.’’ + + Feature mappings result in changes to + the same internal data structures as + the ‘‘.ftr’’ request. It is thus pos†+ sible to make adjustments to mappings + by using ‘‘.ftr’’ after ‘‘.feature’’, or + to create personalized variants by using + ‘‘.ftr’’ based on the data obtained from + ‘‘otf_info s’’. + The ‘‘.feature’’ request must still be + active for a font when a character is + printed; disabling a feature with ‘‘.fea†+ ture F feat’’ only works completely if + all of its mappings are still in posi†+ tion. It is thus recommended that the + ‘‘.feature’’ request is used only once + for a font immediately after it has been + mounted, and that a font is mounted mul†+ tiple times, each time for enabling an + individual feature set. Doing so has the + additional advantage that switching be†+ tween features is conveniently possible + using the ‘‘f’’ escape sequence. + + + _U_s_i_n_g _f_o_n_t_s _w_i_t_h _o_l_dâ€_s_t_y_l_e _n_u_m_e_r_a_l_s + + A Type 1 font with oldâ€style numerals + but otherwise standard characters usually + + + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + does not require any special mechanism. + It can simply be mounted, selected, and + used. + Oldâ€style numerals contained in OpenType + fonts can be accessed conveniently by + mapping them to the standard ASCII num†+ bers with the ‘‘.feature’’ request: + + .do xflag 3 + .fp 1 R LinLibertine_R otf + .feature R +onum + The numerals 0 1 2 3 4 5 6 7 8 9 are in oldâ€style. + The numerals 0 1 2 3 4 5 6 7 8 9 are in oldâ€style. + + + _U_s_i_n_g _f_o_n_t_s _w_i_t_h _s_m_a_l_l _c_a_p_i_t_a_l _l_e_t_t_e_r_s + + Small capital fonts sometimes need let†+ ter space tracking. Thus e.g. to use the + Linux Libertine small capital font, you + can write something like + + .do xflag 3 + .fp 0 SC LinLibertine_R otf + .feature SC +smcp + .track SC 1 1.2 40 0 + .ft SC + This text prints in Small Capitals. + This text prints in Small Capitals. + + + _U_s_i_n_g _a _c_o_m_b_i_n_a_t_i_o_n _o_f _e_x_p_e_r_t _a_n_d _s_t_a_n_†+ _d_a_r_d _f_o_n_t_s _f_o_r _s_m_a_l_l _c_a_p_i_t_a_l_s + + A Type 1 expert font contains small cap†+ + + 7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ital letters but no upperâ€case capital + letters. Since it would be very inconve†+ nient to change the font explicitly for + each upperâ€case letter, the fallback se†+ quence is useful in this case. The ex†+ pert font is selected as text font, but + for each upperâ€case letter encountered, + _t_r_o_f_f changes automatically to the stan†+ dard font: + + .do xflag 3 + .fp 1 R normalfont pfb + .fp 0 E expertfont pfb + .track E 1 .2 24 2 + .fallback E R + .ft E + This text prints in Small Capitals. + This text prints in Small Capitals. + + For OpenType fonts, all small capital + letters are contained within the base + font, and the ‘‘smcp’’ feature accesses + them as shown above. + + + _U_s_i_n_g _a _c_o_m_b_i_n_a_t_i_o_n _o_f _e_x_p_e_r_t _a_n_d _s_t_a_n_†+ _d_a_r_d _f_o_n_t_s _f_o_r _o_l_dâ€_s_t_y_l_e _n_u_m_e_r_a_l_s + + This also uses the fallback sequence, + but since the standard numerals are + present in the standard font, they have + to be hidden first so that _t_r_o_f_f does not + select them: + + .do xflag 3 + + + 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .fp 1 R normalfont pfb + .fp 0 E expertfont pfb + .fallback R E + .hidechar R 0123456789 + .ft R + The numerals 0 1 2 3 4 5 6 7 8 9 are in oldâ€style. + The numerals 0 1 2 3 4 5 6 7 8 9 are in oldâ€style. + + + _U_s_i_n_g _t_h_e _e_x_p_e_r_t _f_o_n_t _f_o_r _b_o_t_h _s_m_a_l_l _c_a_p_†+ _i_t_a_l_s _a_n_d _o_l_dâ€_s_t_y_l_e _n_u_m_e_r_a_l_s + + The examples above can also be combined. + Since the ‘‘.track’’ request does not af†+ fect the tracking of fonts that are se†+ lected by the fallback sequence, it is + sufficient to mount each font once: + + .do xflag 3 + .fp 1 R normalfont pfb + .fp 0 E expertfont pfb + .fallback R E + .fallback E R + .track E 1 .2 24 2 + .hidechar R 0123456789 + .ft R + The numerals 0 1 2 3 4 5 6 7 8 9 are in oldâ€style. + The numerals 0 1 2 3 4 5 6 7 8 9 are in oldâ€style. + .br + .ft E + But this text prints in Small Capitals. + But this text prints in Small Capitals. + + + + + + 9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _U_s_i_n_g _t_h_e _e_x_p_e_r_t _f_o_n_t _f_o_r _l_i_g_a_t_u_r_e_s + + PostScript Type 1 fonts usually do not + contain ligatures for ff, ffi, and ffl + in the base font; an expert font deliv†+ ers them in addition. Automatic substitu†+ tion of such ligatures can be enabled us†+ ing the ‘‘.flig’’ request in combination + with the fallback sequence: + + .do xflag 3 + .fp 1 R normalfont pfb + .fp 0 E expertfont pfb + .fallback R E + .flig R ff \(ff ffi \(Fi ffl \(Fl + .ft R + effective office offline + eective ofice ofline + + OpenType fonts contain all available + ligatures in the base font, so no special + procedure needs to be applied with them. + + + _D_e_f_i_n_i_n_g _a_d_d_i_t_i_o_n_a_l _l_i_g_a_t_u_r_e_s + + Fonts may provide ligatures beyond the + five standard _t_r_o_f_f ones. They are not + activated by default regardless of any + definitions in the font metrics files, + but can be enabled individually as de†+ sired; _t_r_o_f_f will then replace sequences + of characters automatically with them as + with the standard ligatures. For exam†+ ple, Linux Libertine contains ligatures + + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + for use with the historic ‘‘’’ letter + variant: + + .do xflag 3 + .fp 1 R LinLibertine_R otf + .flig R \[longs]\[longs] \[longs_longs] \[longs]i \[longs_i] + .flig R \[longs]\[longs]i \[longs_longs_i] + U\[longs]e the\[longs]e ligatures + for cla\[longs]\[longs]ic typography. + Ue thee ligatures for clac typography. + + _t_r_o_f_f splits ligatures in two parts when + hyphenating words. It is thus necessary + that any part of a ligature that is not + a single character is also defined as a + ligature, so ‘‘’’ and ‘‘’’ are prerequi†+ sites for ‘‘’’. + It is normally not advisable to en†+ able ligatures with special display + forms (such as in ‘‘seion’’) using + the ‘‘.flig’’ mechanism; they should + be set manually as special characters + (‘‘\[c_t]’’ in this case) at precise lo†+ cations. + + + _C_h_o_o_s_i_n_g _b_e_t_w_e_e_n _m_u_l_t_i_p_l_e _p_o_s_s_i_b_l_e _l_i_g_a_†+ _t_u_r_e_s + + If a font contains only twoâ€charac†+ ter ligatures, there are two possibil†+ ities for automatic ligature building + with an input sequence that would form + a threeâ€character ligature, e.g., ‘‘ffi’’ + could be constructed as ‘‘i’’ or ‘‘ffi’’. + + + 11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _t_r_o_f_f normally selects the first ligature + available, so ‘‘i’’ would be the default. + In many cases, the other choice would be + aesthetically preferable; this is the ap†+ plication for the ‘‘.fdeferlig’’ request: + + .do xflag 3 + .fp 1 R LinLibertine_R otf + .flig R \[longs]\[longs] \[longs_longs] \[longs]i \[longs_i] + .fdeferlig R \[longs]\[longs]i + Choo\[longs]ing the \[longs]econd ligature looks po\[longs]\[longs]ibly better. + Choong the econd ligature looks pobly better. + + + _C_o_m_b_i_n_i_n_g _d_i_f_f_e_r_e_n_t _f_o_n_t_s + + Different fonts often have different vi†+ sual sizes even if they are set in the + same nominal point size. Also fonts from + different vendors are often based on dif†+ ferent standards for character heights. + To adjust this, the ‘‘.fzoom’’ request + is available. As implied by this pur†+ pose, it only applies to characters that + are actually in the current font, not to + characters from another font that have + been selected using the fallback se†+ quence. + + .do xflag 3 + .fp 1 R LinLibertine_R otf + .fp 0 M LinLibertine_M otf + .track M 1 â€.1 40 â€0 + .fzoom M .8 + \fMLibertine Monospace\fR must be adjusted to fit with Roman. + + + 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Libertine Monospace must be adjusted to fit with Roman. + + The ‘‘.fzoom’’ request affects all char†+ acters set in the respective font on the + current output line. To create single + zoomed words, mount a font twice under + different names, but zoom it only once. + + + _S_p_a_c_i_n_g _o_u_t _i_n_d_i_v_i_d_u_a_l _w_o_r_d_s + + Spacing out the characters of individ†+ ual words is commonly done for high†+ lighting text e.g. with German blacklet†+ ter faces; the ‘‘.track’’ request can be + used for this as well. Like ‘‘.fzoom’’, + ‘‘.track’’ applies to all characters in + the respective font on an entire output + line. Thus it is also necessary to mount + a font twice but to track it only once + when it is used for tracking individual + words. + + + _S_e_t_t_i_n_g _t_e_x_t _i_n _a_l_lâ€_c_a_p_i_t_a_l _l_e_t_t_e_r_s + + When setting text in allâ€capital let†+ ters, it is normally necessary to zoom + the font to a smaller size than that of + the lowerâ€case text surrounding it, and + to track it as well. Mounting the regular + font a second time is the most convenient + way to handle this: + + .do xflag 3 + + + 13 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .fp 1 R LinLibertine_R otf + .fp 0 C LinLibertine_R otf + .track C 1 1.2 40 0 + fzoom C .9 + Regular text and \fCALLâ€CAPITAL TEXT\fR which ends. + Regular text and ALLâ€CAPITAL TEXT which ends. + + + _P_a_i_r_w_i_s_e _k_e_r_n_i_n_g + + Pairwise kerning is enabled unless the + x0 option is given. The ‘‘.kern’’ request + disables it. Kerning tables are initially + read from the AFM, OpenType, or TrueType + files; this default kerning only applies + if two adjacent characters are from the + same font. A fontâ€specific kerning table + can be disabled using the ‘‘.fkern’’ re†+ quest. + There are two methods to adjust the + kerning tables: In some cases, it is most + convenient to create a private copy of + the AFM file and to adjust the ‘‘KPX’’ + entries in it. This has the advantage + that the modified kerning pairs are imme†+ diately available for use in other docu†+ ments. + For OpenType or TrueType fonts, or for + cases where this is not suitable with + Type 1 fonts, or not possible because the + characters in the kerning pair originate + from different fonts, _t_r_o_f_f provides the + ‘‘.kernpair’’ request: + + .do xflag 3 + + + 14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .fp 1 R LinLibertine_R otf + .feature R +onum + .kernpair R 0 R / 50 + .kernpair R / R 1 90 + .kernpair R 1 R / 40 + .kernpair R / R 2 80 + 0/1/2 + 0/1/2 + + In this example, oldâ€style numerals from + Linux Libertine are mixed with the slash + character, and are adjusted to achieve + matching visual letter spacing. + + + _K_e_r_n_i_n_g _o_f _a _c_h_a_r_a_c_t_e_r _i_n _a_n_y _c_o_m_b_i_n_a_t_i_o_n + + It is sometimes useful to add a cer†+ tain amount of space whenever a charac†+ ter appears, for example before ‘‘;’’ or + ‘‘?’’, or on the inner sides of guille†+ mots in French/Swiss style. The ‘‘.ker†+ nafter’’ and ‘‘.kernbefore’’ requests are + useful for this: + + .do xflag 3 + .kernafter R ; 66 ? 66 + + If the characters affected by these re†+ quests are also member of a regular kern†+ ing pair, the resulting added space is + the sum of both definitions. These re†+ quests are applied at the same places as + kerning pairs, i.e. they have no effect + if following or preceding a motion com†+ + + 15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mand, ‘‘’’ or line margin, and they are + additionally restricted to have no effect + if the other character is a space. + + + _H_a_n_g_i_n_g _c_h_a_r_a_c_t_e_r_s + + Since there are no tables for hang†+ ing characters in AFM files, values must + be given explicitly in _t_r_o_f_f source code + using the ‘‘.lhang’’ and ‘‘.rhang’’ re†+ quests. Both accept a font specification + followed by one or more pairs of charac†+ ters and values: + + .do xflag 3 + .ps 10 + .fp 1 R somefont pfb + .lhang R V 50 J 40 + .rhang R (hy 80 + + Adjustments are given in units of + 1/72000 inch multiplied by the actual + point size, or 1/1000 of the em size when + the line is printed. Thus in this exam†+ ple, the left margin is shifted to the + left by .5 points when the leftmost let†+ ter is a ‘‘V’’, and by .4 points when + the leftmost letter is a ‘‘J’’; the right + margin is shifted to the right by .8 + points when the rightmost letter is a hy†+ phen. + Left margin adjustments are evaluated + before the letters that fit on the cur†+ rent line are computed, and can thus + + + 16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + principally be of any length. In con†+ trast, right margin adjustments are eval†+ uated after this computation is finished, + and the adjustment is simply added to the + word space of the output line. Thus a + positive right adjustment that is large + in relation to the line length will cause + visible holes, and a negative adjustment + will ultimately cause the words on the + line to be printed over each other. This + is not a problem for the typical ap†+ plication of hanging punctuation for vi†+ sual alignment, though; if a line with + eight word spaces is shifted in the exam†+ ple above, each word space is enlarged by + only 1/100 em. + + + _M_a_t_h_e_m_a_t_i_c_a_l _a_n_d _o_t_h_e_r _s_p_e_c_i_a_l _c_h_a_r_a_c_t_e_r_s + + Special mathematical characters like + ‘‘(’’, greek letters like ‘‘(*a’’, and, + with the ‘‘pslow’’ device, even the punc†+ tuation characters (or ` ´ # < > @ + are normally not chosen from the current + font, but are taken from the special font + instead. (PostScript names (e.g. ‘‘[num†+ bersign]’’, ‘‘[less]’’, ‘‘[at]’’) access + characters from the current font.) The + ‘‘.fps’’ request can be used to over†+ ride this behavior. In particular, this + is useful to set mathematical text with + a different font. To use Linux Libertine + for greek letters and mathematical sym†+ bols: + + + 17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .do xflag 3 + .fps math,greek,punct,large 1 R LinLibertine_R otf + .fp 2 I LinLibertine_RI otf + .fallback I R + .EQ + a = pi {r sup 2} + .EN + + + _H_e_l_p_e_r _u_t_i_l_i_t_i_e_s + + The _o_t_f__i_n_f_o utility shows the contents + of an OpenType or TrueType font file just + as _t_r_o_f_f interprets it. It emits an ASCII + format that is readable by humans and can + also be used for further processing with + shell scripts. It is useful to retrieve + lists of characters and features support†+ ed with the font. + The shell script ‘‘stuff/showfont.sh’’ + in the source code distribution uses + _t_r_o_f_f and possibly _o_t_f__i_n_f_o to print a + map of all characters in an AFM, Open†+ Type, or TrueType font along with their + PostScript names. + + + _L_i_m_i_t_a_t_i_o_n_s + + _d_p_o_s_t uses a method to embed CFF†+ based (PostScriptâ€style) OpenType fonts + in PostScript documents that is only + available with PostScript 3 interpreters; + older printing equipment that uses Post†+ Script Level 2 or below cannot handle + + + 18 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + such documents directly. The recommended + workaround is to convert the PostScript + output to a PDF document and to print it + using a PDF viewer or reverse conversion + program. Also you may have to update + your copy of Ghostscript in order to cre†+ ate PDF files with proper font embedding + from such output. + Embedding TrueType fonts in PostScript + documents requires PostScript 3 or Post†+ Script Level 2 of at least version 2013. + _t_r_o_f_f only supports OpenType features + that result in singleâ€character substitu†+ tions insensitive of context (except for + the ‘‘fi fl ff ffi ffl’’ ligatures and + kerning which are enabled by default if + possible). Also _t_r_o_f_f ignores any fea†+ tures that are not mapped to the ‘‘DFLT’’ + or ‘‘latn’’ languages in an OpenType + font. + + + + + + + + + + + + + + + + + + 19 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/fonts/doc.ps b/doc/fonts/doc.ps new file mode 100644 index 000000000000..98e66ec51643 --- /dev/null +++ b/doc/fonts/doc.ps @@ -0,0 +1,44884 @@ +%!PS-Adobe-3.0 +%%Creator: Heirloom Documentation Tools - dpost 8.77 (gritter) 6/19/11 +%% +%%LanguageLevel: 3 +%%DocumentFonts: LinLibertineO LinLibertineDisplayO LinLibertineOI +%%+ LinLibertineMO Symbol +%%Pages: 18 +%%DocumentMedia: x420y595 420 595 0 () () +%%DocumentNeededResources: procset FontSetInit 0 0 +%%+ font Symbol +%%DocumentSuppliedResources: font LinLibertineO +%%+ font LinLibertineDisplayO +%%+ font LinLibertineOI +%%+ font LinLibertineMO +%%EndComments +%%BeginProlog +%%BeginResource: procset dpost 4.19 0 +% +% Copyright 2005 Sun Microsystems, Inc. All rights reserved. +% Use is subject to license terms. +% +% CDDL HEADER START +% +% The contents of this file are subject to the terms of the +% Common Development and Distribution License, Version 1.0 only +% (the "License"). You may not use this file except in compliance +% with the License. +% +% You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +% or http://www.opensolaris.org/os/licensing. +% See the License for the specific language governing permissions +% and limitations under the License. +% +% When distributing Covered Code, include this CDDL HEADER in each +% file and include the License file at usr/src/OPENSOLARIS.LICENSE. +% If applicable, add the following below this CDDL HEADER, with the +% fields enclosed by brackets "[]" replaced with your own identifying +% information: Portions Copyright [yyyy] [name of copyright owner] +% +% CDDL HEADER END +% +% from OpenSolaris "dpost.ps 1.7 05/06/08 SMI" +% +% Portions Copyright 2005 Gunnar Ritter, Freiburg i. Br, Germany +% +% Sccsid @(#)dpost.ps 4.19 (gritter) 2/7/10 +% + +/#copies 1 store +/aspectratio 1 def +/formsperpage 1 def +/landscape false def +/linewidth .3 def +/magnification 1 def +/margin 0 def +/orientation 0 def +/resolution 720 def +/xoffset 0 def +/yoffset 0 def + +/roundpage true def +/useclippath true def +/pagebbox [0 0 612 792] def + +/R /Times-Roman def +/I /Times-Italic def +/B /Times-Bold def +/BI /Times-BoldItalic def +/H /Helvetica def +/HI /Helvetica-Oblique def +/HB /Helvetica-Bold def +/HX /Helvetica-BoldOblique def +/CW /Courier def +/CO /Courier def +/CI /Courier-Oblique def +/CB /Courier-Bold def +/CX /Courier-BoldOblique def +/PA /Palatino-Roman def +/PI /Palatino-Italic def +/PB /Palatino-Bold def +/PX /Palatino-BoldItalic def +/Hr /Helvetica-Narrow def +/Hi /Helvetica-Narrow-Oblique def +/Hb /Helvetica-Narrow-Bold def +/Hx /Helvetica-Narrow-BoldOblique def +/KR /Bookman-Light def +/KI /Bookman-LightItalic def +/KB /Bookman-Demi def +/KX /Bookman-DemiItalic def +/AR /AvantGarde-Book def +/AI /AvantGarde-BookOblique def +/AB /AvantGarde-Demi def +/AX /AvantGarde-DemiOblique def +/NR /NewCenturySchlbk-Roman def +/NI /NewCenturySchlbk-Italic def +/NB /NewCenturySchlbk-Bold def +/NX /NewCenturySchlbk-BoldItalic def +/ZD /ZapfDingbats def +/ZI /ZapfChancery-MediumItalic def +/VR /Varitimes#Roman def +/VI /Varitimes#Italic def +/VB /Varitimes#Bold def +/VX /Varitimes#BoldItalic def +/S /S def +/S1 /S1 def +/GR /Symbol def + +/inch {72 mul} bind def +/min {2 copy gt {exch} if pop} bind def + +/track 0 def +/horscale 1.0 def + +/setup { + counttomark 2 idiv {def} repeat pop + + landscape {/orientation 90 orientation add def} if + /scaling 72 resolution div def + linewidth setlinewidth + 1 setlinecap + + pagedimensions + xcenter ycenter translate + orientation neg rotate + width 2 div neg height 2 div translate + xoffset inch yoffset inch translate + margin 2 div dup neg translate + magnification dup aspectratio mul scale + scaling scaling scale + + /Symbol /S Sdefs cf + /Times-Roman /S1 S1defs cf + 0 0 moveto +} def + +/pagedimensions { + useclippath userdict /gotpagebbox known not and { + /pagebbox [clippath pathbbox newpath] def + roundpage currentdict /roundpagebbox known and {roundpagebbox} if + } if + pagebbox aload pop + 4 -1 roll exch 4 1 roll 4 copy + landscape {4 2 roll} if + sub /width exch def + sub /height exch def + add 2 div /xcenter exch def + add 2 div /ycenter exch def + userdict /gotpagebbox true put +} def + +/pagesetup { + /page exch def + currentdict /pagedict known currentdict page known and { + page load pagedict exch get cvx exec + } if + /Dsetup where {pop Dsetup} if + _custompagesetup +} def + +/decodingdefs [ + {counttomark 2 idiv {y moveto track 0 3 -1 roll ashow} repeat} + {neg /y exch def counttomark 2 idiv {y moveto track 0 3 -1 roll ashow} repeat} + {neg dup /y exch def moveto {2 index dup length track mul exch stringwidth pop add sub exch div 0 32 track 0 6 -1 roll awidthshow} repeat} + {neg dup /y exch def moveto {spacewidth sub track sub 0.0 32 track 0 6 -1 roll awidthshow} repeat} + {/x exch def counttomark 2 idiv 1 add {x y moveto counttomark 1 gt {x exch sub /x exch def} if track 0 3 -1 roll ashow} repeat} + {/x exch def counttomark 2 idiv 1 add {x y moveto counttomark 1 gt {x exch sub /x exch def} if track 0 3 -1 roll ashow} repeat} + {counttomark 2 idiv {y moveto track 0 3 -1 roll ashow} repeat} + {neg setfunnytext} +] def + +/setdecoding {/t decodingdefs 3 -1 roll get def} bind def + +/T {/track exch def} bind def + +/w {neg dup /y exch def moveto track 0 3 -1 roll ashow} bind def +/v {y moveto track 0 3 -1 roll ashow} bind def +/u {y neg t} bind def +/m {neg dup /y exch def moveto} bind def +/done {/lastpage where {pop lastpage} if} def + +/f { + dup /font exch def exch + dup /ptsize exch def scaling div dup /size exch def + horscale 1.0 ne {horscale mul [exch 0 0 size 0 0]} if SF + linewidth ptsize mul scaling 10 mul div setlinewidth + /spacewidth ( ) stringwidth pop def + /horscale 1.0 def +} bind def +/F {ptsize exch f} bind def +/s {font f} bind def +/h {/horscale exch def f} bind def + +/changefont { + /fontheight exch def + /fontslant exch def + currentfont [ + 1 0 + fontheight ptsize div fontslant sin mul fontslant cos div + fontheight ptsize div + 0 0 + ] makefont setfont +} bind def + +/sf {f} bind def + +/cf { + dup length 2 idiv + /entries exch def + /chtab exch def + /newfont exch def + + findfont dup length 1 add dict + /newdict exch def + {1 index /FID ne {newdict 3 1 roll put} {pop pop} ifelse} forall + + newdict /Metrics entries dict put + newdict /Metrics get + begin + chtab aload pop + 1 1 entries {pop def} for + newfont newdict definefont pop + end +} bind def + +% +% A few arrays used to adjust reference points and character widths in some +% of the printer resident fonts. If square roots are too high try changing +% the lines describing /radical and /radicalex to, +% +% /radical [0 -75 550 0] +% /radicalex [-50 -75 500 0] +% + +/Sdefs [ + /underscore [0 0 500 0] + /bracketlefttp [208 500] + /bracketleftbt [208 500] + /bracketrighttp [-60 380] + /bracketrightbt [-60 380] + /braceleftbt [209 490] + /bracketrightex [220 -125 500 0] + /radical [0 0 550 0] + % NeWSprint's \(br is too low, compensate + statusdict /product get (NeWS Server) eq { + /radicalex [-50 100 500 0] + /parenleftex [-20 100 0 0] + + } { + /radicalex [-50 0 500.001 0] + /parenleftex [-20 -170 0 0] + } ifelse + /integral [100 -50 500 0] + /infinity [10 -75 730 0] +] def + +% +% This adjusts the y left bearing of the underscore character in the +% Symbol font to the position expected by troff, depending on the +% font variant actually in use with the current document. +% +/_Sdefsadj { + gsave + /Symbol findfont 1000 scalefont setfont + 0 0 moveto + (\137) false charpath flattenpath pathbbox pop pop exch pop + grestore + 252 add neg + Sdefs 1 [0 5 -1 roll 500 0] put +} def + +/S1defs [ + /underscore [0 80 500.001 0] + /endash [7 90 650 0] +] def + +% from Adobe's PostScript Language Reference Manual, 2nd ed. 1990, pp. 588-589 +/*SF { % Complete selectfont emulation + exch findfont exch + dup type /arraytype eq {makefont}{scalefont} ifelse setfont +} bind def +/languagelevel where % Determine language level + {pop languagelevel} {1} ifelse % of implementation + 2 lt { % ifelse + /SF /*SF load def % Level 1 interpreter present, so + } { % else + /SF /selectfont load def% Level 2 interpreter present, so + } +ifelse + +% from Adobe's pdfmark Reference Manual for Acrobat 7.0, 11/30/04, p. 10 +/pdfmark where % Is pdfmark already available? + {pop} % Yes: do nothing (use that definition) + { % No: define pdfmark as follows: + /globaldict where % globaldict is preferred because + {pop globaldict} % globaldict is always visible; else, + {userdict} % use userdict otherwise. + ifelse + /pdfmark /cleartomark load put + } % Define pdfmark to remove all objects +ifelse % up to and including the mark object. +%%EndResource +%%IncludeResource: procset FontSetInit 0 0 +%%BeginResource: font LinLibertineO +/FontSetInit /ProcSet findresource begin +/LinLibertineO 483417 currentfile /ASCIIHexDecode filter cvx exec +2053746172744461746120 +01000404000101010e4c696e4c6962657274696e654f000102000100411c0b11001c +0b12011c0b13021c0b1403f81504290c03b30c04fecefb941c181bfaf9051d00005e +9d0f1d00000000101d00007380111d000000441d00067eb012098e0200010008000f +001b0029003000370043004a00510057005d0064006b007100770082008d009700a1 +00a700ad00b300b900bf00c500cc00d300d900df00e900f300fa01010107010d0118 +01230129012f01390143014f015b0166017101750179017f0185018c01930199019f +01a601ad01b701b901bb01c601d101dd01e901f501fb0201020d0219021f02250229 +022d02330239024502510257025d0268026b026e0275027c02820288029502a202a8 +02ae02ba02c602cc02d202d802de02e902f402fc0304030c0314031a032003240328 +032e0334033b03420348034e035303580365037203790380038b039603a103ac03b2 +03b803c203cc03d103d803df03e603ed03f403fb0402040904100417041e0425042c +0433043a04410448044f0456045d0464046b0472047904800487048e0495049c04a3 +04aa04af04b404bb04c204c904d004d704de04e504ec04f304fa05010508050f0514 +051905200527052e0535053c0543054a05510558055f0566056d0574057b05820589 +05900597059e05a505ac05b305ba05c105c805cf05d605dd05e405eb05f205f90600 +0607060e0615061c0623062a06310638063f0646064d0654065b0662066906700677 +067e0685068c06920698069f06a606ad06b406bb06c206c906d006d706de06e506ec +06f306fa07010708070f07160720072a073107380743074e0755075c0763076a0771 +0778077f0786078d0794079b07a207a907b007b707be07c507cc07d307da07e107e8 +07ef07f60802080e081a0826082d0834083b0842084908500857085e0865086c0873 +087a08810888088f0896089d08a408ab08b208b908c008c708ce08d508dc08e308eb +08f208f909000907090e0915091c0923092a09310938093f0946094d0954095b0962 +096909700977097e0985098c0993099a09a109a809af09b609bd09c409cb09d209d9 +09e009e709ee09f509fc0a030a0a0a110a180a220a290a300a350a3c0a430a4a0a51 +0a580a5f0a660a6d0a740a7b0a820a890a900a970a9e0aa50aac0ab30aba0ac10acc +0ad30ada0ae10ae80af10aff0b060b0d0b140b1b0b220b290b300b370b3e0b450b4c +0b530b5a0b610b680b6f0b760b7d0b840b970b9e0ba50bac0bb30bba0bc10bc80bcf +0bd60bdd0be40beb0bf20bf90c000c070c0e0c150c1c0c230c2a0c310c380c3f0c46 +0c4d0c570c650c6f0c790c890c9d0cb40cbe0cc80ccf0cd60cdd0ce60cef0cf60cfd +0d040d0b0d120d190d200d270d2e0d350d3c0d430d4a0d510d580d5f0d660d6d0d74 +0d7b0d820d890d900d970d9e0da50db80dc20dcc0dd60df20df90e000e070e0e0e15 +0e1c0e230e2a0e310e380e3f0e460e4d0e540e5b0e620e690e700e770e7e0e850e8c +0e930e9a0ea10ea80eaf0eb80ec10ecf0ed80ee20ee90ef20ef90f000f0d0f140f1b +0f220f290f300f370f3e0f450f4c0f530f5a0f610f680f6f0f760f7d0f840f8b0f92 +0f990fa00fa70fae0fb50fbc0fc80fcf0fd60fdd0fe40feb0ff20ff910001007100e +1015101c1023102a10311038103f1046104d1054105b1062106910701077107e1085 +108c1093109a10a110a810af10b610bd10c410cb10d210d910e010e710ee10f510fc +1103110a11111118111f1126112d1134113b1142114911501157115e1165116c1173 +117a11811188118f1196119d11a411ab11b211b911c011c711ce11d511dc11e311ea +11f111f811ff1206120b12181222122b1237123f124812541260126a127b12801284 +1289128e12951299129c12a112a512aa12b012b212b412b612bd12bf12c212c712ca +12d112d412d712da12df12eb12fa13041310131813211335133a133e13431348134f +13531356135b135f1364136a136c136e13751377137a138013851388138f13921395 +1398139d13a913b813c413d013da13e113e713ef13f613fd14011407140e1415141c +1423142a14311438143f1446144d1454145b1462146914701477147e1485148c1493 +149a14a114a814af14b614bf14c814d114da14e314ec14f514fe1507151015191522 +15291532153b1544154d1556155f15681571157a1583158c1595159e15a715b015b9 +15c215cb15d415dd15e615ef15f81601160a1613161c1625162e1637164016491652 +165b1664166d1676167f16881691169a16a316ac16b516be16c716d016d916e216eb +16f416fd1706170f17181721172a1733173c1745174e1757176017691772177b1782 +178b1794179d17a617af17b817c117ca17d317dc17e517ee17f517fe1807180e1815 +181e1827182e1835183c1843184a18511858185f1866186d1874187b188218891892 +189b18a418ad18b418bb18c218c918d018d718de18e518ec18f318fa1903190c1913 +191a19211928192f1936193d1944194b1952195919601967196e1975197c1983198a +19911998199f19a619ad19b419bb19c219c919d019d719de19e519ec19f319fa1a01 +1a081a0f1a161a1d1a241a2b1a321a391a401a471a4e1a551a5c1a631a6a1a711a78 +1a7f1a861a8d1a941a9b1aa21aa91ab01ab71abe1ac51acc1ad31ada1ae31aea1af1 +1af81aff1b061b0d1b141b1b1b221b291b301b371b3e1b451b4c1b531b5a1b611b68 +1b6f1b761b7d1b841b8b1b921b991ba01ba71bae1bb51bbc1bc31bcc1bd51bde1be7 +1bf01bf91c021c0b1c141c1d1c241c2d1c361c3f1c481c511c5a1c631c6c1c751c7c +1c851c8e1c971ca01ca91cb21cbb1cc41ccd1cd61cdf1ce81cf11cfa1d031d0c1d15 +1d1e1d271d301d391d421d4b1d541d5d1d661d6f1d781d811d8a1d911d981d9f1da9 +1db91dc01dc71dd11ddb1de51df51dfc1e031e0d1e1d1e271e311e3d1e471e571e5e +1e651e6f1e791e831e8a1e9a1ea41eab1eb21eb91ec01ec71ece1ed51edc1ee31eea +1ef41efe1f081f0f1f161f1d1f241f2b1f321f391f401f471f4e1f551f5c1f631f6a +1f711f781f7f1f861f8d1f941f9b1fa21fa91fb01fb71fbe1fc51fcc1fd31fda1fe1 +1fe81fef1ff61ffd2004200b2012201920202027202e2035203c2043204a20512058 +205f2066206d2074207b2082208920902097209e20a520ac20b320ba20c120c820cf +20d620dd20e420eb20f220f921002107210e2115211c2123212a21312138213f2146 +214d2154215b2162216921702177217e2185218c2193219a21a121a821af21b621bd +21c421cb21d221d921e021e721ee21f521fc2203220a22112218221f2226222d2234 +223b2242224922502257225e2265226c2273227a22812288228e2294229a22a022a9 +22b222b922c022c722ce22d522dc22e322ea22f122f822ff2306230d2314231b2322 +232923302337233e2345234c2353235a2364236b2372237923802387238e2395239c +23a323aa23b123b823bf23c623cd23d423db23e223e923f023f723fe2405240c2413 +241a24212428242f2436243d2444244b2452245924602467246e2475247c2483248a +24912498249f24a624ad24b424bb24c224c924d024d724de24e524ec24f324fa2501 +2508250f2516251d2524252b2532253925402547254e2555255c2563256a25712578 +257f2586258d2594259b25a225a925af25b525bc25c325ca25d125d825df25e625ed +25f425fb2602260926102617261e2625262c2633263a26412648264f2656265d2664 +266b2672267926802687268e2695269c26a326aa26b126b826bf26c626cd26d426db +26e226e926f026f726fe2705270c2713271a27212728272f2736273d2744274b2752 +275927602767276e2775277c2783278a27912798279f27a627ad27b427bb27c227c9 +27d027d727de27e527ec27f327fa28012808280f2816281d2824282b283228392840 +2847284e2855285c2863286a28712878287f2886288d2894289b28a228a928b028b7 +28be28c528cc28d328da28e128e828ef28f628fd2904290b2912291929202927292e +2935293c2943294a29512958295f2966296d2974297b2982298929902997299e29a5 +29ac29b329ba29c129c829cf29d629dd29e429eb29f229f92a002a072a0e2a152a1c +2a232a2a2a312a382a3f2a462a4d2a542a5b2a622a692a702a772a7e2a852a8c2a93 +2a9a2aa12aa82aaf2ab62abd2ac42acb2ad22ad92ae02ae72aee2af52afc2b032b0a +2b112b182b1f2b262b2d2b342b3b2b422b492b502b572b5e2b652b6c2b732b7a2b81 +2b882b8f2b962b9d2ba42bab2bb22bb92bc02bc72bce2bd52bdc2be32bea2bf12bf8 +2bff2c062c0d2c142c1b2c222c292c302c372c3e2c452c4c2c532c5a2c612c682c6e +2c742c7b2c822c912c9f2cac2cb72cc72cd02cd92ce72cf02cfd2d0a2d112d1e2d2b +2d362d442d4d2d542d622d682d6e2d792d862d8d2d942d9b2da42daf2db62dbd2dce +2ddd2dec2df32dfa2e012e0e2e182e252e322e3e2e4c2e5a2e672e742e822e902ea2 +2eb52ebf2ecc2ed82ee42ef22eff2f0c2f182f262f342f412f4e2f5c2f6a2f7c2f8f +2f992fa32fad2fb72fbe2fc52fcc2fd32fda2fe12fe82fef2ff62ffd30023006300c +30133017301b30223026302d3034303b3045304e3055305f3066306d3074307b3083 +308c3093309930a030a730af30b630bd30c430cb30d330dc30e130e830ef30f630fd +3104310c31153120312a3132313c3148315031583162316b3174317c318631903199 +31a131ac31b731be31c531cc31d331db31e331ed31f631ff32073211321b3224322c +32373242324932503257325e3265326c3273327a3281328a3291329b32a432ad32b6 +32bd32c432cb32d232d932e032e732f332fa33013308330f3316331d3324332b3332 +33393345334f335c33683374337b338233893390339733a033a733b233bd33c433cc +33d333db33e233ec33f333fb340234093410341734203427342e3435343c3448344f +3456345d3464346b3477347f3486348b3492349934a034a734ae34b534bf34c834d4 +34d934e134e834ef34f634fd3504350b3514351f3526352d3535354035473550355c +3563356a35713578357f3586359235a035a935b035ba35c135cf35d635dd35e435eb +35f835ff3606360d3614361b3622362936303637363e36493657365e3665366c3673 +367a36813688368f3696369d36a436ab36b236b936c036c736ce36d536dc36e336ea +36f136f836ff3706370d371e3725372c3733373a37413748374f3756375d3764376b +3772377937803787378e3795379c37a337aa37b137b837bf37c637cd37d437db37e2 +37e937f037f737fe3805380c3813381a38213828382f3836383d3844384b38523859 +38603867386e3875387c3883388a38913898389f38a638ad38b438bb38c238c938d0 +38d738de38e538ec38f338fa39013908390f3916391d3924392b3932393939403947 +394e3955395c3963396a39713978397f3986398d3994399b39a239a939b039b739be +39c539cc39d339da39e139e839ef39f639fd3a043a0b3a123a193a203a273a2e3a35 +3a3c3a433a4a3a533a593a603a673a6e3a753a7c3a833a8a3a913a983a9f3aa63aad +3ab63abd3ac33aca3ad13ad83adf3ae63aed3af43afb3b053b0c3b133b1a3b213b28 +3b2f3b363b3d3b443b4b3b523b593b603b673b6d3b743b783b7f3b863b8d3b943b9b +3ba23ba93bb03bb73bbe3bc53bcc3bd33bda3be13be83bef3bf63bfd3c043c0b3c12 +3c1d3c2b3c323c393c403c473c4e3c553c5c3c633c6a3c713c783c7f3c863c8d3c95 +3c9c3ca33caa3cae3cb53cbc3cc33cca3cd13cd83cdf3ce63ced3cf43cfb3d023d09 +3d103d173d1e3d253d2c3d333d3a3d413d483d4f3d563d5d3d643d6b3d723d793d80 +3d873d8e3d953d9c3da33daa3db13db83dbf3dc63dcd3dd43ddb3de23de93df03df7 +3dfe3e053e0c3e0f3e163e1d3e243e2b3e323e393e403e473e4e3e553e5c3e643e70 +3e7f3e8f3e9a3ea43eae3eba3ec53ed03eda3ee63ef23efd3f083f123f193f1e3f25 +3f343f413f4d3f593f673f743f813f8d3f9b3fa93fb63fbd3fca3fd73fe43fe93fec +3ff13ff63ffb4000400340064009400c400f401240154018401f402a40314038403f +40464053405a40604067406a406d407040754083409240a040a740b440b840bc40c0 +40c440c840cc40d040d440d840dc40e040e440e840ec40f040f440f840fc41004104 +4108410c411041144118411c4123412c4135413e414c415541614169416e41794182 +418b419941a541ae41b741c541d141d741e041e941f2420042094215421a4223422c +42354243424f42584260426c42714281428e4294429d42a642af42b942c242cb42d4 +42de42e742f042f94302430b4314431a432a4333433c4345435043594364436b4373 +4383438c439943a243ab43b443c343d243df43eb43f243fc440a4418442b44394448 +444f4458445f4466446d4474447b4482448944904497449c44a144a644ad44b444bb +44c044c744ce44d544dc44e144e644ed44f444f945004507450e4515451c4524452b +4532453b4543454b4552455b4564456c457c458b459a45ab45bb45cb45da45eb45fc +460c4613461a46214628462c4633463a4641464b4655465f46694673467d46874691 +469b46a546af46b946c346cd46d746e146eb46f546ff47094713471d4724472b4738 +473f47484751475f476847714781479247a647b247bb47c747d847e547ec47f347fa +48014808480f4816481d4824482b4832483948404847484e4855485c486348694873 +487f488c489a48a948b548c248cf48de48ee48ff490f4920492a4931493f49424945 +4948494d49524959495c49634969496f4975497b49814987498d49934999499f49a5 +49ab49b149b749bd49c349c949cf49d549db49e04afc4b0d4b1e756e693030413075 +6e693030414474776f2e7375706572696f7274687265652e7375706572696f72756e +693030423570696c63726f776f6e652e7375706572696f72416d6163726f6e616d61 +63726f6e416272657665616272657665416f676f6e656b616f676f6e656b43616375 +74656361637574654363697263756d666c65786363697263756d666c657843646f74 +616363656e7463646f74616363656e74436361726f6e636361726f6e446361726f6e +646361726f6e4463726f61746463726f6174456d6163726f6e656d6163726f6e4562 +7265766565627265766545646f74616363656e7465646f74616363656e74456f676f +6e656b656f676f6e656b456361726f6e656361726f6e4763697263756d666c657867 +63697263756d666c657847627265766567627265766547646f74616363656e746764 +6f74616363656e7447636f6d6d61616363656e7467636f6d6d61616363656e744863 +697263756d666c65786863697263756d666c657848626172686261724974696c6465 +6974696c6465496d6163726f6e696d6163726f6e496272657665696272657665496f +676f6e656b696f676f6e656b49646f74616363656e74494a696a4a63697263756d66 +6c65786a63697263756d666c65784b636f6d6d61616363656e746b636f6d6d616163 +63656e746b677265656e6c616e6469634c61637574656c61637574654c636f6d6d61 +616363656e746c636f6d6d61616363656e744c6361726f6e6c6361726f6e4c646f74 +6c646f744e61637574656e61637574654e636f6d6d61616363656e746e636f6d6d61 +616363656e744e6361726f6e6e6361726f6e6e61706f7374726f706865456e67656e +674f6d6163726f6e6f6d6163726f6e4f62726576656f62726576654f68756e676172 +756d6c6175746f68756e676172756d6c61757452616375746572616375746552636f +6d6d61616363656e7472636f6d6d61616363656e74526361726f6e726361726f6e53 +61637574657361637574655363697263756d666c65787363697263756d666c657853 +636564696c6c6173636564696c6c6154636564696c6c6174636564696c6c61546361 +726f6e746361726f6e54626172746261725574696c64657574696c6465556d616372 +6f6e756d6163726f6e5562726576657562726576655572696e677572696e67556875 +6e676172756d6c6175747568756e676172756d6c617574556f676f6e656b756f676f +6e656b5763697263756d666c65787763697263756d666c65785963697263756d666c +65787963697263756d666c65785a61637574657a61637574655a646f74616363656e +747a646f74616363656e746c6f6e6773756e6930313830756e6930313831756e6930 +313832756e6930313833756e6930313834756e6930313835756e6930313836756e69 +30313837756e6930313838756e6930313839756e6930313841756e6930313842756e +6930313843756e6930313844756e6930313845756e6930313846756e693031393075 +6e6930313931756e6930313933756e6930313934756e6930313935756e6930313936 +756e6930313937756e6930313938756e6930313939756e6930313941756e69303139 +42756e6930313943756e6930313944756e6930313945756e69303139464f686f726e +6f686f726e756e6930314132756e6930314133756e6930314134756e693031413575 +6e6930314136756e6930314137756e6930314138756e6930314139756e6930314141 +756e6930314142756e6930314143756e6930314144756e693031414555686f726e75 +686f726e756e6930314231756e6930314232756e6930314233756e6930314234756e +6930314235756e6930314236756e6930314237756e6930314238756e693031423975 +6e6930314241756e6930314242756e6930314243756e6930314244756e6930314245 +756e6930314246756e6930314330756e6930314331756e6930314332756e69303143 +33756e6930314334756e6930314335756e6930314336756e6930314337756e693031 +4338756e6930314339756e6930314341756e6930314342756e6930314343756e6930 +314344756e6930314345756e6930314346756e6930314430756e6930314431756e69 +30314432756e6930314433756e6930314434756e6930314435756e6930314436756e +6930314437756e6930314438756e6930314439756e6930314441756e693031444275 +6e6930314443657475726e6564756e6930314445756e6930314446756e6930314530 +756e6930314531756e6930314532756e6930314533756e6930314534756e69303145 +35476361726f6e676361726f6e756e6930314538756e6930314539756e6930314541 +756e6930314542756e6930314543756e6930314544756e6930314545756e69303145 +46756e6930314630756e6930314631756e6930314632756e6930314633756e693031 +4634756e6930314635756e6930314636756e6930314637756e6930314638756e6930 +3146394172696e6761637574656172696e6761637574654145616375746561656163 +7574654f736c61736861637574656f736c6173686163757465756e6930323030756e +6930323031756e6930323032756e6930323033756e6930323034756e693032303575 +6e6930323036756e6930323037756e6930323038756e6930323039756e6930323041 +756e6930323042756e6930323043756e6930323044756e6930323045756e69303230 +46756e6930323130756e6930323131756e6930323132756e6930323133756e693032 +3134756e6930323135756e6930323136756e693032313753636f6d6d61616363656e +7473636f6d6d61616363656e7454636f6d6d61616363656e7474636f6d6d61616363 +656e74756e6930323143756e6930323144756e6930323145756e6930323146756e69 +30323230756e6930323231756e6930323232756e6930323233756e6930323234756e +6930323235756e6930323236756e6930323237756e6930323238756e693032323975 +6e6930323241756e6930323242756e6930323243756e6930323244756e6930323245 +756e6930323246756e6930323330756e6930323331756e6930323332756e69303233 +33756e6930323334756e6930323335756e6930323336646f746c6573736a756e6930 +323338756e6930323339756e6930323341756e6930323342756e6930323343756e69 +30323344756e6930323345756e6930323346756e6930323430756e6930323431756e +6930323432756e6930323433756e6930323434756e6930323435756e693032343675 +6e6930323437756e6930323438756e6930323439756e6930323441756e6930323442 +756e6930323443756e6930323444756e6930323445756e6930323446617475726e65 +64756e6930323531756e6930323532756e6930323533637475726e6564756e693032 +3535756e6930323536756e6930323537756e6930323538756e6930323539756e6930 +323541756e6930323542756e6930323543756e6930323544756e6930323545756e69 +30323546756e6930323630756e6930323631756e693032363267616d6d616c617469 +6e756e6930323634756e693032363568686f6f6b756e6930323637756e6930323638 +756e6930323639756e6930323641756e6930323642756e6930323643756e69303236 +44756e69303236456d7475726e6564756e6930323730756e6930323731756e693032 +3732756e6930323733756e6930323734756e6930323735756e6930323736756e6930 +323737756e6930323738727475726e6564756e693032374172686f6f6b7475726e65 +64756e6930323743756e6930323744756e6930323745756e693032374652736d616c +6c63617052736d616c6c696e766572746564756e6930323832756e6930323833756e +6930323834756e6930323835756e6930323836756e6930323837756e693032383875 +6e6930323839756e6930323841756e6930323842756e6930323843756e6930323844 +756e6930323845756e6930323846756e6930323930756e6930323931756e69303239 +32756e6930323933756e6930323934676c6f7474616c73746f707265766572736564 +756e6930323936756e6930323937756e6930323938756e6930323939756e69303239 +41756e6930323942756e6930323943756e6930323944756e6930323945756e693032 +3946756e6930324130756e6930324131756e6930324132756e6930324133756e6930 +324134756e6930324135756e6930324136756e6930324137756e6930324138756e69 +30324139756e6930324141756e6930324142756e6930324143756e6930324144756e +6930324145756e6930324146682e7375706572696f7268686f6f6b2e737570657269 +6f726a2e7375706572696f72722e7375706572696f72727475726e65642e73757065 +72696f7272686f6f6b7475726e65642e7375706572696f7252736d616c6c696e7665 +727465642e7375706572696f72772e7375706572696f72792e7375706572696f7275 +6e6930324239756e6930324241756e69303242426166696935373932396166696936 +34393337756e6930324245756e6930324246756e6930324330756e6930324331756e +6930324332756e6930324333756e6930324334756e6930324335756e693032433875 +6e6930324339756e6930324341756e6930324342756e6930324343756e6930324344 +756e6930324345756e6930324346756e6930324430756e6930324431756e69303244 +32756e6930324433756e6930324434756e6930324435756e6930324436756e693032 +4437756e6930324445756e693032444667616d6d616c6174696e2e7375706572696f +726c2e7375706572696f72732e7375706572696f72782e7375706572696f72676c6f +7474616c73746f7072657665727365642e7375706572696f72756e6930324535756e +6930324536756e6930324537756e6930324538756e6930324539756e693032454175 +6e6930324542756e6930324543756e6930324544756e6930324545756e6930324546 +756e6930324630756e6930324631756e6930324632756e6930324633756e69303246 +34756e6930324635756e6930324636756e6930324637756e6930324638756e693032 +4639756e6930324641756e6930324642756e6930324643756e6930324644756e6930 +324645756e69303246466772617665636f6d626163757465636f6d6263697263756d +666c6578636f6d6274696c6465636f6d626d6163726f6e636f6d62756e6930333035 +6272657665636f6d62756e6930333037756e6930333038686f6f6b61626f7665636f +6d62756e6930333041756e6930333042756e6930333043756e6930333044756e6930 +333045756e6930333046756e6930333130756e6930333131756e6930333132756e69 +30333133756e6930333134756e6930333135756e6930333136756e6930333137756e +6930333138756e6930333139756e6930333141756e6930333142756e693033314375 +6e6930333144756e6930333145756e6930333146756e6930333230756e6930333231 +756e6930333232646f7462656c6f77636f6d62756e6930333234756e693033323575 +6e6930333236756e6930333237756e6930333238756e6930333239756e6930333241 +756e6930333242756e6930333243756e6930333244756e6930333245756e69303332 +46756e6930333330756e6930333331756e6930333332756e6930333333756e693033 +3334756e6930333335756e6930333336756e6930333337756e6930333338756e6930 +333339756e6930333341756e6930333342756e6930333343756e6930333344756e69 +30333345756e6930333346756e6930333430756e6930333431756e6930333432756e +6930333433756e6930333434756e6930333435756e6930333436756e693033343775 +6e6930333438756e6930333439756e6930333441756e6930333442756e6930333443 +756e6930333444756e6930333445756e6930333530756e6930333531756e69303335 +32756e6930333533756e6930333534756e6930333535756e6930333536756e693033 +3537756e6930333538756e6930333539756e6930333541756e6930333542756e6930 +333543756e6930333544756e6930333545756e6930333546756e6930333630756e69 +30333631756e6930333632756e6930333633756e6930333634756e6930333635756e +6930333636756e6930333637756e6930333638756e6930333639756e693033364175 +6e6930333642756e6930333643756e6930333644756e6930333645756e6930333646 +756e6930333734756e6930333735756e6930333741756e6930333742756e69303337 +43756e6930333744756e6930333745746f6e6f736469657265736973746f6e6f7341 +6c706861746f6e6f73616e6f74656c656961457073696c6f6e746f6e6f7345746174 +6f6e6f73496f7461746f6e6f734f6d6963726f6e746f6e6f73557073696c6f6e746f +6e6f734f6d656761746f6e6f73696f74616469657265736973746f6e6f73416c7068 +614265746147616d6d6144656c7461457073696c6f6e5a6574614574615468657461 +496f74614b617070614c616d6264614d754e7558694f6d6963726f6e506952686f53 +69676d61546175557073696c6f6e5068694368695073694f6d656761496f74616469 +657265736973557073696c6f6e6469657265736973616c706861746f6e6f73657073 +696c6f6e746f6e6f73657461746f6e6f73696f7461746f6e6f73757073696c6f6e64 +69657265736973746f6e6f73616c7068616265746167616d6d6164656c7461657073 +696c6f6e7a6574616574617468657461696f74616b617070616c616d6264616e7578 +696f6d6963726f6e706972686f7369676d61317369676d61746175757073696c6f6e +7068696368697073696f6d656761696f74616469657265736973757073696c6f6e64 +696572657369736f6d6963726f6e746f6e6f73757073696c6f6e746f6e6f736f6d65 +6761746f6e6f73756e6930334430746865746131557073696c6f6e31756e69303344 +33756e6930334434706869316f6d65676131756e6930334437756e6930334438756e +6930334439756e6930334441756e6930334442756e6930334443756e693033444475 +6e6930334445756e6930334446756e6930334530756e6930334531756e6930334630 +756e6930334631756e6930334632756e6930334633756e6930334634756e69303346 +35756e6930334636756e6930334638756e6930334639756e6930334642756e693033 +4644756e6930334645756e6930334646756e69303430306166696931303032336166 +69693130303531616669693130303532616669693130303533616669693130303534 +61666969313030353561666969313030353661666969313030353761666969313030 +3538616669693130303539616669693130303630616669693130303631756e693034 +30446166696931303036326166696931303134356166696931303031376166696931 +30303138616669693130303139616669693130303230616669693130303231616669 +69313030323261666969313030323461666969313030323561666969313030323661 +66696931303032376166696931303032386166696931303032396166696931303033 +30616669693130303331616669693130303332616669693130303333616669693130 +30333461666969313030333561666969313030333661666969313030333761666969 +31303033386166696931303033396166696931303034306166696931303034316166 +69693130303432616669693130303433616669693130303434616669693130303435 +61666969313030343661666969313030343761666969313030343861666969313030 +34396166696931303036356166696931303036366166696931303036376166696931 +30303638616669693130303639616669693130303730616669693130303732616669 +69313030373361666969313030373461666969313030373561666969313030373661 +66696931303037376166696931303037386166696931303037396166696931303038 +30616669693130303831616669693130303832616669693130303833616669693130 +30383461666969313030383561666969313030383661666969313030383761666969 +31303038386166696931303038396166696931303039306166696931303039316166 +69693130303932616669693130303933616669693130303934616669693130303935 +616669693130303936616669693130303937756e6930343530616669693130303731 +61666969313030393961666969313031303061666969313031303161666969313031 +30326166696931303130336166696931303130346166696931303130356166696931 +30313036616669693130313037616669693130313038616669693130313039756e69 +30343544616669693130313130616669693130313933756e6930343630756e693034 +3631616669693130313436616669693130313934756e6930343634756e6930343635 +756e6930343636756e6930343637756e6930343638756e6930343639756e69303436 +41756e6930343642756e6930343643756e6930343644756e6930343645756e693034 +3646756e6930343730756e6930343731616669693130313437616669693130313935 +616669693130313438616669693130313936756e6930343736756e6930343737756e +6930343743756e6930343744756e6930343745756e6930343746756e693034383375 +6e6930343843756e6930343844756e6930343845756e693034384661666969313030 +3530616669693130303938756e6930343932756e6930343933756e6930343934756e +6930343935756e6930343936756e6930343937756e6930343938756e693034393975 +6e6930343941756e6930343942756e6930343943756e6930343944756e6930343945 +756e6930343946756e6930344130756e6930344131756e6930344132756e69303441 +33756e6930344134756e6930344135756e6930344136756e6930344137756e693034 +4138756e6930344139756e6930344141756e6930344142756e6930344143756e6930 +344144756e6930344145756e6930344146756e6930344230756e6930344231756e69 +30344232756e6930344233756e6930344234756e6930344235756e6930344236756e +6930344237756e6930344238756e6930344239756e6930344241756e693034424275 +6e6930344243756e6930344244756e6930344245756e6930344246756e6930344330 +756e6930344331756e6930344332756e6930344333756e6930344334756e69303443 +37756e6930344338756e6930344339756e6930344341756e6930344342756e693034 +4343756e6930344430756e6930344431756e6930344432756e6930344433756e6930 +344434756e6930344435756e6930344436756e6930344437756e6930344438616669 +693130383436756e6930344441756e6930344442756e6930344443756e6930344444 +756e6930344445756e6930344446756e6930344530756e6930344531756e69303445 +32756e6930344533756e6930344534756e6930344535756e6930344536756e693034 +4537756e6930344538756e6930344539756e6930344541756e6930344542756e6930 +344543756e6930344544756e6930344545756e6930344546756e6930344630756e69 +30344631756e6930344632756e6930344633756e6930344634756e6930344635756e +6930344636756e6930344637756e6930344638756e69303446396166696935373739 +39616669693537383031616669693537383030616669693537383032616669693537 +37393361666969353737393461666969353737393561666969353737393861666969 +3537373937616669693537383036756e693035424161666969353737393661666969 +35373830376166696935373833396166696935373634356166696935373834316166 +69693537383432616669693537383034616669693537383033616669693537363538 +756e6930354336616669693537363634616669693537363635616669693537363636 +61666969353736363761666969353736363861666969353736363961666969353736 +37306166696935373637316166696935373637326166696935373637336166696935 +37363734616669693537363735616669693537363736616669693537363737616669 +69353736373861666969353736373961666969353736383061666969353736383161 +66696935373638326166696935373638336166696935373638346166696935373638 +35616669693537363836616669693537363837616669693537363838616669693537 +36383961666969353736393061666969353737313661666969353737313761666969 +3537373138756e6930354633756e6930354634756e6931443135612e737570657269 +6f72617475726e65642e7375706572696f72756e6931443435756e6931443436622e +7375706572696f72642e7375706572696f72652e7375706572696f72657475726e65 +642e7375706572696f72756e6931443442756e6931443443672e7375706572696f72 +697475726e65642e7375706572696f726b2e7375706572696f726d2e737570657269 +6f72656e672e7375706572696f726f2e7375706572696f72637475726e65642e7375 +706572696f72756e6931443534756e6931443535702e7375706572696f72742e7375 +706572696f72752e7375706572696f72756e69314435396d7475726e65642e737570 +6572696f72762e7375706572696f72756e6931443543756e6931443544756e693144 +3545756e6931443546756e6931443632756e6931443633756e6931443634756e6931 +443635756e6931443636756e6931443637632e7375706572696f72662e7375706572 +696f727a2e7375706572696f72756e6931453030756e6931453031756e6931453032 +756e6931453033756e6931453034756e6931453035756e6931453036756e69314530 +37756e6931453038756e6931453039756e6931453041756e6931453042756e693145 +3043756e6931453044756e6931453045756e6931453046756e6931453130756e6931 +453131756e6931453132756e6931453133756e6931453134756e6931453135756e69 +31453136756e6931453137756e6931453138756e6931453139756e6931453141756e +6931453142756e6931453143756e6931453144756e6931453145756e693145314675 +6e6931453230756e6931453231756e6931453232756e6931453233756e6931453234 +756e6931453235756e6931453236756e6931453237756e6931453238756e69314532 +39756e6931453241756e6931453242756e6931453243756e6931453244756e693145 +3245756e6931453246756e6931453330756e6931453331756e6931453332756e6931 +453333756e6931453334756e6931453335756e6931453336756e6931453337756e69 +31453338756e6931453339756e6931453341756e6931453342756e6931453343756e +6931453344756e6931453345756e6931453346756e6931453430756e693145343175 +6e6931453432756e6931453433756e6931453434756e6931453435756e6931453436 +756e6931453437756e6931453438756e6931453439756e6931453441756e69314534 +42756e6931453443756e6931453444756e6931453445756e6931453446756e693145 +3530756e6931453531756e6931453532756e6931453533756e6931453534756e6931 +453535756e6931453536756e6931453537756e6931453538756e6931453539756e69 +31453541756e6931453542756e6931453543756e6931453544756e6931453545756e +6931453546756e6931453630756e6931453631756e6931453632756e693145363375 +6e6931453634756e6931453635756e6931453636756e6931453637756e6931453638 +756e6931453639756e6931453641756e6931453642756e6931453643756e69314536 +44756e6931453645756e6931453646756e6931453730756e6931453731756e693145 +3732756e6931453733756e6931453734756e6931453735756e6931453736756e6931 +453737756e6931453738756e6931453739756e6931453741756e6931453742756e69 +31453743756e6931453744756e6931453745756e6931453746576772617665776772 +61766557616375746577616375746557646965726573697377646965726573697375 +6e6931453836756e6931453837756e6931453838756e6931453839756e6931453841 +756e6931453842756e6931453843756e6931453844756e6931453845756e69314538 +46756e6931453930756e6931453931756e6931453932756e6931453933756e693145 +3934756e6931453935756e6931453936756e6931453937756e6931453938756e6931 +453939756e6931453941756e6931453942756e6931453943756e6931453944476572 +6d616e64626c73756e6931453946756e6931454130756e6931454131756e69314541 +32756e6931454133756e6931454134756e6931454135756e6931454136756e693145 +4137756e6931454138756e6931454139756e6931454141756e6931454142756e6931 +454143756e6931454144756e6931454145756e6931454146756e6931454230756e69 +31454231756e6931454232756e6931454233756e6931454234756e6931454235756e +6931454236756e6931454237756e6931454238756e6931454239756e693145424175 +6e6931454242756e6931454243756e6931454244756e6931454245756e6931454246 +756e6931454330756e6931454331756e6931454332756e6931454333756e69314543 +34756e6931454335756e6931454336756e6931454337756e6931454338756e693145 +4339756e6931454341756e6931454342756e6931454343756e6931454344756e6931 +454345756e6931454346756e6931454430756e6931454431756e6931454432756e69 +31454433756e6931454434756e6931454435756e6931454436756e6931454437756e +6931454438756e6931454439756e6931454441756e6931454442756e693145444375 +6e6931454444756e6931454445756e6931454446756e6931454530756e6931454531 +756e6931454532756e6931454533756e6931454534756e6931454535756e69314545 +36756e6931454537756e6931454538756e6931454539756e6931454541756e693145 +4542756e6931454543756e6931454544756e6931454545756e6931454546756e6931 +454630756e6931454631596772617665796772617665756e6931454634756e693145 +4635756e6931454636756e6931454637756e6931454638756e6931454639756e6931 +454641756e6931454642756e6931454643756e6931454644756e6931454645756e69 +31454646756e6931463030756e6931463031756e6931463032756e6931463033756e +6931463034756e6931463035756e6931463036756e6931463037756e693146303875 +6e6931463039756e6931463041756e6931463042756e6931463043756e6931463044 +756e6931463045756e6931463046756e6931463130756e6931463131756e69314631 +32756e6931463133756e6931463134756e6931463135756e6931463138756e693146 +3139756e6931463141756e6931463142756e6931463143756e6931463144756e6931 +463230756e6931463231756e6931463232756e6931463233756e6931463234756e69 +31463235756e6931463236756e6931463237756e6931463238756e6931463239756e +6931463241756e6931463242756e6931463243756e6931463244756e693146324575 +6e6931463246756e6931463330756e6931463331756e6931463332756e6931463333 +756e6931463334756e6931463335756e6931463336756e6931463337756e69314633 +38756e6931463339756e6931463341756e6931463342756e6931463343756e693146 +3344756e6931463345756e6931463346756e6931463430756e6931463431756e6931 +463432756e6931463433756e6931463434756e6931463435756e6931463438756e69 +31463439756e6931463441756e6931463442756e6931463443756e6931463444756e +6931463530756e6931463531756e6931463532756e6931463533756e693146353475 +6e6931463535756e6931463536756e6931463537756e6931463539756e6931463542 +756e6931463544756e6931463546756e6931463630756e6931463631756e69314636 +32756e6931463633756e6931463634756e6931463635756e6931463636756e693146 +3637756e6931463638756e6931463639756e6931463641756e6931463642756e6931 +463643756e6931463644756e6931463645756e6931463646756e6931463730756e69 +31463731756e6931463732756e6931463733756e6931463734756e6931463735756e +6931463736756e6931463737756e6931463738756e6931463739756e693146374175 +6e6931463742756e6931463743756e6931463744756e6931463830756e6931463831 +756e6931463832756e6931463833756e6931463834756e6931463835756e69314638 +36756e6931463837756e6931463838756e6931463839756e6931463841756e693146 +3842756e6931463843756e6931463844756e6931463845756e6931463846756e6931 +463930756e6931463931756e6931463932756e6931463933756e6931463934756e69 +31463935756e6931463936756e6931463937756e6931463938756e6931463939756e +6931463941756e6931463942756e6931463943756e6931463944756e693146394575 +6e6931463946756e6931464130756e6931464131756e6931464132756e6931464133 +756e6931464134756e6931464135756e6931464136756e6931464137756e69314641 +38756e6931464139756e6931464141756e6931464142756e6931464143756e693146 +4144756e6931464145756e6931464146756e6931464230756e6931464231756e6931 +464232756e6931464233756e6931464234756e6931464236756e6931464237756e69 +31464238756e6931464239756e6931464241756e6931464242756e6931464243756e +6931464244756e6931464245756e6931464246756e6931464330756e693146433175 +6e6931464332756e6931464333756e6931464334756e6931464336756e6931464337 +756e6931464338756e6931464339756e6931464341756e6931464342756e69314643 +43756e6931464344756e6931464345756e6931464346756e6931464430756e693146 +4431756e6931464432756e6931464433756e6931464436756e6931464437756e6931 +464438756e6931464439756e6931464441756e6931464442756e6931464444756e69 +31464445756e6931464446756e6931464530756e6931464531756e6931464532756e +6931464533756e6931464534756e6931464535756e6931464536756e693146453775 +6e6931464538756e6931464539756e6931464541756e6931464542756e6931464543 +756e6931464544756e6931464545756e6931464546756e6931464632756e69314646 +33756e6931464634756e6931464636756e6931464637756e6931464638756e693146 +4639756e6931464641756e6931464642756e6931464643756e6931464644756e6931 +464645656e71756164656d71756164656e7370616365656d73706163657468726565 +706572656d7370616365666f7572706572656d7370616365736978706572656d7370 +616365666967757265737061636570756e6374756174696f6e73706163657468696e +73706163656861697273706163657a65726f7769647468737061636568797068656e +74776f68797068656e6e6f627265616b686f72697a6f6e74616c626172756e693230 +3136756e64657273636f726564626c71756f7465726576657273656471756f746564 +626c726576747269616e676c6562756c6c657468797068656e646f74756e69323032 +4670657274656e74686f7573616e646d696e7574657365636f6e647072696d657472 +69706c657072696d657265766572736564756e6932303336756e6932303337756e69 +323033426578636c616d64626c696e746572726f62616e67756e6932303345756e69 +323034327175657374696f6e5f7175657374696f6e7175657374696f6e5f6578636c +616d6578636c616d5f7175657374696f6e756e6932303441756e6932303442756e69 +323034467a65726f2e7375706572696f72692e7375706572696f72666f75722e7375 +706572696f72666976652e7375706572696f727369782e7375706572696f72736576 +656e2e7375706572696f7265696768742e7375706572696f726e696e652e73757065 +72696f72706c75732e7375706572696f726d696e75732e7375706572696f72657175 +616c2e7375706572696f72706172656e6c6566742e7375706572696f72706172656e +72696768742e7375706572696f726e2e7375706572696f727a65726f2e696e666572 +696f726f6e652e696e666572696f7274776f2e696e666572696f7274687265652e69 +6e666572696f72666f75722e696e666572696f72666976652e696e666572696f7273 +69782e696e666572696f72736576656e2e696e666572696f7265696768742e696e66 +6572696f726e696e652e696e666572696f72706c75732e696e666572696f726d696e +75732e696e666572696f72657175616c2e696e666572696f72706172656e6c656674 +2e696e666572696f72706172656e72696768742e696e666572696f72612e696e6665 +72696f72652e696e666572696f726f2e696e666572696f72782e696e666572696f72 +756e6932303934756e6932303935756e6932303936756e6932303937756e69323039 +38756e6932303939756e6932303941756e6932303942756e6932303943756e693230 +41326672616e636c697261706573657461756e6932304138646f6e674575726f756e +69323041467065736f756e6932313030756e6932313031756e693231303263656e74 +696772616465616669693631323438756e693231303666616872656e68656974756e +6932313043756e6932313044756e6932313045756e6932313046496672616b747572 +616669693631323839756e69323131356e756d65726f756e6932313139756e693231 +3141526672616b747572756e6932313144756e6932313230756e6932313234756e69 +323132364f6d656761696e76657374696d61746564616c657068756e693231333675 +6e6932313337756e6932313338756e6932313339756e69323134466f6e6566696674 +6874776f6669667468737468726565666966746873666f75726669667468736f6e65 +7369787468666976657369787468736f6e656e756d657261746f724f6e65726f6d61 +6e54776f726f6d616e5468726565726f6d616e466f7572726f6d616e46697665726f +6d616e536978726f6d616e536576656e726f6d616e4569676874726f6d616e4e696e +65726f6d616e54656e726f6d616e456c6576656e726f6d616e5477656c7665726f6d +616e756e6932313643756e6932313644756e6932313645756e69323136466f6e6572 +6f6d616e74776f726f6d616e7468726565726f6d616e666f7572726f6d616e666976 +65726f6d616e736978726f6d616e736576656e726f6d616e6569676874726f6d616e +6e696e65726f6d616e74656e726f6d616e656c6576656e726f6d616e7477656c7665 +726f6d616e756e6932313743756e6932313744756e6932313745756e693231374675 +6e6932313830756e6932313831756e6932313832756e6932313833756e6932313834 +6172726f776c6566746172726f7775706172726f7772696768746172726f77646f77 +6e6172726f77626f74686172726f777570646e756e6932313936756e693231393775 +6e6932313938756e6932313939756e6932313941756e6932313942756e6932314136 +6172726f777570646e627365756e6932314145756e6932314243756e693231424475 +6e6932314330756e6932314331756e6932314342756e6932314343756e6932314344 +756e6932314345756e69323143466172726f7764626c6c6566746172726f7764626c +75706172726f7764626c72696768746172726f7764626c646f776e6172726f776462 +6c626f7468756e69323144354e776172726f774e656172726f7753656172726f7753 +776172726f77756e6976657273616c756e69323230317061727469616c6469666665 +78697374656e7469616c756e6932323034656d707479736574756e69323230366772 +616469656e74656c656d656e746e6f74656c656d656e74756e693232304173756368 +74686174756e6932323043756e693232304470726f64756374756e69323231307375 +6d6d6174696f6e756e6932323133756e6932323134756e6932323135756e69323231 +36617374657269736b6d617468756e6932323138756e69323231397261646963616c +756e6932323142756e693232314370726f706f7274696f6e616c696e66696e697479 +756e6932323146616e676c65756e6932323231756e6932323232756e693232323375 +6e6932323234756e6932323235756e69323232366c6f676963616c616e646c6f6769 +63616c6f72696e74657273656374696f6e756e696f6e696e74656772616c756e6932 +323243756e6932323244756e6932323245756e693232333673696d696c6172756e69 +32323431636f6e677275656e74617070726f78657175616c756e6932323439756e69 +323235396e6f74657175616c6571756976616c656e6365756e69323236326c657373 +657175616c67726561746572657175616c756e6932323641756e6932323642756e69 +32323645756e6932323646756e6932323730756e693232373170726f706572737562 +73657470726f70657273757065727365746e6f74737562736574756e693232383563 +6972636c65706c7573756e6932323936636972636c656d756c7469706c79756e6932 +323938756e6932324132756e6932324133756e693232413470657270656e64696375 +6c6172756e6932324136756e6932324236756e6932324237646f746d617468756e69 +32324545756e6932324546756e6932333030756e6932333032756e6932333033756e +6932333130696e74656772616c746f70696e74656772616c626f74746f6d756e6932 +333236756e6932333237756e6932333239756e6932333241756e6932333242756e69 +32333744756e6932333830756e6932333942756e6932333943756e6932333944756e +6932333945756e6932333946756e6932334130756e6932334131756e693233413275 +6e6932334133756e6932334134756e6932334135756e6932334136756e6932334137 +756e6932334138756e6932334139756e6932334141756e6932334142756e69323341 +43756e6932334144696e74656772616c657874656e73696f6e756e6932334433756e +6932343233756e6932343630756e6932343631756e6932343632756e693234363375 +6e6932343634756e6932343635756e6932343636756e6932343637756e6932343638 +756e6932343639756e6932343641756e6932343642756e6932343643756e69323436 +44756e6932343645756e6932343646756e6932343730756e6932343731756e693234 +3732756e6932343733756e6932343734756e6932343735756e6932343736756e6932 +343737756e6932343738756e6932343739756e6932343741756e6932343742756e69 +32343743756e6932343744756e6932343745756e6932343746756e6932343830756e +6932343831756e6932343832756e6932343833756e6932343834756e693234383575 +6e6932343836756e6932343837756e6932344236756e6932344237756e6932344238 +756e6932344239756e6932344241756e6932344242756e6932344243756e69323442 +44756e6932344245756e6932344246756e6932344330756e6932344331756e693234 +4332756e6932344333756e6932344334756e6932344335756e6932344336756e6932 +344337756e6932344338756e6932344339756e6932344341756e6932344342756e69 +32344343756e6932344344756e6932344345756e6932344346756e6932344430756e +6932344431756e6932344432756e6932344433756e6932344434756e693234443575 +6e6932344436756e6932344437756e6932344438756e6932344439756e6932344441 +756e6932344442756e6932344443756e6932344444756e6932344445756e69323444 +46756e6932344530756e6932344531756e6932344532756e6932344533756e693234 +4534756e6932344535756e6932344536756e6932344537756e6932344538756e6932 +344539756e6932344541756e6932344542756e6932344543756e6932344544756e69 +32344545756e6932344546756e6932344630756e6932344631756e6932344632756e +6932344633756e6932344634756e6932344635756e6932344636756e693234463775 +6e6932344638756e6932344639756e6932344641756e6932344642756e6932344643 +756e6932344644756e6932344645756e693234464666696c6c6564626f7848323230 +373374726961677570756e6932354233756e6932354236756e693235423774726961 +67646e756e6932354244756e6932354330756e6932354331756e6932354336756e69 +32354337756e69323543396c6f7a656e6765626967636972636c65756e6932354345 +483138353333756e6932354430756e6932354431756e6932354432756e6932354433 +756e6932354434756e6932354435756e6932354436756e69323544376f70656e6275 +6c6c6574756e6932363035756e6932363039756e6932363139756e6932363142756e +6932363145756e6932363237756e6932363246756e6932363339756e693236334175 +6e6932363342756e6932363343756e6932363344756e6932363345756e6932363346 +66656d616c65756e69323634316d616c65756e6932363433756e6932363434756e69 +32363435756e6932363436756e6932363437756e6932363438756e6932363439756e +6932363441756e6932363442756e6932363443756e6932363444756e693236344575 +6e6932363446756e6932363530756e6932363531756e6932363532756e6932363533 +756e6932363630756e6932363633756e6932363635756e6932363636756e69323636 +396d75736963616c6e6f74656d75736963616c6e6f746564626c756e693236364375 +6e6932363644756e6932363645756e6932363646756e6932363935756e6932363938 +756e6932364132756e6932364133756e6932364134756e6932364135756e69323641 +36756e6932364137756e69323641436d6172726965646469766f72636564756e6932 +364146756e6932373134756e693237313864696564756e6932373637756e69323737 +36756e6932373737756e6932373738756e6932373739756e6932373741756e693237 +3742756e6932373743756e6932373744756e6932373745756e6932373746756e6932 +374332756e6932374536756e6932374537756e6932374538756e6932374539756e69 +32433630756e6932433631756e6932433632756e6932433633756e6932433634756e +6932433635756e6932433636756e6932433637756e6932433638756e693243363975 +6e6932433641756e6932433642756e6932433643756e6932433645756e6932433646 +756e6932433734756e6932433735756e6932433736756e6932433737756e69324530 +32756e6932453033756e6932453034756e6932453035756e6932453038756e693245 +3039756e6932453041756e6932453137756e6932453138756e6941363536756e6941 +363537756e6941373144756e6941373230756e6941373231756e6941373635547578 +756e6945303031756e6945303032756e6945303033756e6945303034756e69453030 +35756e6945303036756e6945303037756e6945303038756e6945303039756e694530 +3041756e6945303042636f70796c6566747075626c6963646f6d61696e6372656174 +697665636f6d6d6f6e737a65726f2e736c6173686669747465647a65726f2e666974 +7465646f6e652e66697474656474776f2e66697474656474687265652e6669747465 +64666f75722e666974746564666976652e6669747465647369782e66697474656473 +6576656e2e66697474656465696768742e6669747465646e696e652e666974746564 +4575726f2e66697474656459656e2e666974746564756e6945303143612e616c7475 +6e694530314570657274686f7573616e647a65726f7a65726f2e6f6c647374796c65 +6f6e652e6f6c647374796c6574776f2e6f6c647374796c6574687265652e6f6c6473 +74796c65666f75722e6f6c647374796c65666976652e6f6c647374796c657369782e +6f6c647374796c65736576656e2e6f6c647374796c6565696768742e6f6c64737479 +6c656e696e652e6f6c647374796c65756e69453032414164696572657369732e616c +744f64696572657369732e616c745564696572657369732e616c74572e616c74665f +62665f665f68665f665f6a665f665f6b665f665f74665f68665f6a665f6b665f7463 +5f6b635f68745f74635f746c6f6e67735f696c6f6e67735f6c6f6e6773756e694530 +3430756e6945303431756e69453034326c6f6e67735f6c6c6f6e67735f6c6f6e6773 +5f696c6f6e67735f7361652e616c746c6f6e67735f68515f75545f68745f7a682e61 +6c746765726d616e64626c732e616c746765726d616e64626c732e73733033476572 +6d616e64626c732e616c74756e6945303446616d70657273616e642e616c74612e73 +63622e7363632e7363642e7363652e7363662e7363672e7363682e7363692e73636a +2e73636b2e73636c2e73636d2e73636e2e73636f2e7363702e7363712e7363722e73 +63732e7363742e7363752e7363762e7363772e7363782e7363792e73637a2e736375 +6e694530364268797068656e2e73636167726176652e73636161637574652e736361 +63697263756d666c65782e73636174696c64652e73636164696572657369732e7363 +6172696e672e736361652e736363636564696c6c612e73636567726176652e736365 +61637574652e73636563697263756d666c65782e73636564696572657369732e7363 +6967726176652e73636961637574652e73636963697263756d666c65782e73636964 +696572657369732e73636574682e73636e74696c64652e73636f67726176652e7363 +6f61637574652e73636f63697263756d666c65782e73636f74696c64652e73636f64 +696572657369732e73636f652e73636f736c6173682e73637567726176652e736375 +61637574652e73637563697263756d666c65782e73637564696572657369732e7363 +7961637574652e736374686f726e2e73637964696572657369732e7363696a2e7363 +6765726d616e64626c732e7363616c746765726d616e64626c732e7363515f752e73 +63712e73635f752e73636463726f61742e73636162726576652e7363616f676f6e65 +6b2e73636361637574652e7363636361726f6e2e7363646361726f6e2e7363656f67 +6f6e656b2e7363656361726f6e2e73636762726576652e73636c61637574652e7363 +6c736c6173682e73636e61637574652e73636e6361726f6e2e7363656e672e73636f +68756e676172756d6c6175742e73637261637574652e7363726361726f6e2e736373 +61637574652e736373636564696c6c612e7363736361726f6e2e736374636564696c +6c612e7363746261722e73637572696e672e73637568756e676172756d6c6175742e +73637a61637574652e73637a646f74616363656e742e73637a6361726f6e2e73636c +6361726f6e2e7363746361726f6e2e736374636f6d6d61616363656e742e73637363 +6f6d6d61616363656e742e736369646f74616363656e742e7363616d70657273616e +642e7363612e7363616c74712e7375706572696f726772617665636f6d622e737570 +736163757465636f6d622e7375707363697263756d666c6578636f6d622e73757073 +74696c6465636f6d622e737570736d6163726f6e636f6d622e73757073662e73686f +7274665f662e73686f7274756e6945304532756e6945304533756e6945304534756e +6945304535756e6945304536756e6945304537756e6945304538756e694530453975 +6e69453045414b2e616c74522e616c744a2e616c74756e6945304545756e69453045 +46756e6945304630772e616c74756e6945304632756e6945304633756e6945304634 +756e6945304635792e616c74412e616c74756e6945304639756e69453046426b7265 +6973756e6945313031756e6945313034756e6945313035756e6945313036756e6945 +3130377a65726f2e6361706f6e652e63617074776f2e63617074687265652e636170 +666f75722e636170666976652e6361707369782e636170736576656e2e6361706569 +6768742e6361706e696e652e6361707a65726f2e7461626f6c647374796c656f6e65 +2e7461626f6c647374796c6574776f2e7461626f6c647374796c6574687265652e74 +61626f6c647374796c65666f75722e7461626f6c647374796c65666976652e746162 +6f6c647374796c657369782e7461626f6c647374796c65736576656e2e7461626f6c +647374796c6565696768742e7461626f6c647374796c656e696e652e7461626f6c64 +7374796c65756e6945313238756e6945313239756e6945313241756e69453133306c +656166756e6945313342756e6945313343756e6945313344622e696e666572696f72 +632e696e666572696f72642e696e666572696f72662e696e666572696f72672e696e +666572696f72682e696e666572696f72692e696e666572696f726a2e696e66657269 +6f726b2e696e666572696f726c2e696e666572696f726d2e696e666572696f726e2e +696e666572696f72702e696e666572696f72712e696e666572696f72722e696e6665 +72696f72732e696e666572696f72742e696e666572696f72752e696e666572696f72 +762e696e666572696f72772e696e666572696f72792e696e666572696f727a2e696e +666572696f72756e6945313838756e69453138396166696931303038362e616c7475 +6e694531394467726176652e63617061637574652e63617063697263756d666c6578 +2e6361706361726f6e2e63617062726576652e63617068756e676172756d6c617574 +2e63617073706163655f756e69303330462e6361706272657665696e766572746564 +636d622e63617062726576652e63797263617062726576652e637972646965726573 +69732e636170686f6f6b61626f7665636f6d622e636170646f74616363656e742e63 +6170756e6945334530756e6945334531756e6945334532756e6945334533756e6945 +334534756e6945334535756e6945334536756e6945334537756e6945334538756e69 +45334539756e6945334541756e6945334542756e6945334543756e6945334544756e +6945334630756e6945334631756e6945334632756e69453346336d65747269637a65 +726f2e736c617368706172656e6c6566742e7363706172656e72696768742e736362 +7261636b65746c6566742e7363627261636b657472696768742e736362726163656c +6566742e7363627261636572696768742e73636578636c616d646f776e2e73637175 +657374696f6e646f776e2e73636775696c6c656d6f746c6566742e73636775696c6c +656d6f7472696768742e73636775696c73696e676c6c6566742e73636775696c7369 +6e676c72696768742e736368797068656e2e636170756e6946364245616669693130 +3036362e6974616c665f66665f69665f6c665f665f69665f665f6c6c6f6e67735f74 +735f74756e6946464644753144353338753144353339753144353342753144353343 +75314435334475314435334575314435343075314435343175314435343275314435 +34337531443534347531443534367531443534377531443534417531443534427531 +44353443753144353444753144353445753144353446753144353530352e332e304c +696e7578204c6962657274696e65206279205068696c69707020482e20506f6c6c2c +0a4f70656e20466f6e7420756e646572205465726d73206f6620666f6c6c6f77696e +67204672656520536f667477617265204c6963656e7365733a0a47504c202847656e +6572616c205075626c6963204c6963656e736529207769746820666f6e742d657863 +657074696f6e20616e64204f464c20284f70656e20466f6e74204c6963656e736529 +2e0a43726561746564207769746820466f6e74466f7267652028687474703a2f2f66 +6f6e74666f7267652e73662e6e6574290a5365707420323030332c20323030342c20 +323030352c20323030362c20323030372c20323030382c20323030392c2032303130 +2c20323031312c323031324c696e7578204c6962657274696e65204f4c696e757820 +4c6962657274696e65204f000000000100020003000400050006000700680009000a +000b000c000d000e000f0010001100120013001400150016001700180019001a001b +001c001d001e001f0020002100220023002400250026002700280029002a002b002c +002d002e002f0030003100320033003400350036003700380039003a003b003c003d +003e003f0040007c00420043004400450046004700480049004a004b004c004d004e +004f0050005100520053005400550056005700580059005a005b005c005d005e005f +01870060006100620067006400a00066008300aa008b006a0097018800a5008000a1 +009c0189018a007d018b018c00720085018d008f0078009e009b00a3007b00ae00ab +00ac00b000ad00af008a00b100b500b200b300b400b900b600b700b8009a00ba00be +00bb00bc00bf00bd00a8008d00c400c100c200c300c5009d009500cb00c800c900cd +00ca00cc009000ce00d200cf00d000d100d600d300d400d500a700d700db00d800d9 +00dc00da009f009300e100de00df00e000e200a200e3018e018f0190019101920193 +019401950196019701980199019a019b019c019d019e019f01a001a101a201a301a4 +01a501a601a701a801a901aa01ab01ac01ad01ae01af01b001b101b201b301b401b5 +01b601b701b801b901ba01bb01bc01bd01be009101bf01c001c101c201c301c401c5 +01c601c701c801c901ca01cb01cc01cd008c009201ce01cf01d001d101d201d301d4 +01d501d601d701d801d901da01db01dc008e009401dd01de01df01e001e101e201e3 +01e401e501e601e701e800c000dd01e901ea01eb01ec01ed01ee01ef01f001f101f2 +01f301f401f501f601f701f801f901fa01fb01fc01fd01fe00c601ff020002010202 +00c700e40203020402050206020702080209020a020b020c020d020e020f02100211 +021202130214021500650216021702180219021a021b021c021d021e021f02200221 +02220223022402250226022702280229022a022b022c022d022e022f023002310232 +0233023402350236023702380239023a023b023c023d023e023f0240024102420243 +024402450246024702480249024a024b024c024d024e024f02500251025202530254 +02550256025702580259025a025b025c025d025e025f026002610262026302640265 +0266026702680269026a026b026c026d026e026f0270027102720273027402750276 +027702780279027a027b027c027d027e027f02800281028202830284028502860287 +02880289028a028b028c028d028e028f029002910292029302940295029602970298 +0299029a029b029c029d029e029f02a002a102a202a302a402a502a602a702a802a9 +02aa02ab02ac02ad02ae02af02b002b102b202b302b402b502b602b702b802b902ba +02bb02bc02bd02be02bf02c002c102c202c302c402c502c602c702c802c902ca02cb +02cc02cd02ce02cf02d002d102d202d302d402d502d602d702d802d902da02db02dc +02dd02de02df02e002e102e202e302e402e502e602e702e802e902ea02eb02ec02ed +02ee02ef02f002f102f202f302f402f502f602f702f802f902fa02fb02fc02fd02fe +02ff0300030103020303030403050306030703080309030a030b030c030d030e030f +0310031103120313031403150316031703180319031a031b031c031d031e031f0320 +032103220323032403250326032703280329032a032b032c032d032e032f03300331 +03320333033403350336033703380339033a033b033c033d033e033f034003410342 +034303440345034603470348007e00880349034a034b034c034d034e034f03500351 +03520353035403550356035703580081008200840087007f00860359035a035b035c +035d035e035f0360036103620363036403650366036703680369036a036b036c036d +036e036f0370037103720373037403750376037703780379037a037b037c037d037e +037f0380038103820383038403850386038703880389038a038b038c038d038e038f +0390039103920393039403950396039703980399039a039b039c039d039e039f03a0 +03a103a203a303a403a503a603a703a803a903aa03ab03ac03ad03ae03af03b003b1 +03b203b303b403b503b603b703b803b903ba03bb03bc03bd03be03bf03c003c103c2 +03c303c403c503c603c703c803c903ca03cb03cc03cd03ce03cf03d003d103d203d3 +03d403d503d603d703d803d903da03db03dc03dd03de03df03e003e103e203e303e4 +03e503e603e703e803e903ea03eb03ec03ed03ee03ef03f003f103f203f303f403f5 +03f603f703f803f903fa03fb03fc03fd03fe03ff0400040104020403040404050406 +040704080409040a040b040c040d040e040f04100411041204130414041504160417 +04180419041a041b041c041d041e041f042004210422042304240425009804260427 +04280429042a042b042c042d042e042f043004310432043304340435043604370438 +0439043a043b043c043d043e043f0440044104420443044404450446044704480449 +044a044b044c044d044e044f0450045104520453045404550456045704580459045a +045b045c045d045e045f0460046104620463046404650466046704680469046a046b +046c046d046e046f0470047104720473047404750476047704780479047a047b047c +047d047e047f0480048104820483048404850486048704880489048a048b048c048d +048e048f0490049104920493049404950496049704980499049a049b049c049d049e +049f04a004a104a204a304a404a504a604a704a804a904aa04ab04ac04ad04ae04af +04b004b104b204b304b404b504b604b704b804b904ba04bb04bc04bd04be04bf04c0 +04c104c204c304c404c504c604c704c804c904ca04cb04cc04cd04ce04cf04d004d1 +04d204d304d404d504d604d704d804d904da04db04dc04dd04de04df04e004e104e2 +04e304e404e504e604e704e804e904ea04eb04ec04ed04ee04ef04f004f104f204f3 +04f404f504f604f704f804f904fa04fb04fc04fd04fe04ff05000501050205030504 +05050506050705080509050a050b050c050d050e050f051005110512051305140515 +0516051705180519051a051b051c051d051e051f0520052105220523052405250526 +052705280529052a052b052c052d052e052f05300531053205330534053505360537 +05380539053a053b053c053d053e053f054005410542054305440545054605470548 +0549054a054b054c054d054e054f0550055105520553055405550556055705580559 +055a055b055c055d055e055f0560056105620563056405650566056705680569056a +056b056c056d056e056f0570057105720573057405750576057705780579057a057b +057c057d057e057f0580058105820583058405850586058705880589058a058b058c +058d058e058f0590059105920593059405950596059705980599059a059b059c059d +059e059f05a005a105a205a305a405a505a605a705a805a905aa05ab05ac05ad05ae +05af05b005b105b205b305b405b505b605b705b805b905ba05bb05bc05bd05be05bf +05c005c105c205c305c405c505c605c705c805c905ca05cb05cc05cd05ce05cf05d0 +05d105d205d305d405d505d605d705d805d905da05db05dc05dd05de05df05e005e1 +05e205e305e405e505e605e705e805e905ea05eb05ec05ed05ee05ef05f005f105f2 +05f305f405f505f605f705f805f905fa05fb05fc05fd05fe05ff0600060106020603 +060406050606060706080609060a060b060c060d060e060f06100611061206130614 +06150616061706180619061a061b061c061d061e061f062006210622062306240625 +0626062706280629062a062b062c062d062e062f0630063106320633063406350636 +063706380639063a063b063c063d063e063f06400641064206430644064506460647 +06480649064a064b064c064d064e064f065006510652065306540655065606570658 +0659065a065b065c065d065e065f0660066106620663066406650666066706680669 +066a066b066c066d066e066f0670067106720673067406750676067706780679067a +067b067c067d067e067f0680068106820683068406850686068706880689068a068b +068c068d068e068f0690069106920693069406950696069706980699069a069b069c +069d069e069f06a006a106a206a306a406a506a606a706a806a906aa06ab06ac06ad +06ae06af06b006b106b206b306b406b506b606b706b806b906ba06bb06bc06bd06be +06bf06c006c106c206c306c406c506c606c706c806c906ca06cb06cc06cd06ce06cf +06d006d106d206d306d406d506d606d706d806d906da06db06dc06dd06de06df06e0 +06e106e206e306e406e506e606e706e806e906ea06eb06ec06ed06ee06ef06f006f1 +06f206f306f406f506f606f706f806f906fa06fb06fc06fd06fe06ff070007010702 +0703070407050706070707080709070a070b070c070d070e070f0710071107120713 +071407150716071707180719071a071b071c071d071e071f07200721072207230724 +07250726072707280729072a072b072c072d072e072f073007310732073307340735 +0736073707380739073a073b073c073d073e073f0740074107420743074407450746 +074707480749074a074b074c074d074e074f07500751075207530754075507560757 +07580759075a075b075c075d075e075f076007610762076307640765076607670768 +0769076a076b076c076d076e076f0770077107720773077407750776077707780779 +077a077b077c077d077e077f0780078107820783078407850786078707880789078a +078b078c078d078e078f013a006f0089079007910792004100080075079300690077 +00760794007000710074079500ee00ed007907960797007a07980799079a079b079c +079d079e006b006c079f07a007a107a207a3006307a407a507a607a707a807a907aa +07ab07ac07ad07ae07af07b007b107b207b307b407b507b607b707b807b907ba07bb +07bc07bd07be07bf07c007c107c207c307c407c507c607c707c807c907ca07cb07cc +07cd07ce07cf07d007d107d207d307d407d507d607d707d807d907da07db07dc07dd +07de07df07e007e107e207e307e407e507e607e707e807e907ea07eb07ec07ed07ee +07ef07f0009907f107f207f307f407f507f607f707f807f907fa0144014507fb07fc +07fd07fe07ff08000140014101420143080108020803080408050806080708080809 +080a080b080c080d080e080f0810081108120813081408150816081708180819081a +081b081c081d081e081f0820082108220823082408250826082708280829082a082b +082c082d082e082f0830083108320833083408350836083708380839083a083b083c +083d083e083f0840084108420843084408450846084708480849084a084b084c084d +084e084f085008510852085308540855085608570858085900a6085a085b085c085d +085e085f0860086108620863086408650866086708680869086a086b086c086d086e +086f0870087108720873087408750876087708780879087a087b087c087d087e087f +0880088108820883088408850886088708880889088a088b088c088d088e088f0890 +089108920893089408950896089708980899089a089b089c089d089e089f08a008a1 +08a208a308a408a508a608a708a808a908aa08ab08ac08ad08ae08af08b008b108b2 +08b308b408b508b608b708b808b908ba08bb08bc08bd08be08bf08c008c108c208c3 +08c408c508c608c708c808c908ca08cb08cc08cd08ce08cf08d008d108d208d308d4 +08d508d608d708d808d908da08db08dc08dd08de08df08e008e108e208e308e408e5 +08e608e708e808e908ea08eb08ec08ed08ee08ef08f008f108f208f308f408f508f6 +08f708f808f908fa08fb08fc08fd08fe08ff09000901090209030904090509060907 +09080909090a090b090c090d090e090f091009110912091309140915091609170918 +0919091a091b091c091d091e091f0920092109220923092409250926092709280929 +092a092b092c092d092e092f0930093109320933093409350936093709380939093a +093b093c093d093e093f0940094109420943094409450946094709480949094a094b +094c094d094e094f0950095109520953095409550956095709580959095a095b095c +095d095e095f0960096109620963096409650966096709680969096a096b096c096d +096e096f0970097109720973097409750976097709780979097a097b097c097d097e +097f0980098109820983098409850986098709880989098a098b098c098d098e098f +0990099109920993099409950996099709980999099a099b099c099d099e099f09a0 +09a109a209a309a409a509a609a709a809a909aa09ab09ac09ad09ae09af09b009b1 +09b209b309b409b509b609b709b809b909ba09bb09bc09bd09be09bf09c009c109c2 +09c309c409c509c609c709c809c909ca09cb09cc09cd09ce09cf09d009d109d209d3 +09d409d509d609d709d809d909da09db09dc09dd09de09df09e009e109e209e309e4 +09e509e609e709e809e909ea09eb09ec09ed09ee09ef09f009f109f209f309f409f5 +09f609f709f809f909fa09fb09fc09fd09fe09ff0a000a010a020a030a040a050a06 +0a070a080a090a0a0a0b0a0c0a0d0a0e0a0f0a100a110a120a130a140a150a160a17 +0a180a190a1a0a1b0a1c0a1d0a1e0a1f0a200a210a220a230a240a250a260a270a28 +0a290a2a0a2b0a2c0a2d0a2e0a2f0a300a310a320a330a340a350a360a370a380a39 +0a3a0a3b0a3c0a3d0a3e0a3f0a400a410a420a430a440a450a460a470a480a490a4a +0a4b0a4c0a4d0a4e0a4f0a500a510a520a530a540a550a560a570a580a590a5a0a5b +0a5c0a5d0a5e0a5f0a600a610a620a630a640a650a660a670a680a690a6a0a6b0a6c +0a6d0a6e0a6f0a700a710a720a730a740a750a760a770a780a790a7a0a7b0a7c0a7d +0a7e0a7f0a800a810a820a830a840a850a860a870a880a890a8a0a8b0a8c0a8d0a8e +0a8f0a900a910a920a930a940a950a960a970a980a990a9a0a9b0a9c0a9d0a9e0a9f +0aa00aa10aa20aa30aa40aa50aa60aa70aa80aa90aaa0aab0aac0aad0aae0aaf0ab0 +0ab10ab20ab30ab40ab50ab60ab70ab80ab90aba0abb0abc0abd0abe0abf0ac00ac1 +0ac20ac30ac40ac50ac60ac70ac80ac90aca0acb0acc0acd0ace0acf0ad00ad10ad2 +0ad30ad40ad50ad60ad70ad80ad90ada0adb0adc0add0ade0adf0ae00ae10ae20ae3 +0ae40ae50ae60ae70ae80ae90aea0aeb0aec0aed0aee0aef0af00af10af20af30af4 +0af50af60af70af80af90afa0afb0afc0afd0afe0aff0b000b010b020b030b040b05 +0b060b070b080b090b0a0b0b0b0c0b0d0b0e0b0f0b100a720300000100004e000051 +00006a0000840000e20002fb00032d00046f0004800004d300052800053200054600 +055900056b0005790005920005ae00066b00068e0006bd0006db0006fd0007260007 +4900077500079e0007b50007d80007e50007fc00080900082b00090700092000094d +00096100097b0009d9000a9a000b78000b91000ba4000bb9000bd8000bfa000c1500 +0c31000c4d000cf4000d15000d3e000e9d000f3e000f53000f62000f72000f80000f +93000fb2000fea000ffe00103600104900106900107c0010a30010c20010d7001105 +00112400113d00122400124100126300128600129f0012b300144000153600155100 +16530017040017de0018910018a3001972001981001acc001adb001aeb001bf2001c +ab001cc3001d7a001d8f001d92001dac001f3d001fe200205e00214d0021650022d1 +0022e80023b70023d40023e20024260024380024f600251b0025380025520025b000 +25d30025e200267c00277700278a00279e0027b30027ee0027fc00290b0029b4002a +d5002af8002b1a002b3c002b5e002b8f002bc2002ceb002d37002d52002d97002ddc +002e21002e89002ea3002ebe002ed9002f00002f1d002f52002f76002f9a002fbe00 +2fef00302000305600307b0030990030b70030d50030f90031140031b300326b0032 +9c0032cd0032fe0033410033800033c00033f300341c00344200346800348e0034c8 +0034e20034fd0035180035420035c80035fd00362000364300366600369c0036ce00 +37ba0037de00380600382e00385600388a0038a10039b70039da0039fb003a2f003a +58003a93003bbd003d0b003d28003d45003d62003d7f003da0003dc2003de0003e01 +003e25003ec4003fab003fdb00402100404800408f0040c800410f00413900420d00 +42e500432b0043540043820043ee0044250044a80044d900454900457f0045f20046 +140047030048540049b60049de004ab5004ad1004b27004b46004bd2004ccf004dcb +004dec004dff004e1f004e5f004e7c004e9a004ec8004eee0050860050b50050d100 +51050051510051850051ad0051df00520f0052b700534400536d0053940053c30053 +f000541a0054440054c80055f70056e200570600572a0057530057800057ac0057da +0058a700595c00598d0059b40059ed005a1b005a4c005a77005ac1005b3c005b8600 +5bb9005d8e005e80005eca005f01005ff600613f00617e0061a000625200633a0063 +6500639b0063b80063e200640400643800646200649a0064c00064f300663a00676a +0067d90067f200680d00682400684c0068710068960068c60068ef00691c00694400 +69c6006aa6006bd3006c10006ca9006d60006e08006eb3006faf00707100708e0071 +7b00721b0072dd0073620074160074330074b40075f30076870077ea0078e3007a02 +007a86007b26007c73007df6007e6e007f730081360081e50082ab00834400836b00 +839600848000851f00862c00875a00882d0088a80089340089590089de008b29008c +25008ca9008d2f008d4c008e6f008f07008f8c0090440090ef0092380093990093ae +00942d0094a800953c0096260096810096de00977900982800983e00985e00989600 +98af0098f500992f0099910099c2009a09009a46009b00009b41009c60009c82009c +b7009cd3009cee009d12009d39009d58009d84009daf009df2009e24009f0c009fc2 +00a0a000a0d200a1a200a1c300a1ff00a24900a29900a2dd00a33300a37900a4b800 +a67f00a6ad00a71e00a74700a8c700a8eb00a90e00a93b00a96700a98700aa0800aa +2a00aa8000aab100aafe00ab2c00ab9800ad1300adbc00ade500ae0c00af9800b077 +00b0ce00b11000b13f00b16a00b19100b1cc00b1f700b23200b27d00b2ac00b33b00 +b37200b3da00b44f00b47100b4f100b51b00b54900b57400b5a200b5da00b60b00b6 +4900b67a00b69e00b6d100b6f500b72600b77700b7b800b7fe00b81f00b8a200b92c +00b94f00b97c00baf400bbdf00bc7000bd0300bd7600bded00be1300be4900beb500 +bee900bf2700bf6200bff500c03500c05d00c08400c0d500c10500c12100c13900c1 +f300c2d700c3a700c3bd00c4a400c5d100c78200c91c00ca6000caea00cc2000cd2f +00ceb100cf5400d00100d0a800d18e00d19d00d3e000d59300d65900d6e500d7a600 +d8d300d97d00da9500dc2c00ddd600debd00df7f00e0a200e18000e1d300e2a900e3 +b500e46b00e4ec00e50d00e6ee00e71500e7c600e9c400ea3e00eb3b00ec4800ecf5 +00edca00eef500f03900f17300f2a900f3ad00f49000f4a300f4b700f5b200f65e00 +f6e000f7a500f94000fb1400fcc200fdd400fef400ff890100250101120101ac0102 +cc0103ad01049e01052f01061f01069b0107010107640108b20109fe010b1c010b84 +010c0b010c77010d01010dcd010e37010f21010fae010fc90110b801120a01134701 +141e0116040116920117150118140118fa011981011a09011b1b011b45011b78011b +f2011d37011d50011ddd011f5e01202a01212901226601236b0125410126300127b6 +01285a0129cc012bac012d94012ed101306201325501328a0133370133e60134d101 +35870135b10135ce0136500136e101377d01378c0138940138e30138fe0139310139 +4401395701399f0139ec013a3e013a8f013aad013acb013ade013b01013b10013b1b +013b5c013b6e013b82013b95013ba3013bb6013bc9013bdc013bfa013c08013c5001 +3c96013ca8013cbd013d0d013d3c013d50013d61013d7b013d8d013daa013dc5013e +13013e61013f13013f27013f4c01409101411101412c01414b01416c01418b0141a6 +0141bb0141d50141f401421101422f0142770142bf0142dc0142f901431201437801 +43e101449d0144e901450101453301456a01459e0145d101461a0146610146930146 +9b0146a30146b601470401471401473201474601475701476e0147800147990147a8 +0147b10147f20148120148750148940148a70148b90148ca01492401493501494801 +495b01499d0149de014a16014a49014a8f014aa0014ab3014b01014b2b014b5c014b +8a014b9d014bb9014bd1014be3014bf4014c05014c17014c34014c8e014cb7014ce4 +014cf7014d0d014d26014d38014d44014d5f014d79014d8a014d96014db3014de601 +4e2c014e74014e97014ef2014f7b01508801509d0150af0150c10150dc0150ed0151 +3c01514e01516b01518001519a0151d60152ef0153b10154410154950154ca015511 +0155570155840156150156340156530156bd0156d00156e101576801582401588b01 +58960158a40158b10158be0159050159360159660159ec015a3e015aad015ae5015b +70015c13015cc4015d72015eac015f27015f860160120161160161630161960161a8 +0161bc0161de01620101622401623301625801627801628c0162d30162f501631001 +633301634e0163820163b70163d00163fd01642701646501649b0164b70164d00165 +4301655601657501658401659f0165bb01670c01672801675001677d0167a20167d3 +0167e601688c01689e0169be016a85016aac016ad7016b0a016b3b016b6a016b8501 +6bc3016be9016cd3016d7d016e14016e3b016ee6016f08016f62016f750170970171 +2d0171ed0172b90173910173ac0174510174730174ec0175470175ca0175e501766a +01775f01783501784e01787d0178ac0178d00178f301791401799b017a3f017a5301 +7a6e017b25017cf3017d84017e80017f5b0180590180ed0181770182810183070183 +8d0183b301843d01849601852a0185a20185b60185d901867a0186d901873c0187c4 +0187d701884801885b01887e0188a20188e7018934018a3b018a70018b33018b6f01 +8b82018ba9018c64018d60018e57018f5801901901903901905d0191480191610191 +9e0191cb0191f50193820193b80193e701940c01942301944801956801964b019666 +01967f01969b0196c30196f001970401973501974801987c01988e019962019a5b01 +9b59019caf019dd0019e04019e2d019eb5019f24019ffd01a02401a0e501a11801a1 +4101a26201a28101a2a401a2c901a2df01a30601a36f01a42901a55601a56f01a58a +01a5f901a62501a63a01a6c001a6d001a79501a7a401a83101a84901a92501a9ed01 +aaa401aacf01aaf101ab2701abd001ad3601ad5c01ad9601aef001af2101b03501b0 +6101b08301b0ad01b0d001b1b101b2c701b46b01b4df01b4fd01b51d01b5e101b5fe +01b61e01b70301b7b101b92e01baf001bc9f01bddc01c02001c1e001c2dd01c3d601 +c56901c6f701c7e901c8bb01c9db01cb4101cb7801cca201ccc301ccdf01cd1301cd +4301cdbb01cedc01cefd01cf1d01cf7001d00b01d09501d18c01d30401d3c601d48d +01d50f01d60701d74301d88701d9e501dbaa01dc8c01ddad01df2001dfea01e19b01 +e2c401e41401e55d01e6ba01e80b01e8e501e9b201eb5001ec8801ed7f01ee6b01ef +d001f11601f23301f30401f38301f40101f41401f4d501f62f01f71501f86201f990 +01fa7501fb4601fbf501fca801fe0201ff1b01ffd60200b90201610201f802032702 +04420204550204930205b4020734020857020939020a04020b29020c4e020cfb020d +ae020dd7020e10020e3d020e7c020ec9020efc020f42020f77020f94020fb5020fe4 +02101902105d0210930210cb0211090211200211970211b70211dc02120402123602 +12630212950212cc02130b02138c0213e90214890214db0214fa02151302153a0215 +5d0215810215a30216b00216e90217c40218460218c602190902192102195702197d +0219a50219b60219ce0219f5021a08021a16021a25021a34021a61021a72021a8602 +1a9e021ab1021ac4021ad5021ae4021b28021b7d021ba6021bbb021bde021bfb021c +98021cb3021d10021d99021e35021e48021e94021edb021f6a021fd902206d0220cc +0221290221830223ce0224710225280225bf02269602270e02274e0228230228bc02 +28ec022917022933022947022964022a01022a1e022ad3022c25022d3e022d5d022d +8b022e40022ef502308602322702327e02331802347e0235c902365b0236980236ee +02378b0238040238770238980239010239d9023b65023c8c023e78023e9f02403502 +41b80241e40242010242240242370242610243f70244110244d60245850245b30245 +f302463202470302474302476d0247ac0247d50247f902482b0248510248940248bb +0248ff02492402496302498d0249d30249f4024a2f024a82024b43024b97024c6302 +4ca6024ccc024d20024d5a024dd8024e21024ef1024f14024f42024fb1024fd60250 +0302502a02505202507c0251db02533c0254e802551102566302568c0256cc02577c +0257b70257df0257fe02582902584d0258760258970258c90258ec02592702595302 +59830259a20259ce0259e9025a0f025a40025a6a025b90025bbc025bf0025c1d025c +47025c76025ca1025ccc025cf6025d1d025d43025e38025f18025f9e025fef026025 +0260ec02612c0261f40262320262670262a60262de02631102633d02637102639d02 +63dc0264140264470264730264c00264ff02654d0265880265da02667d0266d60267 +8a0267ea0268320268700268940268d30268f902693a0269570269930269ad0269d4 +026a08026a34026a6a026a86026aad026c09026ce6026d3f026e00026e26026e4b02 +6e6a026e89026ed6026eee026f08026f21026f45026f6a026f88026fa8026fc8026f +e902701102702e02705e0270810270a30270c10270ed02711202714402716f02719d +0271c50271ec02721802723e0272630272a002732f0273de0274e20275b602764202 +76690276a00276cc02770a02774002781b0278c302798a0279be027a01027a4a027a +93027ac2027aff027b3c027b8c027bc9027cb5027cec027d39027d8b027dff027e33 +027e79027ec1027eeb027f37027f66027fb9027ff20280c40280fe0281c902820302 +825c0282990283700283af0283ff02842f02845602847e0284a00284cd0284f60285 +1e02854d0285790285b10285e80286920286c90287020287820288340288720288a3 +0288d102890202893902896a0289a10289dd028a20028a62028bc2028bf8028c3402 +8c57028c84028ca9028cde028d0a028d37028d63028d90028dbc028df5028e31028e +72028e9d028ed3028eee028f04028f270290760291d30291f602921e02924602933a +0293ef0294410294a302956702962c02966602969f0296df02971e02975902979802 +97fa02985f02988d0298ba0298f00299230299550299870299e1029a3a029a73029a +ac029aed029b2e029b6f029bb4029c01029c4e029ca3029d00029d90029dee029e26 +029e5d029e9b029ed6029f25029f69029fcb02a02902a05102a07902a0ae02a0e202 +a11702a16802a1c002a21802a23c02a26002a28a02a2b002a2db02a30302a35302a3 +a002a3c102a3e202a41002a44402a4d902a50702a55a02a5ac02a5d602a60002a631 +02a66402a69a02a6d202a6fe02a72a02a75f02a79302a7c802a7fd02a82402a84c02 +a87b02a8ac02a8e302a92002a97402a9c502a9e702ab1a02ac5a02adb202addf02ae +0c02ae4002ae6c02aef902af2d02af8502afda02b01902b05802b09f02b0f502b142 +02b18902b1f202b25a02b28d02b2c002b2f002b32102b34f02b37e02b39802b3b302 +b3d702b3fb02b41d02b44002b46102b48202b4d302b52102b57902b5cd02b65002b6 +a402b71e02b79102b7d602b81a02b91202b95c02b9a602b9f002ba5c02bac902bb08 +02bb4a02bb9502bbd902bc3502bc7f02bce902bd5202bd9202bdd202be1c02be6502 +beaf02bf1902bf8102bfeb02c02a02c06102c0a202c0d902c19e02c1e002c24702c2 +a802c2f902c34a02c3a302c40b02c46a02c4c302c53b02c5b402c5ef02c62302c664 +02c69e02c6df02c73002c79802c7c102c7e202c80202c82202c85202c85c02c86e02 +c88102c8ad02c8ec02c92002c94d02c98302c9d702ca3502ca7c02cac302cae502cb +0702cba402cbbf02cbda02cc1e02cc4002cc5d02cc8d02ccc202ccfb02cd5b02cd7a +02cd9602cdb102cdcc02cde602ce0102ce3c02ce6a02ce8d02ced902cf1702cf4702 +cf7702cfb802d01802d03702d05302d06f02d08a02d10802d12b02d15002d16302d1 +8f02d1b402d21102d24f02d2a002d2c302d2e502d31a02d34e02d38e02d3a202d3ac +02d3ae02d3b102d3b302d3b602d3b902d3bc02d3bf02d3c202d3c502d3c802d3cb02 +d3cc02d3de02d3f002d41102d43302d45602d47902d49402d4b102d4c602d4db02d4 +ef02d50b02d52902d54502d56002d5e102d65502d71302d73402d74b02d75902d76f +02d78d02d79d02d7a002d7e802d86302d87702d89102d8ac02d8bf02d8d802d8f302 +d8fe02d90902d99e02d9c602db7202db8402e09502e0ac02e0ef02e12502e15b02e1 +ab02e25802e28902e2a802e2d402e2f802e31002e33102e34d02e37a02e39a02e3b6 +02e3cc02e3ec02e3f902e40802e4a002e4bf02e54402e5e802e66302e77e02e79502 +e7b502e7f102e81e02e83e02e85802e86c02e88a02e89602e8a402e92f02e9e302ea +0202eb4602ebfb02ec1402ec2902ec3c02ec6002ec7f02ecaa02ecce02ecef02edc4 +02ee6002efd002f1b502f2ef02f33302f3cd02f56402f6e502f75202f7e202f8e402 +f9bb02fa1002facd02fbe602fc9802fd9902fe1302fefd02ffbb03006303018a0302 +9503031e0303b40304b40305660306d40308170308b20308dc0309ae030a02030a2b +030a40030a63030a80030b5f030c5f030c9f030cf4030d1f030d61030da2030ddd03 +0e12030e64030eaa030f04030f65030fb8030fd30310540310e50311b60312a20313 +370314250315230316700317db031907031a6e031be0031c74031d35031dbd031e94 +031eb4031fbd0320e103226f03227e03242603252003263503288b03289a032ae403 +2d70032d84032d99032dc7032f5b032faf0330b70332090332650332cd0333060333 +4203337a0333b403342e0334ac03357d03364e0337230337f40338610338cd03390d +0339b1033a5f033a70033a7e033a90033a9f033abb033ad5033b72033c3f033cdd03 +3d25033d6d033db5033e00033e79033f0303401b03413d0342550343690343950343 +e00344b80344e103457c0346e10347290347730347b80348ca03490703494e034a62 +034aa0034b64034c24034c86034c93034cf6034d5e034d73034d87034d99034db603 +4dc9034dd7034e07034e34034e8f034eea034f03034f290350440351a20351b50351 +fa0352170352880352ad0352d103531a03536503537a0353970353be0355af0355c7 +0355db0356b4035761035865035a1a035a38035abb035adf035b79035bc3035c0e03 +5c51035c62035d15035dcc035eaf035f8e035fc2035ff703609903614603621d0362 +a10363f60364a60364c30364e00364fd03650e03652c0365920365f903660c03662e +0366500367aa0367dd0367f703680e0368ee0369cc036a37036a89036a94036aa303 +6b14036b3b036bc9036c57036c6a036cf6036d84036d98036e28036e43036e51036e +76036e92036e9f036ec3036ee4036f66036f8b036fa3036fd003704f03707c037094 +0370d20370f003723e0373fa0375a603772a0378960379e6037af0037b86037cd303 +7d13037f910381570383110384a00386700387ca038a65038b05038c60038ea2038e +c5038ee8038fcd038ff803901b0390dd03915a0391f40392740392a50393760393a1 +03948e0394c00394ea0395ba03963f0396e00397b40397e5039b0d039ccb039df103 +9f5403a1b003a3d503a57503a81503a96b03a9e303accf03ae3d03afad03b1a103b2 +1603b3af03b48103b6b803b85703ba1703bbc103bd8903bf0703c24503c4ae03c699 +03c7c003c7e803c80a03c8c603c9a903ca7903cb9203cc8603cd0a03cd8d03ceff03 +cf2103d0ad03d18a03d1b303d28403d2ac03d34303d3c403d44803d51c03d65203d8 +5203d9a303da6303db2003dc5a03dcb103dd1903ddce03de4103dea103def903df3d +03df8f03e02403e0b303e21403e3ee03e5b403e76a03e8f803ea4e03eb7b03ec2003 +ed8603f00d03f04303f05003f06903f07803f09403f0a203f0bd03f0cc03f0e803f0 +f803f11503f12503f15c03f18103f1a703f1c203f20f03f21803f23303f26503f296 +03f2c803f2ec03f31403f32b03f34203f37903f39f03f3f203faf803fbd103fd4103 +ff2c03ffc004015b0402f80403ba04042c04048b0404eb04057b0405e204064c0406 +b70407560407da0408ad0409720409d7040a4f040af1040b7f040c3e040ce8040dbf +040e43040eff040f7104101a0411460411b704121204128a0412cd0412f404135704 +13d70414a404158c0415e70416460416f304185a0418ce041b05041d9f041feb0420 +7a04212904229d0422cd0424cf0425a00426490426d004276c0427e2042ee4042f35 +042f960430050430700430c704311a0431570431a10431f004322f04324004326b04 +32980432a70432b60433460433b80434e404356904366e04383e043988043a5d043b +0b043c38043d54043dd3043e4b043f9e04409704414e0441fd0442af044326044338 +04434c0443680443840443dd04441c0444780444d904468504479204495f0449b104 +49dc044a06044c2f0454650455890456a50457cc0457f304581a04585a0458a3045a +a3045ba8045f490461260461b50463f504667d04679e0467b90468760468990468c8 +0468e60469080469310469540469800469a9046af6046c58046dfc046ea704708b04 +70c304710404717a0471900471c10471fe04722004724904726304728f0472bb0473 +5204737e0473ab0473d00475810476dc047976047b17047dc6047f8804815204825d +0484290485620486f40488960489c3048aeb048bba048d3b0495230495ed049c2a04 +9d75049f6b04a0ae04a17e04a34504a57a04a74604a81704a92404aa0604ab0c04ac +b104ad8b04ae8d04aea904af6204af7704af9404afb904b08804b0b504b19d04b1b2 +04b1c804b2fc04b30f04b45104b50c04b52a04b5c504b6cf04b72604b75304b78304 +b79904b89e04ba8d04bbab04bbc204bbe004bbe204bbf404bc1604bc3804bc5b04bc +9104bcc204bcf404be9604bfb104bfdc04c00704c03204c06f04c08a04c0a504c0c0 +04c0e904c10a04c14304c16804c18d04c1b304c1fc04c22b04c31304c44504c46204 +c47f04c49c04c54a04c56804c68304c7cc04c7ed04c88304c96304cb5704cd8d04cd +ae04cddd04cf3904cf5504cf7504cf9d04d10d04d1f204d23204d24e04d2f204d31e +04d34d04d45604d48204d4b704d4f104d52e04d66c04d6ac04d7b604d87304d89c04 +d8c004d8e604d91104d93a04d95d04da0804da4d04da8c04daac04db4404dca104dd +4904ddfc04deb704df9d04e0ba04e12804e1f604e33004e47504e49904e4bd04e4f2 +04e65804e78504e85204e93004e9c904eaa004ebc104ec6b04ed0004ee3f04ef2204 +efd604f0a504f12004f1b004f2f604f40304f41e04f4df04f50504f51e04f57604f6 +1b04f85404f91504fa2204faa304fb1404fba104fc2604fca704fd2604fde904fe4c +04ff0404ffc905000d0500930500a90500da05018c0501ae0501d70501f105021d05 +024905026f0502ac0502fe050310050472051202051fa40566ea0567090567210567 +4e0568120568690568820568ae0568d80568ed05690005692405694305696e05698e +0569ab0569cf0569f0056a13056a26056c10056d17056dc6056df9056e21056edf05 +6f8a056f9c056faf0570120570250570390570f605717a05718e0571a20571b40571 +cb0571e10571f205775005783a057924057c04057de30583ff058752058888058bac +058e9c059495059f6805a3bd05bf3805c03805c12905c38005c39705c4a105c5b405 +c62f05c6af05c72005c79c05c8bc05c9d705c9ef05ca1205ca2005ca2e05ca3d05ca +4c05ca5e05ca7405cb4705cc8e05cda805ce9705d00405d16d05d23805d37c05d408 +05d55605d64005d6ee05d85c05d9ca05dae205db4a05dc3e05ddaf05de4a05df6305 +e02005e18305e37905e4b105e5b705e6b205e81b05ea9205ebd52c8bbdf8e9be018b +bdf824bd03bdf8ef15f73efb92fb3efb9205a95e15f73ef792f73efb9205fb20f7bf +15f73ef7928bfc9005fb5cf7bf15fb3ef791f7e88b05fc38fd1b15f888f94efc8806 +0efbed0efbc781f5f8c67701e6f503f724f92615200a56fcfb15210a0efb97f83ff7 +6e01cae1b3e103f76bf83f15220afb128a15220a0efb16f754c0f707c001f7abf789 +15fb068b9ef707f7058b05b116ea8b93c02b8ba8f747658b6ffb47fb068ba9f74765 +8b6efb472e8b8356e88b79fb072d8b058356e88b6ffb46b08ba8f746f7048b70fb46 +b18ba9f746e98b92c02c8b050efb16fffff7e666ff00226666ff0227b334ff001fe6 +6601becef771d903ff00cf199aff016eb33415ffffd2ccccff00164cccffffd4199a +ff00214ccc8bff0035b3348bff00339998ff002e4ccdff0031999cff00366666ff00 +00cccc08ff0013999afffec9999a15ff00323334ffffeb9999ff00328000ffffe233 +338bffffb1999a8bffffb5b333ffffd6b33463ffffb73332ffffff4ccd08ff009219 +9af8c515ffffd08000ff00063334fffffbe666ff000eb334ffffc1b334ff00036664 +08ff0004b332ff0055333405fffff333348b7cfffffe8000fffff6cccdfffffc8000 +08fffffb9999ffffb0666805ffffa53334fffffce664ffffb16666ffffc480008bff +ff9fb3348b34ca5ed36cff00053333fffffdccccff00058000fffffdccceff0005b3 +33fffffdcccc087dffff00e66705ffffbcb334ff0009999a5fff0028199affffede6 +66db808f818982868f438f74965dff0033b3338bff00198000ffffefe666ff003d4c +cd8708fffffb199affffa5cccc0595ffffffffffff00139999ff0000e667ff00074c +cdff0004333308ff0004999aff00544ccc05ff0027199aff00013333ff0025e66695 +ff001de666ff0012b333c0acadc58bc68be44eb748a8fffff4b334ff0004e666ffff +ef8000ff0005b334ffffedb332ff00074ccc08ff000c4ccdff00dfb33205ff003eb3 +32fffff2b334ff0016ccceffffcde668ff00104cccffffcbcccc968b978a939288b8 +87a581bc080eb57faaf762aabaaaf72ab09eaa01c4c1f719acf0c2f718ac03f845de +15230a549a15240a7df83b15250afb91fb0f15260a0ef70281c155acf806acf750ac +12b6ddbfd5f71fd0f750a0137ff78ef7e6159676dbfb08c4405a486767448b4c8b55 +ae8bed088bd2a1c1f2c408f73ffb8815a8660513bfba4ab089aa8bae8bb8a7a2d1ff +fffaccccff00056666fffffb3334ff0004999a808b7764747c6a8b7b8b6d9f6cb608 +67bd05ff0027999ac4ff00167ffeb3ff001ae668bbb9ddff0006ccccff00053334ff +003d3334ff0003cccc91918ba08591778a6d8a698b698b628c778c85858b76918508 +ff00361998fffffd4cccff000ee668fffffab334ffffda666845ffffeee664ffffe0 +199affffe7ccceffffd53333ffffdbe666ffffcab3335dc951de79aa08879305debb +cdcc8bc208ca51b845275544501e8b659964b04bfb184156488b3c08137ffb0ee05f +f61ee08bc2b4b9ca08fb18f7cf1571bc7fb18ba208cdbca8a5b4a26d5e1e8b676657 +4b61080efc29f83ef76e01c0e103daf83e15220a0efbbdb7de03b7f790158b5e8ffb +7bf764fb48958d93928e936ab1fb09f71e8bf79b8bf79bf70af71eabaffffffc999a +ff000a4cccfffff9ccccff0006e668fffff4999aff0000ccccfb0b252efb3b8bfb4e +080efbbdf73fde03f792f790158bb887f77bfb64f748818983848883ac65f709fb1e +8bfb9b8bfb9bfb0afb1e6b67ff00036666fffff5b333ff00063334fffff9199aff00 +0b6666ffffff3333f70bf1e8f73b8bf74e080efb76f73cf8b715270a0e5ef776bdf7 +4e7701f78ebd03f78ef84715280a0efc0bfb19a3f703e801f717b203f3ea15290a0e +fb95f773c701b3f79603f7a3f773152a0a0efc0b81f501c4f503c4b615210a0efba4 +f91a77019af7aa03f7b9f91a15628bfb81fd55b48b050efb1681aef8baae01b2e2f7 +65e203f77cf8d3152b0a87fcdd152c0a0efb1689acf8d57701f767d803f7b4f70e15 +f7ef078bc7ff00014cccc8ff0001b334988bff0004ccccfffffd8000ff00003334ff +fffc80008bffffc8b333ffffddb334ffffcb4ccdffffe74ccc3362ff0001999affff +f4999aff00046666fffff6800094fffff9e666ff002d80009eff00168000919e8b08 +ff00108000ff0003800073691ffbda078b387086458885858b769185bc8cff0023cc +cd8cff003633338bff002f999a8bff001866668abd8a91918ba08591458e7a908bde +080efb168bccf81576f726ae12c8d6f74ee370a813f8c8f868152d0a13f42e0a13f8 +2f0a0efb1681aef7b3abf77bae12bad4ff00b2199aff004e3332ffffccb334e313f8 +f76bf8d315300a13f4310a13f8320a0efb1689acf721baf81b7701f7a3d703f7a3f8 +8f15330af733fbb415340a0efb1680aef7d1bdf722ce4ed312f7d3e413e8f7d3f751 +15350a13d8360a13e8370a0efb1680aef7c6aef770a501b7def767de03ff00873333 +f7c715380aff0009199aff00244ccc15390a0efb169376f8b8cc967712beab13d0f7 +3ef8ab153a0a13b07b970513d03b0a13b03c0a0efb1681aef8baae12b9ce61d2f749 +d15cd413d8f77ef8d3153d0af73331153e0a13e43f0afb3bfc6015400a0efb167fa5 +f770aef7c6ae01bddef767de03ff014fccccf7b815410afffff6e668ffffdbb33315 +420a0efbfb9ef5f745f501d1f503d1f7f715210afbaf04210a0efbfbfb19a3f703e8 +f763f512d1f571b213f0d1f7f715430ac0fb9815440a13e8450a0e5ed4f7df01f71e +f78315460a0e5ef723bdf708bd01f864f7c915470af819fb3a15470a0e5ed2f7df01 +f830f78015480a0efb3481f5f8a6ac12b9cfa9f546ace7de13ecf706f8d015490a13 +f4a9fca515430a0ef7c0fb32acf72cb6f7c9aaf73eaa01c6dbf71ad4f73dcff744db +03f8cdf7d0158b697a587e6c6c425a52688b4c8b7cb78bbb8bc99ccbbebea9aab694 +9c8baf8ba8728b650899fb86158bff0006800092ff0021800091a608c7f7967c9056 +7e86730581a5699c6a8b0821fb13fb06fb2363a137ef1fae8bc1a8b7d5088d8a0583 +7284748b7c087b9272a8f76ed1f721f706f74ffb2ff722fb6bfb75fb4dfb41fb6bfb +69f730fb3cf7831ef7058bc7aec7b9087e9d0555604d74368b08fb963ff76cf72af7 +81f73cf1f72cf711f74328fb62fb3a4c5c2589828d951f0eef89acf766b5f80b7701 +f79bf7af154a0afbb1fb60154b0a0e8489acf7c1adf78bad12f5e0f76cdc69e813f8 +f753f8ba154c0a6904d00613f44d0a60f8a3154e0a13f84f0a0ebe81b4f8e2b001b0 +e6f84aac03f7f98115500a0ef589adf8d9ad01f5e0f807eb03f753df15510a60f8c5 +15520a0e6589ac6cb2f7b0b1f788b36cac12f4e0f74aacb2ac9bae133780f7adf7fd +15530a13af80540a136780550a13a780bbdb898b1f99bd9acd93befffff59998ff00 +05e666fffff48002ff00024ccdfffff2e666fffffccccd08137780560a0efb0289ac +f7b8b1f788b36cac12f4e0f74cacb0aa13eef7aff7d715e08b8e748e5e9185a08b91 +918aa48aff001cb3348bff00224ccc8bff002180008cff001a80008ca58591768b85 +858854887e368b082ef74806c19795b71eb806f58ba463a146978b968d938efffffa +ccccb4fffff0e668ff00606668fffffe9998ff00079998ffffff999aff00024cccff +fffeccceff0000b334fffffd99988bffffee8000fffffc9998fffffb3334ffffff66 +68ffffe74ccc8b08ffff00b3340613de570a0ee581aff783aff7d5af01b0ebf821e0 +03f80df92615fb3bfb41fb17fb70ffff4c3333f710ffff76cccdf7531ff70a8be8a4 +cfc5809486938b9608f708078bff002333339cff0009cccda88e91918ba38591738a +728a638bffffde80008bffffd180008c5f8c85858b739185ff0036e666fffffbcccc +ff001b199afffffc4cce8bffffd7e66608fb2d07696b4885558b08fb3237f73df718 +f743ff00718000f70cff007480001ff7258bb438a535ff000b4cccffffff4cccff00 +0a66688dff000b4cccff0004b334fffffd8000b5fffffb8000b37bd34f9566aefb03 +8b080ef71b89acf7b6b5f78fac01f5e0f7eae003f8fef70e15580a0efbbe89acf8db +ac01f5e003f753f70e15590a0efba5fb40b8f979ac01f721e003f776f89f155a0a0e +b589acff0115e666ff00266666ff010ab334ac01f5e003f753f70e155b0a0e4889ac +6cb2f8d3ac12f5e0f7afac1378f729165c0a13b85d0a13785e0a13b85f0a0ef78896 +7693acf8dbac121360ff0296b334f70815600a13a0610a0ef3967693acf8dbac12f1 +bcf829bc1378f8c0f89415620a13b8630a0ef681aff8e8af01b0ebf849eb03f7dff9 +0215640af7e3fbb915650a0e5589acf78fadf7c2ad01f3e0f775e803f751f8be15a8 +9aaed3d0d074fb13fb00575f2a1e728b638d808e0836f75e15fc25078b387a864588 +85858b769185b88cff00314ccd8cff0023b3338bff002366668bff003a999a8abd8a +91918ba085913d8f738f8bde08f73e07a184a388ae8b08f74ac2f70be0c664f6fb4d +1fffffd9b3338bffffc54ccd84638bffffdb4ccd8bffffcbb3338c638c85858b7691 +85d1889c868b38080ef6fb65c4b1b7c7adf8ecad01b0ebf849eb03f7dff90215640a +f7e3fbb915660a0e8381aa74acf798adf7b9ad12f3e0f76ce7133cf7a4f8fe15670a +38fc8415680a13bc690a137c6a0a0efb0281aff8eaad01beff00476666ff00ed999a +df03ff018a999af90b15ffffc6333293ff000233349effff9e66668bffff9a999a8b +32488b218bffff96999aff00568000ffffcfe666e3ffffde8000ff003cccccffffe8 +e666ff0049b334ffffe3e6678bffff9e33338b3affffd2cccc61ffffb033348bffff +a2999a8bffffc3e666ff002a800075ff0063800008fffff3b3338ffffff56667ffff +fe199afffff66666fffffae6668f3e8f71975aca8bff001be66674ff0058b3348bff +002d80008bff002b199aff000b199aff0022ccccff0015b333ff00398000ff0023ff +ffff00248000ff003d999a8bff003f999a8bff006a6666ffffafe666ff002e999aff +ffad999aff001ee66608ffffc4cccdff00163334ffff9c1999ff0025cccc8bff0054 +199a8bc3ff0032999ac3ff003ae6668bff0061199a8baa4d9f49ff000a8000fffffe +333498ff0000cccc9492fffffc8000bb87a7fffff5999ac0080e8d89acf8d3b2018e +adf778e0f763ad03f7f2f70e15f81207cb95b1af1ea106d68bba719c3e968b998c94 +8f84b986be8ab88b8c898d8a8b6988fb03863c8b0835063e8bfb0a90658e898b8989 +8b8a875e8157805b9587978a978b9fdbb9a5cd8b08bc06b095654e1ffc15078b387a +863b8885858b769185bc8cff0032e6668cff0028199a8bff002666668bff0032999a +8abd8a91918ba085913b8e7a908bde080ecd81b4f8dbac01e2e0f7f6bc03f740f89f +156b0a0ec49476f906ac01f854f8fa156c0a0ef7f89476f906ac01f9bef8c9156d0a +0ecc89acf8dbac01f8aef1156e0a0e7789acf8dbac01f790e003f7e5f70e156f0a0e +948bb1f8c8b6937712c8a9f85caa13d8f8bb8915700a13b8710a13d8720a0efb83fb +55a9f9d8a901f700ce03f700fb5515f7680691918b9d8591fb1e96849a8be208f8f7 +078be2939af71d9591918b9d859108fb68060efbc8f9597601c2f94e155f8bf77afd +7eb78b050efb83fb54a9f9d8a901f749ce03f78cf95415fb680685858b799185f71e +80927c8b3408fcf7078b34837cfb1d8185858b79918508f768060e3ef7eef7c401f7 +04f7bb03f797f8e515730a0efb01fb2eb701f870fb0215fc660683838b6f938308f8 +660693938ba78393080efb5ff8aef73501ebf73203f746f94f15740a0efb1e81bb5b +b4f80bac12afde4bd8f735d91374f7b9f77d15750adafb381513ac760a1374770a0e +2581adf807b7f75ea9a67701d9daf769e103f742f7ff15780a84aa15790a0efb3b81 +bcf803ac01b0e1f74de203f822e6157a0a0e3281ba84a6f7efaef75ea9a67712b2e1 +f770da13bef7edf710157b0a80fffef84ccc157c0a137e7d0a13be7e0a0efb2881bc +f765adf70eac01b0dff75be103f710f7ae157f0adcfb5415800a0efbb189acf7fbb2 +f77fad01ebdaf71fdc03f743f70e15810a0e2cfb82b0f751c8e2aaf785aa12abd062 +dd41c0f75adb9dc213f580f7d3f7ab15820afb4ffbb51596889b89988baa8ba78e99 +8bbd8bb58aa87bb275977d8b7108432165311e13f9806737a8cf1f8bad8da4a8ae08 +f7ccf821159e9d9d9fa0789b701f718b5b7a71697f936a9f508b0813f58032394f2f +1f8b55a36ca7700813f380830a13f980556b6f5d8b600834dd70d8f71bf726ccf700 +1e8bab7ca46ea364ab458c668b798b728973887c8a818a868b0813f3806e6899b61f +8b9f91a0979ca37da784b28be38bdcc28bed8bba7da66ea992959f99988b928b9288 +9182088f839881968b080e5289acf7f8bff75ea9a67701e3daf766da03f73bff011d +e66615840a0efbd889acf7f6a7a877f711ef12e5ef33da13f8e5f8eb15850a13f4e6 +fc7115860a0efbd7fb73b7f8c8a7a877f711ef12eeef35da13f8eef8eb15850a13f4 +99fbae15870a0e3889acf746a4f738acf766a9a67701e1da03e1f70e15880a0efbdf +89acf8f6a9a67701eada03eaf70e15890a0ef75789acf7f8bf01e9daf753daf753da +031438f73ef7fa15fffffeb333ff001db33489affffffb4ccdff000a4cccfffffde6 +66ff0004999afffffe199aff00036666838b6f807182468289858d7b8d85c1869686 +8b5108fb57078b397e86548785858b769185a98cb18cb38bb38bff001ecccd8aa98a +91918ba08591ffffcd333390808f8bdd08f738078ba094ff000c4ccc93ff0008b334 +ff0027999aff0026b334ff00258000ff00144cccff001ee6668b08b1a773481ffb42 +078b398386558786858b769085a48cb08cb38bb38bac8aa48a90918ba08691598f82 +908bdd08f733078b998b998a97bbc0b898b28b08b1a175481ffb44078b3981865787 +86858b769085a48cb08cb38bb38bae8aa78a90918ba08691548f82908bdd08f73207 +e47cd1331effffcccccc8bffffc24cceffffed3334ffffcbe6665488fffffccccc85 +8689ff0008999afffff68000b4ffffd98000ff00206666578b518bffffcbb333ffff +dd999affffd64ccdffffd16666fffffb6666fffffae666fffff9199afffff9199aff +ffff800097080e5689acf7f8bf01ebdaf760da03f74cf7fa15fffff9e66684fffffa +6667fffffd999affffffb333ff000966668aa6fffffdb333ff0026b334fffffb4ccd +ff000a4cccfffffde666ff0004999afffffe199aff00036666838b6f807182468289 +858d7b8d85c18696868b5108fb57078b3981874f8685858b769185a98cb38cb38bb3 +8ba98aa98a91918ba085915890818f8bdd08f738078ba094979394b1b0b8a1b28b9f +8ba07e977495778d708b6d08fb2c078b398187578686858b769085a98cab8cb38bb3 +8baf8aa98a90918ba086915390808f8bdd08f729078bc287bb74aa7aa16c97688b5a +8bffffc84ccd7effffc4b33347080e3081aef80fae01b4e1f78ee103b4f761158a0a +f759f75b158b0a0e3ffb7eacf753adf805b901dbdaf780e103f743f7df158c0a78b0 +15fffffe8000a9fffffe3333ff0019b334fffffb4ccdff000a4cccfffffde666ff00 +04999afffffe199aff00036666838b6f807182468289858d7b8d85c18696868b5108 +fc3f078b3880864e8885858b769185ae8cb08cb38bb38bbb8aac8a91918ba0859144 +8f808f8bde08f700078b98ff0003cccdfffffeb333ff000a3333fffffbcccdff0018 +8000fffff6199aff001ee666fffffa6666ff001f999a8bc38bbd9cb4b2bab9a6c98b +dc8bf540ed258bffffd180008b58ffffe18000ffffd88000ffffd3800008fffffa66 +66fffff9b334fffffb199aff0000b332ffffff8000ff0009999a080e2ffb7eacf753 +b7f807ad01aee1f775da03f7d6ff01706666158d0aa3fffe20999a158b3880874e88 +85858b769185ae8cb08cb38bb38bb18aac8a91918ba085914e8e808f8bde08f8a407 +998796801e848bfffffa199afffff84cccfffff7e666fffff4b3347e7987887fff00 +07ccccffffe06666ff0014800064ff0008b334ffffd5999a8b08fb0e3127fb182eca +fb10f7241fa68bff0020e666ff0005999aff0011199a95a2ff000d66668f8d8b7608 +0efb7389acf7eec901efda03f744f7fa15fffffe4ccdb3fffffe6666ff0019b334ff +fffb4ccdff000a4cccfffffde666ff0004999afffffe199aff00036666838b6f8071 +82468289858d7b8d85c18696868b5108fb57078b387f874d8785858b769185ae8cb2 +8cb38bb38bb98aae8a91918ba0859145907f8e8bde08f71f078ba597a2979d969ba2 +ac978b948b94fffffd999aff0007ccccfffff5b332ff0007999a81ff000b3334ffff +f2b334ff001166668b08a3a2a4a4ff0013199a79ff001ce666611f5c8b625f746485 +80fffffb333393ffffffcccd90080efb6181acf813ac01c9d2f721d703bbf71e158f +5a8e5c8b61958d958c908b928b918b9289a684a687b08bc38bf2a68bee8bff00444c +cd5aff0027b33347ff0019333308ffffc3cccdff00164ccdffffd83333ff000f8000 +8bc28bb4afa2ad8ba18bc583983691859f8c91918eaf8db08cac6c905b99578b0841 +485b4b1f8b42ac6cd86bde699e768b608b5a5b76668b648bffffea4ccdff000d4ccc +fffff5b333ff000ab33475a280b785a48591788a8585080efbab81c2f7edb201e4da +03b6f841158e0a0e4b81baf7fdac01e3daf758da03f76d8115b28bba9fbcb3908fff +00094ccc8dff0000b33484ff00028000ffffe68000ff00088000ffffde80008b8b93 +88ff00048000ff00008000ff00068000ff00028000a19dae9ac89291918b9a859108 +4b90829e8bbc08f75407a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c8585 +8b769185bc88987f8b4908fb55078b7889837d7f666b657b728b086d5999e41ff74a +07a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bb8799808b +4a08fb540746a948ee1e0e299476f82eac01f7d9f822158f0a0ef72c9476f82eac01 +f75ff8221591918ba085916d8a688a678b658bffffe533338cffffe5cccd8c85858b +769185ff002f199afffffb3334ff000ae666fffff5ccccff0015199a5708ff0082e6 +66fbd705917d9385958b948b9391929b08f0f78af2fb8c05917d9385958b948b9391 +919a08ff00829998f7d105ff00106668ff0028e6669cff001c199abe8e91918ba085 +91778a758a6d8b6d8b618c6d8c85858b769185d687fffff5b334ffffe3199afffff1 +e664ffffdce66608ffffac6668fb6405817287ff00003333fffff7ccccff0014cccd +08ffffa9b334f76f05ffffed8000ba8d95c08f91918ba085916d8a638a6d8b728b6a +8c6d8c85858b769185bafffffb8000ff000bb334ffffe34cccff0011e666ffffd333 +3408ff000666667b45fb45057e6afffffdccccfffffe8000fffff3199aff00208000 +083bf76205ffffed199abb8c9bbb8e080e2289acf803ac01f74af7fa15900a0e3bfb +7cdbf8baac01f760fb3415910a0efb3f8badf7fab001d2f84b15fffffd999afffffc +6666fffffc6666fffffd999a1f8a5e8668825aff0008ccccfffffc4cccff000c999a +fffffe199aff000b999aff0002999a9fd4aaff00114ccca9ff0000b33408f7148e05 +47fb0627fb243d22fffff76666fffff46666ffffff999afffffc999a8b8608849386 +9a1ef7cc880597ad98bf92bdfffff98000ff0003b333fffff48000ff00024ccd7f8b +087d6e05ffffe68000ffffcb3333ffffeb999a75ffffcbe666fffffecccd08fb1906 +d5e9f3f731c9f1ff000f4cccff00193334ff0002b334ff0007cccc8b8f8b8f868e84 +8b868b6f896e8b08fb4b06ffffdfe6668bfffff3999aff0004999afffff18000ff00 +056666080efbd2fb68a3f83ba3f83ca312f5d349d513f0f746f8bc1586ff0066e668 +baff00111998b19691918b978591318b49638ffb050813e891fb4c058b5973554184 +82828c849383ff0049800082ff001a80005f894e0813f085fb3e0586fb16c36af08b +91918b9785915f8bffffd78000bdff00048000df0813e893f72905ff00046666ff00 +524ccdffffd66667ff00278000ffffbc3333ff001c3333088f07ff00433333ff0013 +3334ff002a199aff001cccccfffffbb333e4080efc1afb6776fa367701dcb703f711 +fb7c15fa365ffe36070efbd2fb69a3f83ca3f83ba312e2d549d313e8ea511590ffff +99199a5cffffeee666658085858b7f9185e58bcdb387f7050813f085f74c058bbda3 +c1d59294948a928393ffffb6800094ffffe58000b78dc80813e891f73e0590f71653 +ac268b85858b7f9185b78bff0028800059fffffb8000370813f083fb2905fffffb99 +9affffadb334ff00299999ffffd88000ff0043cccdffffe3cccc088707ffffbccccd +ffffeccccdffffd5e666ffffe33333ff00044ccd32080efb26f769c691c601a59cf7 +f99c03a5f76515920a0efbed0efbc7fb6476f8c6f501e6f503f724fb7915930ac0f8 +fb15940a0efb169376ff0064b333ff002e6667ff015c999aff001fb334ff00609998 +7701ff00453333ff0051cccddcafff003accccff0052b33403f77cf8f715ffff9c33 +3407ffffac6666ffffef6666ffffb0cccdffffafe6668bffff884ccc8bffff8e4cce +ff003acccdffffaee666f3fffff4cccd08ffff9a3333afff0064b33307ff0034b334 +ff00024cccff002f1998ff00146666ff002c999aff0049199afffffc3334ff000899 +9afffff86666ff0003b333fffff766668cffffdfb334ffffd63333ffffd7199affff +eb199affffd719988bfffffc80008bfffffc999aff00003333fffffc999aff00004c +cd08ff015c199a07ff00303334fffffcb33292ffffe0999aff00039998ffffe08000 +ff0002e668ffffe64cccff000d4cccfffff766689f8b9f8bff001a8000ff000c6666 +8bff001d80008bff00338000ffffcb6666ff0025b332ffffa7199aff0001199c08ff +006099980767fffe2e4ccc15ffffd0e666ff00180001ffffde199aff003d33338bff +005533348bff0058b332ff0020cccdff003a8000ff00303333ff000fccce080efb16 +80c290b5f765b2f774bb019bd7b8e003d5f7c015ca78068b30803b5060707c737b8b +78087b9c7f9ea19d97a2969099ae1ee38b8c4fe58bcc8bbdafa3bf8792858e838c71 +675c836d8b468b96bafb108badabb3c58cf70b08f70006969890931f9f078f888d86 +1efb10d206e2b0cdb91ea18b9a80987f978094839a8b08a39c9ba4af5298741f568b +5e746867545570558b3608775e0779857e831f8007868c89901e0efb16f70bb8f7ad +b701b7cbf78acb03f700f7c515d6beccd5ccc34d3c405a4a41405bcbd81ef70ffb4e +15b68bb298aea508bb56b1b354b905a4ac99b18bb58bb77db171ab08c5ba62b65a51 +0569a56598608b628b667f6872085bc16461c25f05706b7c648b5e8b609a64a66a08 +525eb660b8c305ad72b17eb58b080efb1689acf2b2d3b2f7b1ac01f753e003f753f7 +13158b337a86368885858b769185bf8cff0025199a8cff0038e6668bff0037cccc8b +ff002233348ac08a91918ba08591368e7a908be30892f70e0796998f951f9e078f87 +8d871efb1fd3f70e0696998f951f9e078f878d871efb158be7f75f05acd48b8fc090 +91918da085916b8a798a7a8b7a8b6d8c6b8c85858b769185bd8788866b42083efb44 +898b20f770057aae968eaf8b91918ba085916b8a588a858b7d8b5f8c6b8c85858b76 +9185b487a0739d6508f6fb6ffb0b8b0579857e831f7f07868c8a901ef72143fb0f06 +798580831f7e07868c89901ef721060efc14dcbc03f716f936155afbfebc06fb2b04 +5afbfebc060efb0efb40aaf994aa12bdc173d058d8f70fd858d073c113e2ff007ccc +cdff019f199a15ffffd3999affffdc199affffe1999affffd033328bffffbf999a8b +fb0ff55fd862cc68a5668b5c8b5d69685c8b0813ca608b7ca881b1869e81a1718b08 +70827a7664b54decf2c0cdcd1f8bb5fffff6199aff0021999affffdd199aff00234c +cc0813d1ff002c6666ff0023e667ff001e6666ff002dcccd8bff004266668bf70f21 +b73eb44aae71b08bba8bb9adaeba8b0813d4b68b9a6e956590789575a58b08a6949c +a0b261c92a245649491f8b61ff0009e666ffffde6666ff0022e667ffffdcb33408ff +00ca3333fbd915ffffec8000ff00100002ffffe7199aff0010b333ffffe06666ff00 +1233330813e143b540b38be78bff00226666ff00106666ff00173334ff0019b334ff +00173332ff001380007bff0018e666ffffef6668ff001f8000ffffedccccd361d663 +8b2f8bffffe0999affffee199affffe3e666ffffe7e666ffffea999a080efb6cf8a4 +ea01bde9d6e903bdf8d315950af73d16950a0eefa2abeca8f791a2eeab01adb3e6c9 +f7e9b303f84bf76c15fffffb6666ff0006199afffffb6666ff00063333fffff63334 +ff0002b333807b6f69588b085361c4d4edbaa4b31fc48b9c6a9c5d938b928c908e8c +a38ca189b0778d7a98458b5b8bffffd2e666ffffecccccffffe3199affffdfb33473 +ffffe5199a7fffffdb999a8bffffd9cccc088bffffd36666ff00136666ffffd44ccd +ff0022999affffe34ccdff001ab333ffffe9e666ff00249999fffff3199aff0026b3 +348bc28bb6ac9faa08fb0afb5515960af8a904970a0efbb4f7faabf772a401aabff7 +01c103f754f88a15980ab6fb2415990a0e57f730f76b159a0af748169a0a0e8ff7d7 +b701f887c103f887ee159e82ff00126668ff0002999aff00109998ff0006666608f7 +a0fc9507fffff94ccc798efffff2ccccff0003b334fffff3333408f85f060efb95f7 +73c701b3f79603f7a3f773152a0a0eefa2abf704a3eca3f701a3f703ab01adb3f739 +bae5c1f71eb303f80cf806155d797f6d1e61d6069d9a9ba4ad9b7a691efb05d4157b +8b6d8c798c87878b7b8f87ab8893858b6b08fb28078b6b83856b8887878b7b8f879d +8ca98c9b8b9b8ba88a9d8a8f8f8b9b878f6b8e83918bab08c307908ba78a8f8808bb +3b059c6ea3829f8b978b978d97908c918a92878f7b887bff0008333380ff0012cccd +085bdd05aa95a5a48bb28ba977b8408b778b67897b8b08c5fc3815960af8a904970a +0efb5af8a5b701c6f7ac03f7cff8a51598969d97918793811ffb88067f817a7f848e +83941f0efbdcf82da9f721a901adadf717ad03f75bf890159b0afb398c159c0a0e5e +b0bdf774bd01f78ebd03f78ef89c15280af769fc77159d0a0efbb4f800abf79aa912 +bac0efc97ba313f0d4f8df15958b998e8e9dff00014ccdff0007e668fffffd3333ff +000cccccff00038000ff00084ccc90979794aa8b9d8bab848b5c8b5573745e675b66 +65618b5b08f7620613e89e0a13f09f0a0efbb4f7faa9f71ca6f6a912b9bde5c66ac9 +13f8f74ef90415a00a13f4a10a13f8a20a0efb92f8b2f73401f743f95315a30a0e3b +fb6976f774b8f8287712bdef2edaf762da13ecf7e8c7158d068e6f9b61c88b08bfaf +b390928393871f858b887b718b08628ab4b91ff7d20771886f84728b08fbd607746a +5464548b08537abdc91ff75807ab88cb8b1e6d886a84738b088b963c6f1ffb50078b +5194588b6a0813f48b4c7b5c8b580862b3739ca39e9eb41e8bb669d18bcc8b90928f +918b977ea581a68b08cb8bb6a5b2b7080e92fb7cacf9bfac01f7d1bddcbd03f803f8 +d215a69c96a2a29d846c1efd73076c798474747a96a61eb4f9ba15708b508d408b08 +fb1851343cfb1add4af7261f9a8b938c948d08fc52078b6ffffff3999afffff5199a +ffffd66666fffffce6660870890587ffffffb33388fffffd4ccd8b86088b788d8905 +bc8dc68bd08bd08bff003c80008bff002f800089088d8d8b9e058b9087ff0002b333 +87ff00004ccd08718d05ffffd84cccff0003199afffff0b334ff0008e6668ba908f9 +73078ba9ff000f4cccff0008e668ff0027b334ff0003199808a58d058fff00004ccc +8fff0002b3348b90088b9e898d05ffffd0800089ffffc380008b468b080efbedf75b +f70001d2f70003f711f75b15a40a0e55fb5ca8d6abcb7701f7e3c903f7c22b15a50a +0efbb4f800a8f77d7601f729c103f71bf90015a60a0efb8af7c3a5f767a501b2c5f7 +30c503b2f8411544c654d5e9b8ceccd05ec9343555533a1ef718f70315bdab623b43 +6079704f71c8bcc1a3babd1f0e57f817f76b15a70afb4816a70a0ecc3aa8d1adf79b +a8f7957701f726c1f7dcbf03f8c1f8ed15a80a45fffe6eb33415a90affff3a4ccd04 +8b627e88638986838c7c8f85a98cff000cb3348bff00234ccc8bff001d99988bff00 +1266688ba98a8f928b998793698d7a8e8bb408a3bd0791ad538b8bf74805ff0008e6 +66fffff39998ff0001199afffff9b3341efffffcb3348bfffff6b334ffffff8000ff +fffee664ffffff4ccdfffff0b334fffff6e666fffff4999cfffff4cccdfffff6fffe +fffff58000ffffdce66662ffffd43334ffffcbcccdffffdeccccffffca3333fffffc +999afffffa8000fffffcccce86fffffd1998fffff9b333fffffd666883fffffae666 +ffffebcccdff001a999a8b08ff0076cccc06fc20f8bd15a60a0ecc3cabf79aa9d1a8 +f7957712f728c1f75fc0efc97ba313fcf8a8f8ed15aa0afb23fc5515958b998e8e9d +ff00014cccff0007e666fffffd3334ff000ccccdff00038000ff00084ccd90979794 +aa8b0813feab0a13fdff00088000ff001ab334ff00063334ff001f9999ff00044ccc +ff0023b333fffffab334ff0003b33383ff0001999afffff54cccffffffb333806f7d +646c8b08380694ac9aa6b5a90813feac0afbbdf83f15a60a0ecc3ca8d1adf791a9f7 +1ca6f077a5a912b7bde5c66ac9f798bf13fe40f8c6f8ed15a80a13ff40fc377715ad +0a13fec0a10a13ff40a20af7f0fffe84b33415a90affff3a4ccd048b627e88638986 +838c7c8f85a98cff000cb3348bff00234ccc8bff001d99988bff001266688ba98a8f +928b998793698d7a8e8bb408a3bd0791ad538b8bf74805ff0008e666fffff39998ff +0001199afffff9b3341efffffcb3348bfffff6b334ffffff8000fffffee664ffffff +4ccdfffff0b334fffff6e666fffff4999cfffff4cccd82fffff58000ffffdce66462 +ffffd43334ffffcbcccdffffdeccccffffca3333fffffc999afffffa8000fffffccc +ce86fffffd1998fffff9b333fffffd666883fffffae666ffffebcccdff001a999a8b +08ff0076cccc060efb34fb7aacf8a6f512b9dec3f545accecf13ecf7d5fb2315ae0a +13f46df8a515af0a0eef89acf766b5f80b77dc7601f7b0f9c615b00afb22fc57154a +0afbb1fb60154b0a0eef89acf766b5f80b77dc7601f835f9c815b10afb2efcad154a +0afbb1fb60154b0a0eef89acf766b5f80b77d47601f80df9bc15b20afb06fca1154a +0afbb1fb60154b0a0eef89acf766b5f80b77c3c089c212f869a613f4f83af97f15b3 +0a13ecb40a13f4b50afb33fc64154a0afbb1fb60154b0a0eef89acf766b5f80b779f +eb12f755ebf721eb13dcf755f95615b60af78116b70afb3bfc3b154a0afbb1fb6015 +b80a13ecb90a0eef89acf766b5f878ab01f7a3b3ebb303f79bf7af154a0afbb1fb60 +15c2f725059098918fa38b08f7678bc5fb3d05ff000bccccffffdd8000ffffd9ccce +fffffce666ffffd06666fffffc999a85858b769185b08cc28cb28bb48bb18aae8a91 +918ba08591ffffd93334ff00038000ffffde3334ff00034cccffffee9998ff003033 +3408ffff396666ff0227800005ff001db334ff000e1998ff0014e666ff001de6688b +ff0020800008ba61b15d5d61645d1e8bffffdb3334ff001accccffffdfccccff0022 +4ccefffff4800008ffff1ee666fffdec800005714dffffe1800085ffffd480008885 +858b769185a58cff0020b3338cff001e4ccd8bb48bbd8ab08a91918ba08591ffffda +6666ff0002999a5cff00044cccff000f999aff0029199a08f760f94415ba0a0ef7a2 +89ac6cb2f777b29db1f788b36cac12f841dff74aacb2ac9bae1333c0f7a3f7c515bb +0afb4b0413b3c0bc0a1373c0bd0a13b3c0be0a137bc0bf0a13b7c0c00a1373c0c10a +13b3c0c20a0ebefb5ca8d6abc1b4f8e2b001b0e6f7a4c9f3ac03f8032b15c30a0e65 +89ac6cb2f7b0b1f788b36cacd27612f4e0f74aacb2ac9bae1327c0f789f9c515b00a +36fc081530f748061337c0c40a13afc0540a1367c0550a13a7c0c50a1377c0c60a0e +6589ac6cb2f7b0b1f788b36cacd37612f4e0f74aacb2ac9bae1327c0f7f2f9c815b1 +0a46fc5f1530f748061337c0c40a13afc0540a1367c0550a13a7c0c50a1377c0c60a +0e6589ac6cb2f7b0b1f788b36caccb7612f4e0f74aacb2ac9bae1327c0f7cff9bc15 +b20a69fc531530f748061337c0c40a13afc0540a1367c0550a13a7c0c50a1377c0c6 +0a0e6589ac6cb2f7b0b1f788b36cacc9eb12f4e054ebe8eb5bacb2ac9bae1324b0f7 +d8f9891513247071a175a51e1324b0a5a1a1a51f132470a575a1711e717575711f13 +2530fb5116b60af726fc2015133670530a13ae70540a136670550a13a670c50a1376 +70c60a0efbbe89acf8dbacd27601f5e003eef9c515c70a6efcf715590a0efbbe89ac +f8dbacd27601f5e003f766f9c715b10a78fd4d15590a0efbbe89acf8dbaccb7601f5 +e003f739f9bc15b20aa5fd4215590a0efbbe89acf8dbacc9eb0191eb8fe08feb0314 +1cf757f98915b70afb5116b70af74dfd0f15590a0ef589adf793b2f7b3ad01f5e0f8 +07eb03f753df15c80a60f8c515c90a0ef3967693acf8dbacb8c089c212f1bcf7cda6 +ccbc1337f835f97d15b30a132fb40a1337b50af71ffb7d15ca0a1367cb0a13a7cc0a +0ef681aff8e8afc97601b0ebf849eb03f7c4f9c715cd0a2dfb0515640af7e3fbb915 +650a0ef681aff8e8afc87601b0ebf849eb03f817f9c815b10a53fb5a15640af7e3fb +b915650a0ef681aff8e8afc07601b0ebf849eb03f802f9bc15b20a68fb4e15640af7 +e3fbb915650a0ef681aff8e8afadc089c212b0ebf7d8a6e1eb13eef82ef97d15b30a +13deb40a13eeb50a3cfb0f15640af7e3fbb915650a0ef681aff8e8af8beb12b0eb67 +ebf7cdeb6beb13a8ecf95615b60a13a4f82d16b60a13d2fb433715ce0af7e3fbb915 +650a0e5ef719f7cf01f708f7cf03f7c8f7b615f70ff70f68aefb0efb0ffb0ef70f67 +68f70ffb0ffb0ffb0eaf68f70ef70ef70efb0eaeae050ef681aff8e8af01b0ebf849 +eb03f7007e15cf0af773f90f15d00af757ffff894ccc15d10a0ecd81b4f8dbacd376 +01e2e0f7f6bc03f7a8f9c615b00afb75fb67156b0a0ecd81b4f8dbacd27601e2e0f7 +f6bc03f829f9c715b10afb7dfbbc156b0a0ecd81b4f8dbaccb7601e2e0f7f6bc03f8 +04f9bc15b20afb58fbb1156b0a0ed381b4f8dbac98e901e4e0c5e9bde9c6bc03f7d7 +8115d20a30f96115d30af72416d30a0e7789acf8dbacd37601f790e003f7fcf9c815 +b10a74fd4e156f0a0e4789acf70bacf7c7ace6ac01ede0f76de803f74bf87315a091 +bc909e8b08c6d070fb0cfb15416c431f658b738d828e084904b0079a86a587ae8b08 +f746c3f70ad6d268f701fb4d1f788b68896789088f078bde9c90d18e91918ba08591 +5a8a6d8a588b598b6e8c598c85858b769185d1889c868b3808fc25078b387a864588 +85858b769185bc8ca98cbe8bbd8ba88abd8a91918ba08591458e7a908bde080e5581 +ac72acf803acf77eac12e7daf756de6ae0137ce7f70e158b387f86528885858b7691 +85a98cb28cb38bad8ba98aa28a91918ba0859167907f8e8bde08f7d407f70097f707 +f3c0a466551e8b4265634857087e0713badf4bd2388b2e083062616d746d8ba91e8b +9793948b9c089f8395777b7c787b5f9f57dfe7cbd9f41e8bf70826cf3cbf088d0713 +7cd1c0c5b98bd808bb5bca233cfb1153fb3962fffff4199a86ffffdbe6661e7e8b83 +70918508be06948e87831f0efb1e81bb5bb4f80bac12afde4bd8f735d91324f758f9 +3315740aa6fbcc15d40a1374d50adafb381513ac760a1374770a0efb1e81bb5bb4f8 +0bac12afde4bd8f735d91324f788f93315d60abcfc4a15d40a1374d50adafb381513 +ac760a1374770a0efb1e81bb5bb4f80bac12afde4bd8f735d91324f77bf92815d70a +c9fc3f15d40a1374d50adafb381513ac760a1374770a0efb1e81bb5bb4f80bacdcc0 +89c212afde4bd8f735d962a6133080f7aff8d115b30a132880b40a133080b50a1365 +0095fbe815750adafb381513a300760a136500770a0efb1e81bb5bb4f80bace4ea12 +afde4bd85ae9d6e956d9133200def8d315d80a133100f73d16d80a137880b4fbea15 +750adafb381513b480760a137880770a0efb1e81bb5bb4f80bacc5abf5ab12afde4b +d881b3ebb386d9133980f766f90f15d90a335615da0a137c40f73ffbf115750adafb +381513ba40760a137d40770a0ee781bc5ab5f74baef730ac12b2d34ed4f743d4f75d +d7137bf79df81415db0a13b7dc0aacfb3d15dd0a137bde0ad5b115df0a0efb3bfb5c +a8d6abff00364ccdff0030b333f803ac12b0e1f71ec97ce213fcf7782b15e00a13fa +e10a0efb2881bcf765adf70eac01b0dff75be103f766f93315740afb30fb9b157f0a +dcfb5415800a0efb2881bcf765adf70eac01b0dff75be103f7a2f93315a30afb26fc +19157f0adcfb5415800a0efb2881bcf765adf70eac01b0dff75be103f78df92815d7 +0afb11fc0e157f0adcfb5415800a0efb2881bcf765adf70eace6ea12b0df75e9d6e9 +61e113f4eef8d315d80a13f2f73d16d80afb24fbb915e20a13f1e30adcfb5415e40a +13f9e50a0efbd889acf7f6a7a87701f1da03eef93315740a97fc3b15e60a0efbd889 +acf7f6a7a87701f1da03f737f93315a30a9dfcb915e60a0efbd889acf7f6a7a87701 +f1da03f721f92815d70ab3fcae15e60a0efbd889acf7f6a7a877f5ea1287e997da7b +e913f887f8d315d80a13faf73d16d80a13fc9bfc5915860a0efb0181aff80eaef797 +7701ade1f787df03f78ca5154452e0f706d7a4f2f01fb68bae78a26e97608f5f8b5d +08fb3647685c1efb6af74a1523d4fb06f710f704f3d9f73d1e8bf7264af70635e108 +799deccc75ab21440568a767a3689e087b7605a37aa277a075089b7b2244a16bf701 +d405b05da95ba1567295728f718b0839fb1851fb411f0e5689acf7f6a771bfdcc089 +c212ebdaf760da4aa61395f7eef8d115b30a138db40a1395b50afb36fb6b15e70a13 +c6e80a13a6e90a0e3081aef80fae01b4e1f78ee103f774f93315740afb91fbe8158a +0af759f75b158b0a0e3081aef80fae01b4e1f78ee103f7a2f93315a30afb79fc6615 +8a0af759f75b158b0a0e3081aef80fae01b4e1f78ee103f7a0f92815ea0afb77fc5b +158a0af759f75b158b0a0e3081aef80faedcc089c212b4e1f774a68ae113ecf7c4f8 +d115b30a13dcb40a13ecb50afb9bfc0415eb0a13caec0af759f75b158b0a0e3081ae +f80faee4ea12b4e185e9d6e984e113e8f70df8d315d80a13e4f73d16d80a13f2fb8d +fc0615ed0af759f75b158b0a0e5eff004a999aff0058ccccff003e999abdff004299 +9aff0058cccc01ff00e1cccdff0058cccd03ff00e1cccdf81715ff00000001ffffe7 +b334ff00141999ffffebe666ff00184cce8b08ff00184cccff0014199aff0014199a +ff00184cccff00184cccffffebe666ff0014199affffe7b334ffffe7b332ffffebe6 +67ffffebe666ffffe7b3341ffba004ff00000001ffffe7b333ff00141999ffffebe6 +67ff00184cce8b08ff00184cccff0014199aff00141999ff00184ccdff00184ccdff +ffebe666ff00141999ffffe7b334ffffe7b332ffffebe667ffffebe667ffffe7b333 +1fff00ed3333f6159d0a0e3081aef80fae01b4e1f78ee103f832f85a15ee0afb4459 +15ef0aff0073cccc3715f00a0e4b81ba84a6f7e9ac12e3daf758da1338f76ff93315 +740a13b843fcbf15f10a1378f20a13b8f30a0e4b81ba84a6f7e9ac12e3daf758da13 +38f7bdf93315d60a13b83bfd3d15f10a1378f20a13b8f30a0e4b81ba84a6f7e9ac12 +e3daf758da1338f79bf92815d70a13b85dfd3215f10a1378f20a13b8f30a0e4b81ba +84a6f7e9acecea12e3da5fe9d6e974da1334f70ff8d315d80a1332f73d16d80a13b5 +40fcdd15f10a1379f20a13b8f30a0e3bfb7cdbf8baac01f7cff93315a30afb03fdd3 +15910a0e2efb7eacf753adf805b9f75ea9a67701dfdaf76ce103f735f7b415d1ff00 +4a8000aeff002180001ea48b9d829a7cb66094518b4f8b34722a218bfffff1cccd8b +ffffe48000ff00013333ffffe3b333ff001866677fff000a666686ff000633338bff +001fcccd083ef86115fd31078b3880864e8885858b769185b58ca58cb78bba8baa8a +b68a91918ba08591448f808f8bde08ef078ba793fffff5666696fffffb999aff0014 +cccdfffff7999aff0016cccdfffffb6666ff001b66668bc08bbb9eb2b2b8b8a6c88b +dc8bf442ee2a8bffffcc80008bffffd9e666ffffe43334ffffe6999affffe6199808 +7cfffff0b334898b8ba108f75307cc8fb38b1e92878e821e7281407d638889838d7b +9185bf8897908b37080e3bfb7cdbf8baacecea01f720e9d6e903f720f8d315950af7 +3d16950a22fd7315910a0eef89acf766b5f80b77efbd01f862f97615f40aa4fc5b15 +4a0afbb1fb60154b0a0efb1e81bb5bb4f80bacdabd12afde4bd8f735d91332f7d6f8 +9a15f40af757fbb115d40a137ad50adafb381513b6760a137a770a0eef89acf766b5 +f80b77c0bf01f772a7f76ca703f882f9b815f50afb7bfc9d154a0afbb1fb60154b0a +0efb1e81bb5bb4f80bacc8c4e57712afde4bd84ea6f757d952a6133940edf91b15f6 +0a137c80f757fc3215750adafb381513ba80760a137c80770a0eeffb5cb1f734acf7 +66b5f80b7701f88bc903f951fb1b158792858f828b75757b7b6e8b08667ea0a5b9bc +ced21f91918ba08591ffffd93334ff00038000ffffde3334ff00034cccffffee9998 +ff0030333408fb62f8d0057c8270807e8b08fb77fcac05714dffffe1800085ffffd4 +80008885858b769185a58cff0020b3338cff001e4ccd8bb48bbd8ab08a91918ba085 +91ffffda6666ff0002999a5cff00044cccff000f999aff0029199a08c2f725059098 +918fa38b08f7678bc5fb3d05ff000bccccffffdd8000ffffd9cccefffffce666ffff +d06666fffffc999a85858b769185b08cc28cb28bff000980008bff00094ccc8bff00 +093334ffffffe666ffffc3999870ffffdc6668ffffc6999a8bffffd680008b55b177 +bd8b08b48bb39fa8b808fc4af836154a0a0efb1efb5cb1f72cb4f80bac12afde4bd8 +f716c96cd913e4f860fb1b158792858f828b75757b7b6e8b668b7ea08ba58bff0028 +199aff0019e666ff001d8000ff002fb334ff0028b333ff00174cccff00069999ff00 +146666ff000be667ff000db334ff000d3333fffffe4cccff000c4ccc87ff00086667 +fffff4b334ff00064ccd08fffff88000fffff9ccccffffef3334fffff63334fffff3 +4ccc8b0813ea6e8ab2b91ff72707f7223da6423938555273977fa2a89da0981e8b92 +8a92898f8a8e8a918b9608aab596b1adba7afb051e8b848887888a0835760513f22b +7346568b478b39c371d18bff0022cccd8bff001e333393b7ad089f9b8d8b05ff0005 +6666ffffe4199aff0009199affffe76666ff00266666fffffb4ccd0813e4ffffce4c +ceffffdae667ffffddccccffffd933328bffffd7199a8b55b177bd8b08b48bb39fa8 +b80813f2fb3bf80415750a0ebe81b4f8e2b0c77601b0e6f84aac03f81cf9c715b10a +68fdd115500a0efb3b81bcf803ac01b0e1f74de203f792f93315a30af724fcd8157a +0a0ebe81b4f8e2b0c17601b0e6f84aac03f80cf9bd15b20a78fdc715500a0efb3b81 +bcf803ac01b0e1f74de203f783f92815d70af733fccd157a0a0ebe81b4f8e2b0b6f3 +01b0e6f744f3f732ac03f7c4f98515f7000ac0fd8f15500a0efb3b81bcf803acf701 +ef01b0e1c3efa8e203f747f8ec15f7010af76ffc91157a0a0ebe81b4f8e2b0c77601 +b0e6f84aac03f7e1f94d15f7020aa3fd5715500a0efb3b81bcf803acf7627701b0e1 +f74de203f75ef88a15f7030af758fc2f157a0a0ef589adf8d9add27601f5e0f807eb +03f7b7f94d15f7020a27fcf915510a60f8c515520a0e4881ba84a6f7efaedb9ce5d3 +52a912b2e1f770daeab7133b80f88bf94e15f7040afb32fcd215f7050a13b380f706 +0a80fffef84ccc157c0a137b80a19dae9ac89291918b9a85914b90829e8bbc08f859 +07cc8fb38b1e92878e821e13b7807281407d638889838d7b9185bf8897908b3708fb +1407848989841e878b629c6a8b498b5f756365606071508b418bfb0fc931f7008bb2 +8bb09fbcff00284ccc080ef589adf793b3f7b2ad01f5e0f807eb03f753df15f75ff7 +0407ff000c4ccc8dff000ab334ff000fcccc8bff0009999a8bff0004cccefffffc4c +ccff00068000fffff6b334ff00014ccc08fb0ef78106aeae99bcf76cd2fb43fb2efb +5efb0d59fb2129809fab1e60f8c515ffffdc4ccd8bffffcab3338c638c85858b7691 +85d1889c868b3808fb5845077ffffffdb33482fffff14ccc8bfffff666668bfffffa +66668efffffa3334948908dafb39068b387a86458885858b769185b28cff00354ccd +8cff0025b3338bb08bb589f28b08f721f74ecbf78af74efb2df72dfb541f448b5489 +648b080e3281ba84a6f7efaee9b3cfa9a67712b2e1f770da13bff7edf710157b0a80 +fffef84ccc157c0a137ff7070a13bf7e0a0e6589ac6cb2f7b0b1f788b36cacedbd12 +f4e0f74aacb2ac9bae1327c0f80bf97d15f40af716fc141530f748061337c0c40a13 +afc0540a1367c0550a13a7c0c50a1377c0c60a0efb2881bcf765adf70eacdcbd01b0 +dff75be103f7e5f89a15f40a96fb80157f0adcfb5415800a0e6589ac6cb2f7b0b1f7 +88b36cacb6bf12f4e05da7f75cac7aa7a7ac9bae132570f834f9b715f7080afb1bfc +4e151336b0530a13aeb0540a1366b0550a13a6b0c50a1376b0c60a0efb2881bcf765 +adf70eaccbc4e57712b0df6fa6f75ce145a613fa80f70cf91c15f60a8ffc0215e20a +13f900e30adcfb5415e40a13fd00e50a0e6589ac6cb2f7b0b1f788b36cacc1f312f4 +e0a7f3bdacb2ac9bae1327e0f76ef98515f7090acafc1c1530f748061337e0c40a13 +afe0540a1367e0550a13a7e0c50a1377e0c60a0efb2881bcf765adf70eacf702ef01 +b0dfc6efb3e103f748f8eb15f7010a53fbd1157f0adcfb5415800a0e65fb5cb1f734 +ac6cb2f7b0b1f788b36cac12f4e0f702c995acb2ac9bae13d3e0f886fb1b15879285 +8f828b75757b7b6e8b08667ea0a5b9bcced21fffffffccccff0000333305ff0005cc +ceffffffe666ff00036666ffffffe6668b8b99bd9acd93befffff5999891fffff480 +02ff00023333fffff2e666fffffccccd0813bbe0f70a0a13d7e0540a13b3e0b08cc7 +8cac8b08f76b06ff0009e6668bff000b4cceffffffe666ff000bb332ffffffe667ff +ffc3b33470ffffdc6666ffffc699998bffffd6999a8b55b177bd8b08b48bb39fa8b8 +080efb28fb5cb1f72cbcf765adf70eac01b0dfc1c9dee103f809fb1b158792858f82 +8b75757b7b6e8b668b7ea08ba58bff002b6666a8ff001dccceff003f199aff00347f +ffff001eccccff000f4ccdff0019999aa2ff00158000a7889585907f8c0866656e7b +518b678b61a06cbe77ac7fb98bc508f79e890597929196df6de5fb1f34fb0538fb2c +1f8b539955ac65ad63ba73d38bff0007999a8bff00076666ff00004ccdff00073334 +ff0000b333ffffce3332ffffdae666ffffdd999affffd9199a8b628b55b177bd8bb4 +8bb39fa8b808fb8df835157f0a0e6589ac6cb2f7b0b1f788b36cacd27612f4e0f74a +acb2ac9bae1327c0f7a0f94d15f7020a98fbe41530f748061337c0c40a13afc0540a +1367c0550a13a7c0c50a1377c0c60a0efb2881bcf765adf70eacf7637701b0dff75b +e103f75bf88915f7030a40fb6f157f0adcfb5415800a0ee581aff783aff7d5afc076 +12b0ebf821e063ac13f8f813f9bc15b20a85fb2a15f70b0a13fcf70c0a13faf70d0a +0e2cfb82b0f74ec455c8e2aaf785aa75b812abd062dd41c0f75adb9dc2139060f78a +f92715d70ad4fc10152e5c78661e139960f70e0afb4ffbb51513d260f70f0a13b260 +f7100af7ccf82115f7110a139560f7120a13b960f7130a13b0e0830a13b260f7140a +13d4e0f7150a0ee581aff783aff7d5afaebf12b0ebdea7f76ca7b5e063ac13fe00f8 +7cf9ba15f7080afb03fb2815f70b0a13ff00f70c0a13fe80f70d0a0e2cfb82b0f74e +c455c8e2aaf785aa75b8aec4e57712abd062dd41c067a6f763db44a6c9c2139316f7 +04f91815f60a139b4af763fc0115820afb4ffbb51513d382f70f0a13b382f7100af7 +ccf82115f7110a139742f7120a13bb427f936a9f508b328b394f8b2f0813b3128b55 +a36ca7700813b322830a13b382f7140a13d72af7150a0ee581aff783aff7d5afb6f3 +12b0ebf73ff3f70ee063ac13fcf7c4f98515f7090ad42c15f70b0a13fef70c0a13fd +f70d0a0e2cfb82b0f74ec455c8e2aaf785aa75b8e0ef12abd062dd41c0c6efb2db9d +c2139238f748f8eb15850af71ffbd4152e5c78661e139ab8f70e0afb4ffbb51513d3 +38f70f0a13b338f7100af7ccf82115f7110a1396b8f7120a13bab8f7130a13b27883 +0a13b338f7140a13d678f7150a0ee5fb76a3daddaaaff783aff7d5af12b0ebf79db2 +e8e063ac13fe00f80b6215f7160a8df94f15f70b0a13ff00f70c0a13fe80f70d0a0e +2cfb82b0f74ec455c8e2aaf785aa75b8bcdddb9f12abd062dd41c0b8adf70bdb9dc2 +13931cf778f89315f7170ae6fb7c152e5c78661e139b5cf70e0afb4ffbb51513d39c +f70f0a13b39cf7100af7ccf82115f7110a13975cf7120a13bb5cf7130a13b33c830a +13b39cf7140a13d73cf7150a0ef71b89acf7b6b5f78facc97601f5e0f7eae003f8fe +f70e15580afb7cf94015b20a0e5289acf7f8bff75ea9a67701e3daf766da03ff0153 +4cccff0297e66815fffff66668ff00033330fffff66666ffffff3334fffff66666ff +fffd999cffffe5e666ffffcfb330ffffd6999affffc74cd0ffffdf999a61ff000566 +66fffff69998ff00084ccdfffff9b334ff00081999fffffde666ff0023199aff0017 +199aff001bb334ff001c6664ff001cccccff0021999ca6ffffdf8000ff001d8000ff +ffe49998ff00223334ffffe6ccceff000866668dff0009ccccff00088000ff000480 +00ff00074cce08ffffdf999ab5ffffd86666ff0037b330ffffe5e666ff00314cd008 +ffff53b334fffe85fffe15840a0ef71b89acf7b6b5f729adcfac01f5e0f7eae003f8 +fef70e15f81ac5adffffc6999807ff00036668c8ff00141998ff00044cccff003ee6 +68ff0002b33491918ba08591628a588a658bffffdab3348bffffd04ccc8c5f8c8585 +8b769185ff003ee666fffffd4cccff0014199afffffbb334ff000366684e08fffeab +333206ff00036666c8ff0014199aff00044cccff003ee666ff0002b33491918ba085 +91658a628a588b598b628c658c85858b769185ff003ee666fffffd4cccff0014199a +fffffbb334ff000366664e08ffffbf999a69ccfc1a068b387a86458885858b769185 +b78cff00304ccd8cff0025b3338bff00244ccd8bff0030b3338ab78a91918ba08591 +458e7a908bde08f75bf7eafb5b078b387a86458885858b769185b88cff002fe6688c +ff002519988bff00254ccc8bff002fb3348ab78a91918ba08591458e7a908bde0836 +f81a15fb29fbeaf729070e5289acf7f8bfe6b2d3a9a67701e3daf766da03f73bff01 +1de666158bff0015199a94ff000c4ccc93ff0008b334b1ff00254cccff0032999aff +0015b334ff002766668bff001466668ba0fffff2e666ff000b999affffe9199a95ff +ffec33348dffffe4cccc8b6d08fb2c078b398187578686858b769085a78cad8cb38b +b38bac8aac8a90918ba086915390808f8bdd08f729078bc2fffffc4cccff00308000 +ffffe8b334ff001e8000ffffef3334a1ffffe0cccc97688bffffcee6668bffffc419 +9a7e4e47fffffc999afffffc3334fffff99999fffff5cccc8b9908ff0000999af740 +ff00ae33338b8bb2fb428b8b9905cc8fb38b1e92878e821e7281407d638889838d7b +9185ff0031cccdfffffd1998ff000d1999ff000480008cffffb6666808ffffc2199a +64c9fc2c068b38fffff4333387518785858b769185ac8cff0024cccd8cb38bb18bff +0020cccd8aa78a91918ba08591ffffcd33338f828f8bde080efbbe89acf8dbacb7c0 +89c212f5e0d0a613ecf769f97c15b30a13dcb40a13ecb50a75fd0215590a0efbd889 +acf7f6a7a877edc089c212f1daff002d6666ff00184ccd13f6ff00b8199af8d115ff +ffeee6668bfffff0b33392fffff1999a970813ee7999ffffec33339f708bffffd94c +cc8bffffeb4cce64fffff3666650ff0005666685948aff0009e6678dff0008ffffac +949aff001766678bff000f4ccd8bff0011199a83ff00103333800813f6ff0012e666 +7dff0012e66779ff0013cccc8bff002966678bff001a1999b2ff000acccdc7fffffa +999a8f828efffff619998a08fffff3666761fffff6199981ffffec33348b08fffffc +e666fc5715e60a0efbbe89acf8dbacedbd01f5e003f793f97d15f40af734fd031559 +0a0efbd889acf7f6a7a877ebbd01f1da03ff00dbe666f89a15ff000bb334ff0009e6 +66a09791fffffc666696821fffff35800006fffff6199afffff6199a777f84ff0003 +999980ff0008199a1fff00a2b333fc2015e60a0efbbe89acf8dbacb8bf0198a7cce0 +cda703f7b1f9b915f50a2dfd3f15590a0efbd889acf7f6a7a877dcc4e57701ff0003 +e666ff00184ccdff0049cccddaff0029999aff00184ccc03ff001c3333f91e15ffff +e7b3337f05ff000c999a36ff002de66659ca8bff0035199a8bff0039999abcff000a +cccce108ffffe7b33497058251ffffd699996bffffd133338bffffcf66678bffffd9 +4ccdb0fffff61999c008ff0098cccdfca415e60a0efbbefb5cb1f734acf8dbac12d4 +c96ee013f0f7a3fb1b158792858f828b75757b7b6e8b08667ea0a5b9bcced21fffff +ff999aff0000800005ff0007e666ffffffcccdff0007ccccffffffe666ff0007b334 +ffffffcccd91918ba085910813e8458e7a908bde08f825078bde9c90d18e91918ba0 +85915f8affffd080008affffd980008bffffde80008bffffcf80008c5c8c85858b76 +9185d1889c868b3808fc25078b387a86458885858b769185b88cff0030b3338cff00 +244ccd8bff00064ccd8bff0006cccd8bff00071999ffffffe6660813f0ffffc3999a +ffffe5199affffdc3333ffffc680008bffffd680008b55b177bd8b08b48bb39fa8b8 +080efbd8fb5cb1f734acf7f6a7a877f711ef12c8c96aef33da13fcf797fb1b158792 +858f828b75757b7b6e8b08667ea0a5b9bcced21fffffffb333ff00004ccd05ff0003 +7fffffffffe667ff00036667ffffffe667ff00036666ffffffe66691918ba0859108 +13f94e8f808f8bde08ff00c74ccc07ff0031b3348fcb8b1e8f868e831effffe38000 +80ffffd8800082468289858d7b8d85ff00368000fffffae666ff000a8000fffffa19 +9a8b5208fb57078b3880884e8685858b769185ac8cb28cb38b08ff000f4ccd0613fc +ffffc38001ffffe5199affffdc3333ffffc666668bffffd680008b55b177bd8b08b4 +8bb39fa8b80813fafb3df97215850a0efbbe89acf8dbacc1f312ecf32ce013f0ecf9 +8515f7090a13e8e9fd0b15f7180a0efbd889acf82f7701f1da03f749f70e15e60a0e +8efb40b8f711acf8dbac01f5e0f77de003f891f89f15f7190afbd29e15590a0e56fb +73b7f745acf7f6a7a877f711ef12e5ef33daf750ef35da13f900f805f8eb15850a13 +f88099fbae15870a13fc00fbb9f7ae15850a13fa00e6fc7115860a0efba5fb40b8f9 +79accb7601f721e003f759f9bc15b20aa8fbb1155a0a0efbd7fb73b7f8c8a7a87701 +f705da03f705f7d115f71a0ac1f7e915d70a0eb5fb76a3daddb2acff0115e666ff00 +266666ff010ab334ac01f5e0f74cb203f7f46215f7160afb35f737155b0a0e38fb76 +a3daddb2acf803acf766a9a67701e1daf710b203f79e6215f7160afb48f73715880a +0e3f89acf746a4f738ac967712ebda869013e8f743f70e15ff0056e66607ff0011b3 +33ffffff6667ff000d199afffffe6666ff00093333fffffccccd96fffff88000ff00 +09199a82ff000be6667b08d42905ff001d6666ffffd88000ff0008999afffff08000 +8f7cff0000ccccfffffd199aff00003334fffffde6668e8b9f8c978ca98baa8ba08a +a98a91918ba08591698fffffe6b334ff00046666ffffe54cccff0021999a08fb18f7 +3a05fffffc6666ff00048000fffffc999aff000480008b908b8f8b8d8f8f08e3e605 +a9abae93b38f91918ba08591668a7d8a678b658b748c668c85858b769185c387ffff +e84cccffffdcb334fffff6b334fffff44ccc08746effffe0b33469ffffe64ccc78ff +ffeae666fffff06666ffffe6cccdfffff4999affffed4ccdfffffcb33308ff005699 +9907ff0031b3348fcb8b1e13d88f868e831effffe3800080ffffd880008246828985 +8d7b8d85ff00368000fffffae666ff000a8000fffffa199a8b5208fb57078b388088 +4e8685858b769185b58ca58cb78bae8b988ab68a91918ba08591086190818e8bde08 +0e4889ac6cb2f8d3acd27612f5e0f7afac133cf754f9c715f71b0a137c60fdc7155c +0a13bc5d0a137c5e0a13bc5f0a0efbdf89acf8f6a9a67701eada03eaf70e15890af7 +00f7b415f71b0a0e48fb76a3daddb2ac6cb2f8d3ac12f5e0f701b2f71bac13cff7a9 +6215f7160a13dffb14b4155c0a13ef5d0a13df5e0a13ef5f0a0efbdffb76a3daddb2 +acf8f6a9a67712eada78b213fceaf70e15890ab0fcec156e7678731f8b70a4829c88 +0813fa9d8998878b778b7971735a808b828d829185c494bca98bc708bf73ad651e0e +4889ac6cb2f8749cd9ac76d312f5e0f775b799ac132ff824f94e15f7040a1367fb8f +fd4e155c0a13a75d0a13775e0a13a75f0a0efbc589acf87c9ce5d352a912eadaf6b7 +13ecf79df94e15f7040afb3efcd415f71c0a13dcf71d0a0e4889ac6cb2f788f3f777 +ac12f5e0edf3dcac133ef7b5f7e315f7090a137efb20fbe3155c0a13be5d0a137e5e +0a13be5f0a0efbdf89acf7aeebf77ca9a67701eadab2ea03f769f7fc15739d74a9a6 +9fa1a4a673a174707673721efb0afb8215890a0e4889ac6cb2f8d3ac12f5e0f7afac +13b8f7caf85515fb0bffffbc199a8bff008de666058bde9c90d18e91918ba085915e +8affffd1199a8affffd9e6668bffffdbe6668bffffd1199a8c5d8c85858b769185d1 +889c868b38088bffff41999a26ffffc666669d6cdeff002f999a8bffff566666058b +387a86458885858b769185081378f71e0a13b85d0a137877436650218b084c066479 +9ebe1f8bff00e76666f71dff004e999a050efbdf89acf82b77f773a9a67701eada03 +f787f84a1546ffffd780008bff00b9800005cc8fb38b1e92878e821e7281407d6388 +89838d7b9185c58791888b40088bffff30333432ffffcbcccc9c6ed3ff0029e6668b +ffff42199a058b3880864e8885858b769185ae8cb08cb38bb38bb18aac8a91918ba0 +85914e8e80908bde088bff00ebe666e1ff0032199a050ef3967693acf8dbacd37612 +f1bcf829bc133cf813f9c815b10af741fbc815ca0a137ccb0a13bccc0a0e5689acf7 +f6a771bf12ebdaf760da1398f7cef93315d60afb16fbcd15e70a13d8e80a13b8e90a +0ef3fb76a3daddbf7693acf8dbac12f1bcf77ab2f71cbc13cff7fa6215f7160af75a +f8bd15ca0a13dfcb0a13efcc0a0e56fb76a3daddb2acf7f6a771bf12ebdaf701b2c3 +da13e7f7996215f7160a3ef82315e70a13f7e80a13efe90a0ef3967693acf8dbacd2 +7612f1bcf829bc133cf7dff94d15f7020af775fb4d15ca0a137ccb0a13bccc0a0e56 +89acf7f6a771bff7637712ebdaf760da139cf78af88b15f7030a4dfb2515e70a13dc +e80a13bce90a0e5689acf7f6a771bfdb9ce5d312e3b774daf760da139dd3f94e15f7 +040af711fbe815e70a13dbe80a13bbb1b0b8a1b28b9f8ba07e977495778d708b6d08 +fb2c078b398187578686858b769085a98cab8cb38bb38baf8aa98a90918ba0869153 +90808f8bdd08f729078bc287bb74aa7aa16c97688b5a8bffffc84ccc7effffc4b334 +47080ef716fb40b8f711acf8cfc35fac12f5e0f7e5e513dcf74af91b15828a7f8a7e +8b598b6e8c598c85858b769185d1889c868b3808fc25078b387a86458885858b7691 +85bc8ca98cbe8bbd8ba88abd8a91918ba08591458e7a908bde08ff0144800007ff00 +02b333ff0010ccccff00084ccdff000c666892ff00084ccc0813ecc0cacbc2bd8bb9 +8bb081a664ff0019ccccffffdaccccff00103334ffffb433348b2608fb9607fb4857 +6f6a1e7d8b7d938495819887a06c8b087d6d767567c079a11fb88bff001ee666ff00 +083333ff0029199aff0022cccdff002be668ff00253333ff003f1998ff003dcccd8b +f72308f76c078bf719ffffe99998ff00564cccffffd66668ff0030b33468b45e9f4d +8b318b4951533c088b85fffff88000881eff0012800007cc8fb38b1e92878e821e0e +48fb73b7f745acf7f6a771bf12ebdaf760da13ecf743f7fa158bb3fffffcb333ff00 +19b334fffffb4ccdff000a4cccfffffde666ff0004999afffffe199aff0003666683 +8b6f806e82468289858d7b8d85c18696868b5108fb57078b3981874f8685858b7691 +85b48ca58cb68bb28b9d8ab58a91918ba085915890828f8bdd08f738078ba0949793 +940813dcb1b0b8a1b28b9f8ba07e977495778d708b6d08fb5a07fb1887fb0f591e80 +8b7e8f849281957f9b758b08807677796eaf7d9e1fa08bbf8eb0aabab1a7d38bf751 +08f735078bc287bb74aa7aa16c97688b5a8b557e4e4708888785818b99080ef681af +f8e8afe2bd01b0ebf849eb03f85ef97d15f40aecfb0f15640af7e3fbb915650a0e30 +81aef80faedabd01b4e1f78ee103f7fcf89a15f40a2cfbcd158a0af759f75b158b0a +0ef681aff8e8afadbf01b0ebe0a7f76ca7dbeb03f87ef9b915f50afb33fb4b15640a +f7e3fbb915650a0e3081aef80faec6c4e57712b4e174a6f76ca68ee113f7f717f919 +15f60a13fb31fc4c15ed0af759f75b158b0a0ef681aff8e8afc07601b0ebf849eb03 +f88bf9ac15f71f0afb179015f7200a62fb4315640af7e3fbb915650a0e3081aef80f +aef7667601b4e1f78ee103f821f8f715f7210afb189115f7220afb74fc30158a0af7 +59f75b158b0a0ef7a689ad6bb2f7b9adf783b312b5e9f7aee0f734a4eaa613bff7f8 +ab1524fb09e3f763f76af0d1ec1fae06b196856c1ffc8a076f827f631e806915137f +8bc98db31ef7ec8ba5f7347090057c426e564a8b08fb2f06757d91a61ff798f207ad +8b967b916f08916c05878e88901ea28b8d8e0588ab86a88bae8bac91a98dab088d8a +8d891e7506878887871f846d05846f837b678b0824f76306a39793a31ef72b06bf8b +ad50926008a68e7df71ffb958b3d8b055f458c8b1ffb4efb0bfb28fb481f8bfb48f7 +14fb1ff7508a080ef74b81ba5caef773b2f70bac12ade1f78bdef761e1137ef82df7 +f1156fba66b6268b08fb03293efb30fb0fde2ef70e1fd98bbdaeafc10813bea75cbb +61e78bea8bb9bfa1a9fffffacccc93fffff9b334ff00066666fffff58000ff000099 +9a6c6a4e7a658b648b2eba8bf71a8b958b968c9408f7b606f70956d5fb0a1e478b50 +63695908fbb5fb0415d09eeff2b7dc57fb2e1e137efb2148695c2e63f0f7031ef8ab +bd15fb5d068d9ba5f1e18bd78b953e8c62080e8381aa74acf798adf7b9adce7612f3 +e0f76ce7133ef7ccf9c815b10a63fb5e15670a38fc8415680a13be690a137e6a0a0e +fb7389acf7eec955a712efda1390f785f93315d60a4afbcd15f7230a13b0f7240a13 +d0f7250a0e83fb76a3daddaaaa74acf798adf7b9ad12f3e0f724b2ace713cf80f7ca +6215f7160a65f92715670a38fc8415680a13ef80690a13df806a0a0efb73fb76a3da +ddb2acf7eec955a712efda78b213e2f71d6215f7160ab2f82315f7230a13ecf7240a +13f4f7250a0e8381aa74acf798adf7b9adcd7612f3e0f76ce7133ef788f94d15f702 +0aa73c15670a38fc8415680a13be690a137e6a0a0efb7389acf7eec955a7f77d7712 +efda1398f743f88b15f7030a8cfb2515f7230a13b8f7240a13d8f7250a0efb0281af +f8eaadc87612a6ff00208000fffff78000ff00476666ff00ed999adf4bff00208000 +13e0f7aef9c815b10aff0070b334fb5115f7260a13ecf7270a13f4f7280a13eaf729 +0a0efb6181ac8976f82aac12bbaa7ad2f721d755ab1374bbf71e15f72a0a13acf72b +0a13aaf72c0a13b4f72d0af747f8a915ffffb46666fb0b05fffff7e667fffff33334 +fffffcb333878bfffff4cccc8b849285928b928b938f9a9a08f707f7010513228896 +0574a1ffffe666668cfffff9999a8b868b858a888a080efb0281aff8eaadc77612a6 +ff00208000fffff78000ff00476666ff00ed999adf4bff0020800013e0f78cf9c315 +b20aff0092b334fb4c15f7260a13ecf7270a13f4f7280a13eaf7290a0efb6181ac89 +76f82aac12bbaa7ad2f721d755ab1374bbf71e15f72a0a13acf72b0a13aaf72c0a13 +b4f72d0af737f89e15d70a0efb02fb5ca8d6abff00368000ff00238000f8eaad12a6 +ff00208000fffff78000ff00476666ff0082999ac9b8df4bff0020800013f700f770 +2b15a2957d7671767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6 +b16ca3631f828b828a838908ff00156666ff00394ccc05ff0028ccceff0001e667ff +00264cccff000ae667ff001f8000ff0013b333ff00398000ff0023ffffff00248000 +ff003d999a8bff003f999a8bff006a6666ffffafe666ff002e999affffad999aff00 +1ee666ffffc4cccdff00163334ffff9c1999ff0025cccc8bff0054199a8bc3ff0032 +999ac3ff003ae6668b0813f680ff0061199a8baa4d9f49ff000a8000fffffe333498 +ff0000cccc9492fffffc8000bb87a7fffff5b334c0ffffc6333293ff0002199a9eff +ff9e4ccd8bffff9ab3338b32488b218bffff96999aff00568000ffffcfe666e3ffff +de80000813fb00ff003cccccffffe8e666ff0049b334ffffe3e6678bffff9e33338b +3affffd2cccc61ffffb033348bffffa280008b4fff002a800075ff00638000fffff3 +b3338ffffff56667fffffe199afffff66666fffffae6668f3e8f71975aff0039999a +8bff001c3333ffffeccccdff00483333fffffcb3330867ffffa980009185059b9095 +8c9e8b080efb61fb5ca8d6abe076f82aac12bbaa7ad2dfc986d755ab13f800bbf71e +158f5a8e5c8b61958d958c908b928b918b9289ff00156666fffffa8000ff00154ccd +fffffc4ccdff001a4ccdfffffeb3330813f60067ffffa980009185059b90958c9e8b +08a2957d7671767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6b1 +6ca3631f828b828a838908ff00156666ff003966660513f500ff00398000ff0003b3 +34ff0059199aff001dcccc8bff005c199a8bff00444ccd5aff0027b33347ff001933 +33ffffc3cccdff00164ccdffffd83333ff000f80008bc28bb4afa2ad8b0813f480f7 +2c0a13f900f72d0a0efb0281aff8eaadc77612a6ff00208000fffff78000ff004766 +66ff00ed999adf4bff0020800013e0f76bf94d15f7020aff00b3b3344915f7260a13 +ecf7270a13f4f7280a13eaf7290a0efb6181ac8976f82aacf7627712bbaa7ad2f721 +d755ab137abbf71e15f72a0a13b6f72b0a13b5f72c0a13baf72d0af70df80015f703 +0a0e8dfb5ca8d6abc9acf86ef7285cb2128eadf778e083c9f72dad13ed80f7c92b15 +a2957d7671767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6b16c +a3631f828b828a838908a4ff0042e66605ff00224cccffffffb334ff00288000ffff +ff3333ff00283334ffffff333391918ba085910813ee803b8e7a908bde08f81207cb +95b1af1ea106d68bba719c3e968b998c948f84b986be8ab80813f680f72e0a13ee80 +f72f0a13f680f7300a13ee809fdbb9a5cd8b08bc06b095654e1ffc15078b387a863b +8885858b769185b8ff0000e666ff002e999a8cff00266666ff0000199a08632b9185 +059b90958c9e8b080efbabfb5ca8d6abf85ab201e4daacc903f73c2b15a2957d7671 +767d6d1f778b808f7095848488848b7fa4809c85ab8b08c8b9aab6b16ca3631f828b +828a838908ff0015e666ff003a999a05ff00278000ff0005ccccff0028b334ff0015 +8000ff0020e666ff0025199a89ff000a4ccd85ff0005b333818c71776d83718b0870 +85a9c91ff791f30795998f941f9f078f888d861efb0cb206cc8fb38b1eff00066668 +88ff00026664fffffb4ccd1efffffb80008bfffff78000fffffc199cfffff6b333ff +fffae664fffff4b333fffff9b334fffff5cccdfffffbb334fffff38000fffffc8000 +7ffffffc999881fffffc999c8bfffff919988bfffff466688eff000699988bffff91 +199a085dffffffe666057d877f831f7e07868c8a8f1ec6fbc1068bffffbfcccdff00 +1966666eff0026cccd8608ffffdbcccdffffa933339185059b90958c9e8b080e8d89 +acf86ef7285cb2d476128eadf778e0f763ad139ef7a9f94d15f7020ad4fcd315f812 +0713bef7310a13def72e0a13bef72f0a13def7300a13bef7320a0efb7181c2f7edb2 +e59ce5d301e4daf706b703f79ef94e15f7040afb73fba1158e0a0e8d89acf7b6b2f7 +25f7285cb2128eadf778e0f763ad13def7f2f70e15f75bf7130797949a9690889382 +1ffb1cf72406cb95b1af1ea106d68bba719c3e968b998c948f84b986be8ab80813ee +f72e0a13def72f0a13eef7300a13de9fdbb9a5cd8b08bc06b095654e1ffb27fb0807 +82817c81858e83931ff710fb5b068b387a863b8885858b769185bc8cff0032e6668c +ff0028199a8bff002666668bff0032999a8abd8a91918ba08591083b8e7a908bde08 +0efbab81c2f75cb2f5b201e4da03b6f841157d877f831f7e07868c8a8f1ec6215806 +82817c81858e83931fc6fb300644aa6fb91eb98bbda1b2b789ff000a4ccd85ff0005 +b333818c71776d83718b087085a9c91ff700e60797949a96908893821f27f5f30695 +998f941f9f078f888d861efb0cb206cc8fb38b1eff0006666888ff00026664fffffb +4ccd1efffffb80008bfffff78000fffffc199cfffff6b333fffffae664fffff4b333 +fffff9b334fffff5cccdfffffbb334fffff38000fffffc80007ffffffc999881ffff +fc999c8bfffff919988bfffff466688eff000699988bffff91199a080ecd81b4f8db +acb8c089c212e2e0f7b4a6b2bc13eef831f97d15b30a13deb40a13eeb50afb85fb72 +156b0a0e4b81ba84a6f7e9ace4c089c212e3daf758da44a61335f7d8f8d115b30a13 +2db40a1335b50a13a620fcdb15f10a1366f20a13a6f30a0ecd81b4f8dbacecbd01e2 +e0f7f6bc03f859f97c15f40a52fb71156b0a0e4b81ba84a6f7e9ace2bd12e3daf758 +da133cf7fff89a15f40a13bcd9fca415f10a137cf20a13bcf30a0ecd81b4f8dbacb7 +bf01e2e0b3a7f76ca7b5bc03f878f9b815f50afbccfbad156b0a0e4b81ba84a6f7e9 +accfc4e57712e3da56a6f76ca676da133b00f721f91a15f60a13bc80d7fd2415f10a +137c80f20a13bc80f30a0ecd81b4f8dbac82abf5ab12e2e0e2b3ebb3e6bc13bff7ef +f99c15d90a335615da0a34fb5c1513df6b0a0e4b81ba84a6f7e9acceabf5ab12e3da +7eb3ebb3acda133b80f786f91015d90a335615da0a13bd80cafce515f10a137d80f2 +0a13bd80f30a0ecd81b4f8dbaccb7601e2e0f7f6bc03f896f9ac15f71f0afb179015 +f7200afb67fba6156b0a0e4b81ba84a6f7e9acf76e7612e3daf758da133cf83bf8f7 +15f7210afb189115f7220a13bc41fd0715f10a137cf20a13bcf30a0ecdfb5cb1f72c +b4f8dbac01e2e0f714c9f738bc03f886fb1b158792858f828b75757b7b6e8b668b7e +a08ba58bff002f8000ff0022ccccff001f3334ff004c4cceff003e9999ff004f3332 +ff0031e666ff0016b334ff0061999a8bff0079333308f778078bff00504ccc9cff00 +03b334c79291918ba08591658affffd733348affffe8cccc8bffffea80008bffffcf +80008c5d8c85858b769185d6849c888b3a08fb8a07fb047cfb1afb3d1e5b8bffffd7 +199aff0012199affffe1e666ff001ce6665aba89d78bcc08f795078bde9a90d88e91 +918ba085915c8affffcf66668affffd8999a8b648b628c648c85858b769185c7889c +868b3808fbb607fb60ff0083800064ff006680001eff0019999a8bff0017199a8dff +0014e666ff0003cccdffffcab332ffffd96667ffffdab334ffffd799998bffffd533 +338b55b177bd8bb48bb39fa8b8080e4bfb5cb1f72cba84a6f7e9ac12e3daf71cc989 +da13bcf889fb1b158792858f828b75757b7b6e8b668b7ea08ba58bff00274ccdff00 +10ccccff003a4ccdff00326668a7ff00148000ff00088000ff001ab332ff0006cccc +ff0023999aff0004199a91918b9a85910813da4b90829e8bbc08f75407a98fd48b1e +8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bc88987f8b4908fb55078b +7889837d7f666b657b728b086d5999e41ff74a07a98fd48b1e8e888e861e868a7c8a +7c8b6b8b678c698c85858b769185bb8799808b4a08fb540746a948ee1eb28bba9fbc +b3908fff00094ccc8dff0000b33484ff00016666fffff233338effffefcccdff0002 +999afffff4199a0813bcffffcd4cccffffdb4cccffffebb334538bffffd7999a8b55 +b177bd8b08b48bb39fa8b8080ef7f89476f906accb7601f870f9bc15fffff0999aff +0007b334fffff66666ff0000b3347dfffff799986c696a68666f8d828e859485b19c +ab9cb0a6ac72ad79b279ff00091998ff0003ccccff0004199cff0008199cff0002cc +ccff000919980867a666ad6daf08f7e2fb87156d0a0ef72c9476f82eac01f813f927 +15f7330afb48fb9915f7340a0e7789acf8dbaccb7601f790e003f7ccf9bc15b20aa4 +fd42156f0a0e3bfb7cdbf8baac01f7b7f92815f7330a34fdc815910a0e7789acf8db +acc4ea12f743e97ae092e913f4f743f98315d80af73d16950a13ec84fd0915f7350a +0e948bb1f8c8b69377e17612c8a913d8f8bb8915700a13b8710a13d8720afb5ff9ca +15b10a0efb3f8badf7fab0957712bdac1390f794f93315d60a13b0fb4dfb7c15f736 +0a13d0f7370a0e948bb1f8c8b69377ccf312c8a9f73bf3139cf796f98215f7090af7 +b9fd8415f7380a13dcf7390a13bc710a13dc720a0efb3f8badf7fab09577f714ef12 +bdacddef139cf739f8eb15850a13bc2dfb3415f7360a13dcf7370a0e948bb1f8c8b6 +9377e07612c8a91398f7acf94d15f7020af7a3fd4f15f7380a13d8f7390a13b8710a +13d8720a0efb3f8badf7fab09577f7757712bdac1398f750f88915f7030a13b8fb09 +4d15f7360a13d8f7370a0efbc489acf800adf77fad01e8daf3dc03f740f70e15f7f4 +07f70c9bd1c01ea38b92788f779070997da68ba58b94a08b9c8b9c809b7c98779d75 +97628b0848334cfb327081766c79867f831f8207878c8a8f1eb706998c877f1ffb95 +078b388086558885858b769185b58ca18cb48bb98ba88ab68a91918ba08591478e80 +908bde080e2581adf807b7d7b2e2a9a67701d9daf769e103f742f7ff15780a84aa15 +fffff9b333fffffa4cccfffffc4ccdff0001b3348b9408f708e40797949a96908893 +821f29a806cc8fb38b1e92878e821e7281407d638889838d7b9185bf8897908b3708 +86560782817c81858e83931fc8fc50068b648a79887d90839087978bff0006199aff +0005cccdff0009e666ff00094ccdff0007b333ff0008e666ff000a4ccd97918b96ff +fff6cccdff0016e666ffffecb333ff001dcccdfffffa8000ff00234ccd8b08f1f70b +e8f733f70e31d6341fffffd5199a8bffffd9e6667a6c6f080eba89adf7c0adf71476 +ff008e4cccff001fb3341290cbecdcf76ed86de413fdff007b999aff02674ccc15ff +00176668ffffffb3349efffff64ccc8bffffe0b33408fc8b078b68fffff5b333ffff +fbcccdffffd64ccdfffffd3333086d890586ffffffb33389fffffd4ccd8b86088b78 +8d8905ba8cb48cb28bb38b9989e48bf75b8bc0ef8be18beb4ac234a4088d0713feff +0032199aff00196666ff002ae666ff00334cce8bff00364ccc8bce6ee2fb4e8b688b +5d89638b648bff00064ccd8dffffeeb3338b0829563a53779a7aa09b9e95a51f8bff +0010b33484978bff00104ccc088bff001d4ccca2ff001fb334ff001f999aff00004c +cc08ff007b6666fffee4b33415d00613fdf71dc63e31426d4ffb2c457e98ac1ff880 +04ac8b95e21e13fec3d66d25364e6d381f41060e7f89acf7c2b3f77cb36cac12f1e0 +f798e542ae13ccf74ff7e115f73a0a613a15f73b0a13eaf73c0a13dc898d0513ec8b +3a89771efb7d0613dcf73d0a0e2381adf807b7f76bad12d5daf76bdd43aa13f8f72d +c115f7bf07b2b3bf8d968b08c8bf4525fb065b362c1f6c8b769077a408b4f90e153a +8b4f835b83088d7405878d8a8e1eab89059ffffffeb33495fffffa4ccc8b5208fc8f +078b648b7b887408a0860594959c999498a872ab81b68b08f1f709e2f733f70e33dc +341f5b8b6379696608f7a2f71b0713f4c08ba44c975d08aa8e7df720050e7489acf7 +c2b3f7b17701f5dcf798e503f74ff7e115f73a0a3af81a15fc1d078b6ffffff34ccd +fffff2199affffd6b333fffffce6660870890587ffffffb33388fffffd4ccd8b8608 +8b748d89058be88dae1ea98baa89b88bdc8bcd90c4b1ff00298000ff001b999aff00 +258000ff003699998bff0040cccd08d766f701fb601efb01f73e06cc8eb38b1e9280 +8e821e56676e7f5780fffff54ccdfffff4b3348bfffff49998ff000ab333fffff4b3 +34bb7da1798b4d080efb0281adf808b6f7977701ddd5f76cd803f730cc15f7b507b3 +b4bf8c958b08c9bf4625fb065a342d1f6c8b759c77a30881f90d1556676e7f5780ff +fff54ccdfffff4b3348bfffff49998ff000ab333fffff4b334bb7da1798b4d08fc4a +078b648a7b8973ff0006b333fffffc4ccdff00064ccdfffffeb333928b9495999a93 +97a972aa80b68b08f1f705e4f733f70e38da341f5a8b637a696608f75a07cc8eb38b +1e92878e821e0ebe81b0f8e2b401baacf84ae603f7b5f926152a8b325d4732908292 +85968bd2d9cfaae88bff0086999a8bff005d6666fb2c8bfb268bffffa9b333ffffe9 +199affffb83333ffffdb8000ffffd3199affffce66664e516f578b08fb1e8b54dd71 +e17f8ffffff64ccc88fffff4b334859057925b9554be86b863f70f8be08bd2aac6c1 +ff00426668ff003ccccdff00279998ff0061e6668bff00684ccd08ff00adcccc22ff +00923334fb6b1e0ebe7fb5f8c476bfb099d201b0e2f841a503f92df97b15ffffdb66 +688bffffba1998ffffd88000fffff76668ffffab1998ffffd59998ff000c6668ffff +cf999aa6ffff9ae6668b368b446c5055ffffbd999affffc33334ffffd86666ffff9e +19988bffff97b3348bffff523333f4ffff6dcccdf76b8bec8be4b9cfe40886948491 +808b443d476c2e8bffff7966668bffffa2999af72c8bf7268bff00564cccff0016e6 +66ff0047ccceff00248000ff002ce666ff0031999ac8c5a7bf8bf71e8bc239a53508 +9787ff0009b3348eff000b4ccc9186bf84bb81c208ffffffe66806ff000633308bff +0025b334c6ff001e33348b08a2a68faa9783a36f1f0e2581bcf803ac89c912b0e1f7 +4de213b8f85cf84015a09899a09983a1691fffffdd80008bffffcb3334ffffea8000 +6fffffc9e6660813d8ffffe7e66695ffffe18000ff0005999affffdbe6668b082821 +32fb22fb15d332f7121fc78bc09ebddd8794838f828c695f6075608b08424ed5f709 +f702bbcdcd1fc68b93688f688e709982a08ba08ba7988baa8ba5fffff33334ff0016 +999affffe88000ff0010b3320813b8ff000a19989bff000eccceff000bb334ff0014 +66668b089c8b9e829b8b080ef589adf793b2f7b3ad01f5e0f807eb03f753df15c80a +60f8c515c90a0ef74b89adf8d9ad018dcaf70edcf80be703f7a0d815f88107aeae93 +bcf76cd6fb43fb2efb5efb1159fb21298098ab1efb3e54158b758d8905ba8cb38cb3 +8bb28bb289f28b08f721f74ecbf78af74efb2df72dfb541f4b8b5089638b678bffff +ea66668dfffff1999a8bffff8e199affffffb334ffffd8e666ffffa84ccc8b60086a +a0839b9f9998a01e8bff0013999883ff0009ccd08bff001399988bff00234cccabff +0010b334ff00216666ff00024cccff001b999aff0002b334a8828b6508fc7e078b6b +ffffeee666fffff54cccffffdd199afffffdb334086d890587ffffffb33388fffffc +4ccd8b86080e6b89adf7cfadf776b170a8967712b5e45ba5f7abdc13c5f818d9156a +7e7e452147bef707d4a9d7f71e1ee40613e534f79815e28b876a1ffb514d07fb4924 +5afb30fb0ff70054f7011fcd8bb18dcd8bb78ba58ab78a08a3078e8a8d881e6d8e05 +6f8e7f978bab08f884078bb0948daa8e0813d3a98e058e8c8c8e1f8ba40513e3fb07 +89fb6e8b0513cb5e8b66906c93087dfb2da5880513e5a5e4b09bbb8b080e3781ba84 +a6f7efaef76bad957712b7e15ea5f783da13a5f7f2f710157b0a132bd1f814151333 +7582748b808a08fb3306132b4f8b788f7091087dfb2aa5880513b597b9a9cabf8b08 +f70e069d9086781ffb5b07848989841e878b629c6a8b498b5f756365606071508b41 +8bfb0fc931f7008bb28bb09fbcff00284cccff0004ccccff0003e667ff00073334ff +0001cccd8b84087396688b1e93888e8c938d081373a19db19ac89291918b9a85914b +90829e8bbc08f85907cc8fb38b1e92878e821e0e22fb7facf8f3ad01addaf762bf94 +d803f77ca3156da40554b769d48bbe08f737dca4bee8b5fb023a1e8bfb06435a4873 +08937b05968215e4aaf700cb8bf71a08f7093de6fb0f21fb0845fb371e8b34bc57dc +4c08d25305af6fbb638b758b606b7a578b718b6e9977b178af7593818b087d73836e +6acb50eed1cea6d71f8bb554ba65a9080e6889a870b2f7b4adf788b271a812f71dad +f754dc1376d0f919157dfb20a6880592b6adc7bf8b08f72c06a39783731ffb68fb1c +07678b839b84a70884a9058f888f871e7506898a89891f8e7290668b6a8b69855e89 +7a088d88a28b05908e8f8e1f91aa0591a8969aad8b08f71cfb9306707d85751efb38 +06498b6fc07bd4087186a4fb34f7a68bd98b0513aef715898ba1058e8a8f841e6e06 +637f9ca71ff88807aa999ab11ea806928c8f8e1f8ba0fb168a050ebc7fadf756b7f8 +00ad01f89de503ecf89f15f73e0abbfbdf15f73f0a0e3d7fadf7c4b2f797ad12b1e0 +5bd213e8f7bbf9261522fb0756fb051f8b31d863a9800813f047783f518bfb008bfb +25f71c6af28bdb8bb8a5c394089cf7246d8e0573fb013764468b083d49b7f70ccca9 +d6f61fec0696919198968594801f470613e8fb076ee0bddec8b4db1fee8ba24b9d3b +08aa9078f72305589075a4448b080efb0afb40b8f856b1d677f751b370a812f0dcf7 +48acb6a813f7f0dc15fb48586f6a1e7d8bfffff94ccd93fffff8b33395fffff64ccd +ff000d3333fffff4b333ff000dcccd6c8b087d737d7567b579a11fa48bb78cb8b1c5 +b9bac98bf71408f770f71307ad8b98828e6e088e7205888d86901ea18b8f8e0588b3 +8aa68b9f8b9f8ca98eb308878f758b05878887871f887205886f7f7d688b08fb13f7 +6606a39795a31ef406d68b9d63a14608a89005fffffaccccb4fffff0e668ff006066 +68fffffe9998ff00079998ffffff999aff00024cccfffffeccceff0000b334fffffd +99988bffffee8000fffffc9998fffffab334ffffff6668ffffe7cccc8b08ffff02b3 +340613ef648b628c5c8c0813f789898b770513ef8b888cfffffc800092ffffff8000 +08a98905ff00266666fffffd6668ff000c999afffff499988b6c080efb2ffb7caff8 +deb2f784a8016dcef7d8d203f741f81a157ffb040577fb4e91fbb4338b758b929f84 +9785998093798b08777f787c78a966c31ff70c8b9bf764bdf822088d9bf18b059499 +8f941f9f078f888d861efb038b99f7040598f5a9a19d8ba28b95688e7b8e789b859f +8b089f979c9fa871b23b1f518b4d4878fb28876e7c72678b08670679867f831f7e07 +868c8a8f1e0ef71281aff783aff7d5af99d212b0ebf821e063ac13fcf932f97b15ff +ffdbb3348bffffbab334ffffd8e668fffff6b330ffffac4cccffffd2b33499ffffd6 +b334ff0017ccccffffa480008b08fb3bfb41fb17fb70ffff4c3333f710ffff76cccd +f7531ff70a8be8a4cfc5809486938b9608f708078bff002333339cff0009cccda88e +91918ba38591738a728a638bffffde80008bffffd180008c5f8c85858b739185ff00 +36e666fffffbccccff001b199afffffc4cce8bffffd7e66608fb2d07696b4885558b +08fb3237f73df718f743ff00718000f70cff007480001f13faf7258bb438a535ff00 +0b4cccffffff4cccff000a66688dff000b4cccff0004b334fffffd8000b5fffffb80 +00b37bd3ffffff1998ff00003334ffffff199cff00001998ffffff1998ff00003334 +ff0003e668ff001b6668ff000d3334ff001a3330ff001c9998ff0004e6688d8c8e8b +8e8b08908b938a928b08a2a68faa1f9783a36f1e0ea1fb7cb6f9bba801f754bbcdd4 +03f7b777159a648b608b75086c7c6974798197a61e8b9ba0d0a9b808f759f8e415fb +39fc4f888bfb2ef84d0588938a918b918b9bff000d6666ff0005e668ff0022999aff +00041998089c8d05908c8e8d8b90088b9e898d058b32896864478d8b1e89898b7805 +8b868ffffffd66688fffffff9998ad88a486996308f751fcaa055c336c518b59086a +a064c1cdb9c1d01e8bb281c472d508f754f8930598ae9c93b68e90ff00004ccc8eff +0002b3348b90088b9e898d058b57896864428d8b1e89898b7805868f888f1e9d8905 +ff00318000fffffa8000ff000a4cccfffff8e668fffff43334ffffe09998080ef70b +81ba64acf7e2d557bff75ea9a67712e1daf756daf75bb1139f80f7bef81715b49f7f +3b1ffb34078c2fba56f38b08dbdfd7f74b1f13af80f70c6ed146707d78791e8b6ca9 +86978aa886a9708b2b08295825405c71a8cd1ef72c07135f80f265bf441effffcee6 +668bffffd3199a7e4e47fffffc999afffffc3334fffff99999fffff5cccc8b9908ff +0000cccdf77505cc8fb38b1e92878e821e7281407d638889838d7b9185bf8897908b +3708fc49078b38fffff4333387518785858b769185ff002933338cff0019999a8cb6 +8bb28bff0011b3338aff002a199a8a91918ba08591ffffcd33338f828f8bde08ff00 +a3e666078bff0015199a94ff000c4ccc93ff0008b33408b1ff00254cccff0026999a +ff0015b334ff002766668b080efbc581c2f8eaa8a57701e5d603e5f8c715fc6e0744 +a66fb91eb88bafa1b2b7fffffcb3349485ff0005999afffff74cccff000266667177 +7c83718b087085a9c91ff85207cc8eb38b1e92878e821effffe6e66681ffffba999a +7effffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffffcccc08 +ab89059f957e4a1f0efbbe89acf7b6b2f792ac01f5e003f753f70e15f75bce079794 +9a96908893821f3ff737068bde9c90d18e91918ba085915f8affffd080008affffd9 +80008bffffde80008bffffcf80008c5c8c85858b769185d1889c868b3808fb374607 +82817c81858e83931fd8fb5b068b387a86458885858b769185b88cff0030b3338cff +00244ccd8bff0023999a8bff003066668ab88a91918ba08591458e7a908bde080eb5 +8aa8f7aeadf7a6a874ad12f5dc13d8f822f87315ff0036199aff00459998ff0038e6 +66ff00486668a78bc28b7d3cb98b089f9f9ca1af5bb4481f418bffffd9666644ffff +c3999a420821fb1405ffffea4ccdffffe5ccccffffe9cccdfffff6199affffdce666 +fffffd666608ff00afb334078bde9c90d18e0813e891918ba085915f8affffd08000 +8affffd980008bffffde80008bffffcf80008c5c8c85858b769185d1889c868b3808 +fc25078b387a86458885858b769185b88cff0030b3338cff00244ccd8bff0023999a +8bff003066668ab88a91918ba08591458e7a908bde08ff00bae66607ff0021e6668a +ff001d199afffff4ccce9fffffe64ccc08f731fb5a059f7199708d7b8b888c888f8b +9f8c8f8ca98bb28b9a8aba8a91918ba08591798e678869b508fb6ff7980583948693 +8b938b92ff0004ccccff00033334ff001e3334ff0026cccc080e3889acf803acf77d +ad01e1daf3dc03e1f87015fbf6078b388086558885858b769185b58ca18cb48bb98b +a88ab68a91918ba08591478e80908bde08ff0056e66607ff00133333ffffff8000ff +000e199afffffe8000ff0009b333fffffc999a96fffff88000ff0009199a82ff000b +e6667b08d42905ff001d6666ffffd88000ff0008999afffff080008f7cff0000cccc +fffffd199aff00003334fffffde6668e8b9f8c978ca98baa8ba08aa98a91918ba085 +91698fffffe6b334ff00046666ffffe54cccff0021999a08fb18f73a05fffffc6666 +ff00048000fffffc999aff000480008b908b8f8b8d8f8f08e3e605a9abae93b38f91 +918ba08591668a7d8a678b658b748c668c85858b769185c387ffffe84cccffffdcb3 +34fffff6b334fffff44ccc08746effffe0b33469ffffe64ccc78ffffe9cccdffffef +999affffe51999fffff43333ffffed199afffffd666608ff00efcccd07f70c9bd1c0 +1ea38b92788f779070997da68ba58b94a08b9c8b9c809b7c98779d7597628b084833 +4bfb321f0efbdf89acf7b6b2f7ada9a67701eada03f742f7d515ce0697949a969088 +93821f3ff77306cc8fb38b1e92878e821e7281407d638889838d7b9185c58791888b +4008fb5b400782817c81858e83931fdefb5b068b3880864e8885858b769185ae8cb0 +8cb38bb38bb18aac8a91918ba085914e8e80908bde080e4b80c8f8dfc801f7f0f8fc +15ffffa26666ffffc91998fffffd999aff0007e6680568f70a53966d8b648b6b6c71 +65ff0002199afffff33334ff00079999fffffe3334ff00074ccdfffffd99989f9aa5 +95a48bff001780008bff001f6666fffff11998ff0021b334ffffa94cd008ffff9c66 +66ffffc599989c6dff005e6666ff0037666605ff00028000fffff84cceff0002999a +fffff7e666ff00028000fffff76666089860fb71fc47a47f05a291a48fa68d08f723 +f7ffd2fb8105a72ea35fbd8ba88bb2b09db2fffffcb33494fffffa9998ff0004999a +fffff4b334ff0002666676717786768b6b8b7fab64f71808ffffa1999aff01391998 +ff00646666ff003ae668050ef7a97fbb85a2f8c9a812f0dcf767dcf767dc141c13bc +f992f70815f85e078ba7ff000f3334ff000ae668ff0027ccccff0003199808a58d05 +90ff000066688eff000299988b90088b9e898d055a8a6e8a598b5b8b738c598c0889 +898b78058b868ffffffd4ccc8fffffffb33408a18905ff0027e668fffffc6668ff00 +0e1998fffff799988b6d08fc6407585a5a72658b08626ba6cd1ff851078ba7ff000f +199aff000a3334ff0027e666ff0003cccc08a08d0590ff000066688eff000299988b +90088b9e898d055a8a718a5b8b5b8b738c598c0889898b78058b868ffffffd4ccc8f +ffffffb33408a18905ff0025e666fffffc9998ff0010199afffff766688b6d08fc3d +078b7c8b7f8c7d57575f77608b08626ba4cd1ff853078ba799ff000a1998b4ff0003 +e66808a08d0590ff000066688eff000299988b90088b9e898d055a8a718a5b8b598b +708c598c0889898b78058b868ffffffd4ccc8fffffffb33408a68905ff00274ccdff +fffd1998ff000eb333fffff6e6688b6d08fc3c0732a042e91ec68bcaa5c9c7955cb2 +64c68bce8bc6b0bebc088d8a8936a28b05137ca19dbd98c9960888a25b9005ffffea +9998ff00023333fffffc6668ff0005cccd8bbd080eeffb4fa9f73e76f906a7015fcd +ddb8f82db803f3e3154f8bfb4d4d1e808b858f8895869f7c9f7d8b088373886b77ab +6ebaf7048df722f71a1ff7f207ad8d9a931e918b96809c7508f7f1fc4d05967c9885 +9b8a089992959e1ff8ac07a99aaab21ea6068f8f8e901f8b9e898c058b438a646741 +8c8b1e868a8b7805869488901ea506b49869701ffc0f07788b78861e828b7da76eb0 +08fbf1f84dfb168b88898b7905869288901ebc8ba1538d7f080e5ffb7ea8f75fa8f7 +fca377bb12ebdaf765da13dcf743f84b158d8a8c881e13ec6d8061824180088d73b9 +87059a8993818b5908fb8d078b6e8180688808778905868a87898b86088b788d8905 +8bce8db6b5cd898b1e8d8d8b9e058b90878d868c087c8d05689081948ba808f78607 +13dcc1c7b39cb98b08c3986a451ffc54078b6e80826986087c8905868a87898b8608 +8b788e89058bca8db3b7d1898b1e8d8d8b9e058b90878d868c08768d056a8e80968b +a808f84d07e476d02c1e558b597d47400888060ef681aff7afb2f7a6af01b0ff0060 +4ccdff01b4b334eb03f92ef7dd15650affff9eb3349e15fffe4c999806ff00066667 +ff00c2b334ff005fb333ff004f4cccff005f999a8bff007b80008bff00659998ffff +9fccccff000c999cffff4e333408ff00014ccc6415ffffffb334ffff4d999affffaa +1998ffff976666ffff8e33348bffff89e6668bffff906667ff0066333384ff00b4cc +cd080ef681aff8e8afa5e112b0ebf849eb40b013f8f7dff90215ce0af7e3fbb915f7 +400a13f4f7410a0e2d81aef80faeb1df12b4e1f78ee16aad13f8b4f76115f7420a13 +f4f7430a13f8f7440af759f75b158b0a0ef7befb48acf71dadf8d6b07cad12afebf7 +ede0f737e013def7e6f90415c08bb978b36708fc90076c72697f628b08fb17fb00f7 +03f7541ff766f702e2eb1ef86cfd3c15f8f407bb8ebb8b1e92fffff980008efffff7 +80001e13ee647a6d894d8b608b55ff0001800080ff000580000813deff0009800084 +ff000280007f1e808179787a8560a25997598b08fb47fb1cfb2cfb58fb59f724fb0f +f7401fdd8bd6a3c0b908f87e0713eeff00318000ff00098000ff00028000ff005480 +00c99289481efce1078b387a86458885858b769185bc8ca98cbe8bbd8ba88abd8a91 +918ba08591458e7a908bde080ef707fb7eacf753b7f7e5ac8cad01afe1f77cdaf70c +da03f7f6f7e415fbac0771776289788b085133b5f72bf3b6d5db1fb58bb373a65e08 +f7aafc5315f8bd7a07758b6565438b6d8b3a8c6e9a6f9a6b8f698b08fb0e3027fb18 +2ecbfb10f7241fc48be2a9b8aa08f7c8079e93a38f958b08acad8b5f1ffc4b078b38 +80884e8885858b769185b58ca58cb78bb68ba48ab68a91918ba085914e8e808f8bde +080ec689acf78fad73a8ff00a5cccc76ff008c3334b270ad1291ff004ccccdff0090 +3333e0f775e813d780f7ccf8be15f7450a13b780f7460a13bb80ffff6f8000f7d815 +ffff8d80005cffffb2ccccffffcc6668ffffd86666ff001a6666fffff53332ff0013 +3334a3ff00146666ff0010ccceff001933321f8bff0009999cfffffb3333ff000999 +98fffffd999aff00099998fffffc6666ff000accd0fffffd999a918bff000acccc08 +ff0021ccccff002f333393ff00248000ff002880009f8b381efc25078b387a864588 +85858b769185bc8ca98cbe8bc38bb18abd8a91918ba085913d8f738f8bde08f73e07 +13d780a184a388ae8b08f74ac2f70be0c664f6fb4d1f13bb80718b4484638b080e3f +fb7eacf753adf805b9f775ad01dbdaeedcc3e103f743f7e315aaabff0028cccda5ff +001d33338b08cbc243fb05396e25fb041f798b689079ff0010199affffebe6669dff +fffc199aff0005cccc8bff0024199a08f74e078ba0ff00033333ff0009ccccff000c +cccdff000d3334087bf72b15f72e9ba3ac1ea98b917f99689379967da08b9c8ba3a0 +8b9f8b9c809d769b719d718e658b08375643fb2f1ffcd9078b3880864e8885858b76 +9185b58ca58cb78bba8baa8ab68a91918ba08591448f808f8bde08f700078b98ff00 +03cccdfffffeb333ff000a3333fffffbcccdff00188000fffff6199aff001ee666ff +fffa6666ff001f999a8bc38bbd9cb4b2bab9a6c98bdc8bf540ed258b668b54725e5d +08fffffce666fffffcccccfffffb199affffff199a8bff0007199a080e6c24a6d5a8 +f761aef784b569aecfa712f5dcf779dc13eff885f81815f712fb06affb0c1e13f76b +8b748b768a08a407a7999bb41ea506908e8e901f8b9e898c058b2e8a6764348c8b1e +898a8b7805868f888f1ea606b29a7d6d1ffc8c076f7e7c621e7006878888861f8b78 +8d89058be88daeb3e1898b1e8d8d8b9e0590878e871e7106637c98a91ff73607e58b +9089917d08f2fb7d05a55cb764c78b9a8b9c8e958f08889f05638b6cad74b60823f7 +8305ba96e3bf8be0083a8a152539792a1e59f7840613efa390a68eaf8b08c7dd7026 +1f0efb087fb0f8ebad01b7dcf781d003ecf90b1587568359825a08a986059ecda7df +ee8bcd8bb7588b4e8b382865617c376d2e628bfb0d8b25de2df7078bed8b9b9ca38b +089f8b94869c8b8dbe92bb95d7086d8e0577305c4c328b3f8b51b78bdc8be6bda6c8 +a3d3a6f70fbd8bf7098bf526ce348b2e8b8d785483080efb7481a78e76f82da912b0 +ce58a3f748c87ea213b2f7dcf72015748c058975825d727180806e79658b688b57a5 +8bbc8bb6a3a8dbad0813acd3abb1a08bd68bce50b83c8b598b68826b7b866b87698a +6708a38a05a0ddc89ba08bb18bb27f8b548b63787755770813b23a6d49678b3b8b28 +f470ba8b081372ae8ba88ea592928d908b928b908b948b9489080e8889ac6cb6f8c4 +b56cab12f878ac7dac1328f808f8ef15f7470a1394f7480a1364f7490a0efbb6fb68 +a8f944a6f71fa6128db3f3d65cbaddc913fa8df8ed1553b363cd1e998ba294969285 +75875f8b7108fc15078b278b3ebc5ea276b27e9e8b08c2ada6a1a879917e1f7a8b83 +7b857e867e857e7e8b7e8b7d93819d809b81aa8bf70f08f88907f72462b3441e4f5c +664f1f13f6f74016687269626173acafaea2aeb61eb8a0656b1f0efbab7fc3f7efb2 +01e4d5d7a703f738fb2515a8d5b8e51f8bff000acccdffffff3334ff000acccdffff +fe1998ff000b6666ff000ce668ff0009199aff000c666696ff000b6666ff000ce666 +89ff000a4ccd85ff0005b333818c71776d83718b087085a9c91ff791f30795998f94 +1f9f078f888d861efb0cb206cc8fb38b1eff0006666888ff00026664fffffb4ccd1e +fffffb80008bfffff78000fffffc199cfffff6b333fffffae664fffff4b333fffff9 +b334fffff5cccdfffffbb334fffff38000fffffc80007ffffffc999881fffffc999c +8bfffff919988bfffff466688eff000699988bffff91199a085dffffffe666057d87 +7f831f7e07868c8a8f1ec6fbc10644aa6fb91eff0017cccd8bff0018e666ff0005e6 +66ff0017e667ff000bcccdff00004cccfffffc3333ff0000199a878bfffffc199a8b +7383737880717b519c8b5e08779979a11e0ea189acff01c7cccc76ff008c3334b293 +77128eff004ccccdff00ceb333e0f763ad13eeff00ef8000f8f215b095654e1ffc15 +078b387a863b8885858b769185bc8caf8cc28bc18bae8abd8a91918ba085913b8e7a +908bde08f81207cb95b1af1ea106d68bba719c3e968b998c948f84b986be8ab80813 +def72e0a13ee6988fb03863c8b08fb6406fb07ffffd18000ffffb2ccccffffcc6668 +ffffd86666ff001a6666fffff53332ff00133334a3ff00146666ff0010ccceff0019 +33321f8bff0009999cfffffb3333ff00099998fffffd999aff00099998fffffc6666 +ff000accd0fffffd999a918bff000acccc08ff0021ccccff002db33393b11e0efb84 +81c2f7edb2f77fad01e4daeedc03e4f86b15615d077d877f831f7e07868c8a8f1ec6 +fbc10644aa6fb91eb98bbda1b2b789958591818c71776d83718b087085a9c91ff791 +f30795998f941f9f078f888d861efb0cc406f72e9ba3ac1ea98b917f99689379967d +a08b9c8ba3a08b9f8b9c809d769b719d718e658b08375643fb2f1f0e8dfb44b0f918 +f7285cb2128eadf778e0f701e296ad13bef7f2bf15f85807cb95b1af1ea106d68bba +719c3e968b998c948f84b986be8ab80813def72e0a13bef72f0a13def7300a13be9f +dbb9a5cd8b08bc06b095654e1ffc4807fb3cbb3ce71eb48bb18fa79ea29c969f8b9d +8ba171a1798b748b807b82787c65847f6b8b086c73bff71f1f0eea81b4f8dbacb6db +01e2e0f7f6bcd4bb03f8fcff0260cccc15f74a0a0e4b7fb885a6f7f0a8bbde12e3d6 +f753d6b5ae133ef76d8115b28bba9fbcb3908fff00094ccc8dff0000b33484ff0002 +8000ffffe68000ff00088000ffffde80008b8b9388ff00048000ff00008000ff0006 +8000ff00028000a19dae9ac89291918b9a8591084b90829e8bbc08f754078bff0013 +ccccff0001b334ff0026999aff00013332ff0017e666ff002a6666ff00098000ff00 +11b334ff002133348ba508ba72b4656e7a7c731e8b779975ad8a9e8a93828b808b80 +757d7889088a0784ffffff666681ffffff999a818b6b8b678c698c85858b769185bc +88987f8b4908fb55078b7889837d7f666b657b728b086d5999e41ff74a07a98fd48b +1e8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bb8799808b4a08fb5407 +46a948ee1e0ed27fadf8c9c512a3a579e3bcbaf769c4bae37ea513def712f8df15ab +96837d1f8b5dfb1dfb098bfb1908fb29eafb18f75cf759ecf728f7191e8bf71bfb1b +f7078bb98b999893ac8b0813cdbf8b9f838f5708a58b84f70a458b052a6c78691f13 +de8b4cf3fb078bfb2608fb1547fb09fb1efb163ef4f7221e8bebebf71e8bdb08b175 +a3481e2b8b0513ec84fb0aa58b0591c3a18fbb8b080ec781aff8e4a776ac12e4e0f7 +4bd3f71bbc13bce4f77015fb50f661f714f72cf71dbff7def72d63f719fb0269437e +5671a084971eaa8b92ad8c938e9c97929d8b08ea92fb7158fb6c2dfb03fb26fb1677 +f0f70e1ff7d90713dca7999bb41ea506908e8e901f8b9e898c058b2e8a6764308c8b +1e898a8b7805868f888f1ea606b29a7d6d1f0eb989a8f8e3a775ae128bc6f79adb13 +d8f77bf84715e5fb2e8bfb66056f7d7b621e7106868888861f8b788d89058be88daf +b2e2898b1e8d8d8b9e0590878e861e7106647b98aa1f8bf772f729f7ad059cab9997 +a98b08a006928e8d901f8b9f898c058b3d8a827e3c8c8b1e898a8b7705888c87901e +a9069f9088801f8b868882837d08fb13fb7f41f7110513b83bf71956c7508b08455d +586a7d9478a1a3919e9c1f8b9589938b928b9c9f8f938b08ae8bba3ac9fb00080eaa +fb7ac2f8d5a8c8cc01f836f7e215a7ccb3e8ab8b938b97898f8695819c87998b08a0 +9d9e9fa37ba2541f4b8b563756fb0c8b8b29fb747e6d08fb02f79605879489938b91 +089b9891a990918e901e8b9d898e058b43895c6d5f8d8b1e89898b7705878f88911e +ad8b96809b6508f712fbb905937794708b818b828981857f724e68357c8b818b8492 +8195859381917c8b087b75826d67b2809e1fd28bafdfa9d3dbf755ecf76b8b8b080e +948bb1f79fb2f796b6937712c8a913e8f8bb891590c395c697bf848d808e7e8b6c44 +7254fb018908fb5587057affffff999a83ff000566668b948b908e919094ff00234c +cdff00334ccdff003d6667ff0057b333ff00434ccce908f7410697949a9690889382 +1ffb2e06ff003f999aff00586666ff00426666ff005a4ccec0ff00444cccff001519 +98ff001b3334ff0002e668ff0006cccc8b968b92868f838b7f8b6c896d8b08fb7106 +13d8710a13e8a0d0b1ff00239998d6ff0001666808f7678f05ff0005e666ff000019 +98ff0004199afffffce6688b858b8688858684ffffd38000ffffc78000ffffbfcccc +ffffa96666ffffbdccceffffa4199a08ffff6ee6660682817c81858e83931fff007d +199a0646ffff9fb333ffffbb8000ffff9db333ffffcf6666ffffb7999a858389838b +8408819086991eff016c4ccc06a6ff0063b334898b1f0efb3f8badf737b2f730b095 +7712bdac13d8d2f84b15f7360a13e89fd4aaff00114ccca9ff0000b33408f7148e05 +ffffe2999affffceb334ffffdcb333ffffc9333266ffffc9199a08ffff96b3330682 +817c81858e83931fff0056cccd06ffffd7999affffc53333ffffd6e667ffffc6b333 +ffffdbb333ffffcf199afffff76666fffff46666ffffff999afffffc999a8b860884 +93869a1ef7cc880597ad98bf92bdfffff98000ff0003b333fffff48000ff00024ccd +7f8b087d6e05ffffe68000ffffcb3333ffffeb999a75ffffcbe666fffffecccd08fb +1906aeff002c6666ff0029999aff003a8000ff0028ccccff003c199a08ff004f999a +0697949a96908893821fffffc1999a06afff00363334adff00356666ff001a6666ff +002b6666ff000f4cccff00193334ff0002b334ff0007cccc8b8f8b8f868e848b868b +6f896e8b08fb4b06ffffdfe6668bfffff3999aff0004999afffff18000ff00056666 +080e98fb67b0f99fb201f86fe403f73bf91915f74b0a0e98fb67b0f99fb301b9e5f8 +15a503f84ff91915fbf706778485831f8b81937a937d08f73bfbc205fb1b704c288b +fb0308fb1ff719fb0ff734dbf72aaecda281a6681e718b6f7d7e766b5a596d548b08 +332bf70deaf733f706c1d01f9a8b978b998808fb57f7f5f78d8b05d58aa8388f5e08 +a58e76f750057386697a728b080efb27fb79a8f8e2b201a2d6f784a190a603f7d1f8 +4115fb7a06798587821f8b858f81917e08f717fb7f05fb0a814c458b21082bd828f7 +24e6c9b3ab9b839a761e748b7b847e767f746f74628b085a33baf70ae0cecad91f9d +8b9e89a18608fb31f7b0f7228b05a98ba97f9d3708a6906bf72c7587057b82897f1e +0efb27fb6676f833acf73eb5977712b79fd3cdf70ed913eef798f76d15f70bf73e05 +13de94988e948b970813ee90868e821efb9a0613de6c8b96926890087bfb0f9f8905 +13ee97cb9692b58b08f7468bfb2dfb6d05a190a9949d8be08b9a3f8b578bfb0d559e +63715266666e8b5308729e7f9c9aa19ca51e8b9684968b9a8b908c9fb1a3b1a4f70f +8b8bf721088be953c2358f080efb318bccf748b2f73a76f726ae12c8d6f74ee370a8 +13fcc8f86815769e79a09ca9ff0011e666ff0016199a1e8b9389918992899285948b +9308a4a5afd4afbe722b1e8bffffc2199affffea8000ffffcd6666ffffc94ccdffff +c6800008ffff8033330682817c81858e83931fff006080008bffffd7800063052927 +7b5b8b50088bbe8dab1ef74306abb9898b1f13fa98c095d68ca985907e8d81897a44 +7a72678b08fb46068bbbd0cf909008ff003d6666c6ff0044999a8b0597949a969088 +93821f660613fcff00388000ff00368000ff002a8000b78bff004b800008f70033b7 +3a1efb0346394f1f0efb3a7fadf7ccb9f713c701f7c5d103f7c5f748152d5a4b3f1e +6b8b7ca1819e829b7f97778b08797b7e7864d96bc4f1e5d3f71ce54be9fb1a1f5889 +9bf715f7588b8b8d93c5fbd88bd95575fb5205a695a18ca78b08cbe14f2d1f0efb3a +7fadf78ab7c4c701f7bdd103f7bdf71e15395c69501e6b8b719e809f829b8099778b +08797b7e7864e46bc4f716b6e5d7d753dd281f758b58877d8a089cc9f7588b8b8d93 +c5fbc58bc65469fb0c05a994c990a78b08cbba454f1f0efb777fa78e76f81cb212ac +a699d555c4f70dcf13bad5f81a154c078b40b976d36bdb698b6e8b608b5a4f6f688b +668b699d819671a582bb8aa108708a05137a92fb2205948d948c908b928b908a928a +0813baa484b187ad8bbb8bf705a88bee8bdb60af3aa9559f7d9f8bb308bbed079499 +8f941f9f078f888d861e13b6fb02f72f0652778b78058b3f7d64528a08898a8a881f +6c07888c8a8e1e0e40fb6476f905b68e7712dad6f78dde13d8f7c5f82015d4a45431 +1f8bfb072524fb273708f80207d5c7b1a0b28b08fb764015fc57078b6a81796d8208 +7a8605868a8a888c86088f72f719af8bf505f761f704f713f7068bf7288bd36cdbfb +118b578b4d6a4d5308888b8ee40513b8ff00026666fffffe6666ff0000999afffffd +999a1effffe38000806482ffffb9800080088d73b68705ff000e6666fffffe4cccff +0007999afffff5b3348b59080efc2e9676f9587701d4b203f7048115f95864fd5807 +0efbc89676f9587701d4b2cab203f76a8115f95864fd58074c16f95864fd58070efb +9b9676f7bfadd3adf7a17701f71cb203f7b7f7d715fb08d3f708adfb08f7a164fba1 +fb0369f70343fb0369f70306fbbfb2f7bff708070efbc781f5f8c67701e6f503f724 +f92615200a56fcfb15210a0ef93489adf8ceb66bad9177e07612f5e0f807ebcda913 +aff753df15f74c0a13cf60f8c51513af520af9afbf15f7020af7a3fd4f15f7380a13 +cff7390a139f710a13cff74d0a0ef88389adf7fcb09577f756ad12f5e0f807ebbfac +139ef753df15f74c0a60f8c515520af950fb2415f7030a13befb094d15f74e0a13de +f74f0a0ef7d581ba66ad87a6f7e3b072aef761779ca9a67712b2e1f770daf704ac13 +89e0f7edf710157b0a80fffef84ccc157c0a132be07d0a1381e07e0af7e8ff01c2b3 +3415bd06a8b9b1b8aeb2081305e0f7500a1309e0fb094d15f74e0a1351e0f7510a0e +f741fb40b8f711ac6cb2f8d3ac12f5e0f7aface1e013bef729165c0a13de5d0a13be +5e0a13de5f0af8a5f89f15f7190a0ef744fb6eb7f740ac6cb2f7f3a7f71aef65ac12 +f5e0f7aface1ef35da13b300f729165c0a13d3005d0a13b7005e0a13d3005f0a139b +80f850f8f015850a13934099fbae15870a0e3bfb73b7f745acf7f6a7a877f711ef85 +a9a67712eadaf737ef35da13fb80f7e5f8eb15850a13f34099fbae15870afb94fb57 +15f71c0a13f700f71d0a0ef83bfb40b8f71e7693acf8dbac12f1bcf829bcf782e013 +bef8c0f89415620a13de630af80896158bde9c90c78e91918ba08591658affffd4b3 +348affffd94ccc8bffffdbb3348bffffcb4ccc8c598c85858b769185db889c868b38 +08fc4e07fb48576f6a1effffece6688bfffff1ccccff000bcccd84ff000eb33385ff +000cb333fffff73334ff000ccccdffffe719988b087d6d767567c079a11fb88baa93 +b4aeff002bb334ff00254ccdff003a4cccff0033b3338bf723080ef80bfb73b7f752 +7693acf7f6a7a877f711ef6aac12f1bcf829bcf74fef35da13bb80f8c0f89415620a +13db80630a139dc0f780e215850a1399a099fbae15870a0ef76ffb73b7f745acf7f6 +a771bff700ef12ebdaf760daf746ef35da13ee00f74cf7fa15fffff9e66684fffffa +6667fffffd999affffffb333ff000966668aa6fffffdb333ff0026b334fffffb4ccd +ff000a4cccfffffde666ff0004999afffffe199aff00036666838b6f807182468289 +858d7b8d85c18696868b5108fb57078b3981874f8685858b769185a98cb38cb38bb3 +8ba98aa98a91918ba085915890818f8bdd08f738078ba0949793940813de00b1b0b8 +a1b28b9f8ba07e977495778d708b6d08fb2c078b398187578686858b769085a98cab +8cb38bb38baf8aa98a90918ba086915390808f8bdd08f729078bc287bb74aa7aa16c +97688b085a8bffffc84ccd7effffc4b333470813cf00f858f78515850a13ee8099fb +ae15870a0eef89acf766b5f80b77db7601f7e4f94d15f7020a42fc32154a0afbb1fb +60154b0a0efb1e81bb5bb4f80bacf7637712afde4bd8f735d91332f751f88b15f703 +0af3fba215d40a137ad50adafb381513b6760a137a770a0efbbe89acf8dbacd27601 +f5e003f70ef94d15f7020ad0fcd315590a0efbd889acf7f6a7a87701f1da03f4f888 +15f7030ad7fc0e15e60a0ef681aff8e8afc77601b0ebf849eb03f7daf94d15f7020a +904015640af7e3fbb915650a0e3081aef80faef7627701b4e1f78ee103f76af88a15 +f7030afb41fbbd158a0af759f75b158b0a0ecd81b4f8dbacd27601e2e0f7f6bc03f7 +daf94d15f7020afb2efb42156b0a0e4b81ba84a6f7e9acf76a7712e3daf758da133c +f778f88a15f7030a13bc80fc9415f10a137cf20a13bcf30a0ed381b4f8dbac98e9b9 +bd01e4e0c5e9bde9c6bc03f7d78115d20a30f96115d30af72416d30ae0e815f40a0e +4b81ba84a6f7e9aceceab5bd12e3da5fe9d6e974da133900f7fef92d15f40a133a00 +7c3115d80a133900f73d16d80a13ba8040fcdd15f10a137c80f20a13bc00f30a0ed3 +81b4f8dbac98e901e4e0c5e9bde9c6bc03f7d78115d20a30f96115d30af72416d30a +ff003a199aff008ee66815f7520a0e4b81ba84a6f7e9aceceaff000133347612e3da +5fe9d6e974da132800ff01396666ff02eb333415ffffc3999affff94e66405fffff9 +8000fffff48000fffffd4ccdfffffc66688bfffff5e6688bfffff9b330ff00059999 +fffffa999cff0005999a8bff0005999a8bff00066666ff0003999897ff000d800008 +e7ff0062199cfffffd999aff0009e66405ffffed999aff0013ccccffffeb8000ff00 +00e668fffffae6668b08878bfffffb3332ffffff1998fffffd999affffff199c0813 +3200ffff41999affff53cccc15d80a133100f73d16d80a13a28040fcdd15f10a1364 +80f20a13a400f30a0ed381b4f8dbac98e901e4e0c5e9bde9c6bc03f7d78115d20a30 +f96115d30af72416d30affffd73334ff0029199815ff0021199806ff0017199aff00 +1de668ff0018999aff001c3334ff001d4cccff0019800008fffff46668ff00119998 +05ffffe2b332fffff1e668ffffe76666ffffef4cccffffe38000ffffe91998ffffe6 +999aa1ffffe5ccceff0010b3346d9a08fffff3b332ffffee666805ff001bb334ffff +e76664a6ffffe5999cff0017199affffdf6664080e4b81ba84a6f7e9aceceaff002a +33347612e3da5fe9d6e974da133800ff00e73333ff0284333415ff0028000106ff00 +173332ff00296664ff001e6666ff00288000a7ff0023199c08fffff0ccceff000bb3 +3405ffffe26666ffffe7b330ffffe4ccccffffe98000ffffe26667ffffddccd0ffff +e4cccdff00206664ffffe5999aff00168000ffffe0ccccff001a199c087bfffff44c +cc05a7ffffddccccff001d999affffd78000ff00173333ffffd5b33408133a00ffff +93cccdffffbacccc15d80a133900f73d16d80a13ba8040fcdd15f10a137c80f20a13 +bc00f30a0ed381b4f8dbac98e901e4e0c5e9bde9c6bc03f7d78115d20a30f96115d3 +0af72416d30affff90e666ff008e199815f7530a0e4b81ba84a6f7e9acecea12e3da +5fe9d6e974da1330ff00cd3333ff02f8333415fffffcccccff0000e664fffffb3333 +ff0000e668878bffffe4cccd8bffffed999afffff0b334fffff99999fffffa999808 +fffffe6667fffff6199cff005b3333ffff9de66405ff000ccccefffff28000ff0005 +9999fffffb8000ff0004cccd8bff000666668bff0005999aff000566688bff000480 +008bff00064cccffffff3334ff00064ccc8794081334ffff75ccccffffb8333415d8 +0a1332f73d16d80a13b540fcdd15f10a1379f20a13b8f30a0efb2883acf70eadf765 +bc01a1e1f758e203f7c4f72715f7540a3af75415f7550a0eef89acf766b5f80b779f +ebb9bd12f755ebf721eb13def755f95615b60af78116b70afb3bfc3b154a0afbb1fb +6015b80a13eeb90af7d1f96515f40a0efb1e81bb5bb4f80bace4eab6bd12afde4bd8 +5ae9d6e956d9133800f7d5f92e15f40a1339007d3015d80a133880f73d16d80a137c +40b4fbea15750adafb381513ba40760a137c40770a0eef89acf766b5f80b77cbf346 +b712f7c6f313ecf84df9a115835fde8b0597969c97928793811ffb8f5f1594b7378b +057f817980848e83941fd5fc5a154a0afbb1fb60154b0af72bf9371513f4f7000a0e +fb1e81bb5bb4f80bacf700ef9dbd12afde4bd8adefa6d9133980f7d6f92d15f40af7 +57fc4415d40a137d80d50adafb381513bb80760a137d80770afb11f8bb15f7010a0e +f7a289ac6cb2f777b29db1f788b36cacedbd12f841dff74aacb2ac9bae1333e0f92d +f97d15f40afb3efc4c15bb0afb4b0413b3e0bc0a1373e0bd0a13b3e0f7560a137be0 +bf0a13b7e0c00a1373e0c10a13b3e0c20a0ee781bc5ab5f74baef730acdabd12b2d3 +4ed4f743d4f75dd7133980f85cf89a15f40aacfb1a15f7570a137d80f7580a13bb80 +f7590aacfb3d15dd0a137d80de0ad5b115df0a0ee581aff713b3d3aff7d5af12b0eb +f821e063ac13fcf80df92615fb3bfb41fb17fb70ffff4c3333f710ffff76cccdf753 +1ff70a8be8a4cfc5809486938b9608bfc407ff000c4ccc8dff000ab334ff000fcccd +8bff000999998bff0004cccdfffffc4cccff00068000fffff6b334ff00014ccd0848 +a3068bff002333339cff0009cccda88e91918ba38591738a728a638bffffde80008b +ffffd180008c5f8c85858b739185ff0036e666fffffbccccff001b199afffffc4cce +8bffffd7e666087323077ffffffdb33382fffff14ccd8bfffff666668bfffffa6667 +8efffffa3333948908f7053206696b4885558b08fb3237f73df718f743ff00718000 +f70cff007480001f13faf7258bb438a535ff000b4cccffffff4cccff000a66688dff +000b4cccff0004b334fffffd8000b5fffffb8000b37bd3084f9566aefb038b080e2c +fb82b0d5b3d3c455c8e2aaf785aa75b812c7dd41c0f75adbff0011e666ff0037199a +13cd60f7d3f7ab15820af711f70015f7110a13cb60f7120a13dd60f7130a13d8e06f +737b608b698b679f6fa57effffd94ccdffffe9199affffe6b333ffffe1e666fffff4 +b3336c08ffffe94ccd067ffffffdb33382fffff14ccd8bfffff666668bfffffa6667 +8efffffa3333948908a406ff0001e666ffffab6666dcffffe5999aff004c199a8bff +006ab3348bff00719998ff0028999aff002ae668ff0046666608ff0026cccc06ff00 +0c4ccc8dff000ab334ff000fcccd8bff000999998bff0004cccdfffffc4cccff0006 +8000fffff6b334ff00014ccd08ffffdee66606ff00016666ff0007199aff0000b334 +ff000766668bff000780008bab7ca46ea364ab458c668b798b728973880813eae0f7 +150affffe4e666fc6e15fffec4666806ff00013334a5ff00058000ff0016199aa3ff +001ce66696889b89988b0813d860aa8ba78e998bbd8bb58aa87bb0ffffeb3334ff00 +0cb334fffff24cccff00013332ffffe8800008fffff633346315ffffe3b332ffffcf +6666ffffabccceffffe6999affffb666668bffffe066668bffffbb4ccdff00166666 +ffffefcccdff0033999a080ee581aff783aff7d5afc77612b0ebf821e063ac13f8f7 +eaf94d15f7020aae6415f70b0a13fcf70c0a13faf70d0a0e2cfb82b0f74ec455c8e2 +aaf785aa75b8f7517712abd062dd41c0f75adb9dc2139230f757f89015f7030af710 +fb79152e5c78661e139ab0f70e0afb4ffbb51513d330f70f0a13b330f7100af7ccf8 +2115f7110a1396b0f7120a13bab0f7130a13b270830a13b330f7140a13d670f7150a +0eb589acff0115e666ff00266666ff010ab334acd27601f5e003f7d9f94d15f7020a +fb1afcd3155b0a0e3889acf803acf766a98576c17712e1da13dcf7b2f91815f7030a +fb5cfc9e158b388087538785858b769185ac8cad8cb38bae8bac8aa28a91918ba085 +91628f808f8bde08ff0056e66607ff00133333ffffff8000ff000e199afffffe8000 +ff0009b333fffffc999a96fffff88000ff0009199a82ff000be6667b08d42905ff00 +1d6666ffffd88000ff000b4cceffffed3333ff00014cccfffff44ccdff00004ccc88 +ff0000b334898e8b9f8ca18c9f8baa8baa8a9f8a91918ba08591698fffffe6b334ff +00046666ffffe54cccff0021999a08fb18f73a05fffffc6666ff00048000fffffc99 +9aff000480008b908b8f8b8d8f8f08e3e605a9abae93b38f91918ba08591748a6f8a +678b658b668c748c85858b769185c387ffffe84cccffffdcb334fffff6b334fffff4 +4ccc08746effffe0b33469ffffe64ccc78ffffe9cccdffffef999affffe51999ffff +f43333ffffed199afffffd666608ff015ccccc07cc8fb38b1e92878e821e13ec7281 +407d638889838d7b9185bf8897908b37080ef6fb5cb1f72caff8e8af01b0ebf75dc9 +f742eb03f8a8fb1b15f75a0afb5df98915640a0e30fb5cb1f72caef80fae01b4e1c4 +c9f717e103f812fb1b15f75b0afb24f8af158b0a0ef6fb5cb1f72caff8e8afc2bd01 +b0ebf75dc9f742eb03f85cf95d15f40af7c0fde415f75a0afb5df98915640a0e30fb +5cb1f72caef80faedabd01b4e1c4c9f717e103f7fbf89a15f40af78bfd2115f75b0a +fb24f8af158b0a0e98fb67b0f99fb3d47601cba5f815e403f7a7f94d15f7020afb00 +5715f74b0a0efb47fb7faef7c3adf796ad12b3a573d7f756dc13e4f740f88815f703 +0a5efc1d159c7c059d8fa992968b08d9aa6326fb004655591f13ec638b70b183a183 +a37e95748b08758179796bc54ee0f70fe0e9f70bf53ac02b1ff72bf78e059ba69196 +8b8f8b8f858d848b898b67856e8b08fb5f067c8b8292899108720613f4f75c0a0efb +d7fb73b7f8c8a7a877f77a7701f705da03f705f7d115f71a0a92f75415f7030a0ef9 +4a89adf8ceb66bad917712f5e0f807ebe3a913ae1c04d48915f7380a13cef7390a13 +9e710a13cef74d0afea9e115f8740713aeaeae99bcf76cd2fb43fb2efb5efb0d59fb +2129809fab1e13ce60f8c51513ae520a0ef89489adf7fcb09577f756ad12f5e0f807 +ebd6ac13bef986f84b15f74e0a13def74f0afcc7fbf715510a60f8c515520a0ef7be +81ba66ad87a6f7e3b072aef75ea9a67712b2e1f770daf6ac130fc0f8bcf84b15f74e +0a1357c0f7510afb63fbcf15f7050a138fc0f7060a80fffef84ccc157c0a132fc07d +0a1387c07e0a0ee581aff783aff7d5afc87612b0ebf821e063ac13f8f841f9c815b1 +0a57fb3615f70b0a13fcf70c0a13faf70d0a0e2cfb82b0f74ec455c8e2aaf785aa75 +b812abd062dd41c0f75adb9dc2139060f7aff93315d60aaffc1c152e5c78661e1399 +60f70e0afb4ffbb51513d260f70f0a13b260f7100af7ccf82115f7110a139560f712 +0a13b960f7130a13b0e0830a13b260f7140a13d4e0f7150a0ef7c581ba64a8f7bab5 +90d5f744a812f5dcf7dadcf772b013bff895f7181530ca58f3dbe8d7f74bf70c6dd4 +46707d78791e8b6caa86968aa886ab6d8b2b08294e25405c64a6cc1ef851078ba7ff +000eb334ff000ae668ff00284cccff0003199808a58d0590ff000066688eff000299 +988b90088b9e898d058b2e896764348d8b1e89898b78058b868ffffffd666890ffff +ff999808a58905ff00274ccc88ff000eb334828b6d08fb67fbdaf767078ba7ff000e +cccdff000ae668ff00283333ff0003199808a58d0590ff000066688eff000299988b +90088b9e898d058b2e896764348d8b1e89898b78058b868ffffffd4ccc8fffffffb3 +3408a68905ff0025cccdfffffd3334ff00103333fffff6cccc8b6d08fc8a078b6fff +fff2cccd7fffffd733338808137f70890587ffffffb33388fffffd4ccd8b86088b78 +8d89058be88daeb3e1898b1e8d8d8b9e058b9087ff0002b33387ff00004ccd08718d +05ffffd84ccdff0003199afffff0b333ff0008e6668baa08f78df7da070e54fb6176 +f9d7bc01dadcf792e503f7d6f8f515d0a248fb111f8bfb18fb16fb07fb102308f84a +07d5d5b6aab88b08fb364d15cc8eaf8b1e92878e821effffe6e66681ffffb4999a7e +ffffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffffcccc08ab +89059f957e4a1ffd1d078b6a81796d8208778505868a8a888c86089272f71fb08bf7 +6605f744f71bf73cf7218bf7348bf70165e7fb0d8b4b8b4b535254080ef3967693ac +f8dbacd27612f1bcf829bc133cf7b9f9c515cd0af722fb7115ca0a137ccb0a13bccc +0a0e5689acf7f6a771bf12ebdaf760da1398f7a3f93315740afb31fb4f15e70a13d8 +e80a13b8e90a0eef89acf766b5f878ab01f7a3b3ebb303f79bf7af154a0afbb1fb60 +15c2f725059098918fa38b08f7678bc5fb3d05ff000bccccffffdd8000ffffd9ccce +fffffce666ffffd06666fffffc999a85858b769185b08cc28cb28bb48bb18aae8a91 +918ba08591ffffd93334ff00038000ffffde3334ff00034cccffffee9998ff003033 +3408ffff396666ff0227800005ff001d199aff000dccccff0014b334ff001ce668ff +0000ccccff001fccccff00068000ff0001e668ff0007ccccff0002e664ff0009b334 +ff0004333408f724c505fffff34cccff00154cccffffeb4cccff00116668ffffe366 +68ff000d4ccc08ffff8cccccffffb0199805fffff1199aff001c6668ffffe1199aff +001380006a8b5d8b61648b5d8bffffdb3334ff001accccffffdfccccff00224cceff +fff4800008ffff1ee666fffdec800005714dffffe1800085ffffd480008885858b76 +9185a58cff0020b3338cff001e4ccd8bb48bbd8ab08a91918ba08591ffffda6666ff +0002999a5cff00044cccff000f999aff0029199a08f760f94415ba0a0efb1e81bb5b +b4f80bacc5abf5ab12afde4bd881b3ebb386d9133980f766f90f15d90a335615da0a +137c40f73ffbf115750adafb381513ba40760a137d40770affffc36666ff030e3334 +15ffffc3999affff94e66405fffff98000fffff48000fffffd4ccdfffffc66688bff +fff5e6688bfffff9b330ff00059999fffffa999cff0005999a8bff0005999a8bff00 +066666ff0003999897ff000d800008e7ff0062199cfffffd999aff0009e66405ffff +ed999aff0013ccccffffeb7fffff0000e668fffffae6678b878bfffffb3333ffffff +1998fffffd9999ffffff199c080ef7a289ac6cb2f777b29db1f788b36cacd47612f8 +41dff74aacb2ac9bae1333e0f8fef9c915f75d0afbeffc9815bb0afb4b0413b3e0bc +0a1373e0bd0a13b3e0f7560a137be0bf0a13b7e0c00a1373e0c10a13b3e0c20a0ee7 +81bc5ab5f74baef730ac12b2d34ed4f743d4f75dd71333f82bf93315f75e0afb22fb +b315f7570a137bf7580a13b7f7590aacfb3d15dd0a137bde0ad5b115df0a0ef681af +f8e8afc87601b0ebf849eb03f81cf9c815b10afbb0fdd515cf0af773f90f15d00af7 +57ffff894ccc15d10a0e3081aef80fae01b4e1f78ee103f7b5f93315a30af711fb6d +15ee0afb445915ef0aff0073cccc3715f00a0eef89acf766b5f80b7701f756f9a315 +f75f0af7179015f7600a4dfc8d154a0afbb1fb60154b0a0efb1e81bb5bb4f80bacf7 +627712afde4bd8f735d91336e1f91915f7610af71c9115f7620ad2fc3615d40a137a +d50adafb381513b6760a137a770a0eef89acf766b5f80b77d576c8bf01f775a7f76c +a703f775f94715f7630ab1fc2c154a0afbb1fb60154b0a0efb1e81bb5bb4f80bacf7 +29c412afde4bd85aa6f74bd95ea6133280f7daf88615f7640a1379006afb9d15750a +dafb381513b500760a137900770a0e6589ac6cb2f7b0b1f788b36cac12f4e0f74aac +b2ac9bae132780f727f9a715f7650af7179015f7600a8efc431530f74806133780c4 +0a13af80540a136780550a13a780c50a137780c60a0efb2881bcf765adf70eacf76b +7701b0dff75be103e8f92015f7610af71c9115f7620a22fc0c157f0adcfb5415800a +0e6589ac6cb2f7b0b1f788b36caccc76c8bf12f4e060a7f759ac7da7a4ac9bae1326 +b8f727f94715f7660af71afbde1513371830f74806b7979fc11ed606d68b9b63a146 +ff000c6666fffffe3334ff000accceff00021998ff0009ccccff0004b33486b47ceb +89938b8d8a8c888b7a88838a738b08133698fb930613af58540a136758550a13a758 +c50a137758c60a0efb2881bcf765adf70eacf72cc412b0df6da6f75ee143a613f5f7 +e2f88715f7640afb66fb6d15e20a13f2e30adcfb5415e40a13fae50a0efbbe89acf8 +dbacc87601f5e003f9ae048b828e848f8708ee37058d898e8a8e8b908b93908b938b +8efffffecccdff00036668fffffd8000ff0004999808ffffc4b333f701058693848f +808b6e8b7fffffea33348bffffefcccc08f7179015f7670ac7fd3915590a0efbd889 +acf7f6a7a87701f1da0378f93b15f7610af71c9115ffffe08000fffff58000ffffe9 +ccccfffff233341f8b868c85908608f1fb0d058d898d8a8e8bff000b33338bff0002 +cccdff000a66688bff000299988b8c8b8dfffffeb3338e08ffffc14ccdf723058794 +8390808b08cbfcc715e60a0efbbe89acf8dbaccb76c8bf0197a7cde0cca70397f946 +15f7630af747fccc15590a0efbd889acf7f6a7a877f73ac401ff00064ccdff00184c +cdff00476666dab7ff00184ccd03f775f88615ff00184ccd9705fffff36667e0ffff +d2199abd4c8bffffcae6668bffffc666675afffff533333508ff00184ccd7f0594c5 +ff00296666abff002ecccd8bff003099998bff0026b33466ff0009e66656085ffc0c +15e60a0ef681aff8e8af01b0ebf849eb03f74af9a715f75f0af7179015f7600a9dfb +3e15640af7e3fbb915650a0e3081aef80faef7697701b4e1f78ee103f708f92015f7 +610af71c9115f7620afb67fc59158a0af759f75b158b0a0ef681aff8e8afc176c8bf +01b0ebdaa7f76ca7e1eb03f768f94715f7630af70b4615640af7e3fbb915650a0e30 +81aef80faef729c412b4e175a6f76ca68de113eef7f0f88615f7640a13f6fbc7fbb9 +15ed0af759f75b158b0a0e8381aa74acf798adf7b9adc67612f3e0f76ce7133eeff9 +ac15f7680af7179015f7670ab4fb4715670a38fc8415680a13be690a137e6a0a0efb +7389acf7eec955a7f7847712efda1398d2f92115f7610af71c9115f7620a6cfbc115 +f7230a13b8f7240a13d8f7250a0e8381aa74acf798adf7b9adc776c8bf12f3e062a7 +f76ca77ce7133d80f728f94715f7660af7104215133e40670a38fc8415680a13be40 +690a137e406a0a0efb7389acf7eec955a7f743c412cda692daf716a6139ef7c9f886 +15f7640afb19fb2015f7230a13bef7240a13def7250a0ecd81b4f8dbac01e2e0f7f6 +bc03f750f99d15f75f0af7179015f7600afb27fb97156b0a0e4b81ba84a6f7e9acf7 +717712e3daf758da133cf705f92015f7610af71c9115f7620a13bc6bfd3015f10a13 +7cf20a13bcf30a0ecd81b4f8dbaccc76c8bf01e2e0b4a7f76ca7b4bc03f769f94715 +f7630a62fb3c156b0a0e4b81ba84a6f7e9acf731c412e3da58a6f76ca674da1336f7 +fbf88615f7640a13b9fb22fc9015f10a1379f20a13b9f30a0efb02fb76a3daddaaaf +f8eaad12a6ff00208000fffff78000ff00476666ff0085999ab2ccdf4bff00208000 +13f700ff018ab334f90b15f7690a13fb00f7280a13f680f76a0affff5e4cccfd3415 +f7160a0efb61fb76a3daddaaac8976f82aac12bbaa7ad2d7b2a5d755ab13c900f74e +6215f7160a13dd80fb1ef74715f72a0a13eb80f72b0a13eb40f72c0a13ed80f72d0a +0e8dfb76a3daddb2acf86ef7285cb2128eadf778e06bb2f75cad13e580f7bb6215f7 +160a13ee80c2f73715f76b0a13f680f72e0a13ee80f72f0a13f680f7300a13ee80f7 +6c0a0efbabfb76a3daddaac2f7edb201e4daa5b203f73f6215f7160afb14f86a158e +0a0efb08f803a9f777ad12d6a386dbf717cf74e413d4f718fb25159da39ca21f8b91 +869a8b988baea3a4c09af706acdada8be68bf70654cefb009e0813e8a898cfb68bd5 +8be631a95c8b458b547f6f8b0883fb14a3890594cdbab5c18b08b3c3773e52404245 +1f906d0513d4ebe464fb0c1f8b445e444571256564478b6608709e7c9e1e0efb68fb +6476f82aa4f762ad12ada08dcff705ca6fd513fae4fb79159f9b9ca21f8b9289948b +988baea89fbf9dbc9ce9b98bf68bcf60c3409c0813fc9d96c1b48bc78bd03ab05c8b +458b697f708b0883fb09a0890594cda5aacb8bb28bb8738b518b5d5c4a3d7e087207 +978d958d958b0813fabbdb80261f8b4c6a655c783c6b52408b67086fa184951e0ef7 +1b89acf7b6b5f78facd27601f5e0f7eae003f8fef70e15580afbbcf8d315f7020a0e +5289acf7f8bff75ea98576c17712e3daf766da13def7a5f91815f7030a21fffe99e6 +6615f76d0a13eef76e0a0e93fb7ea8f75fa8f8d2c454a812eadcf7a4db13ecf8a4f8 +4215ea89f719fb1e1effffcccccc8bffffbce668ffffde8000ffffa24cccffffa880 +00089107cc8eb38b1e92878e821e13dcffffe6e66681ffffb4999a7effffd7800088 +088d73058b88ff0002cccdfffffe3334ff00033333ffffffcccc0813ecab89059f95 +7e4a1ffc57078b6efffff63333fffff4cccdffffdecccdfffffd33330873890586ff +ffff999a89fffffd66668b86088b788c89058bd78daeb2d7898b1e8d8d8b9e058b90 +87ff0002b33387ff00004ccd08738d05ffffdeb333ff0002cccdfffff74ccdff000b +33338ba808ff01a4333407ff0057999aff00523334ff00344cccff001a9998ff002e +199a8b08cba157fb341ffcb7078b6efffff56666fffff5199affffdf999afffffbe6 +660873880586ffffff666689fffffd999a8b86088b788c89058bd18dafb2dc898b1e +8d8d8b9e058b9087ff0002800087ff0000800008738e05ffffe16668ff0003cccdff +fff39998ff000b33338ba8080eb472b86db5f4a5f785aef7977712add9f778d6f746 +a3137ff782f82815ba8bac78a16308fba00773706c79678b085a33b8f72c1fd9a4ec +f01e13bff793fc14157f8b808c808da8c3abc5b08b08a2987e761f594b6a671e3df8 +c715cc8eb38b1e92878e821effffe6e66681ffffba999a7effffd7800088088d7305 +8b88ff0002ccccfffffe3334ff00033334ffffffcccc08ab89059f957e4a1ffb2b07 +67a35f8e778b0839fb1054fb411f137f23ccfb09f7101eba8bb19fabac9662a680aa +82776b7a6b786908a482c6f10513bf928a968a8f8b08ded6b9e3ab79a15e1f568b57 +217c7008788bbfb21f0e627fadf8f6a593a412bad154dcf797d557dd13f2f709f72a +158bd3d9c2c0aee065e6618b32085a7743fb191e5ffb02a3f31f13ecf7b1f812158b +416970435940ae3db88bc508c0b8c7c71ea5072438482f1f8b39d55dd6640813f264 +80fb114f8b2008fb15f70b66eff743ccecdf1e8bf702fb00be47a90813ec978ff71a +c38bf70808c065f1fb381e7207cec8513f1f0efb137fa5f9127712b4cb5dcef766c7 +67cf13e4f77d99153e58c7db1f8bb2a1b6b9b808b3b105df4cca5b8b48084b714c26 +1e13d8f2f898158b3c3f5184878b8bfb13dd8bce8b9a8db1b4ac0876a405697c5465 +8b3c8b32d35cbf600813e44a6e3e388b3a085ba6fb01f737f70fd5d1f7091e8be738 +c54cb60813d89b91edc48bee8bd55bad6899087b7005b1668c5d8b7f080ea28bb8f8 +c4b201b9a9f86ec503f753f8f115f7968bfc24fccc05858388848b8508848e829c1e +f80c06d5b3773b1f8b7b81737974089f8205aea8aaa88bc908b170c62a1efbdd8bf8 +16f8b605989e949a8b960891888e761efc19065b8b8e95668e87558143836208a986 +05a1d09cbdd78b080efb1f8bb2f7f3b201b3a6f7d3c403f72af81a15f7148bfb80fb +fa05858289858b8508809b8b9d1ef75f06b2d7763b1f8b7b806f807908a08105aaa3 +a6ad8bc008bd55be461efb588bf77af7ef05949993978b910893858e801efb8c067c +8b829289910872068a5e855f835a08a588059fd4ad9ba98b080eef89acf766b5f80b +77cbf301f7c6f303f7c6f98615f7000a60fc6b154a0afbb1fb60154b0a0efb1e81bb +5bb4f80bacf700ef12afde4bd8adefa6d91333f73af8eb15850af713fc0215d40a13 +7bd50adafb381513b7760a137b770a0e65fb5ca8d6abc9ac6cb2f7b0b1f788b36cac +12f4e0eec9a0acb2ac9bae13d9f0f7942b15a2957d7671767d6d1f778b808f709584 +8488848b7fa4809c85ab8b08c8b9aab6b16ca3631f828b828a838908a4cedf8b0513 +e9f0c50a13ddf0f70a0a13ebf0540a13d9f0f76f0a0efb28fb5ca8d6abff00364ccd +ff0030b333f765adf70eac12b0dff721c987e113fef7792b15f7700a13fdf7710a22 +f80e157f0a0ef681aff8e8af8bebb9bd12b0eb67ebf7cdeb6beb13b4ecf95615b60a +13b2f82d16b60a13d9fb433715ce0af7e3fbb915650affff1e4cccf86b15f7720a0e +3081aef80faee4eab5bd12b4e185e9d6e984e113f8f7f3f92d15f40a13f4853115d8 +0a13f2f73d16d80a13f9fb8dfc0615ed0af759f75b158b0a0ef681aff8e8afff001c +ccccff003a4cccfffff2e668b7ffffdee668ff003c800012b0ebff005e3333a2ff00 +be6667ff0016e666ff006a8000eb13d780f898f99c15825fc78b0598959d96928893 +811ffc1b5f1593b74e8b057f817980848f83941f13e780ff0114b334ff000d199815 +f7730a13cf80f7740a13e780f7750affffba4cccffff84e66815640af7e3fbb91565 +0a0e3081aef80faedcc089c2b2bd12b4e1f774a68ae113ccf7ecf92d15f40a13eef7 +4c2f15b30a13deb40a13eeb50afb9bfc0415eb0a13cdec0af759f75b158b0a0ef681 +aff8e8afb4f301b0ebf732f3f743eb03f7b7f98315f7000ab3fb1515640af7e3fbb9 +15650a0e3081aef80faef6ef01b4e1c8efe4e103f750f8ea15f7010afb27fc1d158a +0af759f75b158b0a0ef681aff8e8afb4f340b612b0ebf732f3f743eb13def848f997 +158260dc8b0598959c96928793821ffbaa601594b6378b057f817980848e84941ff7 +1ca21513eef7000ab3fb1515640af7e3fbb915650a0e3081aef80faeceefb5bd01b4 +e1d1efdbe103f759f8c215f7010afb30fbf5158a0af759f75b158b0af70bf78815f4 +0a0e7789acf8dbacc4bd01f790e003f831f95415f40af728fcda156f0a0e3bfb7cdb +f8baace2bd01f813f89a15f40ab8fd3a15910a0efb9772b7f70aa6f871a9a67701ea +daf713a403f7c1ed156363646b1e7d8b838e8292ff002a8000deff000f8000a49c8b +089a98846b1ffb62a3158b33ff002480006ea27d085dffffab8000ff001a8000ffff +f180000596ff001c8000ff000c8000ff001c8000ff000f8000ac978698899b8b08bb +cac2d3b5759f731fffffd380008bffffe180004affffe88000568594fffffe800097 +8be608f83d07cc8fb38b1e92878e821e7281407d638889838d7b9185c58791888b40 +080ec67fb769acf70ba6f764a771bf12ebdaf756daf739aa13aff805f7a615fb3807 +8b4baf6da87c085b369e82bae3059a869b899f8b08c5dec0d4a57cb05e1f598b6549 +6b537b9c8bab8bce08ef078bc287bb74aa7aa16c97688b5a8bffffd24ccd7effffc4 +b33347fffff9e66684fffffa6667fffffd999affffffb333ff000966668aa6fffffd +b333ff0026b334fffffb4ccdff000a4cccfffffde666ff0004999afffffe199aff00 +036666838b081377e80a13afb1b0aea1b28b9f8ba07e97740895778d708b6d08f6fb +7b15badca1a5a78b08a29c7d765f5464641f788b7e8f8092080efb717fb7f70aa6f7 +69b201e2daf743a703f79bf7171597979892988b08a29c7d76605563631f788b7e8f +8092a4b6a0ab989808fb4480158b4cb061ae7d085b369e82bae3059a869b899f8b08 +c5dec0d4a47cb15f1f768b767e7b7b7778776b74617b9c84ab8bce08f76ff3079599 +8f941f9f078f888d861efb0cb206cc8fb38b1e92878e821e51ffffe5b3340585ffff +fc4cccfffff7666689ff0000999a84ff0002199affffe93334ffffffe666fffff6cc +cc8bffffad199a085dffffffe666057d877f831f7e07868c8a8f1ec6060efbd7fb73 +b7f9017701f705da03f705f7d115f71a0a0ef72e81b561a7f80db768aef7977712ad +d9f778d6f771d8139ff7e8f7ed15fba40773706c7d678b085a33b8f72cd9a4ecf01f +ba8bac78a16308d6fbb515f7bb07136fbab1bc91958b08c8c14625fb06592f2c1f6c +8b729877a40840f88f15fb2b07139f67a35f8e778b0839fb1054fb4123ccfb09f710 +1fba8bb19babac08589d079696969c949608136fa872af7fb68b08eef709def738f7 +0e36db351f5a8b5f76696608f75e07cc8eb38b1e92878e821effffe6e66681ffffba +999a7effffd7800088088d73058b88ff0002ccccfffffe3334ff00033334ffffffcc +cc08ab89059f957e4a1f0ef72dfb7ea8f757b75fadf805b968ae12afd7f776d666b0 +f770d913b680f89df81d15ceb842fb02357027211f7a8b678d69b408f78807a1c0be +a8ae8b08fb00fcbe15f74107a47daa83af8b08e8f705d8f73ef647ea2b1f6c8b5181 +5e450813cd80c30797899a801e818bfffff6b334fffff4ccccfffffb4cccfffff633 +34087f72056aa960985a8b08fb0e3a28fb182fc1fb12f7241f13b680c48bab9f9a98 +08fb4c078b6ffffff4999afffff54ccdffffe06666fffffcb3330878890586ffffff +800088fffffd80008b86088b788d89058bcf8daeb2d0898b1e8d8d8b9e058b9087ff +0002800086ff0000800008788d05ffffe0e666ff00034ccdfffff5199aff000ab333 +8ba70813ce80fb46f8c915b58bad72a65d08fba90771776889788b085133b5f72d1f +f3b6d2db1e0eee89acf766b5f80b77c77701ff01968000ff017c199a15ff00218000 +ffff9ee666ffff9ecccc8b05ff002e199af72815ffff9ee666fb28ffffe333348b05 +758b848eff0003cccdff000a4ccc08ff00663333ff0102b334918b05ffffe13334fb +ce15ff008ccccc8bc5fb3d05ff000bccccffffdd8000ffffd9cccefffffce666ffff +d06666fffffc999a85858b769185b08cc28cb28bb48bb18aae8a91918ba08591ffff +d93334ff00038000ffffde3334ff00034cccffffee9998ff0030333408ffff78cccc +ff01776666ff009b3334ff00ec999a588bffff85b334ffff45999affffcb4cccff00 +926666057c8270807e8b08fb77fcac05714dffffe1800085ffffd480008885858b76 +9185a58cff0020b3338cff001e4ccd8b08ff000a199a8bffffb7e666fb02be8bff00 +47cccdff006d800005ff0017e667ffffff999aff00178000ffffff6666ff0013cccd +ffffff800091918ba08591fffff1cccd8cfffff04ccdff000133337eff0003666708 +ff0053199aff00cc666615ffff906666ffff55cccd05ff00008000ff0002999aff00 +00ccccff0002b334ff0001199aff0002e66608c2f725059098918fa38b080ebe81b4 +f8e2b0b37701b0e6f84aac03f76bff0060999a15ff011a199aff01d9e66605ff0023 +199affffe09998ff00149998ffffd58002ff000d3334ffffd466669787ff0009b334 +8eff000b4ccc9186bf84bb81c2fffff08000ff000180007cff0004ccccffffef3334 +ff0005e66808ff002b4cccff0048cccc588bffffdd4cccffffc5999805ffffe0199a +ff0009b334ffffd7b334ff0008b334ffffc6e6668b368b446c5055ffffbd999affff +c33334ffffd86666ffff9e19988bffff97b3348bffff9bcccdff0022e666ffffa4e6 +66ff0046cccdffffc4e66708ffff9b4ccdffff566666bd8bff0056199aff0090999a +05ff002f8000ffffe3ccccff003b8000ffffef999aff0047e6668bec8be4b9cfe486 +948491808b443d476c2e8bffffc8e6668bffffcfcccdff00198000ffffda4ccdff00 +28199a08ffffe34ccdff00244ccc15ffffdb199aff00374ccdffffea999aff004700 +018bff0045cccc8bff00564cccff0016e666ff0047ccceff00248000ff002ce666ff +0031999ac8c5a7bf8bba8bff00254cccfffff68000ff001de668fffff01998080efb +3b81bcf803ac01b0e103f818f85a15ffffddccccffffd6999a05ffffe5ccceff0010 +999a65ff0009ccccffffd066668b288b21328bfb228bffffca999aff000c6666ffff +d14cccff00176667ffffdbcccd08ffffc33333ffffb64ccd058d7c97809b8b08ff00 +384ccdff0044999a05ff00214cceffffdfccccff002e1999ffffed999aff00394ccd +8bc78bc09ebddd8794838f828c695f6075608bffffd6199a8b65ff00186666ffffe7 +4cccb608ff00a68000ff00cab33405ff0006999afffff98000ff00094cccfffffd66 +66ff000b33348ba08ba7988baa8bff000f6666fffffb999aff000e199afffff78000 +ff000c800008ff0024e666b805879881957a8b08ffff02cccdfbc715fffff86667ff +00184ccdfffffbcccdff001bcccd8bff001ee6668bf702bbcdcd8bff0030e6668bff +000de66673ff0005999affffe3cccc080e4889ac6cb2f7cfb7f76cac12f5e0f7afac +137cf729165c0a13bc5d0a137c77436650218b084c0664799ebe1ff789f72a079895 +9d97918793821ffb34f711068bde9c90d18e91918ba085915e8affffd1199a8affff +d9e6668bffffdbe6668bffffd1199a8c5d8c85858b769185d1889c868b3808fb112b +0780807a7f848f83941ff4fb7c0613bc5f0a0e8d89acf8d3b29377128eadf778e0f7 +63ad13bcf7f2f70e158bff00f1b334f71dff00e7666405ff00238000fffff2199cff +00178000ffffe3999896ffffce3334968b998c948f84b986be8ab88b8c898d8a8bff +fff499988affffec199cfffffeccccffffe78000fffffecccc08ff003dccccff0068 +6668588bffffc0e666ffff9566680513dcffffd98000fffffe9998ffffd6199a8aff +ffdc80008b08350613bcf7300a13dc9fdbb9a5cd8b08bc06b095654e1f8bffff374c +ccfb6bfffe94b334be8bf738ff0115199a8bffff9de666058b387a863b8885858b76 +9185bc8cff0032e6668cff0028199a8bff002666668bff0032999a8abd8a91918ba0 +8591083b8e7a908bde08ff0147e66604ff0036199a07cb95b1af1ea106ff00084ccc +8bff0007e668ffffffb334ff00079998ffffff4ccc080efb61fb41a6f71cac8976f8 +2aac12bbaa7ad2f721d740ce5dab13b900bbf71e158f5a8e5c8b61958d958c908b92 +8b918b9289ff0001199affffffb3338cffffffcccdff00011999ffffffb33308ffff +ffcccdfffffecccd05ab86926ea055a058ae6ab68ba38b9d919f97969392968b958b +928995869186918191848b08848b8288868584848580877e87818686818b738b7998 +70d1fffff8999aff0011cccdfffffaccccff0012cccdfffff5999aff001133330813 +d600ff00086666ffffff800094ffffffb333ff0009999a8bc38bf2a68bee8bff0044 +4ccd5aff0027b33347ff00193333ffffc3cccdff00164ccdffffd83333ff000f8000 +8bc28bb4afa2ad8b0813d480f72c0a13da00f72d0a0efb3ffb64b1f75376f81fad95 +7712bdac13e8c7168b8bff0019e666ff00006666ff00126667ff0000199a08ffffff +b333ffffff80008e8bff00004ccdff0000800005ff000f999aff0000199a93ffffff +e666ffffe8199affffff8000089306a18ba0799e6808b243059a6f9b77997f9e7ca1 +83a78b08c1a79db0a28097761f7e8b7f827f7a7f798083818b768b75a074b60864d3 +0574ff002a199affffe64ccdff00151999ffffe2b333ff0001b333ff0000b3338cff +0000999aff0001199aff0000b3338cd5e9f3f731c9f1ff000f4cccff00193334ff00 +02b334ff0007cccc8b8f8b8f868e848b868b6f896e8b08fb4b0613d8ffffdfe6668b +fffff6999aff0006999affffee8000ff00036666fffffd999a8bfffffc6666fffffc +66668bfffffd999a8a5e8568835aff0008ccccfffffc4cccff000c999afffffe199a +ff000b999aff0002999a9fd4aaff00114ccca9ff0000b3340813e8f7148e0547fb06 +27fb243d22fffff76666fffff46666ffffff999afffffc999a8b86088493869a1e0e +fb1e89acf85776f733b10195e7d3e0e0da03f797f70e15db078bff00456666ff002b +4cccff0024e666ff002a199aff0026b334ff0027ccceff0024b334ff0026ccccff00 +264ccc8bd008e83fd5fb162afb025c236fa379a0b09da4a31e8b98839d8b9c8b968e +969695a5a1b193b48b08f29f435d527623fb291ffb70078b397a86458885858b7691 +85bc8ca98cbe8bbd8ba88abd8a91918ba08591458e7a908bde080efb3689aaf80cad +01a6e1bcdad0d403f785f7051597078ba0ff0024e666ff00186666ff00206666ff00 +12999aff0029b334a3aaff002b66668bff0038999a08e134b32d37305c55739f7ba3 +a49d9ca11e8b918a918b9208b4b993b7dca55b601e8b5e6a4bfb07850834078b3f7b +874a88888889858b858b858d848e88b98cff001bcccd8cff002f33338bff002ecccd +8bff001b33338ab98a8e8e8c928b91088b918a91888e4a8e7b8f8bd8080e8489acf7 +16b7f713adf78bad12f5e0f76cdc69e813fcf753f8ba154c0a60f7ab15ffffdc4ccd +8bffffc9b3338c648c85858b769185d1889c868b3808fbd2fb0d0780807a7f848f83 +941ff71664068b387a86458885858b769185b28cff0035e6668cff0025199a8bff00 +23b3338bff001a4ccd89df8b0813faf75bc0efe11f8beb48c234a4088d0713fc4f0a +b6fc7815f7110698959d97918793821ffb1bf713d00613fa4d0a0ecd81b4f7b7b7f7 +8cac01e2e0f7f6bc03e2f7d6153207fb60ff0083800064ff00668000f761bcf713f7 +461ea6be0798959d97918793821f4ef731068bff00504ccc9cff0003b334c7929191 +8ba08591658affffd733348affffe8cccc8bffffea80008bffffcf80008c5d8c8585 +8b769185d6849c888b3a08fb31fbf6f731078bde9a90d88e91918ba085915c8affff +cf66668affffd8999a8b648b628c648c85858b769185c7889c868b3808fb31570780 +807a7f848f83941ff888165e07fb047cfb1afb3d1e5b8bffffd7199aff0012199aff +ffe1e666ff001ce6665aba89d78bcc08c3070eca89acf9067701f761aa15f7760a0e +65937698b2f7b0b1f788b36cac967712f4e0f74aacb2ac9bae13a3c0937e15ff0009 +6666ff000b999aff0000999affffff6666051367c0b08cc78cac8b08f76b06bbdb89 +8b1f99bd9acd93befffff5999891fffff48002ff00023333fffff2e666fffffccccd +774368503f8b08fb0806617d9bba1f8bff006dcccde5ff006f33338c8b05e08b8e74 +8e5e9185a08b91918aa58aff001bb3348bff00224ccc8ba78cad8ca38591768b8585 +fffffd6666ffffd08000fffffd8000ffffefccccffffc8999afffffc800008ff007d +999aff009b333405ff00024cccfffff94cccff00024cce84ff00024cccfffff8b334 +ff000c6666fffffe3334ff000accceff00021998ff0009ccccff0004b334fffffe4c +cc99fffffd199aff00148000fffffce666ff0015333408ff0039b334ff00474ccc05 +fffffdb334ff000ee668fffff14cccff000f1998788b08ffffe0999affffd9666805 +fffffdb332ff000e1998fffffe4cceff000a1998ffffff6666ff000266688b8d8a8c +888b081333c07a88838a738b08fb930613abc0ffffe180008bffffc580008c638c85 +858b769185d1889c868b38088bfffeabccccfb19ffff5c3333058e7c997a9e8b08b0 +ff002d999a15ff003bcccdff0049e66605fffffe199affffc64ccc7dfffff3e667ff +ffd4199afffffbe66708ff00ade666ff0122666615ffffe3199affffdc66668bff00 +23999a05ff00e1b334ff00f2333415ffff5a1999ffff33ccccffffc433338b8bf748 +051333c0b7979fc11ed606ff002c66668bff0017ccce7dff00108000ffffe6333408 +0efb2881bcff00cfe666b1ff0077199aac01b0df03f818f85a15ffffd8b334ffffd0 +4ccc05ffffe680009e67ff000bb334ffffcdcccc8b348bfb05388bfb2c8bffffcf99 +9aff000a6666ffffd11999ff00183334ffffdb999a08ffffc46666ffffb7b333058d +7c97809b8b08ff00378000ff0043999a05ff0020b333ffffe0b333ff002be667ffff +edb333ff003ee6668bd78bc1aeb3bf889585907f8c66656e7b518bffffdc80008bff +ffd6cccdff00146666ffffe11999ff0031666708ff00716666ff008a1999ff007733 +34ffffff199a05979291961f8bff0028b334fffff8e666ff002a3332ffffe8e666ff +0020999a08ff002b3334ff0034800005879881957a8b08ffffbbb334ffff70199a15 +ff00003332fffffc6666ff0000199afffffc4ccc8bfffffc33348b8287fffffb3334 +80ffffffcccc0885ffffffe66605ff000a4cccff0049b33415ffffc2999affffb580 +00ffff84199afffffde666059ef705d194a38bff001a999a8bff001e199afffff5b3 +34ff000f9998ffffdce66608ffff528001ffff2d999915fffff68001ff001bb332ff +fffab333ff002166678bff0026b33308ff00608000ffffff4ccd050efb53fb40b8f7 +f9b7f7e8ac01f753e003f753f77a15fb2907fb48576f6a1effffece6668bfffff1cc +cdff000bcccd84ff000eb33385ff000cb333fffff73333ff000ccccdffffe7199a8b +087d6d767567c079a11fb88baa93b4aeff002bb333ff00254ccdff003a4ccdff0033 +b3338bf72308f713e50798959d97918793821f27f78d068bde9c90c78e91918ba085 +91658affffd4b3348affffd94ccc8bffffdbb3338bffffcb4ccd8c598c85858b7691 +85db889c868b3808fb8d2b0780807a7f848f83941f0efbd7fb73b7f806b2f72fa7a8 +77f711ef12eeef35da13fceef8eb15850a13fa99fbae15343f0782817c81858e8393 +1fdffb0706fb1887fb0f591e808b7e8f849281957f9b758b08807677796eaf7d9e1f +a08bbf8eb0aabab1a7d38bf75108dccd0797949a96908893821f40e606bd8fcb8b1e +8f868e831e6f806382468289858d7b8d8508c18696858b52080ed4fb54acf729adf8 +ecad01afe7f7eddce4dd03f7e2f90415c08bb978b367088bfc488b43056c72697f62 +8b08fb17fb00f703f754f766f702e2eb1fff008b8000fcf815ff00068000ffff604c +cdff00431998ffffd3b333ff003ae6688b08e2abb9aba27e99751f6f8b7d79867585 +7586776c8b086d7aa7f7341f8baa8bd48bf8940595888e7f1e808176787a8560a259 +97598b08fb47fb18fb2cfb58fb59f720fb0ff7401fff002db3348bff002a3332ff00 +078000ff0025999aff000e8000080e37fb50abf726b7f807ad01aee1f775dae2db03 +f7d6ff01706666159fffffe9999a8ffffff1199a8bffffe7e666088bfb468b57058b +798a867efffff93333ffffe8999afffff3e667ffffe53332fffffee666fffff03334 +8b085134b5f72bf3b5d5db1fff001e66668bff001ab334fffff3e666ff0015e666ff +ffe7800008ff00183334fffea3b33415ff00041998ffff5c1999ff00438000ffffd3 +cccdff003a33348b08e0aab8aaa17e99761f708b7d798676857686776d8b086e7aa7 +f7301f8be88b938bf7b405998796801e848bfffffa199afffff84cccfffff7e666ff +fff4b3347e7987887fff0007ccccffffe06666ff0014800064ff0008b334ffffd599 +9a8b08fb0e3127fb182ecafb10f7241fff002ce6668bff001fccceff000ccccdff00 +1b8000ff00114ccd080e8381aa74acf798b2f7b4ad12f3e0f76ce7133cf7a4f8fe15 +670a38fc8415680a13bcff001cb334ffffd16666ff002b4cccffffd5999ac78b9a8b +9c8d9590ff00038000ff0006e666ffffff8000ff0009199a87935e8b72ff0021999a +71ff002b666608fb12f76605b699e5bf8bf48bbd7ab467ad5bb84d8e4c8b5c8b6184 +678b688b5c8c5c8c85858b76918508d1889c868b3808fb55480782817c81858e8393 +1fd6fb3d06137c6a0a0efb7389acf75cb2f6c955a712efda13d8f744f7fa15fffffe +4ccdb3fffffe6666ff0019b334fffffb4ccdff000a4cccfffffde666ff0004999aff +fffe199aff00036666838b6f807182468289858d7b8d85c18696868b51085c4c0782 +817c81858e83931fd2fb01068b387f874d8785858b769185ae8cb28cb38bb38bb98a +ae8a91918ba0859145907f8e8bde08f701ee0797949a96908893821fffff94800006 +ff00024ccdff00164cccff000a9999ff0013ccceff000a999aff000fe6660813e896 +9ba2ac978b948b94fffffd999aff0007ccccfffff5b332ff0007999a81ff000b3334 +fffff2b334ff001166668b08a3a2a4a4ff0013199a79ff001ce666611f5c8b625f74 +64088580fffffb333393ffffffcccd90080e7789acf856b7e4ac01f790e003f7e5f7 +0e15ff0087b334078bff001dccccff0001199aff0010e666ff00106666ff001d999a +08ff00514cccf727ff003233348b0598959d97918793821fffffdc33348bff000dcc +cca405a7ff0032b334ff00164ccc94ff002cb334ff00044ccc91918ba085916f8a6b +8a748b748b678c6b8c85858b769185ff002c4ccc88ff000fe668fffff66668ffffea +9998ffffd7999808ffffece66867ffff2db3328bffffeccccdff0021cccc05ffffe7 +ccccff002a999c8fff00099998c38e91918ba08591678a658a638b648b6a8c6d8c85 +858c769185b588ff00113333fffffa1998ff00228000ffffc5e668089875ffffe44c +cd8b0580807a7f848f83941fff003ee6668bff005c199afb2f05ff00118000ffffe2 +8000ff00038000fffff580008b6608fb13078b387a863b8885858b769185bc8cff00 +3466668cff0026999a8bff0026b3348bff00324ccc8abd8a91918ba085913b8e7a90 +8bde08ff00366666f7fb15ffffbb999afb150583fffff0ccccfffffb3334ff00014c +ce82ff000fe66608ffffb81999f713050e3bfb7cdbf813b2f714ac01f760fb3415ff +000f999aff001bcccdff000d1999ff001c9999ff000c4ccdff001d999aff0037999a +ff0086199aff0026999aff005a8000ff0023e666ff0050666608ff0052e666069794 +9a96908893821fffffb5999a06ff0009b332ff00156666ff0009b334ff0015199a95 +ff00158000ff0013b334ff002a4cccff000e4ccc9bbaff0005b33491918ba0859177 +8a748a6f8b6d8b6c8c6d8c85858b76918508ff001f999a88ff00206666857b6708ff +ffdc199a38fb298bffffe51999ca05ffffedffffff002a3334fffffacccdff001280 +00c3ff00044ccc91918ba08591668a638a678b698b708c778c85858b769185ff0027 +b333869882ff001a33334e08ff0016cccc56ffffb94ccd8b0582817c81858e83931f +ff005f80008bff00498000fb3f05ff0008b333ffffebe666ff000f4ccdffffd2199a +816ffffff4199affffde999afffff3e666ffffe466667c6c80777d82728b7d8b878e +808b086e7c6d7e769f7ba61fa08bb393afcb08ff00843334f81b15ffffd199982005 +84ffffefe666fffff7999afffffd4ccdfffff78000ff0013cccd08ffffd2cccdf505 +0efb1e81acf804bb62b412e6d9f735d84bde13b4f73df75815f718078b9891929391 +a5a0ada2a78bbd8ba1638b6c8b5e765d4178083cf7381513d885aafffff56666a6ff +ffcd999a8bffffd9b3338b677affffeb4ccd77ff0001b333fffff3b3348ffffff799 +98ff000b4ccdfffff9b334ff00078000ff00063334ff0010ccccff0009ccccff000c +b3348b08a88c645d1ffb2707fb22d970d4dddec1c4a37f97746e79767e1e8b848c84 +8d878c888c858b80086c618065695c9cf7051e8b928e8f8e8c08e1a00513b4eba3d0 +c08bcf8bdd53a5458bffffdd33348bffffe1cccc835f6908777b050e3781b7f807ad +01aee1f775da03f7d6ff01706666158d0aadfffeaa199a15ff000a999affffedcccd +ff0013ccccffffedb333ff0025999a8b08bcafb390928295871ffffffa33348bffff +f619987bfffff0b3348b08648ab3b81ff7bc07998796801e848bfffffa199afffff8 +4cccfffff7e666fffff4b3347e7987887fff0007ccccffffe06666ff0014800064ff +0008b334ffffd5999a8b08fb0e3127fb182ecafb10f7241fff00324ccc8bff0021e6 +68ff0010199aff001dccccff00146666080e4782adf807b701e9daf775e103f759ff +003d999a1577ff0016666687ff000ee6668bff0018199a08f77a078b9d8c9098ff00 +06ccccff00176666ff000c199aff0024cccdff0001199aff000fcccd8b08c5d859fb +192361373b1fffffe1999a8bffffe54cccff000c199affffea199aff001880000869 +ff0155e66615fffff56666ff00123334ffffec3334ff00124cccffffda66668b085a +6763868494818f1fff0005cccd8bff000433339ba08b08b28c635e1ffbbc077d8f80 +961e928bff0005e666ff0007b333ff0008199aff000b4ccd989d8f8e97fffff83333 +ff001f999affffeb8000bcfffff74ccdff002a66668b08f70edbff007ae666ff0077 +199af7134cdbfb241fffffcdb3338bffffde199affffefe666ffffe23333ffffeb99 +9a080e2581adf807b7f775ad01d9daf769e103f742f7ff15780a7af71015f72db9a3 +ac1ea98b9b7f99689379997fa08b9f8b9b9c8ba18b9c829d769b719d718e658b0837 +2e42fb311ffc21078b64ff00003333fffff5cccdfffffbcccdffffea333390839087 +978bff0006199aff0005cccdff0009e666ff00094ccdff0007b333ff0008e666ff00 +0a4ccd97918b96fffff6cccdff0016e666ffffecb333ff001dcccdfffffa8000ff00 +234ccd8b08f1f70be8f733f70e31d6341fffffd5199a8bffffd9e6667a6c6ffffff9 +b333fffffa4cccfffffc4ccdff0001b3348b94080efb3681acf803bc01b1e2f74de1 +03aef7e6158f829387948aadb7b6a1b68b08d4c841fb09fb025b49491f508b83ae87 +ae88a67d94768b08766f7e6c54c463ebeef5e4f722f71543e4fb121f4f8b56785939 +080efb3f81bcf711a4f76dac12b0e1f74ee572ac13f4f80af71515f7770aac98158b +ff0011b333fffff96666ff000de667fffff4999aff00076666fffff58000ff0006cc +cdfffff16666ff00013333fffff2199a8bffffb080008bffffbe199affffa03333ff +fff06666ffffe0cccd55ad7fdf8bce8bd6b8dfd28b0813f8c18b986f8e6dff0002b3 +34ffffe56666ff00064cccffffe9999aae8b08a2a29ca3ce40ab46fb1a3723fb101f +8b33ae3bd962776a786e776a9184ff000e666686ff000b999a8a9daaa2af9fab9788 +a88b988bd38becc18bed080e2ffb50abf726baf803aef760a8a57701b2e0f76fd6e6 +db03ff0158b334fffff6e6661596fb20ff003eccccffffd9199aff003680008b08e0 +aab8aaa17e99761f708b7d798676857686776d8b086e76a9f72e1f8be38b988bf85a +05cc8eb38b1e92878e821effffe6e66681ffffba999a7effffd7800088088d73058b +88ff0002ccccfffffe3334ff00033334ffffffcccc08ab89059f957e4a1ffb260774 +985f94778b498b5f756365606073508b418bfb0fc731f7008bb38bbdabb9b0087407 +8bfffff68000ff00003334fffff6e666ff00006666fffff74ccd08ffffff6666ffff +eb4ccd05f7210468075e676476718b558b54c68bf7118bd398b39aa0aabab58e9f8b +ba8ba676a365080e5481baf803aef775ad01b2e0f76fd6f5dc03f7ebf871154f0774 +985f94778b498b5f756365606073508b418bfb0fc731f7008bb38bbdabb9b0088d8a +8945a28b05a19db798c9960888a25b9005ffffea999aff00023333fffffc6666ff00 +05cccd8bbd08f7fa07f70c9dd1c01ea38b92788f779070997da68ba58b94a08b9c8b +9c809b7c98779d7597628b0848354cfb321ffc13045e676476718b558b54c68bf711 +8bd398b39aa0aabab58e9f8bba8ba676a365080efb3c7fbcf767b2f709ac01b0e1f7 +59e203f7d1f7b315fb47890581869094dfc3a0b11fa38bc4879efb0508fb98fb5315 +7f8a83838881b357b066d78b08ff006d3334ff006eccccff00644ccdff007bb333f7 +323bce27fb1f583137809285971ff79c8d05ffff66cccdffffb6b333ffffc63333ff +ffc94ccd1e518b63a066b1080efb2883acf70eadf765bc01bbe1f758e203f7def727 +15f7540a3af75415f7550a0e8781acf807bb01bbd8f752df03ff011ee666ff014b66 +6615ffff93999affffc9199affff7d8000ffffb666668bffff9d199a085aa54af704 +f73db7f71df7011e8bff0024b334fffff88000ff00224cccfffff1ccccff001db334 +ff00186668ff00114cccff00219998ff0014199aff0014999aff00073332fffffc66 +66fffff66668ffffff4cceffffefb332ff0002199afffff23334ff00069998ffffd3 +8000ff0017e668fffff54cccff000fccccff00026666ff0019b334ff0003ccce9fff +000f199aff002b3334ff002acccc08fffff23330ff001233340577fffff0e666ffff +f5e668fffff96666ffffea3334fffffcccccffffed3332fffffd3334fffff8999a9a +fffffcccccff0015ccccfffffab334ff0023999aff000bb334a3ff000d1998ff001b +333408fffff08000ff0008e66605ffffdb6668ffffd74ccc57ffffdd8000ffffcc66 +666effffde999aff002c999affffcbe666ff001c199affffbde6668b498b3a546858 +ff00024ccdfffff74cccff0004b333fffffab3349689b3b2beaebb8bff00184ccd8b +bdfffff6199aff001f9999ffffcb4ccc08ff0010999affffda333415ff0007333474 +ff00044cccffffe3cccc8bffffdd999a08fb2c486a5c5c6eabc21e8bff0048999aff +00538000ff00388000eaff00368000080efb5a81b1f74aacf737ac12b7da4fd2f723 +d513f4f70ff70d15f7780a13ecf7790a13f4f77a0a0efb5b81b0f745b2f73ba812f7 +9bd250d913e8f7a7f7041556656b501e5c8b659b64a6fffff8800087fffff96666ff +fff94cccfffffe199afffff6b334ac6cc16eca8bf71e8ba6d58bc40813f08ba28bc0 +31a9088d07ff002e4cccff00134ccdff0018b334ff00237fff8bff002b333408b36a +d3fb0b3e4967676e9e83971ea18b969b949c97a1a4a4b28b08abb66e4b4e6779601f +8a8b5f90858b087980857f7f9382a11f938bae90938b08c3ad62531f0efb2981b0f7 +45b2f73ba8ff00a919987712f79bd250d9ffffc4e666ff0011ccce13f8ff00cf999a +ff01b6333415ff0000b333ffffff800005fffff7b334ff0000ccccfffff74ccdff00 +008000fffff6b3338b083e4967676e9e83971fa18b969b949c97a1a4a4b28b08abb6 +6e4b4e6779601f8a8b5f90858b087980857f7f9382a11f938bae90938b0813f4c3ad +625356656b501f5c8b659b64a6fffff8800087fffff96666fffff94cccfffffe199a +fffff6b334ac6cc16eca8bf71e8ba6d58bc40813f88ba28bc031a9088d07ff002e4c +ccff00134ccdff0018b334ff00237fff8bff002b33348bff001f4cccffffebccccff +0032ccceffffbe4cceff0014b332ff000dccccff001accceff00156666ff00224ccc +ff000f4cceff0010199aff00013332fffff5ccccff0006cccefffff13334ff000819 +9afffff4999aff001a3332ffffdb6666ff001a199aff0001666698ff00094cceff00 +153334ff000f1998ff000ae666ff0016999aff0012e666ff0039ccce08ffffeb6666 +ff0009cccc05fffff5199affffe96668fffff9e666fffff59998ffffee199afffff3 +3334fffff0800080fffff2b334ff000a1998fffff33332ff0011e6680813f2ffffeb +199aff001d4cccffffff6666ff001a9998ffffff4cceff001e333408ffffee3332ff +0000cccc05fffff0b334ffffc64cd068ffffc4999867ffffcb3334080e2081caf71a +c2f71aca01adb2f7e0b70314e0f79af84b15fb01fb0b46fb38fb1df70e3cf703f722 +b3cbc01f8bbb66b44d9ed2a1a7af8bb108c16bd5fb2f1efc1604fb1953c7ecbaadf7 +0bf729f6b574531f8b646e754c7e64966193758b086d7b8278789c83ad1fb58bab94 +a492cb7ca66f8b6708474e88391e0efbb0fb62b5ff01656666ff002be667ff00a0b3 +33ac01f715da03f715f7c715ffffba4ccdffffa8cccd07fffff43334ffffffb334ff +fff5cccdfffff2999a8bfffff066668bfffff73333ff00053333fffff9cccdff0009 +8000ff0000666608ff005e8000ffff6a999a06fb48696f6c1e7e8b85928495829780 +986f8b087e747e766ab27aa01fa28bb48cb5aec1b6adcd8bf71208ff00806666ca07 +98ffffff999aff000a80009d8bff000bb3338b94fffffc8000ff00054ccdfffff54c +ccff00004ccd08ffffb7b334ff0045b333068bde968ec89091918ba08591678affff +d4999a8affffdf66668b6e8b5b8c648c85858b769185c8879b878b38080e54fb82ac +f757b7f807adf775ad12afe146d8f767daf3dc13fbf7ebf87115ffffc4333407ffff +e3999aff000f9998ffffde6666ff00063334668b08fb0e3527fb182ec6fb10f7241f +c48ba99f9a98087307fb205c4b411e13f75c8b68b2839ffffff84ccdff0013199aff +fff7b333ff000fe666708b08767e7c7657f064c31fc08bff002a199aff00086666ff +0027e666ff001c999ac0b1a1d48bf108f829078bff00058000ffffff6666ff0004e6 +66fffffe999aff0004199a08ff002a800007f70c9dd1c01ea38b92788f779070997d +a68ba58b94a08b9c8b9c809b7c98779d7597628b0848354cfb321f89fb2115fbac07 +71776a89788b0813fb5138b5f72bf3b1d5db1fb58bab73a65e080e2afb82aaf759b7 +f807ad01afe0f770da03f8389715f82907998796801e848b8484847f087c73056aa8 +60965a8b08fb0e3527fb182ec6fb10f7241fc48ba99f9a98087307fb205c4b411e5c +8b68b2839ffffff84ccdff0013199afffff7b333ff000fe666708b08767e7c7657f0 +64c31fc08bff002a199aff00086666ff0027e666ff001c999ac0b1a1d48bf1083cf7 +d815fbac0771776a89788b085138b5f72bf3b1d5db1fb58bab73a65e080e4181acf7 +29acf75dac12addef78fd567a713f8f804e615650776ffffecb33370fffff54ccd69 +8b08fb0d5beef6f706d4cad31f13f4e28bb2789d31ff00094cccfffffc3334ff0009 +66688dff00094cccff0003ccccfffffee666b7fffffe3334b7fffff7e666b7638b4a +935d8b08fb20292cfb1d25d4fb07f72e1f13f8d88bff0034b3349eff00334cccb108 +b7078bff0038199a91ff0013e666aa9091918ba08591798affffe3b3348affffe14c +cc8bffffe1b3348bffffd74ccc8c6e8c85858b76918508c88790ffffee199a8bffff +c4e666080e43fb5eaff8c8ac01f73ebad0c603ff017db334f7df15ffff939998ffff +0d4ccdfffff0b334ff0022b333ffffaae666f76405ffffec999aff002f6666fffffd +3333ff000c999aff00354ccd9291918ba085916a8a688a6a8b6a8b6d8c6d8c85858b +769185bffffff9b334ff00073333ffffef9998ff00153333ffffcdb33408ff008999 +9afbda623905fffff76666ffffeecccdfffff7999affffec33338b780865ac72b8c5 +b2afb41e8baffffff94cccff00344ccd62ff004fffff08ff007a199aff0118b33405 +ff0013199aff002bccccff000b8000ff00193334c29091918ba08591778a738a718b +6a8b698c728c85858b769185c187ff0007199afffff3199affffe9999affffcde666 +08ffff5b4cccfc60158b9b9ba9a2b4a6468e808b7f08797b7d79757e98a31e0efb33 +7faeff0178ccccff0027333401f70dbad5d003f7657f15ff00558000ff00108000c5 +9f1f8ba989a554ed08cbf305ff0022199aff00376666ff00156666ff0016999aff00 +1e80008bff000c80008bff000a199a86ff000066668cff0005800091ff0004e666ff +000b4cccfffffe999aff0009b3348493fffff4e66691ffffed999a8b5a8bffffe5b3 +34ffffdee666ffffdaccccffffc5199a085434ffffc18000f70405ffffde3333ff00 +3c999afffffacccdff00066666ffffc680008bffffeae6668bffffdb999a7e8388ff +fffc8000fffff4ccccff0002999afffff6ccceff00066666fffff7e66694ff000380 +00ff000f8000ff0001cccc8f8ba88bff0007e666ffffee8000ff001c999affffccb3 +3408dafb22786905654983858b6c0865b571b91e62d4158b9b9ba9a3b4089180059c +6f96648b7e08797c7b79757899a31e0e54fb6b76a6a9f73dbff7f8ac01e1daf766da +03f80bff008f199a158bffffeae66682fffff3b33383fffff74ccd65ffffdab333ff +ffcd6666ffffea4ccdffffd8999a8bffffeb999a8b76ff000d199afffff46666ff00 +16e66681ff0013cccd89ff001b33338ba908f72c078bdd958fbf9090918ba086916f +8a698a638b638b6a8c6a8c86858b769085c38696878b3908fb29078b54ff0003b333 +ffffcf8000ff00174ccdffffe18000ff0010cccd75ff001f33337fae8bff0031199a +8bff003be66698c8cfff00036666ff0003cccdff00066666ff000a33338b7d08ffff +ff3334fb54054a87638b1e848f88941ea495d699b38e8d93899b8591578e7f868bdf +08f828078bdeff000bcccc8fc58f91918ba085916a8affffdb33348a638b658bffff +df33348c6f8c85858b769185ff0032cccc8794878b38080e4089a8f801baf775ad12 +e3d6f723d677d613f4e3f86715fc1f078b6efffff7199afffff5999affffdde666ff +fffc66660878890586ffffff800089fffffd80008b86088b788d89058bce8dafb2cf +898b1e8d8d8b9e058b9087ff0002999a87ff0000666608788d05ffffdf4ccdff0003 +6666fffff5b333ff000a999a8ba808f78b07bbbab6a5a88b08c3a17b3a1ffb73078b +6efffff6e666fffff5999affffde199afffffc66660878890586ffffff800088ffff +fd80008b86088b788d89058bcf8daeb3cf898b1e8d8d8b9e058b9087ff0002999a87 +ff0000666608788d05ffffdf6666ff00036666fffff5999aff000a999a8ba808f768 +07f267bf431e648b507b484808f71407f730bba3ac1e13f8a98b9e7e986a937a9880 +9f8b9e8b9a9a8ba08b9b829c779a729c7192658b08373042fb321f0e40fb71aff74b +a8f801baf775ad12e3d6f723d677d613faf848f70115f74307f267bf431e648b507b +484808f71407f730bba3ac1e13fca98b9e7e986a937a98809f8b9e8b9a9a8ba08b9b +829c779a729c7192658b08373042fb321ffc1f078b6efffff7199afffff5999affff +dde666fffffc66660878890586ffffff800089fffffd80008b86088b788d89058bce +8dafb2cf898b1e8d8d8b9e058b9087ff0002999a87ff0000666608788d05ffffdf4c +cdff00036666fffff5b333ff000a999a8ba808f78b07bbbab6a5a88b0813fac3a17b +3a1ffb7007fb0095fb2c5f1e808b8592859483958197718b0880787f796dad7d9d1f +9f8bad8bb0aa08bab19bef8bf735080efbc189acf75bb3f72c9ff4ed12f4ed34da13 +f0f3f8eb15850a13f4e6fc7115f700c407ff000c4ccc8dff000ab334ff000fcccd8b +ff000999998bff0004cccefffffc4cccff00068000fffff6b334ff00014ccc0848ff +00334ccc06ff0031b3348fcb8b1e8f868e831effffe3800080ffffd8800082468289 +858d7b8d85ff00368000fffffae666ff000a8000fffffa199a8b52085c44077fffff +fdb33482fffff14ccc8bfffff666668bfffffa66678efffffa3333948908dbfb0006 +8b3880884e8685858b769185ac8cb28cb38bb38bb18aac8a91918ba08591084e8f80 +8f8bde080efbce80c2f8177701dfda03dff7d615f77b0a0efbd689acf803ac01ecda +03f744f7c715f77c0a0efbc889a8f78ab78fb9f7cb9f01f6d603f765f7d415838bff +fff86666ff00014cccfffff8999aff00024cce08ff0103666607cc8fb38b1e92878e +821e7281407d638889838d7b9185c58791888b4008ffff42666607fffff9199aff00 +024ccefffff8b333ff00014cccfffff833338b608b74647d509185958a968d95ac95 +9aa58bff000933338bff0009e667fffffd999aff0009e666fffffc199a08ffff424c +cc078b3880864e8885858b769185ae8cb08cb38bb38bb18aac8a91918ba085914e8e +80908bde08ff0092333407ff00034ccdffffff3332ff00034ccdffffff999aff0003 +66668bb98ba8b297c7858f818e808a7d618081758b080efb818aa8f791addca9f76c +a99b95129da9f71dd66ca713fef7eef7cf1539f7a006cc8fb38b1e92878e821e7281 +407d638889838d7b9185c58791888b4008ffff41e66607ffffeb4ccdff001f6666ff +ffe24ccdff0019b334ffffce66668b08755e77614db176e51fb2fb33068b3880864e +8885858b769185ae8cb08cb38bb38bb18aac8a91918ba085914e8e80908bde08f733 +dd07fb35ad1550065b6d9ea8a39f94a31fc28ba359996c080efbf2fb7cabf9d2a9bc +7601fb46d603f73dd3158bc48bf85a05cc8eb38b1e92878e821effffe6e66681ffff +ba999a7effffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffff +cccc08ab89059f957e4a1f8bfc468b528b6705fb45d15cc7e0aab8aaa17e99761e70 +8b7d798676857686776d8b086e76a9f72e1f0e3cfb7faef75aacd3adf796adf768a9 +a67712eada61d7f756dc13fe80eaf70e158b3880864e8885858b769185ae8cb08cb3 +8bb38bb18aac8a91918ba085914e8e80908bde08ff00e1b33407ff00134ccdff0023 +b332ff00188000ff000b999aff001633338b08f7258bfb3cfbb49c7c059d8fa99296 +8b08d9aa6326fb004655591f13fd80f77d0a13fe80fffff5cccd8bfffff88000ff00 +033334fffffbb3338f08ff0092cccc07cc8fb38b1e92878e821e7281407d63888983 +8d7b9185c58791888b40080ef75781bf71a7f7f6ac12dadaf753daf753da141c137c +f902d215ff00014cccffffe24ccc8dffffdc0001ff0004b334fffff5b333ff000219 +98fffffb6666ff0001e668fffffc999a938ba796a594d0948d91899b899155908090 +8bc508f757078bdd9890c28f91918ba085916d8a658a638b638bffffe133348c6d8c +85858b769185ff0032cccc8696878b3908fb38078b7682fffff3b33383fffff74ccd +0813bcffffd86668ffffd94cccffffda8000ffffebb334ffffe119988b08656fa3ce +1ff742078bdd9390c18f90918ba08691728a668a638b638b6a8c728c86858b769085 +bd8794868b3908fb33078b7d8b7d8c7f5b565e7e648b086575a1ce1ff744078bdd95 +90bf8f90918ba08691728a668a638b638b688c6f8c86858b769085c28794868b3908 +fb3207329a45e31eff003333338bff003db333ff0012cccdff0034199aff0036ffff +8eff0003333491908dfffff76666ff0009800062ff00268000ffffdf999abf8bc58b +ff00344cccff00226666ff0029b334ff002e999a08ff00049998ff0005199aff0006 +e668ff0006e666ff000080007f080ef73981bbf800a801dfd6f749d6f747d603f8e6 +fb33158a3ca28b05a19db798c9960888a25b9005ffffea9998ff00023333fffffd66 +68ff0005cccd8bbd08f865078ba7ff00099998ff000ae666ff00206668ff0005199a +089e8e05ff0004e668ff0000ccccff00031998ff000233348b90088b9e898d058b47 +896864468d8b1e89898b78058b86ff00041998fffffdccccff0004e668ffffff3334 +089e8805ff001f999886ff000b6668808b6f08fb89075b5a6b74688b086571a4cd1f +f776078ba7ff000a999aff000ae666ff00206666ff0005199a089e8e05ff0004e666 +ff0000ccccff0003199aff000233348b90088b9e898d058b47896764478d8b1e8989 +8b78058b868ffffffd999a8fffffff6666089e8805ff0020ccccfffffaccccff000a +3334fffff533348b6f08fb62078b7c8b7e8d7e5b576b79648b086571a2cd1ff77807 +8ba7ff000a4ccdff000accccff0020b333ff00053334089e8e05ff0004e666ff0000 +ccccff0003199aff000233348b90088b9e898d058b47896863478d8b1e89898b7805 +8b868ffffffd999a8fffffff6666089f8805ff001eb333fffffb6666ff000b4ccdff +fff4999a8b6f08fb6107329a44e31ec18bbca5c4c7925dac63c28bc98bb5aebbbc08 +8e8b88fb05050ef74ffb71aff74ba8f7fca377bb12f1d6f74dd6f74fd613def94ff7 +0115f73f07e47ad1331e558b5674524f84b868b1538b4d8b5d695c5908888b8edf05 +ff00026666fffffe6666ff0000999afffffd999a1e13eeffffe38000806482ffffb9 +800080088d73b68705ff000e6666fffffe4cccff0007999afffff5b3348b5908fb8d +078b6efffff7199afffff5999affffdde666fffffc66660878890586ffffff800088 +fffffd80008b86088b788d8905b38ca48cb28bb48ba08ab38a088d8d8b9e058b9087 +ff0002666687ff0000999a087d8d05ffffe3999aff0004199afffff16666ff0009e6 +668ba808f78c0713debabcb0a1ae8b08b1a773481ffb78078b6e7efffff5e6666eff +fffc199a087c890586ffffff4ccd88fffffdb3338b86088b788d8905b38c9f8cb28b +b48ba08ab38a088d8d8b9e058b90fffffbe666ff00023333fffffb199aff0000cccd +087f8d05ffffe3199aff0004ccccfffff0e666ff000933348ba808f765078b998b99 +8a97bbc0ae9cb28b08b1a775481ffb77078cfb0094fb2c5f8b808b85928594839581 +97718b0880787f796dad7d9d1f9f8bad8bb0aa08bab19bee8bf736080e43fb71aff7 +4ba8f7fca377bb12e6d6f75ad613dcf73af70115f76107bec7b19cb78b08c0976a45 +1ffb6c078b6e80fffff6999a6bfffffb6666087d890586ffffff4ccd88fffffdb333 +8b86088b788d8905b38c9f8cb28bb48ba58ab38a088d8d8b9e058b9087ff00028000 +86ff0000800008788d05ffffe0b334ff00034cccfffff54cccff000ab3348ba808f7 +6507e477d0311e588b5b7d4b4008888b8ee405ff00026666fffffe6666ff0000999a +fffffd999a1e13ecffffe38000806482ffffb9800080088d73b68705ff000e6666ff +fffe4cccff0007999afffff5b3348b5908fb8a07fb0095fb2c5f1e808b8592859483 +958197718b0880787f796dad7d9d1f9f8bad8bb0aa08bab19bef8bf735080e43fb71 +aff74ba8f7fca377bb12e6d6f75ad613dcf800f701158bfb359327ba65b06cb28ba2 +8b089dad99a99d7897801f718b817f838185828584808b085f95f72af7021ff76207 +e477d0311e588b5b7d4b4008888b8ee405ff00026666fffffe6666ff0000999affff +fd999a1e13ecffffe38000806482ffffb9800080088d73b68705ff000e6666fffffe +4cccff0007999afffff5b3348b5908fb8d078b6efffff6199afffff58000ffffdee6 +66fffffc80000878890586ffffff800088fffffd80008b86088b788d8905b38ca48c +b28bb48ba08ab38a088d8d8b9e058b90fffffce666ff00024ccdfffffb199aff0000 +b333087d8d05ffffdf3333ff0004b333fffff5cccdff00094ccd8ba808f7860713dc +bec7b19cb78b08c0976a451f0e6a947697a6f80ba812f3b8f797b81378cfa6156d06 +858988871f75078bc68db0b2c5898b1ea00791868d881e6e066c8594b01f8bf795f7 +87fbd10513b8967d96809b8b089796989f1ff7e307b09094ab1ea806918b8c8f8c8e +08a1078b50896565508d8b1e7507888c87921ea906ac8f7d6b1f8bfb93fb93f7defb +0f8b8b7505878e888f1eaa06ac8e82681ffbb1076a8b7e671e0e3081aef73fb2f73d +ae01b4ff0057cccdff00f83333e103b4f761158a0aff014fcccc8215ff0000199aff +fffb6666ff0000199afffffb4ccd8bfffffb4ccd8bfb124a6c5c8bffffa580008bff +ffda8000ff005f8000fffff7cccdff004b800008ff00f57fffb215ffff08b33406ff +0001199aff0054b334ff00164cccff00544cccff0057999a8bff004acccc8bff0031 +ccce50ff000bb332fb02080edf89a870adf739abf738ad70a812a8e0f765d6f70da8 +caa77ca713af00f7aea615244abbf71ef72aceb2d6b6a3896d1ffbca07748581681e +133780f77ff80415cb8b9e56966608a78f0513374084b184b28ab608132f40898d05 +1337408b44896d1efb330613af40668b548d878b08fb212b31fb20fb20f24cf71b1f +136740f77e0a13a740a9c6898b1f1377408d8d9ff7076f8e057f57746b588b08fb01 +067a7d909e1ff721d807a58b94808f77088f75058c898d888f8b08a08b8d8d0588a3 +889f8ba48ba38fa78da2088d8a8c891e7706888b89888a88088676058677847f708b +083ef721069c97919e1e0ef70a7faef787b1f4ac01add8f761a6a6a6f75ddd03f93c +f75615f038f727fb8bfb4dfb17fb15fb11fb24e653e51ecc8bc0aca5d0a83cc274be +8b08e0f0b5f7381ffccd8c15f722ead3f72accf7456cfb45fb0b67503a1e538b67b2 +78d09ebf93b88ba308ac7f9e6e717d77651e8b778f62a05576436767568b082975dc +e61ff797b5158b79876f805e8b8f7fb08bb808a2909693968e7e7b1e0e71fb7ea8f7 +5aaaf812acf7977701abd7f720d6f720d703f78ca315629228aa8bf72d8bf71bd7ba +cb9608d6fc1415f81207e478be588bfb0b8b6581fb19fb16750840f8af15fb0f074f +88fb304d8bfb328b50a9fb2bf74e7d08fb2b078b6ffffff5cccdfffff53333ffffdf +3333fffffacccd08788805fffffb199affffff3333fffffce666fffffdcccd8b8608 +8b788d89058bcf8dafb2cf898b1e8d8d8b9e058b9087ff0002666687ff0000999a08 +788e05ffffe0ccccff0004e666fffff43334ff000b199a8ba708f72b07f7129ae5eb +8bf7038bf719fb03dc229508f72407cc8eb38b1e92878e821effffe6e66681ffffba +999a7effffd7800088088d73058b88ff0002cccdfffffe3334ff00033333ffffffcc +cc08ab89059f957e4a1f0efb7381c967a7f7f6ac12f750da1370f753d215ff0001b3 +3363ff0001999affffe64ccdff0004b333fffff5b333ff0002199afffffb6666ff00 +01e666fffffc999a938ba796a594d0948d91899b8991559080908bc508f757078bde +978fc98f91918ba08591688a648a638b638b5d8c688c85858b769185d18697888b38 +08fb1f078b717f747f790813b0807b746a7f8b828b82ff00026666fffff83333ff00 +0a4ccdfffff8666795fffff4ccccff000d4ccdffffee999a8b0873747272ffffece6 +669dffffe3199ab51fba8bb4b7a2b2089196ff0004cccd83ff0000333386080efb84 +81c86aa3f8d4a812f756d613b0f7a1f8d1158ba8ff000a6666ff000a9998ff002099 +9aff00036668089e8d0590ff000080008dff000280008b90088b9e8a8d05668a6c8a +678b658b608c668c0889898b78058b868ffffffd4ccc90ffffffb33408a88905ff00 +1fcccdfffffdccccff000b3333fffff433348b6e08fc47078b7e867e848273697579 +808b848b848e859181958093778b08717a7b71719a77b41fba8bb7bea5b2088e8b88 +3105fffffd999aff0001999affffff6666ff000266661e1370ff001c800096b294ff +00468000960889a3608f05fffff1999aff0001b333fffff86666ff000a4ccd8bbd08 +0efb56fb42b2f70faff80ea801f765d8d8d903f7d8f826159c06928c8f8d1fa2078b +4f8964624c8d8b1e7507868e89901e9b06b08d7c6b1ffb86077860635d738b808b83 +91889587947aad6e8b086e7c7c6f76986ccb1fad8ba297a2a19996a1a4929b088c77 +05fb42c555c3c5c59ab8977aa1731e758b817b867b8980817f7b8b608b869e8af731 +08f7ce07a58ba0b11e0efb84fb7ea8f8dbc857a312ecd613d0ecfb34158b6efffff5 +999afffff56666ffffdf6666fffffc999a0878890586ffffff800089fffffd80008b +86088b788c8905b08caa8caf8bb18bb68ab08a088d8d8b9e058b9087ff0002b33386 +ff00004ccd086e8d05ffffe03333ff00023333fffff4cccdff000bcccd8ba808f857 +078b9890989294a3ada19d968b928b92889185958196839f8b08a59c9ba5a57c9f62 +1f5c8b5f58716408888b8ee505ff00026666fffffe6666ff0000999afffffd999a1e +13b0ffffe38000806482ffffb9800080088d73b68705ff000e6666fffffe4cccff00 +07999afffff5b3348b59080efb79fb7cb3f8cba98caf01e0d6ebd303caf811159d8f +7a771ffbdc078efb1ba2fb05f7048b08aad5a2b89b8298741f738b817a857888807f +81798b085a7dbbf7241ff7d3079aaeb5bfa58b948b94888f7f907e9a69a48b08a79e +9ea7ad6b9c5f1f408b5f38898808e17607767e707d4081086d07958e9d8e9e8b080e +fb8b89a8f80faf01e3d6e4d903f737d415f73107f732a49dad1e9d8b95768d7f9177 +977ea38b089aa094a9b553a0571f6f8b767f72795a6380468b3308fb22077488746c +1e6f06858a86881f76078bcd8db5b4ca898b1ea1078e8a8f851e70066c889aaa1f0e +fb8b89a8f80faf019ad9e4d603f74ad4156c887c6c1e7006858987881f75078bcb8d +b4b5cd898b1ea0078e8a90841e70066c88a2a21ff722078be380d059b3739d759770 +8b08565476616da082991fa48b9798919f8d9795a09d8b08aca579fb321f0efb0e81 +b06eacf72facf74ba812ecdaf727e0133cf7d7f7d415ffffb5e666ffffd54cccffff +e5199affffb9b3341e69f72c069e9897bf1eff00344cccff001db334ffffe4e666ff +ffc9199a1ffb27fb5a15cb9307cf8bff0013999affffda199aff000b6666ffffe1e6 +660896640513bc9bffffc76666b2ffffdf999abb8b9a8ba98d9892ff00028000ff00 +0a4ccdff00004cccff00076666fffff73334ff000a4ccd678bffffefccccff000599 +9affffee3334ff003566660879c105fffff36666ff001ecccdffffe4999aff002133 +336a8e088c07ce91c0ff0029e6668bff0040199a8bd467b1fb1b8b728bffffdb6666 +89ffffd8999a8bffffd4b3338bffffe74ccd8c608c85858b769185c88796878b3808 +fb4d07137c8b3880884e8685858b769185b58cff001a4ccd8cff002bb3338bff0025 +66668bff000f999a8ab68a91918ba085915b90828e8bde080efb0e89a8f74bacf72f +ac6eb012ecdaf727e013ccf7d7f70115ffffc9199affffe24cccffffe4e666ffffcb +b334577e979e1ef72cad07ff00464cccff002ab334ffffe5199affffb5e6661ffb27 +f75a1513ec8bde948ebb9091918ba08591608afffff066668affffda999a8bffffd4 +4ccd8bffffe5b3338c618c85858b769185c88696888b3808fb4d078b3880874e8785 +858b769185b68cff0018b3338cff002b4ccd8bff002766668bff0024999a89a48bf7 +1b8bafb18bd48bff0040199a56ff0029e6664891088c07ac8eff001b6666ff002133 +34ff000c999aff001ecccc089dc10513dcff0011ccccff00356666ff00103334ff00 +05999aaf8bff0008ccccff000a4cccffffffb334ff00076668fffffd8000ff000a4c +cc7e926d8d7c8b5b8b64ffffdf999a7bffffc7666608806405fffff4999affffe1e6 +66ffffec6666ffffda199a478b0883060efb61fb44aff716acf813ac12bbb264aa7a +d2b8c4b2d755ab13f300f712fb4415c1c2b5b69881987b7d7a7e79777873726582bb +c71fff0022e66607ff00044ccdffffffcccdff00041999ffffff999aff0004999aff +fffeb333a684a687b08bc38bf2a68bee8bff00444ccd5aff0027b33347ff00193333 +0813e680ffffc3cccdff00164ccdffffd83333ff000f80008bc28bb4afa2ad8ba18b +c583983691859f8c91918eaf8db08cac6c905b99578b0841485b4b1f8b42ac6cd86b +0813eb00de699e768b608b5a5b76668b648bffffea4ccdff000d4cccfffff5b333ff +000ab33475a280b785a48591788a8585ff0001ccccffffe9cccdff0001999affffea +4ccdff00013334ffffeae66608fffffb66660613f300fb1607479b58c91e0efbb7fb +6ab1f9dcad01e7d6036bfb0615787f7a7b62c171b51f9a8ba28caea8c7bc8cdc8bf6 +08f83907ea95eac51e9c8b9b7e9572907b927ea18b089d99999fa66ab3401f6f8b71 +8170764f5b883c8b2408fc4807fb2a6a70751e748b869a859a869c859a738b080efb +b7fb6ab1f832b7f812ad01e7d6036bfb0615787f7a7b62c171b51f9a8ba28caea8c7 +bc8cdc8bf608f74dd20797969f9794888e801f3bf75406ea95eac51e9c8b9b7e9572 +907b927ea18b089d99999fa66ab3401f6f8b718170764f5b883c8b2408fb2f42077f +817e7b829085941fdcfb8106fb2a6a70751e748b869a859a869c859a738b080efb8f +fb6ab1f948ad01f724d5e4ce03f7ebfb0615738b857c857a867c867c748b087569a6 +f72a1ff7b4078bf289da4ebb71a070956f8b08416a637077997d9c1fa28b9198919b +95a49b989c8b08c5952c2c1ffba5078b208c3ac75aad6ea38a9a8b08b5c1a5b49b7f +9c781f0efbc3fb75a4f9f4ad015ea4f704d603f7ecf90b15a66ab3401e6f8b718170 +764f5b883d8b23088bfc598b7c05fb0f4f7d588b718b61b17cab8bc48bd8b393f736 +b5a27981ae9b0883a2057a847e85768108f868078bd690b9939c9cae9d9c9f8b9c8b +9b7e9572907b927ea18b089d99999f1ffc00fdaf158bb6d2b3b7a3087d0727626e70 +826592a81e0efbab8bb2f7edc201f725da03f7a216998f97931f9807908a8c871e50 +f7c106d26ca75d1e5d8b5975645f8dfffff5b33491fffffa4ccc958aa59fa993a58b +08a6916d4d1ffb912307817d87821f7707878e89901ef70c64064a87638b1efffff9 +999a8efffffd9999ff0004b3331eff000480008bff00088000ff0003e667ff00094c +cdff00051999ff000b4ccdff00064ccdff000a3333ff00044ccdff000c8000ff0003 +800097ff0003666695ff000366678bff0006e6668bff000b999a88fffff966668bff +006ee666080efbb9fb71aff8d3b201e4d603f738d615f7cfe90795998f941f9f078f +888d861efb02f72f0651778b78053f7b6348898a8a881e6c07888c8a8e1eccfbae06 +8bfb359328ba65b06cb28ba28b089dad99a99d7897801f718b817f83818582858480 +8b085f95f72af7021f0e4b81ba84a6f749b2f70dac12e3daf758da13bcf883f7a915 +56b806a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c85858b769185bc8898 +7f8b490863fb58b807a98fd48b1e8e888e861e868a7c8a7c8b6b8b678c698c85858b +769185bb8799808b4a08624964cdfb040746a948ee1eb28bba9fbcb3908fff00094c +cc8dff0000b33484ff00028000ffffe68000ff00088000ffffde80008b8b9388ff00 +048000ff00008000ff00068000ff0002800008137ca19dae9ac89291918b9a85914b +90829e8bbc08f700c007fb1816fb06078b7889837d7f0813bc666b657b728b086d59 +99e41fed070e4a81acf7ffb81295a487d8f7b7d887a413d0f791a215374eded41f8b +e3b6aeb59f0888dc058aa4858e7c8b08fb228b0513e07b2fa4890593b79190b08b08 +d38b905f0513d83c6556518b3c0835d430f72bf72ad2e6e11e8bda56c53cb10890b7 +d38b0513c4b08b9186935f08a48d7be7fb228b057c8b85888a7208883a0513d8b577 +b6688b3308424e38361e0e2281b2f7f8a7a87701e7daf77eb403f73fff01414ccc15 +f77f0a0e298aacf82e7701f73cab15558ffffffa6666ff000c3333ff0014e667ff00 +32cccd08ff0050b333f75805ff00103333ff00278000ff00053333ffffff4cccff00 +0f999affffd6333408ff0048199afb5505ff0011e6665bff00044ccc7fffffcab334 +8485858b769185ac8cae8cac8bac8ba98aa98a91918ba0859156ff00064ccc84ff00 +10199affffeb999aff0032999a08ffff806666f7d005859a85917e8b818bfffff919 +9afffff9999afffff8e666ffffef666608ffff7a999afbcd05ffffed4cceffffd419 +9afffff5199affffe6e666538685858b7691859f8ca38ca58bac8bad8aa48a91918b +a08591080ef72c8aacf82e7701f8adab1585858b769185a98cae8caf8bb18bff001a +cccc8aff001a33348a91918ba08591ffffd0e668ff0004ccccfffff51998ff000a33 +34ffffeae668bf08ffff7d1998f7d70585998391818b828b8385847b0826fb8a24f7 +8c0585998391818b828b8385857c08ffff7d8000fbd105ffffef999affffd7199aff +ffeee666ffffe3e666588885858b7691859f8ca18ca98ba98bb58aa98a91918ba085 +91408fff000a4ccdff001ce666ff000e1999ff0023199a08ff0053999af7640595a4 +8fffffffccccff00083333ffffeb333408ff00564ccdfb6f05ff001280005c898156 +8785858b769185a98cb38ca98ba48bac8aa98a91918ba085915cff00048000fffff4 +4cccff001cb333ffffee199aff002ccccd08fffff9999a9bd1f7450598acff000233 +34ff00018000ff000ce666ffffdf800008ff004ffffefb6205ff0012e6685b8a7b5b +88080e3b89acf8badb01f7c3f8e115fffff06666ffffe43334fffff2e666ffffe366 +64fffff3b334ffffe266683bfb55ffffd33333ffff996666ffffcbcccdffff8f999a +ffffec4ccdffffd5b333fffff1b3337b5cfffffa4ccd85858b7691859f8ca28ca78b +a98baa8aa98a0891918ba08591ffffe066668effffdf999a919baf08ff00633333f7 +7905ff0006ffffff0010199aff00086667ff0002b332ff00088000ffffec333408ff +0058b332fb64059dffffd5ccccff00053334ffffed800053fffffbb33485858b7691 +85b08cb38caf8bad8ba68a9f8a91918ba08591ffffd84ccc907e94ffffe5cccec808 +ffff8ee666f79b05fffff74cccff0014199afffff0b334ff002de66695a7ff000be6 +66ff00216666ff000c199aff001b999a9aaa969f9994a48b998b8f88968b08a89aa9 +98a0779b701f768b6383674b080efb0f89acf803ac01f75fda03ff00706666f7d915 +ff005a999afb3a8b66058b3880884e8685858b769185b58ca58cb78bb68ba48ab68a +91918ba085914e8f808f8bde088bbcff004b6666f72d05ff0014999ab698a5c39091 +918ba08591758a798a718b668b758c668c85858b769185c1878f7effffe8b3345908 +ffffc24cccfb12ffffc0e666f71205ffffe9199ab9ffffefcccdff000f999aff003e +3333ff0005666691918ba08591668a6f8a628b688b7b8c668c85858b769185ff0039 +8000fffff93334ff00048000ffffedccccff001a66665b080efb3ffffffd6666ff00 +24999af7fdad957712bdacff015b999aff00384ccc13d8ff01674cccffff4a800015 +ff0034199afffff1b333ff0040199aff0019e667ff000b6666ff00298000ff000366 +66ff000c8000fffff9ccceff000f3333fffff0999aff00043333fffff28000ff0003 +b333ffffec333283fffffb3334ffffee999afffffab332ffffecb333ffffe74cce79 +ffffe7e666ff0006999affffdb6666ff000a19998fff00308000ff000fe666ff0039 +e6670893ff001d6666ff000433348b0597ad98bf92bdfffff98000ff0003b333ffff +f48000ff00024ccd7f8b087d6e05ffffe68000ffffcb3333ffffeb999a75ffffcbe6 +66fffffecccd08fb1906d5e9f3f731c9f1ff000f4cccff00193334ff0002b334ff00 +07cccc8b8f8b8f868e848b868b6f896e8b08fb4b0613b8ffffdfe6668bfffff3999a +ff0004999afffff18000ff00056666fffffd999a8bfffffc6666fffffc66668bffff +fd999a8a5e8668825aff0008ccccfffffc4cccff000c999afffffe199aff000b999a +ff0002999a9fd4aaff00114ccca9ff0000b3340813d8f7148e0547fb0627fb243d22 +fffff76666fffff46666ffffff999afffffc999a8b86088493869a1eff010b8000ff +fffd66667fffffd480000579ffffbe66678dffffca9999ff003bccccffffef999a08 +0efb3a8bb2e5acf779b201f720aaf75ea903f809e815f7800afb3c2e15c706e2beb1 +c3c15c99731f668b6c7c76777a7b78697a6508498bf77af7f005949993968b920893 +858e801efb83066e8b89958a8f08768f6dfb29a6860590ad9cb49594969399909f8b +08f7228bfb80fbfb05858288878b8508809b899e1ef5067c657f63846608aa840590 +af98b79bb5080efb47fb7faef7c3adf796ad01b3a6f789dc03f713f6159c7c059d8f +a992968b08d9aa6326fb004655591f638b70b183a183a37e95748b08758179796bc5 +4ee0f70fe0e9f70bf53ac02b1ff72bf78e059ba691968b8f8b8f858d848b898b6785 +6e8b08fb5f067c8b829289910872068a5e855f835a08a588059fd4ada0a98b08f725 +060efb34ffff27333376ff000bcccda3f746a2f70fb2f777b5977712c3a3f78bd113 +73f7ccfb09157653566e4e8b085b5ab2bdbcb3b3bb1fcb8bba61ac580892a91567b9 +54b34f8b084d59594d4bc95ac71fc48bc3a1b5b20813bbff000a8000ffffe98000ff +000a4cccffffe6e666ff0009199affffe6cccd08ff001733349105fffff5999aff00 +1de666fffff3ccccff001dccccfffff38000ff001a199aa4a8a0bb8bc38bf72027ab +578d08f6f777051337969590978b9708133b90878e811efb8306748b818e88910813 +37798e79fb11a0890592b295a4989008137b948e968c9a8b08f72b8bfb1bfba9059c +92a58f9c8bde8bb2568b318b7288758678080efb3a89a8f8ecaa01a7d4d2d6cfda03 +f78bd315f73c078bd0ff00146666ff0019999aff002f999aff00296666b9b3acb68b +d308dd47b6242a294c426ba07a9fa29b969d1e8bff001a666884ff000399988b9d08 +b3c8b0bcc1bd6d411e8b50ffffe7b334ffffea8000ffffd74cccffffda80004b507d +688b3508fb2b078b6efffff63333fffff4cccdffffdecccdfffffd33330873890586 +ffffff999a89fffffd66668b86088b788c8905bd8c9f8cb28bb48b9f8abd8a088d8d +8b9e058b9087ff0002b33387ff00004ccd08738d05ffffdeb333ff0002cccdfffff7 +4ccdff000b33338ba8080efb3a89a8f8eaaa01b1dacfd6d2d403f74dd3158b6e8280 +6a8808738905878788861f8b788d8905bd8c9f8cb48bb28b9f8abd8a088c8d8b9e05 +90898e861e738d056a8e81968ba808f72b078be17dae4bc662b073a18bc608d5bda9 +c1bcc866631e8b7984878b7108799b80a29fa09cabd429ca2a244760391e8b43ac60 +b963bb629f718b46080efb3a80aaf8eaa801a4d4d2d6cfda03f788f8d1158ba89496 +ac8e08a38d058f8f8e901f8b9e898d05598a778a628b648b778c598c088a898b7805 +868d88901ea38905ac8895808b6e08fb2b078b359968cb50b466a3758b500841596d +555a4eb0b31e8b9d928f8ba5089d7b967477767a6b42ed4cecf2cfb6dd1e8bd36ab6 +5db35bb477a58bd0080efb30fb71bdf8d5ac01afe1f759e203f78cf82a15c68b9368 +8f688e709982a08b08a0a798aac252b32b1fffffc9b3338bffffd6cccd8bffffd080 +0053ffffd53333ffffcd8000ffffe0cccdffffa433338bffff6b4ccd8bffff814ccd +ff00124cccffffac6666ff0024b334ffffd74ccdff0024b333ffffd6b333ff003199 +9affffeb4ccdff003eb3338bff003f4ccc8bff0033b334ff00194ccdb3ff0032b333 +0878a0878b05ffffdcb334ffffe0b333ffffdb4cccfffff04ccd658b638b6a9b71ab +ffffe4b333ff00214ccdfffff24ccdff004966668bff00714ccd8bff0088b333ff00 +0d4ccdff00550001ff001ab333ff00214cccff0018b333ff001f4cccff001a999aff +0016b334ff0022b3338b080ef681aff785f700f78baf01b5ebf737f700f73aeb03f7 +f7f79f15a40a78f7f715640af7e3fbb915650a0efb0889acf74ea8f72cac12f6daf7 +2edb44e113f8f74ef78a15f7810a496e15d70613f4f7820a63f7eb15f7830a13f8f7 +840a0efb0b82caf71ac2f71aca01a9b7f7e0b20314e0f76d8215f701f70bd0f738f7 +1dfb0edafb03fb22634b561f8b5bb062c97844756f678b650855ab41f72f1ef81604 +f719c34f2a5c69fb0bfb292061a2c31f8bb2a8a1ca98b280b583a18b08a99b949e9e +7a93691f618b6b8272844b9a70a78baf08cfc88edd1e0e357faef72da6f761add3ca +12add8f796c062a613f8f89af8d515ffffcb4ccc8bffffb2999affffd61998fffff9 +8000ffff99999cffffdc4cceff00026666ffffd68000ff0003e666ffffdfcccc8b08 +fb20292cfb1d25d4fb07f72e1fd88bff0034b3349eff00334cccb108b7078bff0038 +199a91ff0013e666aa9091918ba08591798affffe3b3348affffe14ccc8bffffe1b3 +348bffffd74ccc8c6e8c85858b769185c88790ffffee199a8bffffc4e66608650776 +ffffecb33370fffff54ccd698b08fb0d5beef6f706d4cad31fe28bb2789d31ff0009 +4cccfffffc3334ff000966688dff00094cccff0003ccccfffffee666b7fffffe3334 +b7fffff7e666b7fffffb66668b86ff0000199afffffaccceff00003332ff0001e666 +ff001accce99ff0037e666ff002ee6668b938b958a9488089288948b928b08a0979c +9b1fa17b9a771e0e8289acf746acf730ac01f6daf76ada03f873f7c715f7850a0efb +b3fb45a8f8a9a7a877f711ef1279a8e0ef42da13f8c5fb2815727596a51f8bb3b4a7 +d4b2 |