From ba6bfe01ee0d5cf3f06003ced36879aff1cc2ddf Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 12 Jun 2003 17:04:40 +0000 Subject: Regenerated. --- doc/gperf.1 | 2 +- doc/gperf.dvi | Bin 104136 -> 104364 bytes doc/gperf.html | 355 ++- doc/gperf.info | 77 +- doc/gperf.pdf | Bin 234439 -> 224738 bytes doc/gperf.ps | 8603 ++++++++++++++++++++++++++++++---------------------- doc/gperf_1.html | 39 +- doc/gperf_10.html | 58 +- doc/gperf_2.html | 3 +- doc/gperf_3.html | 11 +- doc/gperf_4.html | 23 +- doc/gperf_5.html | 116 +- doc/gperf_6.html | 36 +- doc/gperf_7.html | 9 +- doc/gperf_8.html | 9 +- doc/gperf_9.html | 37 +- doc/gperf_toc.html | 58 +- 17 files changed, 5468 insertions(+), 3968 deletions(-) diff --git a/doc/gperf.1 b/doc/gperf.1 index 9ed2d09..d40b419 100644 --- a/doc/gperf.1 +++ b/doc/gperf.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. -.TH GPERF "1" "May 2003" "GNU gperf 3.0" FSF +.TH GPERF "1" "June 2003" "GNU gperf 3.0.1" FSF .SH NAME gperf \- generate a perfect hash function from a key set .SH SYNOPSIS diff --git a/doc/gperf.dvi b/doc/gperf.dvi index 1ef26a6..f7a1afa 100644 Binary files a/doc/gperf.dvi and b/doc/gperf.dvi differ diff --git a/doc/gperf.html b/doc/gperf.html index 6dde98c..d619e68 100644 --- a/doc/gperf.html +++ b/doc/gperf.html @@ -1,14 +1,13 @@ - + Perfect Hash Function Generator -

User's Guide to gperf 3.0

+

User's Guide to gperf 3.0.1

The GNU Perfect Hash Function Generator

-

Edition 3.0, 7 May 2003

+

Edition 3.0.1, 12 June 2003

Douglas C. Schmidt
Bruno Haible

@@ -21,37 +20,37 @@

  • How to Apply These Terms to Your New Programs
  • Contributors to GNU gperf Utility -
  • 1 Introduction -
  • 2 Static search structures and GNU gperf -
  • 3 High-Level Description of GNU gperf +
  • 1. Introduction +
  • 2. Static search structures and GNU gperf +
  • 3. High-Level Description of GNU gperf -
  • 4 Invoking gperf +
  • 4. Invoking gperf -
  • 5 Known Bugs and Limitations with gperf -
  • 6 Things Still Left to Do -
  • 7 Bibliography +
  • 5. Known Bugs and Limitations with gperf +
  • 6. Things Still Left to Do +
  • 7. Bibliography
  • Concept Index


    @@ -62,7 +61,7 @@

    Version 2, June 1991 -

    +
     Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
    @@ -87,7 +86,7 @@ using it.  (Some other Free Software Foundation software is covered by
     the GNU Library General Public License instead.)  You can apply it to
     your programs, too.
     
    -

    +

    When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you @@ -96,14 +95,14 @@ this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. -

    +

    To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. -

    +

    For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that @@ -111,13 +110,13 @@ you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. -

    +

    We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. -

    +

    Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free @@ -126,7 +125,7 @@ want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. -

    +

    Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free @@ -134,16 +133,16 @@ program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. -

    +

    The precise terms and conditions for copying, distribution and modification follow. -

    +

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -

    +
    1. @@ -412,7 +411,7 @@ POSSIBILITY OF SUCH DAMAGES.

      END OF TERMS AND CONDITIONS -

      +

      How to Apply These Terms to Your New Programs

      @@ -422,14 +421,14 @@ END OF TERMS AND CONDITIONS possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. -

      +

      To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively 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 program's name and an idea of what it does.
      @@ -453,12 +452,12 @@ 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. -

      +

      If the program is interactive, make it output a short notice like this when it starts in an interactive mode: -

      +
       Gnomovision version 69, Copyright (C) year  name of author
      @@ -475,13 +474,13 @@ commands you use may be called something other than `show w' and
       `show c'; they could even be mouse-clicks or menu items--whatever
       suits your program.
       
      -

      +

      You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: -

      +
       Yoyodyne, Inc., hereby disclaims all copyright
      @@ -500,7 +499,7 @@ consider it more useful to permit linking proprietary applications with the
       library.  If this is what you want to do, use the GNU Library General
       Public License instead of this License.
       
      -

      +

      Contributors to GNU gperf Utility

      @@ -537,7 +536,7 @@ added a testsuite. -

      1 Introduction

      +

      1. Introduction

      gperf is a perfect hash function generator written in C++. It @@ -550,7 +549,7 @@ pair of C functions. These functions determine whether a given character string s occurs in W, using at most one probe into the lookup table. -

      +

      gperf currently generates the reserved keyword recognizer for lexical analyzers in several production and research compilers and @@ -561,16 +560,16 @@ A paper describing gperf's design and implementation in greater detail is available in the Second USENIX C++ Conference proceedings or from http://www.cs.wustl.edu/~schmidt/resume.html. -

      -

      2 Static search structures and GNU gperf

      + +

      2. Static search structures and GNU gperf

      -

      +

      -A static search structure is an Abstract Data Type with certain +A static search structure is an Abstract Data Type with certain fundamental operations, e.g., initialize, insert, and retrieve. Conceptually, all insertions occur before any retrievals. In practice, gperf generates a static array @@ -580,11 +579,11 @@ insertions. It is a useful data structure for representing static search sets. Static search sets occur frequently in software system applications. Typical static search sets include compiler reserved words, assembler instruction opcodes, and built-in shell interpreter -commands. Search set members, called keywords, are inserted into +commands. Search set members, called keywords, are inserted into the structure only once, usually during program initialization, and are not generally modified at run-time. -

      +

      Numerous static search structure implementations exist, e.g., arrays, linked lists, binary search trees, digital search tries, and @@ -596,14 +595,14 @@ proportional to log n. Conversely, hash table implementations often locate a table entry in constant time, but typically impose additional memory overhead and exhibit poor worst case performance. -

      +

      Minimal perfect hash functions provide an optimal solution for a particular class of static search sets. A minimal perfect hash function is defined by two properties: -

      +
      • @@ -629,7 +628,7 @@ behavior generates near-minimal perfect hash functions for keyword sets. However, gperf provides many options that permit user control over the degree of minimality and perfection. -

        +

        Static search sets often exhibit relative stability over time. For example, Ada's 63 reserved words have remained constant for nearly a @@ -645,23 +644,23 @@ not yet part of the official GNU distribution. Each compiler utilizes gperf to automatically generate static search structures that efficiently identify their respective reserved keywords. -

        -

        3 High-Level Description of GNU gperf

        + +

        3. High-Level Description of GNU gperf

        The perfect hash function generator gperf reads a set of "keywords" from an input file (or from the standard input by default). It attempts to derive a perfect hashing function that -recognizes a member of the static keyword set with at most a +recognizes a member of the static keyword set with at most a single probe into the lookup table. If gperf succeeds in generating such a function it produces a pair of C source code routines that perform hashing and table lookup recognition. All generated C code is directed to the standard output. Command-line options described below allow you to modify the input and output format to gperf. -

        +

        By default, gperf attempts to produce time-efficient code, with less emphasis on efficient space utilization. However, several options @@ -673,7 +672,7 @@ statement scheme that minimizes data space storage size. Furthermore, using a C switch may actually speed up the keyword retrieval time somewhat. Actual results depend on your C compiler, of course. -

        +

        In general, gperf assigns values to the bytes it is using for hashing until some set of values gives each keyword a unique value. @@ -681,10 +680,10 @@ A helpful heuristic is that the larger the hash value range, the easier it is for gperf to find and generate a perfect hash function. Experimentation is the key to getting the most from gperf. -

        -

        3.1 Input Format to gperf

        + +

        3.1 Input Format to gperf

        @@ -696,7 +695,7 @@ is similar to GNU utilities flex and bison (or UNIX utilities lex and yacc). Here's an outline of the general format: -

        +
         declarations
        @@ -711,14 +710,13 @@ functions
         the functions section are optional.  The following sections describe the
         input format for each section.
         
        -

        It is possible to omit the declaration section entirely, if the `-t' option is not given. In this case the input file begins directly with the first keyword line, e.g.: -

        +
         january
        @@ -730,7 +728,7 @@ april
         
         
         
        -

        3.1.1 Declarations

        +

        3.1.1 Declarations

        The keyword input file optionally contains a section for including @@ -738,11 +736,10 @@ arbitrary C declarations and definitions, gperf declarations that act like command-line options, as well as for providing a user-supplied struct. -

        -

        3.1.1.1 User-supplied struct

        +

        3.1.1.1 User-supplied struct

        If the `-t' option (or, equivalently, the `%struct-type' declaration) @@ -755,15 +752,15 @@ This first field must be called `name', although it is possible to its name with the `-K' option (or, equivalently, the `%define slot-name' declaration) described below. -

        +

        Here is a simple example, using months of the year and their attributes as input: -

        +
        -struct months { char *name; int number; int days; int leap_days; };
        +struct month { char *name; int number; int days; int leap_days; };
         %%
         january,   1, 31, 31
         february,  2, 28, 29
        @@ -786,10 +783,23 @@ other fields are a pair of consecutive percent signs, `%%',
         appearing left justified in the first column, as in the UNIX utility
         lex.
         
        -

        + +

        +If the struct has already been declared in an include file, it can +be mentioned in an abbreviated form, like this: + + + +

        +struct month;
        +%%
        +january,   1, 31, 31
        +...
        +
        + -

        3.1.1.2 Gperf Declarations

        +

        3.1.1.2 Gperf Declarations

        The declaration section can contain gperf declarations. They @@ -797,7 +807,7 @@ influence the way gperf works, like command line options do. In fact, every such declaration is equivalent to a command line option. There are three forms of declarations: -

        +
        1. @@ -818,11 +828,11 @@ Declarations of names of entities in the output file, like When a declaration is given both in the input file and as a command line option, the command-line option's value prevails. -

          +

          The following gperf declarations are available. -

          +
          `%delimiters=delimiter-list' @@ -933,7 +943,7 @@ test like `c >= 'A' && c <= 'Z'' guarantees this.)
          Compare keyword lengths before trying a string comparison. This option -is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might +is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. However, using `%compare-lengths' might greatly increase the size of the @@ -1036,7 +1046,7 @@ this option if the type is already defined elsewhere. -

          3.1.1.3 C Code Inclusion

          +

          3.1.1.3 C Code Inclusion

          @@ -1048,15 +1058,15 @@ inside left-justified surrounding `%{', `%}' pairs. H an input fragment based on the previous example that illustrates this feature: -

          +
           %{
           #include <assert.h>
           /* This section of code is inserted directly into the output. */
          -int return_month_days (struct months *months, int is_leap_year);
          +int return_month_days (struct month *months, int is_leap_year);
           %}
          -struct months { char *name; int number; int days; int leap_days; };
          +struct month { char *name; int number; int days; int leap_days; };
           %%
           january,   1, 31, 31
           february,  2, 28, 29
          @@ -1066,7 +1076,7 @@ march,     3, 31, 31
           
           
           
          -

          3.1.2 Format for Keyword Entries

          +

          3.1.2 Format for Keyword Entries

          The second input file format section contains lines of keywords and any @@ -1076,7 +1086,7 @@ in the first column is considered a comment. Everything following the beginning with `%' in the first column is an option declaration and must not occur within the keywords section. -

          +

          The first field of each non-comment line is always the keyword itself. It can be given in two ways: as a simple name, i.e., without surrounding @@ -1088,7 +1098,7 @@ In this context, a "field" is considered to extend up to, but not include, the first blank, comma, or newline. Here is a simple example taken from a partial list of C reserved words: -

          +
           # These are a few C reserved words, see the c.gperf file 
          @@ -1108,7 +1118,7 @@ return
           Note that unlike flex or bison the first `%%' marker
           may be elided if the declaration section is empty.
           
          -

          +

          Additional fields may optionally follow the leading keyword. Fields should be separated by commas, and terminate at the end of line. What @@ -1119,10 +1129,10 @@ declaration section. If the `-t' option (or, equivalently, the these fields are simply ignored. All previous examples except the last one contain keyword attributes. -

          -

          3.1.3 Including Additional C Functions

          + +

          3.1.3 Including Additional C Functions

          The optional third section also corresponds closely with conventions @@ -1132,10 +1142,10 @@ file, is included verbatim into the generated output file. Naturally, it is your responsibility to ensure that the code contained in this section is valid C. -

          -

          3.1.4 Where to place directives for GNU indent.

          + +

          3.1.4 Where to place directives for GNU indent.

          If you want to invoke GNU indent on a gperf input file, @@ -1145,7 +1155,7 @@ interpretation of the input file. Therefore you have to insert some directives for GNU indent. More precisely, assuming the most general input file structure -

          +
           declarations part 1
          @@ -1163,7 +1173,7 @@ functions
           you would insert `*INDENT-OFF*' and `*INDENT-ON*' comments
           as follows:
           
          -

          +
           /* *INDENT-OFF* */
          @@ -1183,11 +1193,11 @@ functions
           
           
           
          -

          3.2 Output Format for Generated C Code with gperf

          +

          3.2 Output Format for Generated C Code with gperf

          -

          +

          Several options control how the generated C code appears on the standard output. Two C function are generated. They are called hash and @@ -1196,22 +1206,22 @@ option. Both functions require two arguments, a string, char * str, and a length parameter, int len. Their default function prototypes are as follows: -

          +

          Function: unsigned int hash (const char * str, unsigned int len)
          By default, the generated hash function returns an integer value created by adding len to several user-specified str byte -positions indexed into an associated values table stored in a +positions indexed into an associated values table stored in a local static array. The associated values table is constructed internally by gperf and later output as a static local C array called `hash_table'. The relevant selected positions (i.e. indices into str) are specified via the `-k' option when running -gperf, as detailed in the Options section below (see section 4 Invoking gperf). +gperf, as detailed in the Options section below (see section 4. Invoking gperf).
          -

          +

          Function: in_word_set (const char * str, unsigned int len) @@ -1223,7 +1233,7 @@ a pointer to the matching keyword's structure. Otherwise it returns NULL.
          -

          +

          If the option `-c' (or, equivalently, the `%compare-strncmp' declaration) is not used, str must be a NUL terminated @@ -1232,12 +1242,12 @@ string of exactly length len. If `-c' (or, equivalently simply be an array of len bytes and does not need to be NUL terminated. -

          +

          The code generated for these two functions is affected by the following options: -

          +
          `-t' @@ -1268,14 +1278,14 @@ with the various input and output options, and timing the resulting C code, you can determine the best option choices for different keyword set characteristics. -

          -

          3.3 Use of NUL bytes

          + +

          3.3 Use of NUL bytes

          -

          +

          By default, the code generated by gperf operates on zero terminated strings, the usual representation of strings in C. This means @@ -1283,7 +1293,7 @@ that the keywords in the input file must not contain NUL bytes, and the str argument passed to hash or in_word_set must be NUL terminated and have exactly length len. -

          +

          If option `-c' (or, equivalently, the `%compare-strncmp' declaration) is used, then the str argument does not need @@ -1292,7 +1302,7 @@ access the first len, not len+1, bytes starting at st However, the keywords in the input file still must not contain NUL bytes. -

          +

          If option `-l' (or, equivalently, the `%compare-lengths' declaration) is used, then the hash table performs binary @@ -1302,10 +1312,10 @@ generated by gperf will treat NUL like any other byte. Also, in this case the `-c' option (or, equivalently, the `%compare-strncmp' declaration) is ignored. -

          -

          4 Invoking gperf

          + +

          4. Invoking gperf

          There are many options to gperf. They were added to make @@ -1313,11 +1323,10 @@ the program more convenient for use with real applications. "On-line" help is readily available via the `--help' option. Here is the complete list of options. -

          -

          4.1 Specifying the Location of the Output File

          +

          4.1 Specifying the Location of the Output File

          @@ -1330,16 +1339,16 @@ Allows you to specify the name of the file to which the output is written to. The results are written to standard output if no output file is specified or if it is `-'. -

          -

          4.2 Options that affect Interpretation of the Input File

          + +

          4.2 Options that affect Interpretation of the Input File

          These options are also available as declarations in the input file -(see section 3.1.1.2 Gperf Declarations). +(see section 3.1.1.2 Gperf Declarations). + -

          `-e keyword-delimiter-list' @@ -1379,13 +1388,13 @@ the gperf generated function. -

          4.3 Options to specify the Language for the Output Code

          +

          4.3 Options to specify the Language for the Output Code

          These options are also available as declarations in the input file -(see section 3.1.1.2 Gperf Declarations). +(see section 3.1.1.2 Gperf Declarations). + -

          `-L generated-language-name' @@ -1433,13 +1442,13 @@ This option is supported for compatibility with previous releases of -

          4.4 Options for fine tuning Details in the Output Code

          +

          4.4 Options for fine tuning Details in the Output Code

          Most of these options are also available as declarations in the input file -(see section 3.1.1.2 Gperf Declarations). +(see section 3.1.1.2 Gperf Declarations). + -

          `-K slot-name' @@ -1510,7 +1519,7 @@ to support 8-bit and multibyte characters.
          `--compare-lengths'
          Compare keyword lengths before trying a string comparison. This option -is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might +is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. However, using `-l' might greatly increase the size of the @@ -1628,7 +1637,7 @@ This option is supported for compatibility with previous releases of -

          4.5 Options for changing the Algorithms employed by gperf

          +

          4.5 Options for changing the Algorithms employed by gperf

          @@ -1753,7 +1762,7 @@ heuristic. -

          4.6 Informative Output

          +

          4.6 Informative Output

          @@ -1784,13 +1793,13 @@ option is enabled. -

          5 Known Bugs and Limitations with gperf

          +

          5. Known Bugs and Limitations with gperf

          The following are some limitations with the current release of gperf: -

          +
          • @@ -1826,7 +1835,7 @@ the constraint. -

            6 Things Still Left to Do

            +

            6. Things Still Left to Do

            It should be "relatively" easy to replace the current perfect hash @@ -1834,7 +1843,7 @@ function algorithm with a more exhaustive approach; the perfect hash module is essential independent from other program modules. Additional worthwhile improvements include: -

            +
            • @@ -1857,91 +1866,118 @@ C and C++ routines. -

              7 Bibliography

              +

              7. Bibliography

              [1] Chang, C.C.: A Scheme for Constructing Ordered Minimal Perfect Hashing Functions Information Sciences 39(1986), 187-195. -

              +

              [2] Cichelli, Richard J. Author's Response to "On Cichelli's Minimal Perfect Hash Functions Method" Communications of the ACM, 23, 12(December 1980), 729. -

              +

              [3] Cichelli, Richard J. Minimal Perfect Hash Functions Made Simple Communications of the ACM, 23, 1(January 1980), 17-19. -

              +

              [4] Cook, C. R. and Oldehoeft, R.R. A Letter Oriented Minimal Perfect Hashing Function SIGPLAN Notices, 17, 9(September 1982), 18-27. -

              +

              [5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M. Practical Perfect Hashing Computer Journal, 28, 1(January 1985), 54-58. -

              +

              [6] Jaeschke, G. Reciprocal Hashing: A Method for Generating Minimal Perfect Hashing Functions Communications of the ACM, 24, 12(December 1981), 829-833. -

              +

              [7] Jaeschke, G. and Osterburg, G. On Cichelli's Minimal Perfect Hash Functions Method Communications of the ACM, 23, 12(December 1980), 728-729. -

              +

              [8] Sager, Thomas J. A Polynomial Time Generator for Minimal Perfect Hash Functions Communications of the ACM, 28, 5(December 1985), 523-532 -

              +

              [9] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator Second USENIX C++ Conference Proceedings, April 1990. -

              +

              [10] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator C++ Report, SIGS 10 10 (November/December 1998). -

              +

              [11] Sebesta, R.W. and Taylor, M.A. Minimal Perfect Hash Functions for Reserved Word Lists SIGPLAN Notices, 20, 12(September 1985), 47-53. -

              +

              [12] Sprugnoli, R. Perfect Hashing Functions: A Single Probe Retrieving Method for Static Sets Communications of the ACM, 20 11(November 1977), 841-850. -

              +

              [13] Stallman, Richard M. Using and Porting GNU CC Free Software Foundation, 1988. -

              +

              [14] Stroustrup, Bjarne The C++ Programming Language. Addison-Wesley, 1986. -

              +

              [15] Tiemann, Michael D. User's Guide to GNU C++ Free Software Foundation, 1989. -

              +

              Concept Index

              -

              %

              +Jump to: +% +- +a +- +b +- +c +- +d +- +f +- +h +- +i +- +j +- +k +- +m +- +n +- +s +

              +

              %

            • `%%'
            • `%7bit' @@ -1969,66 +2005,65 @@ Foundation, 1989.
            • `%{'
            • `%}'
            • -

              a

              +

              a

            • Array name
            • -

              b

              +

              b

            • Bugs
            • -

              c

              +

              c

            • Class name
            • -

              d

              +

              d

            • Declaration section
            • Delimiters
            • Duplicates
            • -

              f

              +

              f

            • Format
            • Functions section
            • -

              h

              +

              h

            • hash
            • hash table
            • -

              i

              +

              i

            • in_word_set
            • Initializers
            • -

              j

              +

              j

            • Jump value
            • -

              k

              +

              k

            • Keywords section
            • -

              m

              +

              m

            • Minimal perfect hash functions
            • -

              n

              +

              n

            • NUL
            • -

              s

              +

              s

            • Slot name
            • Static search structure
            • switch, switch
            • -

              +


              -This document was generated on 7 May 2003 using the -texi2html -translator version 1.51.

              +This document was generated on 12 June 2003 using +texi2html 1.56k. diff --git a/doc/gperf.info b/doc/gperf.info index fda381f..821e884 100644 --- a/doc/gperf.info +++ b/doc/gperf.info @@ -1,4 +1,5 @@ -This is gperf.info, produced by makeinfo version 4.3 from gperf.texi. +Dies ist gperf.info, hergestellt von Makeinfo Version 4.3 aus +gperf.texi. INFO-DIR-SECTION Programming Tools START-INFO-DIR-ENTRY @@ -6,7 +7,7 @@ START-INFO-DIR-ENTRY END-INFO-DIR-ENTRY This file documents the features of the GNU Perfect Hash Function -Generator 3.0. +Generator 3.0.1. Copyright (C) 1989-2003 Free Software Foundation, Inc. @@ -669,7 +670,7 @@ not given, or of type `int' if the option `-P' (or, equivalently, the Here is a simple example, using months of the year and their attributes as input: - struct months { char *name; int number; int days; int leap_days; }; + struct month { char *name; int number; int days; int leap_days; }; %% january, 1, 31, 31 february, 2, 28, 29 @@ -688,6 +689,14 @@ attributes as input: other fields are a pair of consecutive percent signs, `%%', appearing left justified in the first column, as in the UNIX utility `lex'. + If the `struct' has already been declared in an include file, it can +be mentioned in an abbreviated form, like this: + + struct month; + %% + january, 1, 31, 31 + ... +  File: gperf.info, Node: Gperf Declarations, Next: C Code Inclusion, Prev: User-supplied Struct, Up: Declarations @@ -891,9 +900,9 @@ fragment based on the previous example that illustrates this feature: %{ #include /* This section of code is inserted directly into the output. */ - int return_month_days (struct months *months, int is_leap_year); + int return_month_days (struct month *months, int is_leap_year); %} - struct months { char *name; int number; int days; int leap_days; }; + struct month { char *name; int number; int days; int leap_days; }; %% january, 1, 31, 31 february, 2, 28, 29 @@ -1011,7 +1020,7 @@ command-line option. Both functions require two arguments, a string, `char *' STR, and a length parameter, `int' LEN. Their default function prototypes are as follows: - - Function: unsigned int hash (const char * STR, unsigned int LEN) + - Funktion: unsigned int hash (const char * STR, unsigned int LEN) By default, the generated `hash' function returns an integer value created by adding LEN to several user-specified STR byte positions indexed into an "associated values" table stored in a local static @@ -1021,7 +1030,7 @@ function prototypes are as follows: STR) are specified via the `-k' option when running `gperf', as detailed in the _Options_ section below (*note Options::). - - Function: in_word_set (const char * STR, unsigned int LEN) + - Funktion: in_word_set (const char * STR, unsigned int LEN) If STR is in the keyword set, returns a pointer to that keyword. More exactly, if the option `-t' (or, equivalently, the `%struct-type' declaration) was given, it returns a pointer to the @@ -1654,32 +1663,32 @@ Concept Index  Tag Table: -Node: Top1234 -Node: Copying3318 -Node: Contributors22507 -Node: Motivation23700 -Node: Search Structures24828 -Node: Description28383 -Node: Input Format30276 -Node: Declarations31413 -Node: User-supplied Struct31989 -Node: Gperf Declarations33405 -Node: C Code Inclusion41815 -Node: Keywords42644 -Node: Functions44580 -Node: Controls for GNU indent45106 -Node: Output Format46045 -Node: Binary Strings48829 -Node: Options49972 -Node: Output File50757 -Node: Input Details51141 -Node: Output Language52972 -Node: Output Details54383 -Node: Algorithmic Details61298 -Node: Verbosity66547 -Node: Bugs67250 -Node: Projects68842 -Node: Bibliography69970 -Node: Concept Index72026 +Node: Top1240 +Node: Copying3324 +Node: Contributors22513 +Node: Motivation23706 +Node: Search Structures24834 +Node: Description28389 +Node: Input Format30282 +Node: Declarations31419 +Node: User-supplied Struct31995 +Node: Gperf Declarations33594 +Node: C Code Inclusion42004 +Node: Keywords42831 +Node: Functions44767 +Node: Controls for GNU indent45293 +Node: Output Format46232 +Node: Binary Strings49016 +Node: Options50159 +Node: Output File50944 +Node: Input Details51328 +Node: Output Language53159 +Node: Output Details54570 +Node: Algorithmic Details61485 +Node: Verbosity66734 +Node: Bugs67437 +Node: Projects69029 +Node: Bibliography70157 +Node: Concept Index72213  End Tag Table diff --git a/doc/gperf.pdf b/doc/gperf.pdf index 74d1225..43b6b33 100644 Binary files a/doc/gperf.pdf and b/doc/gperf.pdf differ diff --git a/doc/gperf.ps b/doc/gperf.ps index f3fc7c1..26f83a1 100644 --- a/doc/gperf.ps +++ b/doc/gperf.ps @@ -1,15 +1,16 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software -%%Title: gperf.dvi +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software +%%Title: ./gperf.dvi %%Pages: 32 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 -%%DocumentPaperSizes: a4 +%%DocumentFonts: CMBX12 CMTT12 CMR10 CMSY10 CMSL10 CMTT10 CMTI10 CMBX10 +%%+ CMSS10 CMB10 CMR9 CMTT9 CMTI9 CMBXTI10 %%EndComments %DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D600 -o gperf.ps gperf.dvi +%DVIPSCommandLine: dvips -D600 -o gperf.ps ./gperf.dvi %DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2003.05.07:1528 +%DVIPSSource: TeX output 2003.06.12:1833 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -68,2322 +69,3741 @@ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet -TeXDict begin 39158280 55380996 1000 600 600 (gperf.dvi) -@start -%DVIPSBitmapFont: Fa cmbxti10 14.4 1 -/Fa 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A -EA0FE0121271912B>46 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmti9 9 1 -/Fb 1 47 df<121C127F12FFA412FE12380808778718>46 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmtt9 9 29 -/Fc 29 126 df<000F1470486C13F8383FC001EA7FE0140315F038FFF00700F914E0A214 -0F15C0A2141F00FF1480387FE03F1500A26C485A381F807E380F00FEC75AA213015CA213 -035C13075CA2130F5C131F5CA2133F91C7FCA24913F090387E01F89038FE03FC9038FC07 -FEA212019038F80FFF0003149F13F0A2120713E0A2000F14FF9038C007FE121F1380EC03 -FC000FEB01F86CC712F0203A7DB327>37 D<007FB512F8B612FCA46C14F81E067C9927> -45 D<1278B612FE15FFA315FE39FC0001FCEC03F8EC07F0007814E0C7120FEC1FC01580 -143FEC7F00147E14FE5C13015C13035C13075CA2495AA3495AA3133F91C7FCA55B137EA9 -133C20307DAE27>55 D<007FB512F8B612FCA46C14F81E067C7E27>95 -D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0FFF13 -7F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C -15C07E000313F1C69038807F8022207C9F27>97 DIIIII<153F9039 -1FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F4848 -6C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5 -FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C -1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337E -A027>II<130F497E49 -7EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E -1D2F7BAE27>I107 D<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<39 -7F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001 -C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F913E701F813E36C4801C313002920 -819F27>I<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA2 -5BB03A7FFF83FFE0B500C713F0A36C018313E024207F9F27>II<387FE0FFD8FFF313C090B512F0816C800003EB81FE -49C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEB -FF009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B2331 -7F9F27>I<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138 -F00F809138E002004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27> -114 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F80 -13FC383FFFF06C13FC000713FF00011480D8000F13C09038003FE014070078EB03F000FC -1301A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF01C207B9F27>I< -133C137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483EC -FFF86D13F06D13E0010313C0010013001F297EA827>I<397FE01FF8486C487EA3007F13 -1F00031300B21401A21403EBFC0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27> -I<3A7FFE07FFE000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EB -C1F83903E3FC7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E0 -24207F9F27>119 D<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A01 -7E90C7FC6D5AEB1F7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F -8001F87F00016D7E3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I< -3A7FFC0FFF80486C4813C0A36C486C13803A07E000F800000313015D13F00001130301F8 -5B1200A26D485A137CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC13 -03A25C1301A25CA213035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B -6C5AEA07C022317E9F27>I<001FB512FE4814FFA490380001FEEC03FCEC07F8EC0FF000 -1EEB1FE0C7EA3FC0EC7F80ECFF00495A495A495AEB1FE0495A495A49C7FC485A4848131E -4848133F485A485A485A485AB7FCA46C14FE20207E9F27>II125 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmr9 9 47 -/Fd 47 123 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C -121C5A5A126009177AB315>39 D<123C127EB4FCA21380A2127F123D1201A412031300A2 -5A1206120E120C121C5A5A126009177A8715>44 D48 D<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E00 -7FB51280A319327AB126>IIII<000C14C0380FC00F90B5128015005C5C14F0 -14C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000C -EB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC06C -131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<123012 -3C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401EC0380C7EA07 -001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FCA25BA55BA913 -1C20347CB126>55 DII<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202 -707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5 -FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FF -FE49B512E0A333367DB53A>65 DIII70 -D73 -D<017FB5FCA39038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C -485A380F03F03803FFC0C690C7FC20357DB227>IIIII<90381FE00390387FFC0748B5FC3907F01FCF390F80 -03FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0EA3FF013FF6C -13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380157F153FED1F -C0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B39F1FC03F800 -E0B512E0011F138026C003FEC7FC22377CB42B>83 D85 -D<12035A120E5A12181238123012701260A212E05AA412DEB4FC1380A2127FA2EA3F0012 -1E09177BB315>96 DIII<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF -3907E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C -6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>III<151F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC01F83 -809039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF07C38 -0EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F0001 -003EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F007E0 -C6B51280D91FFCC7FC22337EA126>III -108 D<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0903BF3803E1C01F028 -07F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFF -F0A33C217EA041>I<3903F01FC000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03 -FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F7007ED8 -07FE7F6C48EB1F804914C049130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D -131F6DEB3F80160001FF13FC9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0 -A325307EA02B>I<3803E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC -0F8049C7FCA35BB2487EB512E0A31A217FA01E>114 DI<1330A51370A313F0A21201A212031207381FFFFEB5FCA23803 -F000AF1403A814073801F806A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>IIII<3A7FFF807FF8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D131C -017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14 -FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA70 -1CEA7838EA1FF0EA0FC025307F9F29>121 D<003FB512F0A2EB000F003C14E00038EB1F -C00030EB3F800070137F1500006013FE495A13035CC6485A495AA2495A495A49C7FC1530 -13FE485A12035B48481370485A001F14604913E0485A387F000348130F90B5FCA21C207E -9F22>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmb10 10.95 2 -/Fe 2 109 df97 D<13FFB5FCA512077EB3B3AFB512FCA516 -3F7EBE19>108 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmss10 10.95 2 -/Ff 2 42 df<14FCEB01F8EB03F0EB07E0EB0FC0131F1480EB3F005B137E5B12015B1203 -A2485AA25B120FA25B121FA25B123FA448C7FCA712FEB3A2127FA76C7EA4121F7FA2120F -7FA212077FA26C7EA212017F1200137E137F7FEB1F8014C0130FEB07E0EB03F0EB01F8EB -00FC165A79C323>40 D<12FC127E7E6C7E6C7E7F12076C7E7F12016C7E7F137E137FA2EB -3F80A2131F14C0A2130F14E0A2130714F0A4EB03F8A7EB01FCB3A2EB03F8A7EB07F0A414 -E0130FA214C0131FA21480133FA2EB7F00A2137E13FE5B485A12035B485A120F5B485A48 -C7FC127E5A165A7BC323>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmbx10 12 11 -/Fg 11 120 df<903801FFF8011FEBFF80017F14E090B612F8489038807FFC3A03FE001F -FE486CEB07FF486E7F0280806F7FA36F7F6C90C7FCA26C5AEA00F890C8FCA2150F021FB5 -FC0103B6FC131F017F13C03901FFFC004813E0000F13804890C7FC485A5B485AA2485AA4 -5DA26C6C5BED07BF6C6C010F13FC6CB490391F3FFFE06C9026C0FE1F13F06CEBFFFC6CEC -F007C66CD9E00113E0010790C9FC342F7DAD38>97 D100 DI104 D<13FCEA03FF4813804813C0A24813E0A66C13C0A26C13806C -1300EA00FC90C7FCA9EB7FC0EA7FFFA512037EB3AFB6FCA518467CC520>I<903A7FC003 -FF80B5011F13F0037F7F92B57E9139C1FC1FFE9139C3E00FFF00039026C7C0077F6CEBCF -0002DE7F02FC81A25C5CA35CB3A7B600C1B61280A5392D7CAC40>110 -DI<90397F803FC0 -B5EBFFF0028313F8028713FC91388FE7FE91389F8FFF0003EB9E0F6C13BCA214F8A29138 -F007FEED03FC9138E001F892C7FCA35CB3A5B612C0A5282D7DAC2F>114 -D<90391FFE078090B512DF000314FF5A380FF803381FE000D83F80133F127F90C7121FA2 -48140FA27FA201E090C7FC13F8EBFFC06C13FEECFFC06C14F015FC6C806C806C15800001 -15C07E011F14E01301D9000713F014000078147F00F8143F151F6C140FA37E6C15E0151F -6D14C06D133F01F0EB7F809039FC03FF0090B55A00FC5CD8F83F13F0D8F00790C7FC242F -7CAD2D>II119 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmtt10 12 8 -/Fh 8 118 df100 -DI<49B4 -EB1FE001079038C0FFF8011F01F313FC017F90B512FE90B7FC5A48018313F1903AFC007F -80FC484890383FC07849011F130048486D7EA2001F81491307A66D130F000F5DA26C6C49 -5A6D133F6C6C495A9038FF83FF91B5C7FC485C5D4814F001C713C001C190C8FC01C0C9FC -A47F6C7E90B512FE6CECFFE06C15F8000715FE48814816809026F0000313C0D83FC09038 -003FE090C8120F48ED07F0007E150300FE16F8481501A56C1503007E16F0007F15076C6C -EC0FE001E0143FD81FF8ECFFC0270FFF800F13806C90B612006C5DC615F8013F14E0010F -1480010001F8C7FC2F447DAB34>103 D<14F0497E497E497EA46D5A6D5A6D5A91C8FCA9 -383FFFFC487FA47EC7FCB3AD003FB612F04815F8B7FCA27E6C15F0253E79BD34>105 -D<15FF267FFC0713E026FFFE1F7F027F7F91B57E90B67E6C1481C69038FC00FF02F07F4A -804A133F5CA291C7FCA35BB3A4277FFFFC0FB5FCB56C481480A46C496C1400312C7FAB34 ->110 D<90390FFF078090B5EACFC0000314FF5A5A5A383FF803397F80007F90C7123F12 -FE48141FA47E007FEC0F8001C090C7FCEA3FF8381FFFE06C13FF6C14E06C14F8C614FE01 -1F7FD9007F1380020313C09138003FE0ED0FF0003C1407007EEC03F800FE1401A27EA36D -13036D14F06D13076DEB1FE001FE13FF90B612C016801600D8FC7F13FC6D13F0D8780713 -80252E79AC34>115 DII E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmtt12 13.14 9 -/Fi 9 118 df99 DII<14F0497E497E497EA46D5A6D5A -6D5A91C8FCAB383FFFFC487FB5FCA37E7EC7FCB3AF007FB612F0B712F816FCA316F86C15 -F0264476C338>105 D110 -D114 D<903907FF80F0017FEBF1F848B512FD000714FF5A5A -5AEBFC00D87FE0131F0180130F48C71207481403A5007FEC01F001C090C7FCEA3FF013FE -381FFFF86CEBFFC0000314F8C614FF013F1480010714E0D9003F13F0020013F8ED0FFC15 -03003CEC01FE007E140000FE15FF167F7EA37F6D14FF16FE01F013036DEB07FC01FF137F -91B512F816F016E04815C0D8FC3F1400010F13FCD8780113E0283278B038>III E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmbx12 13.14 37 -/Fj 37 122 df45 DI<15F014011407141F147FEB03FF137FB6FCA3 -13FC1380C7FCB3B3B2007FB712E0A52B4777C63D>49 DIII65 -D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EA800F0207EEE01F021F903A -FE007FF83F027F01E0903807FC7F91B5C73801FEFF010301FCEC007F4901F0814901C015 -0F4949814990C97E494882495A48498248197F5C48193F5C48191F5C48190FA2485BA21A -075AA391CDFCA2B5FCAD7EA280F207C0A27EA36C7F1A0F6C1A80806C191F6E18006C6180 -6C197E6C6D177C6D6C17FC6D6C4C5A6D6D4B5A6D6D4B5A6D01F0ED1FC06D01FC4B5A0100 -01FF03FFC7FC6E01E0EB07FE021F01FEEB3FFC020790B612F0020116C0DA003F92C8FC03 -0714F8DB001F13804A4D79CB59>67 DIII<93261FFF80EB01C00307B500F81303 -033F02FE13074AB7EA800F0207EEE01F021F903AFE007FF83F027F01E0903807FC7F91B5 -C73801FEFF010301FCEC007F4901F0814901C0150F4949814990C97E494882495A484982 -48197F5C48193F5C48191F5C48190FA2485BA21A075AA391CEFCA2B5FCAD7E050FB712C0 -80A37E94C7001FEBC000807EA27E807E807E806C7F7E6D7E6D7E6D7F6D01E05D6D6D5D6D -13FC010001FF4AB5FC6E01E0EB07F9021F01FFEB3FF0020791B5EAE07F0201EEC01FDA00 -3FED0007030702F81301DB001F018090C8FC524D79CB60>I73 D75 D78 D85 D87 D97 D<91380FFF8091B512F8010314FF010F158090263FFE0013C0D97FF8EB1F -E0D9FFE0EB3FF04849EB7FF8484913FF4890C7FC5A5B121F5B003FED7FF0EE3FE0007FED -1FC093C7FC5BA212FFAC127F7FA2123FA26D153E121F6D157E6C167C6C6D14FC6C16F86C -6D13036C01F0EB07F0D97FFCEB1FE06DB4EBFFC0010F90B5120001035C010014F0020F13 -802F337CB137>99 DI< -EC0FFF91B512F0010314FC010F14FF90263FFE077F90267FF0007F4948EB3FE04801806D -7E48824890C76C7E4848140783485A003F6F7EA3485A701380A312FFA290B8FCA401F8CA -FCA5127FA27FA2123FA26C6CED0F80A2000F161F6C6C16006E5C6C6D147E6C6D5C6C6D49 -5AD97FFCEB07F0903A1FFF803FE06D90B55A010392C7FCD9007F13FC020713C031337DB1 -38>IIII<13FCEA03FF487F487FA2487FA66C5BA26C5B -6C90C7FCEA00FC90C8FCACEB7FC0B5FCA512037EB3B3B61280A5194D7BCC22>I108 D<90287FC001FFE0EC7FF8B5010F -01FC0103B5FC033F6D010F804B6D6C4814E0DBFE079026C03F817F9126C3F0019138FC00 -7F0003D9C7E0DAE1F8806CDA8000D9F1E06D7E02CFC7EBF3C002DE91267FF780131F02FC -03FFC77FA24A5DA24A5DA34A5DB3A9B6D8C03FB5D8F00FB512FCA55E317BB067>I<903A -7FC001FFC0B5010F13F8033F13FE4B7F9126C1FE077F9126C3F0037F00039038C7C0016C -D9CF8080150002DE7F02FC81A25CA25CA35CB3A9B6D8C07FEBFFE0A53B317BB044>I<91 -3807FF80027F13F80103B6FC010F15C090261FFE017F903A7FF0003FF8D9FFC0EB0FFC48 -496D7E4890C76C7E4817804980000F17C048486E13E0A2003F17F049157FA2007F17F8A4 -00FF17FCAB007F17F8A36C6CEDFFF0A3001F17E06D5C000F17C06C6C4A13806C17006C6D -495A6C01E0EB1FFC6D6C495A903A3FFE01FFF0010FB612C0010392C7FCD9007F13F80207 -138036337DB13D>I<90397FC00FFFB5017F13F002C1B512FC02C714FF9126CFF80F7F91 -26FFC00313E0000391C77F6C01FC6E7E4A6E7E5C4A6E7E848319808319C0A47113E0AC4D -13C0A319805FA219004D5A804D5A6E4A5A6E4A5A02FF495BDB80075B9126EFF01F5B02E7 -B548C7FC02E314F802E014E0DB0FFEC8FC92CAFCAFB612C0A53B467CB044>I<9039FF80 -3FE0B5EBFFF8028113FE02837FDA87E11380EC8F830003D99F0713C06C139E14BCA214F8 -A24A6C13806F13004A6C5A93C7FCA45CB3A7B612E0A52A317CB032>114 -D<90390FFF8070017FEBF1F048B6FC1207380FFC01391FE0003F4848130F491307127F90 -C712035A1501A27FA213E06D90C7FC13FE387FFFF0ECFFC015F06C14FC6C14FF6C15806C -15C06C15E0C615F0013F14F8010714FCEB007F14019138003FFE150F0078140700F81403 -A26C1401A37E16FC6C14036D14F87F6DEB07F001F8EB1FE001FFEBFFC091B51280D8FC7F -1400D8F81F13FCD8E00313C027337CB130>I<14F8A61301A41303A21307A2130FA2131F -133F137F13FF1203000F90B512F0B7FCA426007FF8C7FCB3A6167CAA013F14F880A29039 -1FFE01F0010F1303903907FF87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>I -III<007FB500C090387FFFE0A5C601F0C73803F8006E5D -017F5E6E1407013F5E6E140F011F5E6E141FA26D6D91C7FC5F6D153E6F137E6D157C6F13 -FC6D5DEDF0016D5DEDF803027F5C15FC1607DA3FFE5B160F021F5CEDFF1F6E91C8FC16BF -6E13BE16FE6E5BA36E5BA26E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F80 -13FC486C5B387FE001D8FFF05B14035D14074A5A49485A007F49CAFCEBC07E383F81FC6C -B45A6C5B6C13C0C648CBFC3B467EAF41>121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fk cmtt12 14.4 5 -/Fk 5 115 df101 -D<923801FFC0030F13F0033F13FC92B512FE5C4A14FF5C4A1303EC1FF89238F001FEEC3F -E09238C000FC027F14005DAA003FB712F05AB812F8A36C16F0A2C7D87F80C7FCB3B3003F -B7FCA2481680A36C1600A2304A7CC93E>II112 -D114 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fl cmti10 10.95 45 -/Fl 45 123 df34 -D39 D<387FFFFCA3B5FCA21605799521> -45 D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>I<131EEB3F80137FEBFF -C05AA214806C13005B133C90C7FCB3120FEA3FC0127FA212FFA35B6CC7FC123C122777A6 -1C>58 D<171C173C177CA217FCA216011603A21607A24C7EA2161DA216391679167116E1 -A2ED01C1A2ED038115071601150EA2031C7FA24B7EA25D15F05D4A5AA24A5AA24AC7FC5C -140E5C021FB6FC4A81A20270C7127FA25C13015C495AA249C8FCA2130E131E131C133C5B -01F882487ED807FEEC01FFB500E0017FEBFF80A25C39417BC044>65 -D<9339FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB07 -1FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C49 -5A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5B -A490CCFCA2170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D140300 -1F4B5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261F -FFFEC9FC010713F0010013803A4272BF41>67 D<49B812F8A390260003FEC7121F18074B -14031801F000F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FC -A217F0027F5CED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C -13070107020E14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A -5A1707017F150F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>69 -D<49B812F0A390260003FEC7123F180F4B1403A2F001E014075DA3140F5D19C0A2141F5D -1770EFF003023F02E013804B91C7FCA21601027F5CED8003A2160702FFEB1F8092B5FCA3 -49D9003FC8FC4A7F82A20103140E5CA2161E0107141C5CA293C9FC130F5CA3131F5CA313 -3F5CA2137FA25C497EB612E0A33C3E7BBD3B>I<9339FF8001C0030F13E0033F9038F803 -809239FF807E07913A03FC001F0FDA0FF0EB071FDA1FC0ECBF00DA7F806DB4FC4AC77E49 -5AD903F86E5A495A130F4948157E4948157C495A13FF91C9FC4848167812035B12074916 -70120FA2485A95C7FC485AA3127F5BA312FF5BA30303B512FC90C7FCA2DB000190C7FCA2 -5FA216035FA316076C5E7FA2003F150F6D5D121F6D141F000F153F6C6C4A5A6C6C14F76C -6CEB01E36CB4EB07C1903A7FC03F81C090391FFFFE00010701F890C8FC010013803A4272 -BF46>I<49B648B6FC495DA2D9000390C7000313004B5D4B5DA2180714074B5DA2180F14 -0F4B5DA2181F141F4B5DA2183F143F4B5DA2187F147F4B5DA218FF91B8FC96C7FCA292C7 -12015B4A5DA2170313034A5DA2170713074A5DA2170F130F4A5DA2171F131F4A5DA2173F -133F4A5DA2017F157FA24A5D496C4A7EB66CB67EA3483E7BBD44>I<49B612C0A25FD900 -0390C8FC5D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92C9FCA35B5CA3 -13035C18C0EF01E0010716C05C17031880130F4A140718005F131F4A141EA2173E013F5D -4A14FC1601017F4A5A16074A131F01FFECFFF0B8FCA25F333E7BBD39>76 -D<49B5933807FFFC496062D90003F0FC00505ADBBF805E1A771AEF1407033F923801CFE0 -A2F1039F020FEE071F020E606F6C140E1A3F021E161C021C04385BA2F1707F143C023804 -E090C7FCF001C0629126780FE0495A02705FF00700F00E0114F002E0031C5BA2F0380301 -0116704A6C6C5D18E019070103ED01C00280DA03805BA2943807000F13070200020E5C5F -DB03F8141F495D010E4B5CA24D133F131E011CDAF9C05CEEFB80197F013C6DB4C7FC0138 -95C8FC5E01784A5C13F8486C4A5CD807FE4C7EB500F04948B512FE16E01500563E7BBD52 ->I<902601FFFE020FB5FC496D5CA2D900016D010013C04AEE3F00193E70141C193CEC07 -BFDB3FE01438151F1978020F7FDA0E0F15708219F0EC1E07021C6D5CA203031401023C7F -DA38015DA2701303EC7800027002805BA2047F130702F014C04A013F91C7FCA2715A0101 -141F4AECF00EA2040F131E010315F84A151C1607EFFC3C0107140391C7143817FE040113 -784915FF010E16708218F0131E011C6F5AA2173F133C01385E171F137813F8486C6F5AEA -07FEB500F01407A295C8FC483E7BBD44>II<49B77E18F018FC903B0003FE0003FE -EF00FF4BEC7F80F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0 -187F4B1580A2027FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512 -FC17E04ACAFCA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C -497EB67EA33C3E7BBD3E>I<49B612FCEFFF8018F0903B0003FE000FF8EF03FE4BEB00FF -8419800207ED3FC05DA219E0140F5DA3021FED7FC05DA2F0FF80143F4B15004D5A60027F -4A5A4B495A4D5AEF3F8002FF02FEC7FC92380007F892B512E01780499038000FE04A6D7E -707E707E0103814A130083A213075CA25E130F5C5F1603131F5CA3013F020714404A16E0 -5F017F160119C04A01031303496C1680B6D8800113079438FE0F009338007E1ECAEA3FFC -EF07F03B407BBD42>82 D<92391FE00380ED7FFC913A01FFFE0700913907F01F8F91390F -C007DF4AC66CB4FC023E6D5A4A130014FC495A4948147CA2495AA2010F15785CA3011F15 -70A46E91C7FCA2808014FE90380FFFE015FC6DEBFF8016E06D806D806D6C7F141F02037F -EC003FED07FF1501A281A282A212075A167E120EA2001E15FE5EA25E003E14015E003F14 -034B5A486C5C150F6D495A6D49C8FCD8F9F0137C39F8FE01F839F03FFFF0D8E00F13C026 -C001FEC9FC314279BF33>I<48B9FCA25A903AFE001FF00101F89138E0007FD807E0163E -49013F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12704A15 -3C00F01738485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA214 -7FA25DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41>I<00 -1FB500F090B512F0485DA226003FF0C7380FFC004AEC03F04A5D715A017F1503A24A5DA2 -01FF150795C7FC91C8FCA2485E170E5BA20003161E171C5BA20007163C17385BA2000F16 -7817705BA2001F16F05F5BA2003F1501A2495DA2007F1503A2495DA2160794C8FC48C8FC -5E160E161E6C151C163C5E5E5E6C6C13014B5A001F4A5A6C6C011FC9FC6D133E6C6C13F8 -3903FC07F0C6B512C0013F90CAFCEB07F83C406FBD44>I<277FFFFE01B500FC90B512E0 -B5FCA20003902680000790C7380FFC006C90C701FCEC07F049725A04035EA26350C7FCA2 -0407150EA2040F5D1A3C041F153862163B6216734F5A6D14E303014B5A6C15C303034BC8 -FC1683DB0703140E191E030E151C61031C7F61ED380161157003F04A5A15E002014B5A15 -C0DA03804AC9FC60DA0700140E60140E605C029C5D14B8D97FF85D5C715A5C4A5DA24A92 -CAFC5F91C7FC705A137E5F137C5F137801705D53406EBD5B>87 D<010C1306011C130E01 -78133C01E01370484813E04913C0000313013907000380000EEB0700000C1306001C130E -0018130C0038131C003013180070133800601330A200E0137000CFEB678039FFC07FE0A6 -018013C0397F003F80003CEB1E001F1C69BE2F>92 D<147E49B47E903907C1C38090391F -80EFC090383F00FF017E137F4914804848133F485AA248481400120F5B001F5C157E485A -A215FE007F5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F1370127C021F -13F0007E013F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC -133E252977A72E>97 DIIII<167C4BB4FC923807C78092380F83C0ED1F87161FED3F3FA2 -157EA21780EE0E004BC7FCA414015DA414035DA30103B512F8A390260007E0C7FCA3140F -5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495AA4495AA4495A121E127F -5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A5383BF1C>III<1478EB01FCA21303A314F8 -EB00E01400AD137C48B4FC38038F80EA0707000E13C0121E121CEA3C0F1238A2EA781F00 -701380A2EAF03F140012005B137E13FE5BA212015BA212035B1438120713E0000F1378EB -C070A214F0EB80E0A2EB81C01383148038078700EA03FEEA00F8163E79BC1C>I107 -DIIII<903903E001F890390FF807FE903A1E7C1E0F80903A1C3E3C07 -C0013C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015F8147E16 -03000113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A1480163F -010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC03E049C9 -FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I114 DII<137C48B4141C26038F80137EEA0707000E7F001E -15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F1303140000005D5B017E1307 -A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F1683EE0380A2ED7F070001 -02FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C90391FFC07F8903907F001F02A -2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E01C013F8121E001C1403EA -3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012005B017E130116C013FE5B -1503000115805BA2ED07001203495B150EA25DA25D1578000114706D5B0000495A6D485A -D97E0FC7FCEB1FFEEB03F0252979A72A>I<903903F001F890390FFC07FE90393C1E0E0F -9026780F1C138001F0EBB83FD801E013F89039C007F07FEA0380000714E0D9000F140048 -151C000E4AC7FCA2001E131FA2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C -001E1538003F491378D87F811470018314F000FF5D9039077801C039FE0F7C033A7C0E3C -078027783C1E1EC7FC391FF80FFC3907E003F029297CA72A>120 -D<137C48B4143826038F8013FCEA0707000E7F001E1401001C15F8EA3C0F12381503D878 -1F14F000701380A2D8F03F1307020013E012005B017E130F16C013FE5B151F1201491480 -A2153F000315005BA25D157EA315FE5D00011301EBF8030000130790387C1FF8EB3FF9EB -07E1EB00035DA21407000E5CEA3F80007F495AA24A5AD8FF0090C7FC143E007C137E0070 -5B387801F0383803E0381E0FC06CB4C8FCEA03F8263B79A72C>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fm cmtt12 17.28 5 -/Fm 5 115 df101 D<4CB47E041F13F093B512FC0303 -80030F805D4B15805D92B7FC4AEBFC074A13F0DCC00313004A13804C6C5A4A48EB007895 -C7FC5DAB003FB812F04883B97EA56C5F6C5FC7D80FFCC9FCB3B3A8001FB712FE48824883 -A56C94C7FC6C5E39597BD84A>II112 D114 D -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fn cmtt10 10.95 86 -/Fn 86 127 df<00101304007C131F00FEEB3F80A26C137FA248133FB2007E1400007C7F -003C131E00101304191C75B830>34 D<903907C007C0A2496C487EA8011F131FA202C05B -A3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F90B512 -FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA229387D -B730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFEFD13C0 -9039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A36CEC03 -F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F011F7F01 -037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FCA35AA2 -6CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C5C6C5C -C614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>IIII<141E147F14FF5BEB03FEEB07 -FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA212 -7F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80 -EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812FE7E7F -6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A2 -14FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1F -C0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30 ->I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9FF267F -FBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048B512F0 -4880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD87E03EB -0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7FCA2B8 -1280A36C1600A2C76CC8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120FEA3FC0 -EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A21507A2 -ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA2 -4A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2 -485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30 ->I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3F -C04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FE -AD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB -3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC27 -3A7CB830>IIIII<000FB612804815C05A -A316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007FC04913 -3F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716F04814 -0F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E0 -6C6C1380D90FFCC7FC25397BB730>II<127CB712FC16FEA416FC48C7EA0FF816 -F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7 -FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830>I<49 -B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049131FD8 -3FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6CEB1FE0 -D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE48802607FE -0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815FE4814 -00A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B5 -12C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13E0013F -13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF04848 -1307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D133FD8 -0FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A21507 -16F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A -6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7F -E0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C27 -6EA630>II<16F01503ED07F8151F157FEDFFF014034A -13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0485B00 -0F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F38007FFC6D -7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7FF8151F -1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003FB612FE -4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13 -C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0 -020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801FFF049 -5B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9 -FC127E1278252F7BB230>I64 D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F -7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038FC001F0003814913 -0FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>I<007FB5 -12F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED -1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80 -A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I< -91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE -000F484813075B48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E -7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901 -FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830 ->I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F -7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A1503 -4B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7 -FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92 -C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8 -FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92 -C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F101 -3F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F -491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F -003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F -6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D4813F0 -B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3A23B3F -FF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<007FB6 -FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>I<49 -B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403EB8007397FF0 -1FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>II<383FFFF848 -7FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16802A38 -7EB730>III<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133F -D87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C -6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I< -007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163F -A6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387F -FFC0B57EA46C5B29387EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0 -EBF80001E0133F4848EB1FF049130F90C71207A44815F8481403B3A8147E14FE6CEBFF07 -6C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90B6FC6C15C06C1580 -6C1500000114FCD8003F7FEB00016E7EA21680157F16C0153F16E0151F16F0150FED07E0 -25467BB830>I<003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0151F6F -7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182D9F800 -7FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E17F06C -496C13E06C49EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97FFF13E048B512C748 -14F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141FA2150FA37EED07C0 -6C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01031480D9 -003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716F07F6DEB -0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD8780113 -80253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C791C7FCB3 -B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813FEA46C496C13 -FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC800390393FE00FF8 -90391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730>III89 D<001FB612FC4815FE5A -A490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E1500C85A4A5A5D14034A5A -5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F495A5C133F495A91C8FC5B48 -48147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FCA46C15FC27387CB730>I< -127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA2 -6D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7E -A26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01 -F0150025477BBE30>92 D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 -D<1338137CEA01FE12031207EA0FFC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EA -FFC013E013F0127FA2123FA2EA1FE0EA07C00F1D70BE30>II< -EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B612FC82EC -FE079138F001FF4A6C13804A137F4AEB3FC091C7121F17E049140FA217F01607A8160FA2 -17E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E7F -13C0D93C1F90C7FC90380003FC2C3980B730>II<913801FFE04A7F5CA2 -8080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F4913 -1F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F39 -0FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FCC8 -FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC00 -7FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516F0 -48C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C -90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>IIII<14 -E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB6 -12C04815E0B7FCA27E6C15C023397AB830>III<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730> -I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE -07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548 -018F13C0A46C486C01071380322881A730>II<49B4 -FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB -0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303 -003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15 -006C6C13FC6D5B010F13E0010190C7FC272A7CA830>II114 D<90381FFC1E48B5129F000714FF5A5A5A -387FF007EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14 -E0000114F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F15 -1F6DEB3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A -79A830>III<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C49 -6C13803B01F80003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F01 -1F91C7FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA3 -6E5A6E5A2B277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D8 -07E0C7EA3F00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8 -A2147DA2ECFDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F80 -0F802D277FA630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137F -EC80FE90383F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C49 -7F81903803F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F007E017E13 -7F01FE6D7E48486D7E267FFF80B5FCB500C1148014E3A214C16C0180140029277DA630> -I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014 -076D5C137E150F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0 -157C15FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C14 -7EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B -3C7EA630>I<001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF8000 -3E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A49 -48133E4890C7127F485A485A485A485A485A48B7FCB8FCA46C15FE28277DA630>II125 -D<017C133848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713 -C0486C1380D87C0113003838007C1F0C78B730>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fo cmsl10 10.95 35 -/Fo 35 123 df12 -D39 D<007FB5FCA2B512FEA418067C961E>45 -D<121EEA3F80EA7FC012FFA41380EA7F00123C0A0A788919>I<157015F014011407143F -903803FFE0137FEBFFCFEBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015C -A513035CA513075CA5130F5CA3131F497EB612F8A31D3D78BC2D>49 -D67 D<013FB812E0A3903A007FF000 -016E48EB003F180F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D -5C160116031607161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93 -C9FCA4131F5CA5133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>70 -D<021FB512FCA3DA000713006F5AA25EA41507A25EA4150FA25EA4151FA25EA4153FA25E -A4157FA25EA415FFA293C7FCA45C121FD87F805BEAFFC0A214035D13804A5AEAFE0000F8 -495A48495A00705C6C495A6C01FEC8FC380F81FC3803FFE0C690C9FC2E407ABD2F>74 -D<9238FF80070207EBE00F021FEBF81E91387F00FE02FCEB1F3ED903F0EB0FFE49481307 -494813034AEB01FC49C7FC491400133E137E177C491578A57F1770A26D1500808080EB7F -FEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F02031480DA003F13C0150315 -00EE7FE0163F161FA2160F121CA31607160F003C16C0A31780003E151F1700007E5D007F -153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F8027F01FFFFEC7FCD8E0 -0713F839C0007FC030427BBF33>83 D<0007B912F0A33C0FFE000FF8003F01F0160F01C0 -4A13034848160190C7FC121EF000E048141F5E1238A212781270153F5E5AA3C81600157F -5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA3141FEC7FFC0003B7FCA33C3D76 -BC42>I87 -D97 -DI -IIII<177C913907F803FE91393FFE0F8F9139FC0F9C3F903901F007F89039 -07E003E0D90FC013F0011F903801F80C02801400133FD97F007FA315035B495CA3017E49 -5A5E150F6D5C6D495A90263F803EC7FCECC0FC903871FFF09038E07F8091C9FC485AA47F -A27F90B512F8EDFF806C15E016F86D8048B6FC3A07E0000FFED80F801300003FC8127F00 -3E815A00FC815AA25E163EA25E6C15FC007C4A5A6C4A5A6CEC0FC0D80FC0013FC7FC3903 -F801FCC6B512F0010F90C8FC303D7FA82D>I<147FEB3FFFA313017FA25CA513015CA513 -035CA4ED07F80107EB1FFF9139F0781FC09138F1E00F9139F38007E0ECF70002FE14F049 -5A5CA25CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B4915 -00A300015D486C491380B5D8F87F13FCA32E3F7DBE33>I<1478EB01FE130314FFA25B14 -FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5131F14C0A5133F -1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>II<147F -EB3FFFA313017FA25CA513015CA513035CA501070103B5FC02F014FEA26F13F06F1380EE -FE00010F14F84A485AED03C04B5A031FC7FC153E011F13784A5AECC3E0ECC7F0ECCFF814 -FF497F14F9ECE1FE14C04A7E4A7E4980017E133F82151F82150F01FE8049130782A20001 -81486C49B4FCB5D8F03F13F04B13E0A2303F7EBE30>I<143FEB1FFF5BA213017FA214FE -A5130114FCA5130314F8A5130714F0A5130F14E0A5131F14C0A5133F1480A5137F1400A5 -5B5BA4EA03FF007F13F8A2B5FC183F7DBE1A>I<902707F007F8EB03FCD803FFD91FFF90 -380FFF80913CE0781FC03C0FE09126E1E00FEBF0073E001FE38007E1C003F090260FE700 -EBE38002EEDAF70013F802FC14FE02D85C14F84A5CA24A5C011F020F14074A4A14F0A501 -3F021F140F4A4A14E0A5017F023F141F91C74914C0A549027F143F4992C71380A300014B -147F486C496DEBFFC0B5D8F87FD9FC3F13FEA347287DA74C>I<903907F007F8D803FFEB -1FFF9139E0781FC09138E1E00F3B001FE38007E090380FE70002EE14F014FC14D814F85C -A24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B491500A30001 -5D486C491380B5D8F87F13FCA32E287DA733>II<91387F01FE -903A7FFF0FFFC09139FE3E03F09238F801F8903A03FFE000FE6D49137F4B7F92C713804A -15C04A141FA218E0A20103150F5C18F0A3171F010716E05CA3173F18C0130F4A147F1880 -A2EFFF004C5A011F5D16034C5A6E495AEE1FC06E495AD93FDC017EC7FC91388F01F89138 -83FFE0028090C8FC92C9FC137FA291CAFCA45BA25BA31201487EB512F8A3343A81A733> -I<903907F01F80D803FFEB7FE09138E1E1F09138E387F839001FE707EB0FE614EE02FC13 -F002D813E09138F801804AC7FCA25C131FA25CA4133F5CA5137F91C8FCA55B5BA3120148 -7EB512FEA325287EA724>114 D<9138FF81C0010713E390381F807F90397C003F804913 -1F4848130F5B00031407A248481400A27FA27F6D90C7FCEBFF8014FC6C13FF6C14C015F0 -6C6C7F011F7F13079038007FFE1403140100381300157EA2123C153E157E007C147CA200 -7E147815F8007F495A4A5A486C485A26F9E01FC7FC38E0FFFC38C01FE0222A7DA824>I< -EB0380A4130791C7FCA25BA25BA2133EA2137E13FE12011207001FB512C0B6FCA2D801FC -C7FCA312035BA512075BA5120F5BA41407001F130E13C0A4141E141C1380A26D5AA2000F -5B14F03807E1E03801FF80D8007EC7FC1A3978B723>I<01FE147F00FFEC7FFF4914FEA2 -0007140300031401A34914FCA4150312074914F8A41507120F4914F0A4150F121F4914E0 -A2151FA3153F4914C0157F15FFEC01DF3A0FC003BFE09138073FFF3803F01E3801FFF826 -003FE01380282977A733>III<90B539E007FFF05E18E0 -902707FE000313006D48EB01FC705A5F01014A5A5F16036E5C0100140794C7FC160E805E -805E1678ED8070023F13F05EED81C015C191381FC38015C793C8FC15EF15EEEC0FFCA25D -A26E5AA25DA26E5A5DA24AC9FC5C140E141E141C5C121C003F5B5A485B495A130300FE5B -4848CAFCEA701EEA783CEA3FF0EA0FC0343A80A630>121 D<017FB512FEA2ECC0019039 -7E0003FC49EB07F849EB0FF049EB1FE049EB3FC0ED7F8000011500495B4A5A4A5A484848 -5A4A5AC7485A4A5A5D147F4AC7FC495A495A49481370494813E0495A5C133F90387F8001 -D9FF0013C0485A48481303485A4848EB078049130F4848131F003F143F397F8001FFB712 -00A227277EA628>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fp cmbx12 17.28 47 -/Fp 47 122 df45 D<16F04B7E1507151F153FEC01FF1407147F -010FB5FCB7FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51>49 -D<913801FFF8021FEBFFC091B612F8010315FF010F16C0013F8290267FFC0114F89027FF -E0003F7F4890C7000F7F48486E7FD807F86E148048486E14C048486E14E048486F13F001 -FC17F8486C816D17FC6E80B56C16FE8380A219FFA283A36C5BA26C5B6C90C8FCD807FC5D -EA01F0CA14FEA34D13FCA219F85F19F04D13E0A294B512C019804C14004C5B604C5B4C5B -604C13804C90C7FC4C5A4C5A4B13F05F4B13804B90C8FC4B5AED1FF84B5A4B5A4B48143F -4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC7F8092C9FC02FE16FE495A495A4948ED01FCD9 -0FC0150749B8FC5B5B90B9FC5A4818F85A5A5A5A5ABAFCA219F0A4405E78DD51>I<92B5 -FC020F14F8023F14FF49B712C04916F0010FD9C01F13FC90271FFC00077FD93FE001017F -49486D8049C86C7F484883486C6F7F14C0486D826E806E82487FA4805CA36C5E4A5E6C5B -6C5B6C495E011FC85A90C95CA294B55A614C91C7FC604C5B4C5B4C5B4C5B047F13809226 -0FFFFEC8FC020FB512F817E094C9FC17F817FF91C7003F13E0040713F8040113FE707F71 -7F7113E085717FA2717F85A285831A80A31AC0EA03FCEA0FFF487F487F487FA2B57EA31A -80A34D14005C7E4A5E5F6C495E49C8485BD81FF85F000F5ED807FE92B55A6C6C6C491480 -6C01F0010791C7FC6C9026FF803F5B6D90B65A011F16F0010716C001014BC8FCD9001F14 -F0020149C9FC426079DD51>II<01C0EE01C0D801F8160F01FF167F02F0EC07FFDAFF8090B5FC92B712 -8019006060606060606095C7FC17FC5F17E0178004FCC8FC16E09026FC3FFCC9FC91CBFC -ADED3FFE0203B512F0020F14FE023F6E7E91B712E001FDD9E00F7F9027FFFE00037F02F8 -01007F02E06EB4FC02806E138091C8FC496F13C04917E07113F0EA00F090C914F8A219FC -83A219FEA419FFA3EA03F0EA0FFC487E487E487FA2B57EA319FEA35C4D13FC6C90C8FC5B -4917F8EA3FF001804B13F06D17E0001F5E6C6C17C06D4B1380D807FC92B512006C6C4A5B -6C6C6C01075B6C01E0011F5BD97FFE90B55A6DB712C0010F93C7FC6D15FC010115F0D900 -3F1480020301F0C8FC406078DD51>III65 DI<4DB5ED03C0057F02F014070407 -B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6 -C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01 -F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC484A84A2 -484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C7FCA25CA3B5FCB07EA380A27E -A2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A26C6E616D1BFE6D7F6F4E5A -7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEFFF806E01FC4C90C7FC020F -01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF913803FFE0033F02F8013F1380030F -91B648C8FC030117F86F6C16E004071680DC007F02F8C9FC050191CAFC626677E375>I< -BB12E0F2FF801BF01BFE757E1CF0D800010280C7000780DF007F13FE080F6D7E08018074 -80093F7F090F13FC757F757F877580767F8A88767F8A888AA2767FA28A881F80A37614C0 -A41FE0A5881FF0B05214E0A51FC0A4521480A31F006466A2525BA2525BA2525B666499B5 -5A515C5191C7FC515B515B515B097F5B50B512C008075C083F91C8FC0707B512FCBD12F0 -1CC051C9FC1BF81B8008E0CAFC6C627AE17C>II<4DB5ED03C0057F02F014 -070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13 -FF92B6C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16 -074A01F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC48 -4A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C8FCA25CA3B5FCB07E07 -1FB812F880A37EA296C70001ECC000A26C7FA37E807EA26C80A26C80A26C807F6D7F816D -7F7F6D7F6D6D5F6D14C06D6E5E6E7F6E01FC5E020F01FF5E6E02C0ED7FEF020102F8EDFF -C76E02FF02071383033F02FC013F1301030F91B638FC007F03014D131F6F6C04E0130704 -0704801301DC007F02F8CAFC050191CBFC6D6677E37F>71 D -II75 D -I78 D80 D82 DI<001FBEFCA64849C79126E0000F -148002E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181F -A4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>II<913803FFFE027FEBFF -F00103B612FE010F6F7E4916E090273FFE001F7FD97FE001077FD9FFF801017F486D6D7F -717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207 -B7FC147F49B61207010F14C0013FEBFE004913F048B512C04891C7FC485B4813F85A5C48 -5B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE1 -14FF6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC130F010302F001011400D9 -001F90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF8004 -7F14F00381B612FC038715FF038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02 -007F03F8824B6F7E4B6F13804B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA4 -4F13F8A31BF0A24F13E0A24F13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C49 -5B9126F83FE0013F13C09127F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C700 -1F91C8FC90C8000313E04F657BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E -01039039FE001FFF4901F8010113804901E0010713C04901804913E0017F90C7FC49484A -13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE -7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC -1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D -020F1580020102FCC7FCDA000F13C03E437BC148>II<92380FFFC04AB512FC020FECFF8002 -3F15E091B712F80103D9FE037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F -49486E7F48498048844A804884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA4 -1A0002C0CBFCA67EA380A27EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17 -016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D -6C90B55A021F15F8020715E0020092C8FC030713F041437CC14A>III<903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267F -E07F7F922781FE001F7FDB83F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC -825DA25DA25DA45DB3B2B7D8F007B71280A651647BE35A>II<903807FF80B6FCA6C6FC7F7FB3A90503 -B61280A6DD003FEB8000DE0FFCC7FCF01FF04E5AF0FFC04D5B4D90C8FCEF07FC4D5AEF3F -F04D5A4D5A4C90C9FC4C5AEE0FFC4C5A4C5AEE7FC04C7E03837F03877F158F039F7F03BF -7F92B5FC838403FC804B7E03F0804B6C7F4B6C7F1580707F707F707FA270807080717FA2 -717F717F717FA2717F717F83867180727F95B57EB7D8E00FECFFF0A64C647BE355>107 -D<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>I<902607FF80D91F -FFEEFFF8B691B500F00207EBFF80040702FC023F14E0041F02FF91B612F84C6F48819326 -7FE07F6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987 -F06D4A487F6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003 -FC04FF834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087 ->I<902607FF80EB1FFFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE00 -1F7FC6DA83F86D7F6DD987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA2 -5DA45DB3B2B7D8F007B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8 -027F15FE494848C66C6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F -7E49486F7E48496F13804819C04A814819E048496F13F0A24819F8A348496F13FCA34819 -FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C -6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B01 -0090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151>I<902607FF80EBFF -F8B6010FEBFF80047F14F00381B612FC038715FF038F010114C09227BFF0003F7FC6DAFF -C0010F7F6D91C76C7F6D496E7F03F86E7F4B6E7F4B17804B6F13C0A27313E0A27313F0A2 -1BF885A21BFCA3851BFEAE4F13FCA41BF861A21BF0611BE0611BC06F92B512801B006F5C -6F4A5B6F4A5B03FF4A5B70495B04E0017F13C09226CFFC03B55A03C7B648C7FC03C115F8 -03C015E0041F91C8FC040313E093CBFCB3A3B712F0A64F5D7BC05A>I114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48 -B8FC48EBE0014890C7121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171F -A27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C -826C82013F1680010F16C01303D9007F15E0020315F0EC001F1500041F13F81607007C15 -0100FC81177F6C163FA2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D -0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F -13E035437BC140>II<902607FFC0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60 -183E6D6D147E4E7F6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F -5C020314F8DA003F018002F0C7FC51427BC05A>III< -007FB600C0017FB512F8A6D8001F01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D -6D4A5A70495A6D4C5A6E7F6E6D495A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13 -FFEF8FF06EEC9FE06FEBFFC06F5C6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B80 -5D4B80DB0FF37FDB1FE17F04C080153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D -7F020F6E7F4A486D7F4A486D804A5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F0 -49B7FCA650407EBF55>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fq cmsy10 10.95 2 -/Fq 2 16 df13 D15 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fr cmbx12 14.4 61 -/Fr 61 122 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03 -F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949 -4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E -007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D -D34E>11 DI<49B419F0010F01E01701013F6D4D7E4901FC17079026FFC1FE170F -48D9007F4D5A4848D93FC0163F0007DA1FF04C5A48486D6C4B485A6FB403075B484803C0 -141F003F6E01F891B5C8FC9327EFFFC00F5B04F190B6FC4848902601F07FECF7FC0507EC -8FF8943A003FF00FF07090C7121F00FF02004C5A505A631AFF4F90C9FC624F5A19074F5A -62191F4F5A4F5A007F02015E4C14FF4E90CAFC4E5A6C6C01035D4C13074E5A001F02075D -6C6C4A495A030F143F6C6C4948495A00034AC75B6C6C017E14FF6CD9C1FC4990CBFC6DB4 -48495A6D495C010F491307010190C74848EC1FF090C94848ECFFFE4E01037F053F4A804D -4890390FFC1FC04E90391FF007E04DC748486C7E4C037F6D7E4C484A486C7E4D177C0407 -4A49137E4C4849153E4C5A4D173F043F4A90C77E4C5A4C5A94C717804B4B150F4B5A5E4B -5A150F4B5A5E153F4B5A4B5A93C8FC5C4A5A4A486F151F4B1A00140F4A5A4B6F6D5B4A48 -193E147F4A486F157E92CA6D137C491BFC4948716C485A4948053F495A4A716C485A010F -95390FFC1FC04A71B55A4A7191C7FC6D4805005B0103F11FF0616179D970>37 -D44 DII<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1F -FC003FF849486D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C813F0A3 -4817F8A24817FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA2 -6C17F8A36C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFC -EB3FF8903A0FFF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48 -D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A600 -7FB712FEA52F4E76CD43>II<91380FFFC091B512FC -0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D8 -07FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005F -A24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113 -F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8 -487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A13 -80D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F -1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D -5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C -5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E -127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>III<121F7F7FEBFF8091B81280A45A1900606060A2606060485F0180C86CC7FC -007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A15 -0F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA3 -14FFA55BAC6D5BA2EC3FC06E5A395279D043>I<913807FFC0027F13FC0103B67E010F15 -E090261FFC0113F8903A3FE0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717 -C04980120F18E0177FA2121F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313 -009238F007FE6C02F85B9238FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D8101 -0F15E06D81010115FC010781011F81491680EBFFE748018115C048D9007F14E04848011F -14F048487F48481303030014F8484880161F4848020713FC1601824848157F173FA2171F -A2170FA218F8A27F007F17F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C -010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F -13C0364F7ACD43>I<91380FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F -4948EB3FF048496D7E484980486F7E484980824817805A91C714C05A7013E0A218F0B5FC -A318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF80301 -1FB512E36D14C30103028313F89039007FFE03EC00401500A218F05EA3D801F816E0487E -486C16C0487E486D491380A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD8 -03FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7A -CD43>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F8016 -7E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F8116808303 -3F8293C77E4B82157E8403FE824B800201835D840203834B800207835D844AB87EA24A83 -A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A82010785A24A -82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 -DI<932601FFFCEC01C0047F -D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7 -383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982 -4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2 -98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D -606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D -6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F -93C8FC030715FCDB007F14E0040101FCC9FC525479D261>IIII<9326 -01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003 -EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249 -49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F -A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F -A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D -5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03 -0703FC1307DB007F02E01301040149CAFC5B5479D26A>III<027FB71280A591C76C90C7FCB3 -B3B3EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B7E49495BD83FF8495BD81FE05DD8 -0FFC011F5B2707FF807F90C8FC000190B512FC6C6C14F0011F14C0010101F8C9FC39537D -D145>IIII< -B600FC93B7FC8181A282D800076E9239003FFC0070EE07E08282A28202EF7F02E77F02E3 -80A202E18002E0806F7F6F7F6F7FA26F7F6F7F6F806F80A26F80707F707F707F707FA270 -7F7080708070808583717F717F717F717FA27114807114C07114E07213F07213F8A27213 -FC7213FE7213FF721487A27214C77214E77313F77313FF85A285858585A28586868686A2 -86868686A2D93FFC187FB7173F1B1F1B0F1B07755A60527CD169>I<93380FFFC00303B6 -FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02 -007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F494870 -7FA24849717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B5 -1AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D -4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A -6D01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0 -030392C9FCDB001F13E0565479D265>II82 D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC00 -6D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F -82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFF -C017F06C16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F -15C0ED007F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA2 -6CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFF -C003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D2 -4B>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F -49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912 -F0A553517BD05E>II87 D89 D97 DI<913801FFF8021FEBFF8091B612F0010315 -FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2 -486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C -6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0 -010390B55A01001580023F49C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F -1707B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC -0101B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7E -A37EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFF -C07FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FF -C0023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48 -496D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049 -CAFCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6D -EC3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC02 -0113F034387CB63D>III< -EB3FF0B5FCA51203C6FCB3A4EE1FFC93B512C0030314F0030F8092391FE07FFC92393F00 -1FFE037C8003F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B6 -12C0A542537BD24B>I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90 -C8FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I107 DIII<913801FFE0021F -13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F4849 -6D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC00 -7F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C49 -5BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387C -B643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007F -FE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A472 -1380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFF -FC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7B -B54B>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003 -D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55C -B3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD8 -0FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC0 -6C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC -003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F -8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC -2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90 -B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEB -F0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I -III<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D -6D5C6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6E -EB8FE06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA -01FD7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F -495A49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I< -B600F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F -13016D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E02 -3F147C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5A -A26F5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C -486C13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F00003 -5BC690CBFC404D7DB447>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fs cmr10 10.95 85 -/Fs 85 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 -F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 -FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 -DIII<001E130F397F803FC000FF137F01C013E0 -A201E013F0A3007F133F391E600F3000001300A401E01370491360A3000114E04913C000 -03130101001380481303000EEB070048130E0018130C0038131C003013181C1C7DBE2D> -34 D<4B6C130C4B6C131EA20307143EA24C133CA2030F147CA293C71278A24B14F8A203 -1E5CA2033E1301A2033C5CA3037C1303A203785CA203F81307A24B5CA20201140F007FBA -FCBB1280A26C1900C72707C0003EC8FC4B133CA3020F147CA292C71278A24A14F8A2021E -5CA3023E1301007FBAFCBB1280A26C1900C727F80007C0C8FC4A5CA20101140FA24A91C9 -FCA301035CA24A131EA20107143EA24A133CA2010F147CA291C71278A34914F8A2011E5C -A2013E1301A2013C5CA201186D5A41517BBE4C>I<14E0A4EB07FC90383FFF8090B512E0 -3901F8E3F03903E0E0FCD807C0133CD80F807FD81F007F003E80003C1580007C140316C0 -0078141F00F8143F157FA47EED3F806CEC0E0092C7FC127F138013C0EA3FF013FEEA1FFF -6C13FC6C13FF6C14C06C806C6C13F8011F7F130301007FECE7FF14E102E01380157F153F -ED1FC0A2003E140F127FD8FF801307A5130000FC158000F0140F1270007815005D6C141E -153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280D93FFEC7FCEB0FF8EB00E0A422497BC3 -2D>I38 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A4 -13E013C0A312011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0 -EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F -90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A2 -6C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C3 -23>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA214 -80130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B -133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I< -EB03C0A2805CA600F0140F00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F1 -8FC03900FDBF00EB3FFCEB0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F039 -3FC3C3FC39FF03C0FF00FE147F00FC143F00F0140F00001400A6805CA220277AC32D>I< -121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A12 -0E5A1218123812300B1C798919>44 DI<121EEA7F80A2EAFFC0 -A4EA7F80A2EA1E000A0A798919>III -III<150E151E153EA2 -157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB07 -00A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00 -AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092 -C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49137E49 -7F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12 -FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6 -B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED07801600 -5D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8 -A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2 -EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7 -FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A1206120E120C -121C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0 -A26C18E03C167BA147>61 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC -15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA34948 -6D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153FA2013C82 -0138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044> -65 DIIIII -III<011FB512FCA3D9000713006E5A1401B3B3A6123F -EA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603E07E -C7FC3800FFF8EB3FC026407CBD2F>IIIIIIIIII<003FB91280A3903AF0007FE001018090393FC000 -3F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E -0107B612FEA33B3D7DBC42>IIII<007FB5D8C003B512E0A3C649C7 -EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D -13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C -5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801 -C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F13 -0149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B5 -12FEA33F3E7EBD44>II91 D<486C13C0000313010100138048130300 -0EEB070048130E0018130C0038131C003013180070133800601330A300E01370481360A4 -00CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0390F0007801C1C73 -BE2D>II96 DII<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A -5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316 -806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC -222A7DA828>IIII<167C903903F801FF903A1FFF078F8090397E -0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F14 -7E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC12 -0EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE00 -3E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0 -D800FE017FC7FC90383FFFFC010313C0293D7EA82D>III<1478 -EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F -38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C ->III<2701F801FE14FF00FF -902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603 -F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CEC -FF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E0 -91387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A648 -6C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F813 -1F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA4 -4815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6C -EB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC -00FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F -805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13 -FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A3 -2D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E -4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E -15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD -4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C10003 -1381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<9038 -3FC0603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E -7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB -001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3 -E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207 -001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F -8700EB07FEEB01F81B397EB723>IIIIII< -001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A14 -7F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B484813 -071207491400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I124 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ft cmtt12 20.736 5 -/Ft 5 115 df<923807FFC0033F13FC4AB67E020715E0021F15F8027F8191B8FC010383 -498349834949C6804901F0130F49018001037F90B5C87F02FC157F48496F7E4849151F4A -6F7E485B4A6F1380488391C914C0485A84484818E0A24982127FA24918F0A200FF187FA2 -90BAFCA71AE0A21A8001F0CCFCA2127FA37F123F7FA2121F6DEF0F806DEF3FE07E6EEE7F -F06C7F6C6D16FF806C6D4B13E06C6D5D6E4B13C06D6C6C141F6D01E04A13806D01FC49B5 -FC6D9026FFC01F14006D91B65A6D5F6D5F6D6C5E6E16C0020F5E02034BC7FC020015F003 -1F14C0030101F8C8FC444D76CB59>101 D<943803FFF0053F13FE4CB61280040715E05E -043F15F05E4BB712F85D5D4DC6FC4B13E04B49EB7FF094C7FC4CEC3FE04B48EC0F8096C7 -FC4B5A5EAE001FB912FC4818FF5ABB1280A46C1900A2001F18FCC8D87FF0C9FCB3B3B200 -07B9FC001F18C04884A66C60000795C7FC456A7AE959>II< -EF3FF8261FFFFC0103B5FC4801FF011F14E048037F14F8B60081B612FE038381038F16C0 -039F826C02BF826C91B87E6CDCC01F7FD800039126FC00037F04F001007F4C800480021F -138093C86C13C04B814B6F13E05D7313F04B814BEE7FF8A24B163F1BFC4B161FA21BFE1A -0FA31BFF86AC621BFEA2811A1F1BFC1A3F81F27FF8811AFF6F17F0616F4B13E06F5D6F4B -13C0704A13806104E091B5120070495B04FC01075B9326FF807F5B94B65A03BF5E039F5E -038F5E03874BC7FC03815D038015F0043F14C0040749C8FC040013E094CAFCB3A9001FB6 -12F048814881B77EA46C5D6C5D6C5D50717ECA59>112 D<953803FFC0001FB500F0023F -13F84802FC49B512FE480407ECFF80B66C011F15C0057F15E094B7FC16036C4B16F06C5D -6C4BEBFE03C7000F4913E04C13804C48486C13E092B512F84D6D13C005C0EC7F804DEC0C -0094CAFC5EA25E5E5EA25EA25EA25EA293CBFCA55DB3AB001FB812F848834883BAFCA46C -5F6C5F6C5F4C4B7ACA59>114 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fu cmbx12 20.736 14 -/Fu 14 118 df<13FF000313E0487F001F13FC487F805A1580B612C0A315E0A315F0A37E -A27EA27E000713F36C13E3C61383EB00031407A215E0A3140FA215C0141FA2EC3F80A214 -7F15005C5C1301495A5C1307495A495A133F495A495A4890C7FC485A485A485A5B6C5AEA -01801C3A72F736>39 D<137F3801FFC0000713F0487F487F487F487FA2B61280A96C1400 -A26C5B6C5B6C5B6C5B000113C06C6CC7FC1919729836>46 D48 -D<923801FFFE033FEBFFF84AB7FC020F16E0023F16F84A16FE49B97E49DA003F80010F01 -F0010714F04901800101804948C880D97FF86F7F02E081496C834801FC6F148014FF486E -6E14C08181481AE081A96C5C1BC06C4A5C6C5C6D90C815806D5AD90FF85D90CA15006260 -6295B55A4D5C624D5C4D5C4D91C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B6 -12F818C018F8F0FF806F15F092C7003F13FC050713FF050114C071807213F8727F727F86 -7214801BC07214E01BF0A27214F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC -487FA2487FA2B67EA31BFEA3601BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C0 -4B14C06C90C915804E14006C6D4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01 -FE013F14C0010F90B85A6D4DC7FC010117F8D9003F16E0020F93C8FC020015F0030749C9 -FC507378F061>51 D<96267FFFE01670063FB6ED01F80503B700F01403053F04FC14074C -B96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03C0903900 -3FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA121F4A02F8 -834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A85495C8A -4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2795A -489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47EA3816C96C8000302F8C7FCA36C80A36C -80A27E817E817E817F6D80827F6D806D806D80826D6E606D806E80021F6E5F6E02F05F6E -806E02FE5F0200DAFFC05E6F02F04BB6FC031F02FE030713CF6FDAFFE0021F1387030392 -26FF8003B51201030093B6EAFC00043F4E133F040706E0131F04014E1307DC003F4CC712 -01050304F8EC0070DD003F038092C8FCDE007F01F0CCFC827A75F798>71 -D85 D<97380FFFE00607B6FCA8F0 -0003190086B3AD93383FFF800307B512F8033F14FF4AB712C0020716F0021F16FC027F90 -39FE007FFE91B500F0EB0FFF01030280010190B5FC4949C87E4949814949814949814949 -8190B548814884484A8192CAFC5AA2485BA25A5C5AA35A5CA4B5FCAF7EA4807EA37EA280 -7EA26C7F616C6E5D6C606C80616D6D5D6D6D5D6D6D92B67E6D6D4A15FC010301FF0207ED -FFFE6D02C0EB3FFE6D6C9039FC01FFF86E90B65A020F16C002031600DA007F14FC030F14 -E09226007FFEC749C7FC5F797AF76C>100 D<93387FFF80030FB512FC037FECFF804AB7 -12E0020716F8021F16FE027FD9F8077F49B5D8C000804991C7003F13E04901FC020F7F49 -496E7F49498049496E7F49496E7F90B55A48727E92C914804884485B1BC048841BE0485B -A27313F05AA25C5AA21BF885A2B5FCA391BAFCA41BF002F8CCFCA67EA3807EA47E806CF1 -03F0F207F86C7F1A0F6C6E17F06C191F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13 -806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A -020F178002034CC7FC020016F8031F15E0030392C8FCDB000F13E04D507BCE58>I105 D<93381FFFE00303B6FC031F15E092B712FC020316FF020F17C0023FD9FC00 -14F091B500C0010F13FC4991C700037F4901FC02007F010F496F13C049496F7F49496F7F -4B8149496F7F90B5C96C7F4886A24849707F481B80A248497014C0A2481BE0A348497113 -F0A3481BF8A5B51AFCAE6C1BF8A46C1BF06E94B5FCA36C1BE0A26C6D4C14C0A26C1B806E -5E6C1B006C6E4B5BA26C6E4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D92B55A6D01FF02035C -6D02C0010F91C7FC010002FC90B512FC6E90B75A021F17E00207178002014CC8FCDA003F -15F0030392C9FCDB001F13E056507BCE61>111 D<902601FFF8EB07FEB691383FFFC094 -B512F00403804C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDA -FE0114E06DEBF9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5A -F001E095C8FCA25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<912603FFFCEB0780027F -9039FFE00FC00103B6EAF83F010FEDFEFF013F92B5FC49EB000F2601FFF0130048018014 -3F4890C8120F4848814848814981123F83485A187FA212FF6D163FA37F7F6DEE1F8002C0 -92C7FC14F014FEECFFF06CECFF8016FEEEFFE06C16FC6C16FF18C06C836C17F86C836C83 -6C83013F17806D17C0010717E0010117F0EB003F020716F8EC001F030015FC1607EE007F -051F13FE1707007E82B482836D167FA2183F7F181FA27F19FC7FA26D163F6D17F86D167F -19F06D16FF6E4A13E002E04A13C06E4A138002FE023F1300913AFFC003FFFE01E790B65A -01C316F0018016C026FE003F92C7FC48010714F80070D9007F90C8FC3F507ACE4C>I<15 -FFA75CA55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D80007 -91C9FCB3B3A3F01FE0AE183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F -6E90B55A020F5D6E5D020115C06E6C5C031F49C7FC030113F03B6E7CEC4B>I -I E -%EndDVIPSBitmapFont +%%BeginProcSet: f7b6d320.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 +% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 +% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 +% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 +% +/TeXf7b6d320Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen +/period /slash /zero /one /two /three /four /five /six /seven /eight +/nine /colon /semicolon /exclamdown /equal /questiondown /question /at +/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X +/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 09fbbfac.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 +/TeX09fbbfacEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown +/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla +/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam +/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon /less +/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: bbad153f.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 +% +/TeXbbad153fEncoding [ +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /circlemultiply +/circledivide /circledot /circlecopyrt /openbullet /bullet +/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal +/greaterequal /precedesequal /followsequal /similar /approxequal +/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows +/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast +/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup +/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional +/prime /infinity /element /owner /triangle /triangleinv /negationslash +/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur +/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection +/unionmulti /logicaland /logicalor /turnstileleft /turnstileright +/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright +/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv +/backslash /wreathproduct /radical /coproduct /nabla /integral +/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section +/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef +/circlemultiply /circledivide /circledot /circlecopyrt /openbullet +/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset +/lessequal /greaterequal /precedesequal /followsequal /similar +/approxequal /propersubset /propersuperset /lessmuch /greatermuch +/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 74afc74c.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 +% +/TeX74afc74cEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /sterling /percent +/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma +/hyphen /period /slash /zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question +/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end + +%%EndProcSet +%%BeginFont: CMBXTI10 +%!PS-AdobeFont-1.1: CMBXTI10 1.0 +%%CreationDate: 1991 Aug 18 17:46:30 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBXTI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMBXTI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-29 -250 1274 754}readonly def +/UniqueID 5000771 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF +E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207 +BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3 +3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2 +F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707 +C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E +BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632 +2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1 +879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D +141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF +63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46 +4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B +FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD +395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003 +82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1 +763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019 +165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E +57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED +E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5 +178DAA7C97C35EAFA47778CE03E863303582D8A9900EF4F8DA879DED54BACD7A +4A50C18AA2ED906FC4DC073B1E6CA1E3855AD5B7698EF4A96B77DBE19A12382A +CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4 +890359E7E04690BFFA99FAB5CC9999F0873A9DBE49E33F79E483FAD72313DF9A +7B7D926461988C23CCE9F71AB7BB63BDB2B10B3F78176380AFFC154825C9BDCE +82303FBFC3B59E070438984C28D12E8655BBBF049125BF56DD2B0DE8C0450E55 +82832DA59EBEB001AAD86F2317460DD7ED264611B9043614221ECF +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTI9 +%!PS-AdobeFont-1.1: CMTI9 1.0 +%%CreationDate: 1991 Aug 18 21:08:07 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTI9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMTI9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-35 -250 1148 750}readonly def +/UniqueID 5000827 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496 +4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D +DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A +F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458 +8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6 +03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9 +211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3 +E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B +D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1 +6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9 +0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC +1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2 +298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D +C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574 +433484BA1466709A4B186761655C8E482833B697673E847C691079E7F1DCB8D6 +1AD91101D757B83E2090337D525AEECB028FB3C9F6A6E6AD2F322CFDC5A833E6 +1CE4EDBF41FD34FD61630581D222F854A76C2EA9FD72796A7C9CC1F6C2FCCD16 +E95CA05826A4ECFADA6A5FB83C41A7131E52BA6585DD6DD78515D8F7327DFC6F +9404F89293D6ACB433CD0802C43F0E74C6C4766A23A6AE3788FE6CAE82E1A104 +BAEC8BEFDEFE4F292F625E60362F3886F602CE4121BF0AAD93526314BCBB5971 +40091A7BBF7EFB3BA355B88C897D9C70C841DE41309348751EDFFA8675215988 +49CB1599834A01EC6CD4FD813AFF97A614F56975775D5F48E9C1A9CE532FAEB1 +4EBE20C3FA87CFE03664C428BFC5C894668E507950005BD8C2BCA8998C1FB92C +4E6B791BA05B79F332EB8AF5B0F851B8B7EE372EC0861B09C007CDF43F82D0B7 +35446F682A0DA7F4112CDABE4F922EACFCB7B8C88BF550B60957E7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT9 +%!PS-AdobeFont-1.1: CMTT9 1.0 +%%CreationDate: 1991 Aug 20 16:46:24 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-6 -233 542 698}readonly def +/UniqueID 5000831 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E +2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 +650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 +F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A +D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E +F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 +4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A +438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD +BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B +A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 +AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 +D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB +CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A +082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 +9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 +4BA1EBFAFDBEC531EA13DFBD6700E53818CE04D23886B8AE75DCC36BCD3189B1 +0D55FAE27D0D126E82AEF31D7B5DF27E58C30BB0867D6D7AC1DA9EFB8A2DF095 +B5B934A68EE122DA0A83B36C952431586B957990206194E89339048AA6EE4C53 +703763505ED57C494DD907D0EEA04F6B1D4C8F3BA778F4E7AA832AAB4D75F024 +61E91C6D25FD6823CB24FC863AA50B9B6CBA06BE11814BE6DF2ECBC59614A061 +67311E64620BA968BAC5A4AFBB51194E1EC2A8A6460E85C23C146388B0A16BAD +B9405D3A50CBF9F2060A32C8F37340EE51E6E7208F705B41AE2C78707EDC4C1C +AC4BA95875F0634C6D5BE1C5DD4BA35086F660154CB1D3E176518D634B551319 +E8F8C5EE80251323C86C9DAD0FF8F360F4A2930AD3266999811333EA73405FA9 +55B447DC8EB07A0C64CF2404BE8C6C7E6D263E799B1156E68AF1361ECAD79F9A +182A71A49040A9960826E74B88307F4C0061046C0F9DBFD25A642E9FA82A691D +FBF60D03D2BB92FC09D4C814CFC0DAC28690CBEE9D9E73FA943FF9C68285C683 +C4E1AA05DD669D24AA5EABA214FFA994E61669821F0FDE4AA2BBA18FF4A11397 +515996FE402DD98FE032C6171DA1E40D4F870BA08FCB5D093525EB366E825445 +E58CD3E6FB72291DF9288707B8C2D1F96D0895CB316B74585745CD1F636936DE +9572C75BD823D3869E264E452B1F2554C20DA7A0A38F3E80646D1727C836FEF5 +85C22382271615B6F994C34A5DAB5031F1FD58DACE3EEA8DEC66B6E683B68925 +DBB3820FD525D0C07F82528B06E34A5AF65F3BB11DAD02ABB66C8A0670545071 +97EE01859BCB8179731230D9A8BC52A47656A84BBC7D1AC118D497F14937A1E4 +C5A2F171412185D365B7D476C872132CF8E49F87C8EEAE6EA4AA5979EED7831C +061384E91AD71AE04E80917B07F85F12B4B88D46BADDB6D9B56C4BD028FBEF25 +432A07B83E81A23B3025DC6D2AAC38F40F5091CA6275E22388093E9C46B97774 +0B091D60F2F85CE5B38A64B4EAD179C5EFB72A6DCB31BF080E62EDA70BC27FF6 +70F1E6B7AA9B60BF19F52116D919FECE991946C8890766CA834C9EF887EE05B3 +7870F0905663F66B483BA94829EF58BB076166A40809474ABB9EAD15FD21DAAE +DFD13192EBF5CE5F13441BF33910DBE1F03F24F692D229623974FC0545609E1D +04774A010546D9DD7DC565BA9118C9162C4EBDE79684398D055BE9817D5323E2 +62F47521C9E9B45123A1A9519258FB0DDB1068D7F92F38FC65F38D3479E00B70 +4193F003F92F1C80CA0B4607DC1A60C1D342E9298969B23BA9247936279F8D98 +D953AD865D937F7B9FF3424B4263290802A53C3F1ACB5BE00F4DB01D8ECCA322 +BC02E1A1E025CF85C960D6DD73D4C53474544B17EF73DBADAB9FDAAA93B627D8 +7263110ABA54DF1D3C1F83724DA049DB977F630706988FE0192FB53F3FD9417B +C24BC1B3CC184DAF52B07F2B4461190E0BB06EC6B4AA0A9417C66AA20DD96F5A +8C7DB7BF022830873F5DF031C9CA661B1ADB1EE2F7B08DA3B3DF127D52CB0B88 +E01E4593AEBE23FF5177B1EED76EDCF84C6272C677D6B221A35B420D93252183 +6B6536F0477E7540636C30B02BBB7E4C33CED1C4EB6462FE2FF03FA3451F952A +E1BE1ADCC347E3B4BF0F551CFAED1D123F30493E4DD71883B8FFC6BB4A855D02 +5C10248ACFC1AD3600D7A504D043BA4026BF29357D11489F6E2534111552D79D +C1892AE149061E5D86C01D82C52427B4486F88AF9733EEDC2A27C59053189136 +14BA6AAD04DA9C35B8377E339BB1678C533A8800AAD7736C4F2C99C979F1FC11 +65F2605F4D77A0F524E259C75F7B5C319229BF4E006F106D2E53057537E646E2 +3E04FF414E52AD68BE9480B3FBEF472C446BBD928758558F299AADE32E3A947B +DAE1A1563E506753D5DCC8692D9315729404956DB585209C512C1843F11B1B68 +9662B6F7FE8C288C0D4E514979D3BF3FEFAFB4694D8969DC6D238D4310141BDD +48812F4E2EC6FF9B30A19E7DF6176643E8BFB9E5FB5FF44269696A120E4629AD +AC47AFC0E43C9048552F47096F6030C87AE08B6969882EAE4A63C8EED064943C +2DED79E266545B8807739CFDAD5AFCBEC84CD577DB0956B7D3E573FD4D150683 +C03F339502B0B7FF14B05F8063BFF72272AE941313A2A87833B266B29CB4768D +A5561D5E0D385CA96B0D42390F7F8C8D0938557CD4AC52571E340F7E9DC7BD6C +063CE5B9F584D60790CACFDDCBF46408DD37B8D2D77F4FAE3F3579BD601A6508 +F62883BBE55CC900D4FEC66C95D04CC0FCB7F9D5FD0AFF3CD8A8041FC2A7DCF7 +923720EA109E2447287D4DA7B390DDEADA6001948FC5D7516BC41D9F9045BD6D +44AC9FC7953A1B19C48F938DC7DEFCBB895F29609438B0735BEE9FE2350EC3A5 +D07572A3DEE070F22139209F577E0F2635A2F081ACDD60F1DB00E8547E0F2043 +A372C73063C50FC37662588138538BF02670D88E98CC6BA37A7854754896E36D +9660D1B57E8561F7646763B47DDABE791A22795EA0052A5D5A1215575DB845F6 +72812840395A3FD09FB64C49E1FB301F894B81641D5F4E118E51376133FFB60C +C0D7E53AD245747100747C1CF79E43074FF660FD9CFDEBD27C314B33909993AD +C6F74320515DC8662C18D130B573866A425A71208BBDAC74B9856435F0BC8743 +8B7B0A961EC6A50BD7C28A37D1B498E201C669DF18DFF254B46E1F826ACBEFA9 +63F784B55FDEB25C47344D51C229576ACAE0B5668854BFD2F3C4317B9B8DB678 +D7070B27D4F58AE5285EAE9112CB06B91B3B7EDD674A7C1CDBDFE0E908918DDA +070AD7F1AC630485BD63CC060AB809D959D8351EC0D0B16C5928B04A96FC5F43 +E16AB4A92FFB345217429544BAD0290BB0301B39A461CB1112D666BCE90BF37D +46314951443D48B66F87C300F59553745A5218DAE7FF319EC6A3E54A08E2BD78 +87DEF58A90F21E2EE89337287C672F039B99C21288A3893118B11BE6192B359A +743E7F2AF63D9595C6F0BF8E925A4611F5C9EE53216EAA6EF28F76CA97D8C608 +668D4F2B9F4758443899761858C7FED1DEC31C7063D52A54BBC52408AF7599E7 +B00A06EEDEF1C6B89CD64D83878CA3509365ABCB953BE258703304FD475B5423 +6AC41B9A01FFC163D00CB39A714CD4C4EE44BD3B72B836FC6FCDC5B4807BE0EB +105F308F6F0BE0026ADFD15C7FDE8125F26FF0464F77BAA01417940EB4921F84 +642BFFEFEB1B260D6D5DBF4FE8E4B27B735538C00E1A1E113C3DAD716BC5FB2D +4CBFA14D80494869D98F2FCD284A6FB0C21EAB1E9C39B2AD13ADB3F1ED11462B +6AF1D508F725D720F13E05F9DD829B6A4E85F2875FEABE6E08AE8AAC5E3E3CF8 +20252F986C06659C956A91DE1A55F4562F69083693A506EAE83D9D3BDF3EBAA4 +929190CC32FFD3110C91C45B8EA7244EB90AB715F25651276AC763DE439FC1E1 +D329C8858131F5B9AD33EBB54DE30BB896605EB41F6D1A82AFA2F67BBC0CBFAE +65F2CC7BD43480E72FC9A320A8DB76F4C5BCB1AAFF01FE05F2473D109B72B367 +91E8304E2D56516A2A0D36E9FFB237696EC8159D8A8132E8FFCCC52788A34C94 +DA762D34516E07D639C7E2C92BF9855745E603F30E756197F77AEBED83C52A85 +02D6922B39AD6F223D0EDC2B9355212D32770AB4E2E5D42D10CF3ED77A321A19 +5BE4566EFD21DDAF65C9CF4961033D298E0A4CB01885C53E92104E816E261DAF +00A6CE7C501CB2282BCA60C641B298C8A5553F9CFCE711C6B677EF94039BA4A6 +8A29B04C69D6B0C586A3DCF1D323B611E87741353101D201B1A51C58C5653808 +A88DFF583970916F252F79BC09989A7526C6C004205396A6AEB5D5F893AD2BD5 +21A7C70CDC4441826B31DDD7CDF72AC95954258EF01EA58BEE077E7496541955 +98901F9DF5C3D9871C2D73D5BD55081FBF2903AB2D666B062EB59271D5DE2979 +B6B7D9E6F98CC2BD25E93B963F8069FA557DD229EB689579194DD23552D44B76 +CDBB0393E7495139C765A901796B27B4E1BDA58879E335DC1094419537150FA5 +9F3C8B24BBD04CFF6EDEFA0EF0675831D473D08C563607F8B8FDC779A888CA90 +59B91CA9455F49B75D01AE83E29B525DFAA3EE8AB6921C98A08C9863EAD03FA9 +A06CCE0D2E4F5AE3B58E874962521BB632F40AC0253EFCA8080F388AE87930BA +2E6F251053FE3FACC9B8F5EE35C7E11C527BE04A313B15056DB5A2BA9179D38D +65567D7BFB41E864C5A628D92FA9CE07DCBD3F61FE5716DB80B0C4BCA5547E0E +5FD095421ECEE9F3AB0BAC5282D6848B592334CA0553776944FF72F033697BFB +E341F5F006FFE5E1C3794289CC7E5BEE9049F11DC4F4FF6CADF6D2FBDD87A66D +33916034A78D3F8B13E30DB2D5876405C8C4E533003DECC6839988E716B54CDA +8220EFCF0BD284F26CFD5CFAC1A680420DEA1C9D925BAFDC063414D6E9B3C67C +EA61C4348DEBDD601C47517288D2869E815FE104291BD26B4CB623FB24525981 +3401580E6E6C84914AB9CD91B3B541F9AF742119DDE659146A4BBD4A3F532DDE +EDC29E58F4C2AD9B78F1B6B4C7DBE74288E9900EFE276A22E74B82D20F231789 +79D72B1AAE398B8981D33E6EB27AA29530E169EA294A1A76AE941F7BD33F1333 +59EE7F2448E0A2DE3CEAA02DA052B941718DB7288CBDFB0EBECAB5473F3A1E6C +6E2B3A823E92F9BEAB5E704CC717B170FBAA1F6021478D676EBA2DD8C1FDFCF1 +EFCB0502845A1CA22C344A9C309B450E7C6D1970F12E5F21C1016C64373EC731 +3E5D4EF7C86285ABFBF6CC8A7372E0A2269E44F8DAB78863B26B1C13F38684A1 +746BDEAB3C4707D0E1D519357925041A9A34D39ED75056CFB3F80B428FC318BC +8D61F7B0B560CEB296163FFA87579C15978A6F85DF244597A2D69D1C952A9062 +76B045F6DA725A0C50EE54087F2659E783F7C184C5F5A6429A7B5FE905C100D3 +DB6106A1F5946314CBBE013462A62B9F4F2B053B14B6228D8903604E7058D1A6 +22BF06E2148918CFF2CB8B7A5023D59457A3E4D719E4E21234D29A2B62BF58EF +DF5719C6976AEBF9FE7BFA627466E421EFD90E7EBCFDC0ED82AE79DB249BACC8 +24194544826B53932F0D6C16B97D322D2F546E00E63E27B3C44FC2C1CD2865C9 +BC3DAB3EE336724A1A345970B38E806B56C9E810C4FF6DD701FD61581F9A8467 +EFE2A2C0A57DA04CE84281E8F2EA799428C46D9F08BB07AF3E4E293EB87A675B +C74F461086C1DE798DADCC23739195DF2479E6DCEE0E582AD55E8C496BBC47E5 +403003F83C523D37DEBE106EB00CBD0E9E84BBD73CC823ED2F3AA3BA824E2C53 +B2B1FC67C4FCE94A1CA568ABA7AB4950782644A47D3C040FBBA833EC0D00DE03 +392EDE905C67DABCF6F0BA9771A953A29D3A02EBE2447D3AAF484BC461FC4EA5 +A3EB4985F5FEA614785F962CABA273B5952F73B4048EF771A78126D022471276 +C4C3C9DD5C8B2A7C89D4C4804357131E30F5734C93205D8C98D1152B7C2F3D5D +8E1DFF1731595F17AB58A761A56BD1A336C4EC203BDC7732FD99DEF3CCA1C2C9 +0DBE11653610D192D0AA776A6AA0B493E5C2ADBD3D03598398251898FC879533 +154162AE4A5BC9690F00F8976C3FA4C506325DB5E744642DDBE32FDBA38058BF +492C8FFF777D58F0D5C46C224C56FBC86908C8E0F7759ADE27D8BC5FD2752924 +12EDEEFA51707577B91C86613D4A69FFB236E615D74F49455E31F2C5FC9F003C +DB70FA20D5CAF86CBC7F0F0413FDD4CEDD99741BD89DDD66778DE46DD98D6AE3 +EF40473E16AC2A6DBC60F475132FC96348ED87E28DCB1074FC52D0EE81BDCE62 +40869C9CB2B91B111B445B445A17782E194EE36F4BC5412788BF69D06801BB3B +224066F35E04CEE0B3B81894724C084A813683B405124171861802DF38D44151 +F2A7FAA59DFDA16A881B920B20F3A5FDCB95330F0D57475738B0108ED4C476A0 +40803FCDBCC23B284286A483D3AC86E98F77245F25E649AC4B6F8CC9E06D6F6F +E29E993CE6F34D76C6C8E7615350D47EF57823100F1E8101CEA89BFB0FCBF05E +FFBBBCFFF87F6A0D20E56B9BEB0D4807C856A82FDAEBDF6E756A82C7D480F128 +3BCA96BC773D8899A9166EB6982B5566F262D0D4442D752D25DA750E9F7B2E26 +8451CB3CB6978C022BFE32F4FC829F52CF7E856A2FD27E5C29E69290BF7CECD5 +953F8CFDEDEA316F5BB0BBFE532E688793A86D21B17753B5585042EA0398800C +3840803202FC945E4BF72C8CAC140FE6412187142484B7EEFA080419A1BBAEBF +C77BC72CAC7E668B3217B1B9775E585BDDB10F4ED705A92FFEBF6C4DFB6F8C84 +8383D9DAE4CE854304F0E84D777B0EEB9AB5DFD573AA2556A1B0721D2C31858A +B6F3432BC2706920 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR9 +%!PS-AdobeFont-1.1: CMR9 1.0 +%%CreationDate: 1991 Aug 20 16:39:59 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-39 -250 1036 750}readonly def +/UniqueID 5000792 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835 +3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203 +046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E +C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A +A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2 +A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D +731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B +09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1 +49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B +5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B +54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C +C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F +11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AD14F1CBE935942AEC +D4004E6BEF379066FD72209DC88D2E634E79BCC2B98C766CBD92C561F2703F8A +109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 +3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 +C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7A66D8E9C810 +49CCC0D35AE00D3669EC7D8ED957EEB2105BDCF7408E0B04A325495D38BCE845 +E96329244411EAAC14D3ABDD2BECAD7D391ADFFE3F7565B14FD29737EAAED3C0 +7F3981DDBE07D4AC09F6C1A32369BB88852CCE980C1E950E27EF3CF8A840B393 +9792FC1A510BCB4A2976BB640EE4510EA2BA3C7B5FE02F5F0F845B6B00F617FD +EB4655CED34B0097F22329071DE7738CA994BD0F983C5C4599AB9161F3776023 +9AB724F231D9C38A76FC8F6A2DD4E6C9FD2B8061CDC814442CC69E94D437AC78 +B2DB204A99A3240E1123E0568F6EDFE11586FD1056FD547B7CC477CDBA05F4E8 +267F1174136F0A6F1DDF36774E8C58C3819ACBD9082D6F8D32787199B991C539 +66ED8AE31E98A78F906B67ED87FC30D3E9FC8786D38A1DA49EC9D1075CFD4B23 +CF86014DD39A0875E64A40A1EAA6BB9B2D5BBE9F5DA15A93FA14027AD2CDEE21 +F3CD937930BB35F12FDBCC15AAA27B26FD9A3965CD3DC6EC8981BE0B1D1B54A8 +EAD03882DB414C55E69F022DCD972D2509CF438F5A8A3D005D6C4840FA11C09A +D80E4E7A2A9D5D35C9F90E74B6879428B3DBD6A9F65988921495F5932718BADF +6A1D0BCA5C28D95C77DB91FED97E631BE91F12FA8B822F17C19A40432BB51FB1 +32456106CA12387835F299D2C835A6015DA041BB8EFC89A05B9E14B431EA49F9 +663EE20B464A0D899E959809FD8CB94DF654FD60CE3DBF43B68513B73D370DC4 +A1D6EDDA5A97E4FA33F076A46798F08BBC9A8B881FC98A6FC75D6DC35F11B006 +1CAF7B4C1EB3D842AFFD7543E0684C08B9066580AA87DA60063917085B15574F +89A66AE6142B501DDA88AFB6CA54715FE9C322FCA314B24A1EFAB4540D29D4BB +5D9DEB2AF0D3EDAF249C7CF44E9AADB07378AA79856A8547723981F63B34616A +A2CE9FE46E701270235FA81568A236A614278FDD2178DCED2E89C67F73B17241 +EE3963A20FEFD28D57A5EDBE9038EBD14F2B4522FD33E87FA15346E5650AA523 +90B3C06C1F5C58C3A724E492E37D39B2247264DA02E5429062798387AE75D344 +B2A49017D786F5CD038F47BADED863CA9B0AF8DA68D7633997432A8289FBADDA +5C0CB9DE70AD5C358A34D05719104C5320810984B09B6DF65D8D55F515704E6A +85DB3EB4D3E1174450D67D5B9BA65575697EBDE700EA6A7ED78BF125B86C2EB7 +4F8A3FF408A4330A1F7DD21BD4D991A864F75E203F53A1BC423F071BFCBBD398 +B6F473789C02DEFC495FCB176636A5FF6C1097F2B262FA55283560FDA41BD09B +1BF15AF3D55CA3B8EBE99822F2B0602CAA02DD7CD9C06FEC22020088B328DB5A +72C1B42A7EB70B9D3CD7186AF316B9C769CCE07C7EAE3CE6C0C297031C21DF01 +50934FF9983295554BA5250B84F48E8A53C12874628AF7CE155C400045F836B3 +9A9FD9C6DE9A85556AFAA011619597D023B229B24DF27DC30C280C2DCA6BFBCD +DDBD73738D049A34EEC427B15463A22C989AEEEB870BA80D2A161EB19EF3B07D +47381CB799907C723BCEBBC23591FE23EDC4B5526AA62AB69915A29E204EAA4E +5CC6F50ACBA322C147BCDAB2037942FAC0BF085ACD727037939DA6D679A67BA7 +3C6F125FB7E95C37BD9E69F12936506E2591B7570D0D06C5EE1226966DBE3281 +D72D682E570029A49A5B566F2A34F3C4D1B74A845D7C4ECDD5FF077326FFD7D5 +2D67EBF1FB9B8219B6FDDBFD93D204B5054B8DC0B59264F944F6C434D73958FF +942CC33C4EA712E73547F15EDFB1D4F7E9F48330ED24D61CBFE4F1435345EB52 +2654BFC97CDCB80219941377C9F08E37DF676CBF8F1FEAB31B93CFC356A854E7 +2D44997DE52B3B61140EA94FF249DA41AFBAE054248BCF618B171B28885EEFC9 +183C4BBCAD4F7D2A230CE4490DB184D4E123309718E5353970D4AC9FBF38549B +2211875F79D431340D5CB6A0B9CEED0EA26179121D155BA81B5FDF99C5E8D177 +3B0B10814B81E4FA26B9B5875FBE7E2623B17AB3C04419DD250F0DC422CA6F8E +1677E46BEA2596BB7D52917E49A8B175C5A45B53DFE99CA1A1787BBC65E9B335 +6BFFCEA2D8CA21E457AF27A83B192BA9011143B82E7ED7754C85677024104E9E +961D89ACAF6EF14E51A027EA3E4BEDE07899542ED05AEBB63C93A73707B33E29 +39F159F1E4C042BBE672C661E8CFFB9E2D99A21DD37C67DE76ECAFB1D86A25A3 +A35A5644653C5571B5B7AF8317A12C65C9D0701197BD6981DA6491AE466730A4 +317FCED66FAF5B548D00B28D8FC9FA581206582A43BC8AC1C25A6AE28DB6F993 +2C4EA8372A77DADB48E84F2BF0B13212782210593DA8843CE20F480189A6B1FE +F25628DFB0E80EF6246278A977779771ED41C18D149AD5B9029A350BA27B2DE0 +B4BBD5846279AA5A7EF490E93D7A29A638C6D8300E4DC86BF13EB1B86861879A +3B040982E4B1E3644BC982B7F6F3EB5E0E68E4ABEC782B0A5D4A118344510C5B +5C713028D1055D3FE8F4021F34D6633100642360E78818624DADACE86C8959D8 +FD3D17A6C3C68BC57D4DBF3C2C1DDB48E485477F8642FAB9CE972642CBFA1E55 +E8A49F277958C2C5BCF94927BD4BD1BDE65CB7881DD58A19DCD4520AB550170F +75F2DB0F762D0E299B5E9ECD77D2DAD70A3D669FA0A35258501111F87004D8F0 +1176446116A6947D9A9EDDBDBC8970E467C0C297FF782FBC792D67F6670F04D7 +E144383D0FA67DAAA72320881BBD99AA2D5FE15FC39875C76CB51358942D5972 +255788796AD094FEDB21A62649C2776D06DDE5845BE618BA586039114287BABD +2497E94EEC93B5BE6CF26EAD350C3054BE1BCAE4C7BC8BA00D790987A4B22427 +5113579591E22C858E9BC334D521C79687E727C500A49D64A04D184202A8CE6E +2B3E061D9782A105E70E41299F921DED673BAC72D68E7571DEFB6BBC74F85A1A +459F0E3E25D6D7537A03599DAD46C0D5E2A16FDA46A6AF0FE03BD8C83B6A98B3 +859D90557D1E57EEEDD7F294367EAB4A974F4B335919D82FCB10CFA5198C53B3 +F2A1E716E911039BCE3518A2313586D7AFF353A7922B93177A09161161E9D762 +A7821D0BC443C593D9E2E1DFF06A886FB5AD8138488C7697BA30582D762163BE +6C7B8DA2E878BECB58C6AEF6E7A79B3086ADDCD8A788C6B7500D8B0388C5644E +A671BC9DD7E42F0CFABC401CDBA0118747E575E990A12DEF28458DF96784D22A +3953A07E8BD0B635F2D9FB6146B68042639154044C4E904C64E9D5B724963566 +FA3B60FD276E3D7EB2F59659CC36C45A1E8B66FA47AB87A3A0F0DED9A1E807A3 +BDA72D96D45E4D6040E1E6D4445B0B6D8ECDEEFA947DFDF7CA1F366E662CA7FB +AD8A48B1A25733D5DA1BFD5716A4C6A1CECAF845563D29C49462C18A4272152A +135A7345C554D43ADCE45CF5F4CE4EE177FBA9140CE90435E332B19047A066B8 +3760C148FD48FE375D44577CDA59D232DFA57A258CCB4BBBAE50BFFA27050804 +B70B2C0D66056D468C70F9116969501CCE52C064CE41A23E295C141FD21472E5 +CE1A175353A04922126CEDD02B726E9880F012A2210F703C2D99AED3FDA32470 +A2CD735DFB9EFDD5BFD261676C56930815FFC44C106D87E68BF83B373C25C8DA +C58BE6F13EAD93E4670F7A710019DB68AE250E3E86AF9743E9F3F426C93A160C +7753B901F2E4865BEDA045C302CEF439138702DDA7B9EB6D29292D2490BEF110 +9FAEDE14011BE77647D67B2FD62AD29925B2108EB90095CE8972497D6E308144 +14AE95D21FE28DA652E891A4424A9815E2AD0D45B0AB9A3BD7FCE59499EF239E +769A99A01EC56884717CB544F3FD82CFBFE20E7D8E24FA60C7DCCA9F83DB8859 +9D110F2EDC2207AE6C991456DD7D07575144DA2E1B4D84943CE2EB32748E3D2E +9BA1D3D4B9D42C0AD31D623C15B5A5541425D4E35941DD0FE91239922A57DA70 +FCE714D44CE73BD7D3EE55D6F67DFCF6D118F6DEB09427B64481A45DDFD96AB8 +9E7B290DDBD974AAE4168BC92976A3883E866B4304F02C1DC2BE9BA04DA2A961 +BB08924737FCAB324692C884493A6C6B268B9DBAF97553F6FF0FB3E2FDE53E25 +3CEC75F31975F086F44D0021E96A8925BA2AACDD20D934500578C22F79E373A8 +11FEA8B4E2A058FC807C4E3E5A12A12E82A5B052443448DE3F7570EEBEABAFFF +8686C2893706D6147BA676BD8CDAB292D4A337837325185A50C6B3F6BAAACC1E +07D7D1BF91905D97D8DC8A6863C0D82E117ECCD3AC0372CE50F94506CAC86252 +2FD9344C6B884681C6D7EF29B7AC644D1138D215B05323F48ACF617A6F6D4330 +1EB5FD493F8C97F1A1CC587C5F0C878EE0CB8CA5C4CCCB8FDEE298AD78AD44A3 +6F3D2FF5D74E552B0F9C7C3CBCABEDEFADD33AD7001B32A01F27166EC902D2CD +3516A21A2E68293F366EBE62E3497922A8CBD719CB713072347FA539483AAAFD +0361287956057976D74A1BF9CB1508455DF701E8234CBD321C5C62970AADB965 +632CA077601F5D9B28BDDED00CA92F42A04776CED187489A87D1D20C10DE8A2B +8758039FD6A76EFA51DAD0523BC90AE299000B8476DFDE7CE733956441EB532A +3B386F0643EBAF6344E05F0830489B6B9494B5CF37A614AA7BC0F2F69972B23B +FC7636B0AFEF9A2ECB537501D133D57C7AC74F223A12EFFAD2B1EF109090CA2A +822378FA460CFA4F4E390F9750D60378FF2E521341FD75DC106D74A248F03F5B +5D60D3030564858474A088A6DBF1C96A98A0D3BC065518CEB57E042E79A6A0E1 +E069C4A28E7436AAF169F6A0BF0A94CFDCE7AC1BC3DBA674ED652F8D2FD8649C +1BA555BCF0412D748202C12AAFD91FF70BF207AC9BA95ADE26AA443B1B6EC6E6 +BAAF8F2E17ACC5E97B0D772CC68F1D2775DE4E27B16695EA3D70746C3D8329D2 +CB874028A2F951FED9D01415615D489CA4F5892BD072A67E7405C1CDBA3DE9CF +22BEC8272BB3B2971DBC17640C2B7A2C4539857A57362BD678F2F2079FB32181 +F51B4D6228F9D53967054B7C79499D72B871FD6491DF30A95692F0592FC8892F +1FDA2B08F53FA14019E9650F9B64E7CAE6EDF147FD661369B2C4F154E9FCDDC8 +DF328201A0A73AEA0A705C305E3E687611E23869CA944CA1B40CDBEAB8C9EDC9 +57B24D254169D03869CEE2D43CD2D4E7B403706E051C6A942E38315B2E8FFFEB +CD925B5808D918662E6817DBA96E114CA34FBF6E8232AB907AA4A6A77128F60B +A179EE8A411C3210D6C96C6051A03914F5BA48D199CD95D262A80A7D78110084 +CE48FAE4FF53352B053B93A237DF43F5505D2DDDE99B2145D4D808F7DE5A27ED +B7E9B71BE7643199D2F1ECDC6C54C93A669B822EEC7452E17302C06B604FEB42 +13C0345656D0CE2DC41F70D74565D3319C2B16D5184CF56201A39642D45B8ED5 +D46B8FAC9E873EC294B61E986CF5546A5163492758270B62E2E7ADECC784F4DE +0CFAB393E485E747AED400CF70CE33DBEBA26F19EF8AC8AE9230E5CFCE9AC67C +9D0B935CA103CC51152ACD8DFC60B97FE6C6F271459494443114E8324033C12F +2158852A7298557814DF1CF48D849FA682AC77FC50D42A6F4B079CA5A4B4161C +8054BA4B4F7FF46968CF3DDB53D47CB38DE649674DEF4C701A8316D354E6D782 +4D500184D5FAD3395D36F178A086096779F01A481951C98870A03BA9FE981574 +F2A2B7050DA9060BEAB05C79983249EE111B09D462930ED2AC789F74DC3D6685 +E930F00AEFC1B0C473810F8BD708D4502E1E666F4C4EDFA0DF9FCC226E369BBE +AC3F23AAEBC703447410FF4308979FAD9A1FE1313AA7B2D0AE56A35E8FAEE85F +A213342B1E98A4F60AD5B13274A4FBD38B00EE3FAAF0D4A0C5883DB5F9D7A707 +6F9DB82B74578FBD7C3330FAD6E000CC7037AAB326F0BEB5EDFBB7C9CC70C293 +073178C1F9E3B3D67B6643B2A6B7F2675FFB82E40D5DEC782B972DF6532CAB48 +7405E306CDFA37FB41647ECBCB48AA86BEAB6E896951E507B31E0B142241793A +F0D4A635FDDDAD032E575ABC3067A8F70EE180D3AC9ED4DAFFE9572C2E928184 +40B603C2A8020F6B6E43D947DEE073A9AC5DF24433B6670D197E8B1B03C89F0B +88DBBB87957B146C85A53161DDE7F7C78C452836A83A27B942C7EB5F1F07300A +B012763D821E8EF79C35B3C7D2B9AB06447F9B13D3A5379EF44C7461EF7A104D +93864FC316AFB4327BDB9B29067AD156B82CB20762E7C1CC3050FCBB6F68356D +6B549F1AB7FDBBEF324CBE679203C6EF1C846930CF4CB6BBA96573D72197F72D +69D2AEE92F80B69791A8C83815F549513ED88E20D276446EC42E852146F04A16 +BF3C72FB7ABA60CFA1A4B92DEBDA41B788C849223491B06662B7A6FBD847EB8D +2E468B11ADC958B00526758B9A523990D87D0F980FBA34136CC9092673C1A01B +F6E6FE3A58A4004F6049DE0EF539F0A94BC924F48123B65B18B04D7A1810C501 +E815E95ACCB74A1CF1F643B190DAC7AB10188E7453D446FD754B58658BC7FF9C +7F7C244E5D01FDA9780B9B335063BCA1063F5C89B118999AB277C59C91B2E74A +0AD9239CECD909064E857761FCAD1E6B5C841A992734B2FC5F0EC7E572FD4BFD +C95E79DB9AAA1A3371A215AC0C55291ED037CFBEC4176612C84A5B92B4755035 +640BC951F2025C717C220F28E47AD7A77B3B93CC066E87C2D76B4B1825CB78D0 +C136A9487EF6F2C0D71AC600545D69A15ECD94B447222A17814BF07492BB9849 +AF415B2C20BCC9CD5AA2E1732416F0CBC810945999CCEDC83798AE4761D0C662 +8CD0E935FB5AB2C72D5AE22F9659872514D36210CF3CFCAAFCDBE1B289FEA6FE +E2550C9730B5986D06DDD04E71C6025DB6CAA676A8C3D1A83B144803E18FD387 +E114A18EF2A0787189BBF5DBB4C2F47F84AA174B665BE180F6CE50D9AD45ADC8 +ED3D7DDD9D336BBC90CA936F1CD1F6BAB75D501B2482A3D5A97FDC784C4A78EF +59B657D4AFB421A6354941D870F794EE047BCB789D94AA465ACD0D37DF8EDF3C +A2129895138266D17276DAED2882AF4E73DB65EBB40D8DF96C5E55A0D892B48A +60B6F6E509F6A86A3A895CA9574C4D53BB7AA0C695BBD3A39F0FF2A9E1AF55BE +1980D6D70AEEA0C241712FD028F48FEADA42AEA6967E614E69B73E5AE7BD739D +78090D4DDD52C238FE5875514CF66BBCD969F0049BD5C35C507C6C1175A82727 +19AD6C0C0A93692238C445D73D2597DB595B6E2E868E8A66646002FBA7812EEF +1953987B87CF18A1B9795ABE0395E521FBC7911B9E4FB2207DAB1D454DBAE1A2 +CB9E3022837D26560C4EDBEA1801D5B27E1D41D33C4966FE8070EB37577ACED1 +F6D21F7AF729887262781F64B6359F78D59EBEC209E236BD25C02266B5D1A8FA +EA312733B0AEF25FEAC98FBDF295DB8233BF983B74158D95DD4287F1E2613793 +259409271EF6831BC0921196190CA5042113CB62443168D34B5DC1EC48CDA92B +8BC333BDA34DDCAD3220437E41BB684BECAD7A188F275430478D006AA476B9F5 +ACA215E1CAADDFF97FE84A37E9A8920F3C35B90AF3A7A260C200DECA8931EB87 +E804028C991C3AAD291B2B5EA2C607B7261206B2978768E649E5F05E951BC121 +39F45AD98DEB4A0903950BEE15E1F39B1DAB307D0906B139B85C89A138C30BC9 +D02A8F912FB5A73F6685E13D2062162F6789F861E5018C041D81A66502947F39 +BEED14D2812F07C339B9B46899CBC9C5A76C1133A252F0026886F72133E4D293 +49C2E9AFDE7446BB7A8A9C560177C9CA6769D59A6BE4BF88B7AA61C98AF3DC6F +1DDA9CA4D29ABD72473DC1EAE6753B51F3DDF447A9B7063AFB78186CF670F19D +896731872320FF3A8027A17016D3CC050591EFF22A531F04C95F916C83397A08 +C38419612488D809245CB96B0E76B5A70FEDFCEF1C468FAA1B2BFEB93DCFD621 +E6425CA324B4C51220358A85C883562E1418C8103C7DA57C8E9590D928A98881 +22CC9458E6F84997DBEBA7EF3D679D12A4AF8F87D8895B59F05191F30860D672 +F0F0FBBE2F4A6407B996A5E502D3A9A7434326F4E3DBA6337B06D9CF52FC90C5 +08F80B5377ACC6A6F59366236C1BB1159CD8B9383AB41D1142F7873CE1F165EC +132E6178385B3B0FE3ABD7BF7F2A07FE78428E54A900AB65B251E65703B4D210 +08A9D44445C7E1C53577F797F9CD716CF16711E973B5D1D013F00476BC06E10E +EF9BCB9B4B66F589037F5CFDFE35DB6FC281268F258C2096F330E885044B220F +58B01CA33EE4BD88927B7664C1A33C712B58459AA6773E7A970630F2C31287C2 +FF3C08070B13F5E322B99CCBEB66A7A7823D0A4B1932A35AC492F432DA5CB49A +1AD508A098463A32372E771A83DC6C5AD1756B108FB0B7FC757DB7B85894718E +A812EA84412B0216CBC20609B361F29E986E2183B47B111946433CFD7119C15A +2D26374F286C365F90C8C16E1A9B4F4A3D6B8E96577F14AC55A3A521533483BA +DECA4C09FF50430938EA6034426C6DDEE847507F61D37A07A5A03499B1DE7434 +876F7C1F79B0F5F147EFDB27B9D4A81ADB6DFEDB310E26C66D35EBCB289CC737 +DDB161A6DED02194FEA213AAE3030DA2109BACDA8F6547618DA935940AA83984 +69AD53028F628C59473D857F514FEFE0D56FF8C26F8A2BCE3F739BFFFB6D4036 +F30E2802B58CB1254B7955E26661EC9D41759F590E10EE04470163A0AC208995 +4BC63E753EFA7E27486D5296244BBC357AF2D5F1FE476FC2FEA428C956C9EC97 +7386DEB211C49FE7AF57191EDD5F4CD536FCC02F61FB5395703EEF53003CAA08 +75154D2BCACECD3E904C50B8C651C59D2C0BC6BE1C366B8228D4D81D9B476924 +9C82D0AA057D91F8B2F0103E66AB447A7485F1F72ABB2DE2271900A9AFBA7133 +72211C4F3D71918D0E2E4148ADC07632B700CEA221C8FFBAE159B9D6ECA16A66 +BB276C844C69BE41018FDB2201D7831D91791ACAEA364827FA3CDAFA2C53CEFC +EA47D10297CDA9C0990ADEE984627CE96B04EF2AF157A098651D431D147E65D6 +8DAB5AB6717748F68128E20D8C5AC697949381B0955B15FD34C4878C23AC2E7D +0309575CA8109DEC52D6834146966ECA8CE04E7614FCF38190F6960D87038AC7 +7721849793C3B7D1FCE5C6D361FC0B1D14F84FBD6806ACDCCCE4E0EC332BFBC7 +265BD96656959B5CB17BD3B8885DA2FF13A3B72046BF6B99BC2CEEAEB85FEFC2 +5412C5CA88C48D0A646E259F8F897E205CDDB001B9CCB948B450E4B83456A75B +9753A4CE15191EF6213FA9408C8F0B986575F7D5440EBDB4F9093F70ADBB515E +F78A292BD54A0A9184D49C2695D720503EE8B4BF07A31B15922F7D8A1C220076 +C494DB683E3090F0A51BB614614B4847CADB2DFB6710D84D0C2437E39A2D1AEC +88DA93E0C0D89269E8C5AB9975F0A335BDE7033CC0D4F76C65CBA07B4F78B720 +FF13A5F3B7BA996C742D347BE05E42333B8C9B84ABAE24D2BD983D53FFEE85F5 +E7D1A77454F119DF49A69332C497C776B57ABC050E170DCE1D3ECAC9E09F0643 +92AB34FBFB28F9D26DBE95C5A0B9ACAE61B0AEB79A3B9624176564034908651E +3F6BE627529238717CE6F0B435E064512C7B9D78B29CE86BE4F5ABD809A43383 +CF0B5DF21540D37D1BB8FCF32C7B2C4173D3C8B3DE45E8E4B7A405A529653D48 +62F5DE1829BD3832C606954E2BE01B3AF7157832244B2E7757A03D74B4E3A05A +2CC87A9B13F37B72ECB6B4717665580EC4032DA405C2E7D8FE0B5468AAD66379 +2FD5ACB16A3F36261B11FD7D4E8D4D2A820FB73045A9CE8595C5305AE24A7098 +78A75959F32879CE5846BC1C2192AED9A935454E552B432B48B5C3A9FFCA2D5D +BE4A360BCF2B99ABC8477C697D802D0335A8692111E4724FC51B19C31704837D +A8D1BC8808D08D9F2EBFD7D706DF325D2AA8ED94F6773BAE63A836D88E87F3CD +680DCF2BC7DF8C7E06389D6C986BDBBD06229041414D7267D9AC9E8EFF2710BF +65CDCC222EE6735413368584117A274004EA0B415BE5D92EC61A267A3455D65C +6CDCF80FC2E64397FF395E7002FB3B0813F98F3ADB1557E46F644E0C7E0FDB70 +533122C1838D195BDBBA28BD7868FBE02DB437CD22B72401C79FCA2259714348 +DAF6B321BE3308190B4BE630821419673F101B539BD788B1755146554EFDE136 +52430998CB5835960772DA8470CDD894AE8810A2AB7D0EDA22C374E95EDC671C +1BB5BCB69D7C4EA065F784DB46208C66D92C2C6037D0573E63F1B66B754A4D3E +A7C0CBEBC1A7086756CAC6736B9296BDED874E61D7357ACCB4421E5A617F59A8 +9BAB85064CBB175596A223122D7C858597009D1D3C02749C88AB2694AE37250D +91E5B9CB0AB0ECE7A0F9006E63E230668221C3E704C44F8D67C9D7F677A4B41B +032E931BA43D59AFC289A08AAE721F15BD0DAF38D062F39CCE2AEADBB6358A37 +A21F3E26CBEBF6CBA354A4AF264C338B1F99A05C95B3B93F6F0F137DEE72691E +6D81140161E2FDE25BDFB5B9E729ED71575944279ECAE16ADC257C7CC812D1BE +1BE58ED6A842FF6BA11ACE3FA83F17B8E3363C859553F33847CA40E6301FE515 +489FB5650FF995E22054EC5DE4AC290A18393D9F791E70D15D81C1AA9950803E +15253C573E219B3FE27406A5E8A1FC87D3E1B14B7A4FA9A79EAD46D6280E91A5 +64190847F355AF837293C6BC979C65F8F6B4E846545D10D3A1F8B1536B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMB10 +%!PS-AdobeFont-1.1: CMB10 1.0 +%%CreationDate: 1991 Aug 20 16:34:36 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMB10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMB10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-62 -250 1011 750}readonly def +/UniqueID 5000761 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 +7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 +77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 +2DB0E39996C010F3024A5A3C69C8485664A4E3AA81348AE21A30280D0E3B6542 +A770F048F31907891EAB8B57DC70FF775574D6CD26B8AC9C3E64C3631325BF0A +99AB413BDADAA3B51A3E168B03A856EC7D346A38BBB0A2700A23B2CA91120B9D +2AA5BE5A359C60CD78F055253785CC9701F5D670ABE4967D74838C3B267C6563 +C9651AC41D8684AD5E913A5C9C547CA225A74782D1AC62020FC38E29C356950A +00E8F2B0752CDBF81EE4ACD59BDEBBB9523AE4764B995855F3A401EB4B04EE56 +B10758196CB661448A3617B83CA88C41756EF131CFCE0C968B94B6C69AEC1E9F +BF8B21837BC422D766B5089D81CF35A807394A026FE3160580695B1213968D90 +8ECD1611E719A871E15C6085A17906F77B5B2DFA6AE670976758E67F8A4FC362 +FC7299D85ECC3C0BBAD4649B9DAB4A2FB248D6481CF0CCF274634D37A5AA4DDC +31F3138AAF10998FD66F3817B77060E71C6D8F17205F9C098D81D952E0FE3831 +2264C55D73215176470D8D75E7BE6E44514984B9D20208DB3ADD4767CAC09D41 +9C8DAB6EDF4FA1AA2CB285CA28E30972B3BFA4F8600DB92164865738B015A331 +EA9EFDD478132047DAC28DD4FFE419F94CF5FCDE732E53FD332ADBED32F76B2E +69531BCE0D461BA3F41A528DB0CCEFF9663FEB3EC9CE0F760604F835699D7C08 +CADBF7AA3DCCE9E813D66BC62C6E452FA02FE7E5F4FAAA527B4567AA4FACE790 +87910AC2498C0999866614C90AF7DFD65A59B9183FD8AC5DB9AA81E8E8477F07 +3501D4BFCCBFE32C964D3549B42070D43977640A289060AC0BDF951B78ACDE58 +D95548DE8DE75EA7A6F5922BB463FAA93487253414EF4233C8BB976B280E1A92 +A77D2D907599AC9302D1143597D4CD494045A0261DB9245A613EE31DF8994568 +F7D0FB24D761F5B4E8A96B5AB339418462C29EC1DE163980AAE4B6190A1AA91A +D935859055FF59BDC9365F825C409B52530DB59A099FDE62E716090B6B14D2D7 +28662E609B24D00FDD9F092F15D94C0726B1D3610F20A7C658F19D26DC8B53D6 +8DD06EA7E45A8150DCD2DB3AEDD9239A029FD6B5344B0FF779CFE958A5889AB6 +E941B9BF0464CB0FF3247F17290F82825313C171AAB70BB80D21EDCB7628B5D1 +8266B3E93852BBFCE9CA6D38170F6CE57219A301EE8B989D66852EB7A48A8177 +96722414CF3B147E046617BA46F6F1439F90B6B3812D61619904CAA0B7CDAF29 +D6868D7F8346CF4164DB12015292BFBCE474B05BF886430411E8E937B6F09D74 +42A2C0EB14BFC76003DFF172AC44D730214DEE512BF257C8688FBED139C01604 +2C34B2E4C33219B9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSS10 +%!PS-AdobeFont-1.1: CMSS10 1.0 +%%CreationDate: 1991 Aug 20 17:33:34 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSS10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMSS10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-61 -250 999 759}readonly def +/UniqueID 5000803 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BDCEEA888D07B439DBD4E8B4C9 +D198C03874B5E6F8FBF4922065A92BC3E66D05DE53971CB1424510E892442858 +D69CE1F76E4DA76C87C763A4B2FE36321E54B1328C9155B8ED6361855A151723 +3386AEA3D042B8D89C8C0E9A33E5DF3B466F7BB8C2C8A4ED4CDAFF55FC6D3EE6 +0AF2CEBFC1AC3A6E6692F8BB81F82D86BAE85016AD62FCB05467082C2E5AD348 +44D1439C2B59F65590E57CA0DE481A7A34E79931B1513C4C30156170409A4BB8 +46D412D1DAF88AD30722F12DBCA1CCC6B4BCC28D06B0D29149DDEC520C8FBA13 +6B82E2E1790F00B216282FF122EF0D47B70A1B29514DDF7C0435ED238C14BDF5 +6DA243117FBEF7398F97EB95597707ED63C6797EBA1B46EA19ABB1DABDA171B3 +16CD500F5D64CBFBE4F9CBC3E66A34427D3C4D0C432710289381F9BFD91B4FF4 +1E3A896C3EEA2F3105C218877D6C0C6B763760FA364D00065E1CAE9DCB5676ED +286A9ED0D1C946DCA6A2A670EE0936FB4706CC62E234CFEED34AA615C48D2872 +A087F30990C85E64BA68F3D5C117123467DB411C9F2D6F6858CC70C1E352C477 +713097321B4C4FD4C5CDE305415F998E7245908EEDE6E056A736EA77BD8C639C +3A79FFD0B74B3D28F0494A115F2841CF8A8827AB5608F96FD8998A5F40FB3DFE +3AA0C7696DE4E1D18DC0D6E84B943175FC38FFC42A9C0CBB13A908978C98BFE5 +034F88480F32B9DEB2FD228FF6CB0B89B045AB02020C82E3F5716DC640613185 +9F597CE262729BC52132F43922B9E28BB71A30AC8709634561B22D13C4FAFE0A +12C4451969226B220038AD8DDA990A4E2CAD53DBEAB698898BBD3046234EB4EA +901287E71CB41296C431383AB85F18882F65BE36923F6C0FD6FADAC5B42FDB68 +64C06E047434FA7A659EF7F3D1AA8E547939FBF9C2ED7AC829F03CA59AFFBFA5 +A7AD2E0FC7BBE619961AE1785D09444B333993199FFED007382B54DDAEBE21E0 +1E75E0AB6D309DBE53BC7BB9F95D342F51798574D70B95021FA40163A86BE6C9 +342536A5730837C522D5314B1289D9B7E4EDD108BE7F35A20AB2A16608F6F007 +6DDD702A5A9BA1325CE2C1CD020DF677872135CF04F4E4F1E9AA6B494E2BC22F +107C331A7E80718B030A1103804D144802E3B03EF7CB083BCCDEAC7B43F1B4F5 +C1BF6016741B741CF7E12B4BF95221A72CC9F4657264771AA69C73DA1DA29102 +65D01A0E61F3024E672AFCCBE13CD0B7F54AE1418B72E357A0BABB4D03073B1D +F4EB54F899AD4A41A9F94DC200880A0DB99D67235A2451B25F710C29A882865B +A922E56E9FC16756014FA5CBDB1C32750BD6835A70EB715CEA19A8872041905E +8C660BACDCA26C8247D6B3C10FA5DC240E433E479AC6AFCF57CF96697FF46BE6 +44748E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX10 +%!PS-AdobeFont-1.1: CMBX10 1.00B +%%CreationDate: 1992 Feb 19 19:54:06 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-301 -250 1164 946}readonly def +/UniqueID 5000768 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 +7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 +77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 +2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 +FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F +DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 +7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 +9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 +CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D +6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 +E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E +8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E +3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 +EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 +0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 +4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209608D3976637A +DB9C73EB3A28623DF758C25574D740385B2C3D10086AEB904A33DD76DA2CC4BF +7E37F9117E9D81D3EFDA12D5BDF0067450C5A8A53959C055C5D6087F1FE6FB5D +8306F16FAD71AB986320F1229440C63ACB5FA24E41CFEB12C2BEA2C25E59A3F9 +6CA5B7A04B57F2471D36F5B41E6363DCEFF2DFFE9131F044125884739392333E +15418156EEE8DE92EF4C176742032FE8889839755D8D821CD7F8FAAF8A22C283 +19F79216C6D454A864898EE9F830DB5F3372B8F47C464DF19C69ACB3BC0566E2 +F25E7FF148B2CDA2B90CB5884440F464CD57295728A4415963CC1BC0635BBEF4 +E812CA5E0E788035873D05616F7B0F6A30D36BB285E7955CFD860345F16D952A +BF2F7D2702DB352D0874442B2074859EB49313BC27E1067D627362649D82A5C3 +A57DC5041B1A13FD2FA89D875019E23C31650A25CBEEC6B93C575C363FAE2164 +76ACBDCDFEFC8B7BD24AF41D55196DF6FB2F28DF88349947B448513C7E832EB9 +F35B28EF86C231336351C1F89AA9AB1F8C02D0DC35746E97C2B29B7A44CF7418 +89DAE02563F58C453F45C231219FC9727D5D477B256530D4492AE7E4E3CBA90F +50E8BAF9435EBFDF819DA9EE1F6F67A0D65D35E3D0EF63274B611B25756461D2 +BFEEF8BFD513B0380993B8D52A6546D69773D67A15C059E6A89CAA2772162509 +3B054860006DEA20685F5E2937C95B50D07C6316ABC08495EF319B36F8E48FD0 +DA482F82D2D981C70ADA2E467608364EC664D151BCE2FDF571BA63FC926CCD72 +052D4F83933A9582AA6642773A62555FD57DCF1448BEC02304B798B7E47B93BE +909C2BA1351EF483D0E70DC23BDD52A91391172D27150A70444B980E59DA01E4 +6A79ADA80A1660351ECC1541F80EAEABB72C4CE6818C162257480EA3612ED810 +C22F1915008ADA791282032FBD321BDE22529B3EE1493BAB010066C6317DFB75 +CD9D42CB97A731BB7366D0A170D3E8CE00DDB21095A28DE2A77A995879D026CE +ED6350CDFAF3DB0140E14985A296630EA4D1752B793EC534C60B61F1B41236BE +930D8CC9EC66930E5533FF3A7328F0675312EDF0ABCEE5B559AA42CBBA8CDE9F +F407C8A7E5FE9FBF58CF90CF47F56C5D0F76AD6FACFB4EE3207884A8580CD660 +1753486132AA6EDF8C150363743A086B2C138D66032AB2F4BD9F800F59C89EF6 +40111353C4E828D61D7937837DF89B62C6E21AB81DFA802A3D106675EE08763A +61D27684F240CC0EFB50434006E3315BD5639B616AF3545BF9888B973339F009 +DE44130586FC727828B50E7416A6BD1DFB29EAE0ED9A8DF53CB3E546A8306370 +67F9A60F4DE3ADB7B37DB519EA5C793E551301485B1AE60DA7ED9CA3F50FF9EA +A9FD1964C5384459201F0E03125FCBD116382EF3B1693774F084380DC53699E8 +478BC40779C80640E0C746CA1C2A03788B41B140E8051885CA590EF733277361 +B386DCB99A017AFD298DE708DC15D47063C2B52354E8008A42D6A777C12802F4 +D5A65EF3128AE9C600A14F69FA970983D53AD637FEED9A5E89D5CA1A72FC928C +32E6E74397B2EF0BD5836AEAD0615FB1248334F230C8124738B369C4AD756065 +841942440A1A7662C23A0E8431B9A20046BABE41AA7753FAAA3805C34732BD1D +F31600ED74C2F2D30B5C415DEB7062E503374C2AAD8A06532FCAB99B66901AFA +73E90A81753D0235B0762E04991FC73F64545C1035BDA459C7FEE514DEABC2BE +37C37E7160DF06FE3466F287E13F1A052600CA833BA100B7B439FDD1D8931DBE +65122DAD5675C81BFE49E1AE43805E2AFBAC3A23D6E95B3DA41AA65FC7EFAABF +DD5AA6661BB47621FC6A7DAD21729EC0400490F30CB74026D00B2CA1ED0A798B +B4CF488E585371BBA519E618C269F47F999B973F86FA742BAC7384EE91C94DE6 +088BE1D235965A53650038EE5FBAA6EF06965443D2FDE8FD52A521C6FA492553 +C21E7528C713A60C6412F1C1B7312E083799DF466F09E9F4FF07474F21428F24 +4850036F3232BEF5A177467A89F1AE5967A8E6745B34D273BF793D04623D0F1E +519E7BA5294D32C926FB29959F7FB4BEB9BAA193D7F2C30E392CDBC25E6A2F7B +A00F4EC543C7DCE8F457DA73D0EF73B773A3BF5162BDDA5C18AB5C5DA8E201AD +2E002328FB3598533E6B2EC5D4F481DB2AECDA3E6D55A5AE2FD1893D7B7A6191 +FB74A43F01CEDAFFD142EBCF31F508D6182BA064A8B5B2D640051D521EFE69E6 +CDFEAFA0EECF7946AF06715584F9059B858845A1F51E460F78925F830760776B +D5CFB62931B6134B34AB757694190D5DB21ABD3AE042CD9F59A3B434602EFE42 +D4502B93B2AE0FCB06C7AD6C3CC1E6C6B4CCFEC730ACE1B65488832D2147A273 +7A35049DD6FBD88E4B09B43F8A971EC30A8BDA50434E54967EE684141C589669 +21C7A048C49F4FAF51A48870360E0EACC7B4B5AE7C9B1834B88EC4FB53D1ACAE +8E603F20530934509B9042288CE4013DD24F21F6193B1A86448A9AAAFF98049F +E8AE460848C6F06DF140E989E08BC047094C80DA9AD9354CC640EDEF3D2C7EFD +2338DB1217CD5741BB6965E2D6CD2C6BF4EF1DF66CAB33016237E568F7712C58 +2A586FCFEE5E089991621A1A2C892B53F8D945734E838DC0D9A9CECD21241BB5 +E861F8489B0DF3A05EE643F5FD683EEFC6F8A616E92C7C96DC43147023B11E77 +FC2A7CED9204D2EEE35FB57B5BE8D790EDAAC19B150EBB853A07A6A066ABAE2A +E61F0BA577733DC2CE5D3A674725C54D053C3533EE7F68C6E283DCA25E40EF4E +25D953CC4D1D0A8E5E4891EE3151CFD4D3DFD0B428FB634B53C86FC07F63885E +D8D117871DDF365B722A8DDFFD06A6C22C1BCD7210EC14FFEDB569825578B197 +6780F0A8E3698BB3F2A6C3B6F13E00124E3DD57A821A764D9B7F4741FBE4C362 +8171963AED17179F9A95D9DCEBD24E9D032FD6A393B9C75DBB32EC54468BEB63 +5A0B48BE302EFDE364485500F780C82E0D6C825A858C9E9F71F4C6E2DECF7E9D +872C71143E9E272F5A82E0B77AE0CEAE3DB11942B72B020E3A30213D97B661FE +EB583258A2CE3452432A517FD6290B17CC730A30AC2D647C232F668E5E3675CF +9D9F262DC3CDC67A694A8C7BE1B6E89D25C430B58EF63AC518D1A29E7496DC25 +5AD9F6AC1EC9A17C6A9FAC798039660AE8C05CD03E41845A7C1FE477B5E2CFD8 +0D0052D15A1657813E2844F45C01E6E694D05A8BE6C692B9384387DD16F30CC8 +734F639901894F74444CF04F37DE0FC323C22E877304DBB59349E6609C543677 +34DC0AF2F48C3E03E61B119CED5F1C1C0C764CDFB06CA29F946776607B7B3068 +F7FBE46F571CF7E8FBD304A962CBEFF1F04A7C3485AEE8291192C19A35D06E5A +CC00EBE7F6C5C7AD308AE1D648E8D78A25475CCF7C3E7745839299FEBC31E23D +65D1BDFA1CF3EBD0D0C6C5EBC6982EA25D1BA629B9C44BAAB788BBEFE8428BDD +D54365670F9D3E20F673AE766B4CC74F6913B0272EB3D02C71D8AFD73D6CD2A5 +6A2A7DDB0C334D3695E32176DF078618312F09F2C619E2445F4109917F8877D5 +6786F19692F56D49C92D9019D6676BA151AB7D7CA3A9AC55C0200A2890C35BF6 +CD0CFDFBEB989244D7D77626C72E45E25EA4DE744FECCADD62CDC97029E1911B +F7D868B8EA484D2BC45784BA2795A5D00C0F1A0A8EE14FF7613C8B5759EE97C8 +5A8E088654C1A6E816CC900FFE2FCF71CDA4E55CCBC1BDB250B7F7B4A0710B27 +B0D427315F18FD3752EEE13C14B9A5C1A34B867059521096B1246AD21C12301F +EB67D150528CB1AEE2E22DDD436510836ED22B4D82A71087C0C50D1A6DFC4AD4 +DC5FADF6F5F757FFD25D91C1FF7A4CB16FC9FDEF3CCC4861049F4CD392728772 +9DE465C5265F24BF803ADA07327839C8337C3B95239F2AD99DD867FA336D2669 +F269BCA4BAE23E2F0743C5B8C39054 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.1: CMTT10 1.00B +%%CreationDate: 1992 Apr 26 10:42:42 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-4 -235 731 800}readonly def +/UniqueID 5000832 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 +38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF +D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 +EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 +A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 +F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 +4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA +6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E +A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B +E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F +1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 +452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF +8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 +5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA +DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 +BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 +741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 +E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 +E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 +D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE +C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA +726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 +CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B +7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7 +7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9 +EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6 +DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437 +ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53 +B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A0FCD5D16F0657F61E9655AA1 +B8326F1813FEB669F4EF61CCAEF05098C73D6BE54CE3936F10EE4C56D0B8486E +66F02EDABFE670DFD8F4C41F743CA204E5C7F64B9D06544E1AB0449A45FABC91 +5F0536F53E88DFE702A9E92DC317D5587E49A2E4AA2D6C07BC2974FBE2069E05 +4A56D8029AD43F8367FB7BB624A49847435ED26374035D5B1EB9505B6D8D7555 +6665128B99C201E2B34FA0F362F572FA69E160A4AE99E0E058E53D548B7BE991 +76C432D7FBD61DE7DDB8C0BF8B01CE184C35806E9141B79A6DB955DD756C8EE9 +C3114D383290DAFD03286DD852D73CF5EEA5657245276DFFF49506B1E5F3EF7E +DAD841A79CEB7ABD1ADED33DDED4BB921F6CBC1C8D7F711169380254070114BE +0F0FABFDDF8DFE74F44D87D8F424F03A3D4EEA65BA913713F837C5128203F99E +12BDCC878BA17B34D796FA747F6D778EF068DBB771554F9C64DBBE16024AB356 +FB15A245924EFBCDB3BCD58ADB6AB154DAE796268F407EDE778DF79804532EE4 +DF63522FBB599137E5DCAA0054CC09924603DADC05F0BFDEA4D1C2CAC0518633 +E4D5891FE58A37D4055BD86BAA99E6B64CCA60BD8B7ED9A258C4EDD356EF78C8 +156756286794E407A857F49DFD1C286881CD18055466F50CF2D768F319A2B1FD +116DE2BBD1C0E481D77EE0BF879779465E0E53605DBCCCBACCC3887A4CA8CE1F +E5D3E9B3D84D1CD5BE08DB07B5A324C5A752A3773FBB420E35D2E2FAE456C7F7 +66DDA4A2B0922EFA48C7BB12942CEA6EFBBCE12BBB85DE4D19E224E9B602ECD1 +3B28CFD50CB2C66DF52A6B4E82A7E9846B0C9C8DB8E90A62260184FC1A470EC6 +A5EF9FA92C1F9108F297AEB5C5618AC3DEA1EF3A730A16F8771FA9A65469C26E +F63373649A4A726FC526F1D3186E8C92B3F1940DE24E3A30600F2196153E2B62 +1A8B7DEC5781F3577EA3109C9A5B3BED4EE646625CDAFAC8996046851B50EEFF +8D42D20DE055117C0DCEA3A554DBE37D5EFCDAE137564303458F4DE9BC4248D9 +79D0FDA7FA1B6551D4CD22F8995E514F11A224C572096A184BFAE2CAC0F49AFB +6344424B5C8940AF3EC477AB1CFD986C5CD99402D5A42C0485245938FDCACECC +D9AA7E145D3F46983EAF9C0851C555EF2FB1F6987C6209E192BF798659B64E03 +21751E55FA15B81CD76CB3F15DF85C528CF092498D126FC4DBB7D56F0164514A +999B6F2D3C2C623B97D0439CED312BF5F691573DEF8FD249F904AB4097028691 +03D14E024320DB6D4F93C68926B8881B5485B445A668342F88E58F57F13A58DE +078296EFFFA5680BA7F2148852F41BBACFFED59CB89E459E9C71AF71C1C1C267 +A2E22492647E9E90BA72039B18CBBFE8EC94B921C5C76B2FAF888BEF44E58CF4 +484A5A41DF00263D1C4A99B1F1E887EAA3617C6ED0C38AECC08310A03C2870F7 +FA0FE3A6D8DF769B55758342D5866E49C9724566C896E82F850DAFE1FF222629 +3814410C1999D616142BDFD986C2DF597365AD905BE00CEEF4A1A0D4F71F7560 +4FA1C02BC5D4CDAA18681EDE45A682619E7FF4E2CC574751757EA43C7CB85520 +A98D8B47D45E291B0BA25EC803B465198F32981DBF99C4EBF3004FB5B083CBE3 +A68706583F79FE0F3152B07E99F0016C9FF4B5B54415CB366C316DE071EBD49D +B7535C5640892CB99DED62E24B73D6BB9626C685F9EEAD6FBD63679B3EF89DDF +C503EB242CE1A0382877C1F93DEB9A4863863A908C640DA19BB24CF48CDADDBB +F0FBF8968567FB87147F678EE8D3498C21FCAE562075A15A412CBA80927C8DFA +BA47B7E80F3CDB6B1EC445197B6B20662BBC206C75E0EEAA11F245CF12336D49 +4FC0235C17FA03991579C3F31E9A7254166B9144815891DDCBC805B59DC28CA5 +E8F542ADF39F07757B06F9E1C8264BCAE3FDB6C710BC2C4656B997BF7E895DF0 +C769722B5DB9EA254B34AF588A77064DA887031B32CCD2180632CD7EC4D4AB5E +BA28D887DE6DC1B912C99AD7BFC0891CD1B6B8C836E7E3A037B2484E5974112C +830575D110DE9FEA4AD94D37E2843306A6CF744EC6830FA60774133D9C49E9C1 +DDF8F9696D0A9A2BDCEC578F3D0BC2CCB8A22A4AF539589CA4A2FDB45FE47660 +D3EBCE196804A9A7759FACA2940508EC3BA1923706FD1B8664F6F02B731F1ACE +67DD39EDA612B74008E82E2046C8A677114879CB9811F48231DDB465A9BEC565 +BD6C5C742056B2C5940F7F5AB9D6367C15D4CC92C368B6536D77A5B2DCA90D5E +0CCCB58D672C3D3F5168C26C4632670F2ADAE2C5B2A1E69D2F984CD210EAD333 +40D7D6A5F8EC4EB54AC5259A46B6380F37C76478BB57AF6C9CF7506AA8CE8C82 +2571C24D958A65DED2D4C23829C3DD78CBAD71119838D5DDDDC45A095F58D8E8 +A3A83A32A9EA790592300D848DE2C1B5F7EAD91A737D681057289A86E7C423C8 +389696F1901AA2B850E1FD3ED8852880CA8E89F2091B61311FDA0E2ECD51AF3C +369AD0A08DE9DA1E052F3DCB7C49EC44B6336F3FEB587F1599A640E5EE95BE26 +14B3F4A236DE2A5CCD937CC7AC2373BB2E9DBA76A65480E9B87687747D492EE6 +458E2254EEA7D504550DBA3A7F4D2E7718DB9B959B65B0B5D79C692B71B37C62 +DF5E03A4A38527F853D17C81747F4DB9C86D618ECE977AA0AA9EBC70EF507229 +DF089C15FC8F54A1023F29BC817D4DB6C9F7BF1024A859412B795A8E07E4EE5E +5355565C4EDE0AD65AC83B85B459EC1CBACD9A450C9FB7411C4BF4CBBD7828A5 +A9E9B671E6C7CAD6CD5F93C8C6CC72C1233C4610BE4FC8B5C377FB7D927E55FB +0CE6E1B337C3E19F9BD7B010B155BC592F342DE7AD6B4286E4B376BD488DDD64 +D2A9173F7ED250ABB2980DB7BB8F367089D64504DF14F88C7845B5915F8B20E4 +9E876A2480D28ED988826E86DA0C703B6F3AD68FC98CCB91073D3DD3160FC00C +DC3805D8F14447AA9FB199C38DD4B28CB1E6A8001D3903AEF515D822CB784DF1 +5C3C179EAB1F2ECEF25C454E7A2ECB454C620C24B80498176523F160E40C3A9D +DE03DAC25A7E5399174A9E8DF8115DBAD6D5B8F16B6A59E7DF7E1E0DF24595D9 +F7C6B1ACA13ABCED81F6DE6AC64D1E64154833834EDFD6E12CBA1DFD035FFA6E +05DF3FA5F8173D5C8E43D3E4D053ECC5A7107A38A60E20C93B02BF82C9559C6E +E7C0FA5D9B5F02581AE5AAEECD79B21BCF1C9E1DF0467CC945BB3FC8E9E45CC7 +543B34BF2203E212871AD67E10815FC82F76ACF773559519309F5AAF03CD800D +06FB2ACCCA695B06EB64BF455D7353FBE8579FF62E5C33BE93A196B3CBF875F2 +5017FCEC574EDB29D2564AD2611E59819994746FF7A7B053302B335EDA8859FD +8813AA235724EDEC0CF215CD4F4FAD37E3A0DEB874A24C4FBDF64E3654E0A350 +C0F57FBA5DE0E6333261CD37184C91E38682FE808DF75F98237F158AAC0E87B7 +C84157DAAAC88B0779C26DA29F584C065C4B9EA84D74A9FB3B8928751AF1A8F6 +5F0DB7A23D7F802EF8A7F9F6C2EA8F4941516D48E12EE4A44A6362F9FCA2DDFC +EB7F8572571BC4DCCE2B2D4F3960AF71BFFB9D98ECC8B0220E79F15AC7A1B490 +13121B21C6C44B5EFD8F0BA56736E61F19DCEF803096578B2EE9A9A54F644E1B +84E68806781A5151ED9FDA8F845BCD0B195FC7A408C7AD075E9BC1843CE0C727 +026CD9C80B9D7D706E846D67F90128B15955B64F70732AECD8F31909A71A14D5 +EBB0E466F7E4274423AC1F139D06F00C6ECBEC861D7C8A2279E9DE2D7FE39966 +A1B7EFADB31194731078C4ECAFD04DB6F3D9B6CE4E377398D8D0EE5EE5E0A5E1 +515A950897DEABEB0D454FC7036EE43CF196B04FFE50DC6F6D58BF03C3A74978 +EE7CF02EF3901B7F623EB86B799351D25C79FA672D7D98F924180E792692EB2B +A6D8F7515C4513C6EA40969D3EA10AEC27B9CD014AB3C4E5BD6AE5522E03BA59 +3F4F23C75831B15D0BBC0F9E35852F87A466BE24AB67342DD2F19CD2EB43211F +29E2A8B49D6B9BD5D19D846F8B82CD65189C511E0FB597A25C62AC853EFFFB9F +CECAB90EB54AFF4E40CD0CDFD31D39A7E99030CDCB3CCB61DE928ABE9E0685F8 +6CA07450052B90E00641A2EF0FEBBF30007B574FA0CE4365D1844A59841C0853 +C7BF5A5984ED0F9821F1CAACA7FC67DCEF57B54327060F4C60BB5E6CE00AFF20 +5BDA60693385F5E96D58D8F6EEB6B2DDC1DE7571DED81E65AAEB3DCC4604B8FF +675A7A967DD548BF5AD7EDDA2D6815471CAB5A722E5AA61CB4539D59E043409F +F7EEA6E3EB7D9E5D6D8B0352D32BDCD3C0A13F600C9C03E7F1347F7F0454DB47 +C869BC403BC8DDA258A47AB5FD91C1BC0480552E375FB3B015185F35E5786438 +0FE833E73F050F0134295531FD0B4086DBCB6D74D1570B3C71DF15B5956396A6 +CAEEDE60AA38CC8500AD215431A01EADA80475E688AE8FDCF6498E81B357EA2D +A46DCE5E9107713CDF1CFFE71BC17BAFE4C9C2D635F8E0DD3C54012F401377D7 +64E8BD68716499ECD63EDF7D847073E32D2E6C2099D4C5DDC430C6475ECFC2BC +DAE444984B59906F1592705BE5ABF26AA10AFD0271CEE327AB4B9B191E531646 +9E69539A55C523AD838A0692285F0EA21FA3100FA739B391ED96B9453A94C242 +08D6235D012CC4AEFDE63384D463B11D378B5A835BFFC81B95505107FED0BAD6 +9237E44564C0D82A3E4A974B57A904F475BD973710068DFFC91F7AC842A478A1 +6857BF1B9DF346CD23F998D64C63B23DC3E4D2A47017EF26D6E475FBCD92C674 +167E092750DCA1AE02911EB94026C58912B3BDC5B03D4362D5C4EF76CBDFCC04 +CA599719B047F85A8F04D88C368AC467BA920418883787EEFE21C4377CA7D417 +3FE01C86113E48DC72CE568772F6930AF79EC5836C0191987A6E33406DB9DB41 +C8548744EB4154C59D20273AB56FB83B384837C26C188BAC0CF05A4DA531C954 +9ECD2440DF5692B784CEC9492C0BBCD1EF3272545C7CA8618F4A847F9E11C29C +714D0E3E201B5DD949F96AF8F928AD5B72F2588A55EBD1A9C3D9867422E0CF4C +76536728970FF8CB5401C0E816294874E4D52E9C08135FA390377EEB66B8E33D +F60AF1E9EC3D9354AE18F215519BEF0AC1EC037AFC733B5C897440BAAC8557E4 +37B7B21A00BD478B91B3251D1F81917A052F6C0A24E063194F0466922AF9EFC6 +D619F6A84F97C932A6AC72141D2420E24BB20773FFC8D636CCA493BF1E65202A +D02F78C5A1CE9B325B83CE002865F88305AD4E0A50F9261558B2B4978056A620 +0AE9C75BA65F63EC8FC14737D55B7AFF3566BE88443081ED37555E504E9D2125 +E041C774F99CD74B8EB6F027C838C03DD59E36B88BDBB9C0F4C3D0C7EAD96274 +8E0F4BC5D387294FDEBC3ADA0E9846A6C2869B7B49A332054F6C28F8FC55A679 +1176654E35B0AAD9FECEFEB1C967F9C0F8A5DB5575ED4335AD38624E31F45AE4 +1A2A3939DA3FBCE9BE99C284867B06AB66993BFE52615620B161CA52893DE0F0 +D1A79C9F0399F42A5CDC01B15F4BAA71E53B0ED415031D9984D3CBC81B556C28 +CF514D3A160B7314DFC5019C9C431FF0CD1F38494066D0F9EB3A8AD0A8CA0646 +24A0A58DC6B362EC895A9BEEB72027DEF4A5320B752496A172EF32D14C3D3CAB +81DAAB12269F5FB13EEDF2FA30318D4F7F5E0493E54779FCD956456C6EAFBE0D +15A2BD6D8D07D045AB8C26D66143A3F24FBD76A00E51BE71D48B45799444AE82 +F321135FBBF10461B3C976A5CA9EABD20E411670702B2BC1704995FA95A6B676 +631CC5850679256AB7003FC25F7DFD39CF2D8538A8B74116B2F70B3300BACDCA +3A34C1D7DF9D3732ED02F39320FE2C6E01369F4C2BF90551D80F160841DB4629 +186C5A26A0DA6D08A965A366684BF3127A3D1E14F46BDA3B46F829F70B255D21 +3765A752FF2194BDD74E34A50C59D039C46E10C57538264457ED875F12B656A7 +ADAB03E9A3A965811D29F3FCD804D93782294601EF94045C692DCDB3D789E3A8 +33055DE95A331B61B958747ADCD6A65EEBD01474BD8E127CABA7949EE6A8143B +86E561BF9CD21297C3F5A330C73DDF08B592F631A9DE0E717A4765706726D499 +FE1144F05D3CE8246EFB108599C39345E93C27C8EA35BFC0DC3528F55DAC605D +0478D40A5F13D3839C8D1AB0597B1679CE02E8A09F105179AA8C42A9A2862A2E +40D4361789FC9468885C2068C3DBAC199D1B4E47DFB9C9F9AD5D7598B6D05F24 +D53F3B7A129C8B49C946DD40FEA941B89C9EC75514A3E1EFAD180B932C08CAD8 +5E5F538903739C150D68702A856B1E1E0B11E262AF51CD1F3DCFAEE2B60795E2 +C355D82E0E8B88CB136BCDEDC53D823FEBAA42C231CE55C1853D412B992352E9 +130DA25EBCAB9EBDB1F8B75EDAA1EF3B8FEC09F0CFD1909A159D9DD8A15BEF90 +1490E788DCC536051CCDF4522337C4EB7CDA989F6EAF09FD8A849231E1D0AB61 +AD043B9898FC0DD1BC6F02202D8BB63388BB0FF323073CFAC95EFAA14E792EA7 +54239813B08CEEAD085EF994883031FAD6CE4257D570888542136E70EFBC6E96 +FADBFCFB148CAA3C9E21B402D6CB490B127F00A761C37D482ABA75A396D5FAD4 +B68114BE15987188D34A6E25EC764FC52010040EE830952E92657C1E30F744E4 +54940DE488EFD7F8105346FD55F95A942B308C569EB4D22B44230C797E0969E6 +1E9496C43DCD898C91DB82FDE6721043BAD7DDEBD6F8ECB79BC5EE093FD39F13 +678851D4610C2F105A7532574B4427535178E62F125F1A8098A0C1CF09AFEC6B +5958BDBDBC8F765BACFF90B705E2EDEAEC63B1699D9C076BE99EA08BB8B39C0F +107B3C09962C59D66C3F725FD0ECBE05B00B33D4D950869F5F3EFA578DCCE82C +514FDC51EE564ADF56A2C01CCF3327D14A0B49A7A4D661B4B2FD7F76D5BE4175 +72CDB5D4A5D556304FFE79A849070F666990C699E804305A20FEFF0AD7C46C4E +772F2F818020479052D428B1559A0163C99453CC883DF631D98F5766381F7938 +2CB87C68F5AC50AD6E82F46122B84A522FB19DEAABC17F57721047900B3B189F +7D91AA51CABAF053A4F865B3A3E1601E1187B069DA67A483BD6E0C254DD98A41 +0442E3D8ED6F2250169B98F6A3ED2E3D9DB9631D2C804F545D6162989D31CEF0 +D8031B23D288FCA87B8489D0A1E83C8C14B816D7F2DF671201848E25FACD4CEA +48BB7D58570EC0F43DA33E0BAC65860453BDC9E71B54FCAE6EDF04969F4B092F +479C6301DC7E0293038D1850AFB12478FAC8EB6B619A5FE3F4DBD6CE1449BD58 +BE4F33A893E6BD91996F5B6CEF8CC792A4A09400E99E57AF4C02BDB44DBB076F +A6B52978DE9578BAC24CB0314280C8E01DB22AF38F243625C88B1ACB0C74BA95 +AB92801EB3648151B06034150C64AA944D007536AB50C7EB7D62F64704E006B5 +2B1A7D3D1DB15053F454FC5DD0677813AC6E38EF875FFA7E306DC21F4BDCA032 +23F09C5F2972259CCBB81F93D09001FC1EE8EFB7930FCFCBDC2E4C6302B1E4CB +82F2D8E062D2FE7BEEA84899921DE14608F3E80025D3D8812EDBC628581CAB46 +7B93ADF4B3DC5132B9E9E36DED114077F0BE8DA4AFBB8F7BEA125204CFE44404 +4DB8DC722F12A20AC8A5084A7AC93E8003CF7C24908EFB5A734324E856621345 +437CD20CBDB3740D38981A5DAACB525A17474F5F85FB7D757A6D08AE78AB2D5F +89762575D264E29FD8EC7A7ECE2C4F74AE641169F58BDDC8C4BC533B7AC7AD60 +61BC5B429E97C240542128C879A9D6EA0A9D4C05D6423359E04D25C07E53898C +F88D4F0EDFCC535370218A440F214AF5EB2FE2090585C6E13974AFDF92F95F22 +538D50D3EBF9EAD584974FBD064C58E1A77AB99D6DEE84BAF47E7DB4C51E96A9 +5AA3C5C78AAA3B7A9C73DB9D582EAE1EAB83668879D68124FEC58E7F7C0C0289 +A19AAC8FA63A9C15F861546B4957C1169FF50993CD15598137D0CFCF04E267C5 +4E306F920E065579AB7C44B02F7F89263AC0F984D63FB0A7A723EE086E8CFD39 +BC0E40F6277A824FB2E53CDBFF57FF1CBB62F8E2AD2C13F36042FABF5E84EB95 +1E47494E30058F92ABBBB576B969FE22E93EFFA6A6439621350AAAF1F0C391DE +71FCAA583BAFCED79669BBDFE69487BEFD9C4CB1DBCF2C5575A45D016254AD02 +7110C17C6EA288DA6B6B145F1A6AE10D6C70CA996B1E908D13BBA2555E51D7E5 +696CB1D9FA80352DB942DEF37E6D8FE5B3B5C05E39AEB63A4F83E7FF8A02B9F0 +AA1FD7A03D410B0BAA95297824FEF721625BAE714C82BE603F14233932E0B212 +94324A8A1B7CC68F5C249FE637136673560681282ADB38592E5349FA63BA68D2 +90447F64364054D6092B893198B7F772CF627107552D3A4EDB47B58D828728A8 +D22D0B34F413C4C21E5647D0B321B6B211E0830899A273EAC693F467512B5D16 +9EA46A66E73AAF00783CEFA678BA46EE65BBA1A54017213461B146EE28BBE146 +5186FED35B5D9DF6B1C29FD6384F2B882EBED0396BF0CD9C6A0C80F2CAA0D17F +1901BCD520A166AFD7787557CCE8B3270896E0CAE601CDE94FF6186A65FAEDA2 +8872C3BEA06C7AB218EB0C18C1C611294989CB1BB896F45F193AAED81A3DEE32 +C571D517F311F415537ABC1951C033BFDC0609AFFFF246C4E12E405D8AB3A557 +19E3A35891700937E9DDF00F8E5D4C89A09F04312BCE74C53AA6A4050EAFF1BC +CD9FAE24500F77AF6E0A997089CE47EFE3D8643DB83720EA87515FA01A50AA45 +9157E2DC1D37BD166C52A903A4F7B88E15C006A94151399ACF8492935B4B28B2 +5621DCADEC0FD03A317BB323F06A966D83EDE2D4AEB49E19543AEEE4351CB8BC +A99074D1846C8B6118F3F464DE5D6912F68D9BA30D50D8BA4DE28147EF3D9DEB +01367E889FC762233E56FD6A56E2588796B79D591DD57C03698B22E21EA82801 +FC7B994860A325115DC22175C2B8BDC9C2CC88DC37BBD9B05F22C61E7DCC26F0 +0B554789CF8664ECF688936427D98883D5ADD4C0B8FB51E9AF1CDF3839B22F10 +A4F9B5BC83FBE812C0B19C4EE359B93253D43A9F68BF083132180F96FC809594 +B23DAFFF7562263DA7DD77BF0B625CE68721EB88230DEE011B5DCBDA5BB27236 +DCFD0AEC7828630ECDBACD700274E9E1F77D007B495E56CFBC2737367235B52B +4B757DB9DDFE1BAFA2CF9C66B72DA4C5423CA21FC425156020338BE97213C990 +DF02E327F41B08AADF7C3895DB24E3B9A0DED10B11D7A6B789A6872ACA17C202 +13FA2DA292F3F4AF398D2C7548711AB60AE3704A322ED418E27CA51FAC181960 +9EC62EF5CC6F2A9039BBB607AA756431937D397AB44027AC95FB0DBEF0D04BFC +6CA824464458CD2000F5B60F4B61709483F5C5139FB2E511763654A55B2F0A16 +EC7A14DE0B5DAB388ECD328741BBC84BFE419E74DE02D76677B369A56787BEA9 +C36943B09B05A8DB51E32F510A350F89688E9DC5F73AD88C124F62C5E1742D8B +C526003FC5E28D7F1628EEF6677EEC4966E84D57E9AEB0BE5E9FB2AE0C07D0FE +3B25F09781CAB270C0B2AA34118F86EB5016BBB7121E9ED3A7B6E2005A302A6D +636625E94A91E6479C01EE1AB6B1987BA89D876BF3A22E05CFC49B3ACA07A36C +9DA1CE5AEE751C4098B73CA25E092DB1821FFAF98D6BE874CFE62AEF00C033D5 +C764DD1D1F2C94205BEEB97ABC5AAFA6817E253043E348CFFF2E022DC51E6F33 +3D152B84CB88DC33772533EAD686CBAC2FAAF63B39F1C83F6B7DF0C19ECA879C +4E6A1F1F489D98A6E6E98662F209BF6792C53C07E6DCBAFF7712D6824C997A4C +0CF329BFC8C11287EF4BE6EEF4C85FAF886969D11B422ECD0707BD50DF9D15B1 +1738DAFE0BBE48E3234CA9BD100E940BBC4841A72A009EFECF8CCEACA68875D4 +99D05F38BFD7C399DCB59CC90588B9B4C30A376099D410C010EA1218AE15F6AE +43DE1FCCA09A0915CBE46A4545FB9E12F016F29F85431A380479C959F1C4364A +416AA7B5E7D2CCC9D0FF56AB7E99B015601366B97018DB062B3CEDA1F3BA93B1 +1B0E6503E5CCDC64A610B96F7EDDC1790144EDCAF0D3F1E3880B3DF1939C3720 +D90C5724DD06E2299641A884F379305951FB9F81A4C2782770069AB5F563B0E4 +F9E1FA40EBDA50F36A8406E3547ABB6A443B9DE2A2813ACD17B639D3CBC57C9E +6C2DF03A5596F9CF42178A40DF725CCDD18EDD8642146FBEA744A603E850CBE0 +665FE5F2CE6E691D44FC6AA70880FB1E1796FE6E49A7FE18FCA539591E066543 +3BF08D78568FB430AED84B8CE7CA07B2E0BD4977457CD18D6EF7C978A16C0301 +CE44E994C65546BBB915DB9C8A09D427B70B7CCCF848FFE89A51005C449FD37C +63F35C734EDC4F6C09700B60744F51D111C642089B202942174990DBE413F950 +146FD10B5FB5D28BCABA713E75A971E5C6554450414A4A908C36B09A1A475421 +0E81315A5E6E40B488E9531CF048D1AB0C09C307B920E3948A033402D07BAA34 +23B98C8BBF6816129CFEB665CB0117C18BDF0E5D17FBCA5FBF07DCDD97219C95 +0880CF1E9127AA8E72E8115A35F1DE7840EA01E06A489604C3980327B9C4A667 +8F6A5F74F38F86838E11268DE1F8BAECA8927D67818EF60C6553E3D645D74864 +F679CDE21AD7B657F567B03B697F2C2EE6182F1A3274F2E43135183E227CEF69 +B1919221CBD3664040F2823A2D9EBDEE36D6300AA109D0693B2A69162D7BC1BB +86CB892CC774DEDDC99F92C9DC8CBD3CBA4D6B84C1599CF2261E96B24BA49C8B +71DE5731E687B7A0A9FE05AFB31298058C3F573D7988C8BA76173408B720A273 +5A8500B5C2DEFD3B16EA606785F1CAEE0DC351BEA9FF1642412286B3576F26B7 +AA2757EFC047A0FA472C2257C1133BD2904448F1527A8B88A8842F6BC0721034 +77A4569AB2EE79547E703A21B52BBB7B7779CB839529F819C147E50E545FC8EB +03AEB1008D3C59B0E2CE719F4F0B292DD6030A8B7BA959D71B79D1F53D167BB5 +FD88A91B985A3E1945B32641F6F6A8884293DFE5CD41CDDFB7A875E6E45B0676 +E0E2F27F77DE2E3A04AF174CBF4400FF3ECFF31E71ABABBB945680A93400EA48 +6BF761A86C0230D9AB6F7338AC1298C69F28491CD377D747E2B2340D302CAFD4 +4EEE642CAB20E86AF26DC4C86176F32F177577AF9596819D4778B982D10622BD +BA074BE2E703EF32C888CB41A6E1CB08B283F3113480A6A38CD4D4CF19B67827 +7B64B4959EDC07725890156B124C42FCC414549F66CB947D5376EFCF97949F34 +F7C399FCD27F308AC3B57B5687E87B2ED2BD02779C39017B97DC3832038C0C33 +D2A27E426BA52970E209C8474E1FF67BDCBDB1DD8F7FB86DDC95D3385B2BF70A +C58A9CC16697E8AA20C67EBFD91661389CC3450549B046CB17C8CB8B9775E99E +1BE18F5B93C826C3B7505BFAF4829726D188014BCFDAFD53CCC1E2E14CAF8996 +B01F8F9F89DFF605356337605B36B3EE932A5F76B0DA0AED1AC4F80C4019C03E +7BEAD387BBC5D26D5DB6081AC1C230FDC714E81A3CC9EDD7A98188810A51E95A +AB779B17D442BEA1B27AEC14BDC0A09DCE674261C44FBCF371C2E724593F80FD +02F79C84D1869A2FE5C8F3B2F452F1023D5C0DD0753C438B1F397D96E8B9659A +BD4B772EDEF6D315995B435EEA7C6D2494B58200A88FACC44C2EE2B166E610A2 +0AE6C244690A78477EBBE1122813041EAE4509D2082CCEB55922C6024419EB54 +5E791DA1A8574FFEC27C51ECAE720B89C2AF19D33EF6E69C9E4F9B2673781448 +0EFE546A01BF3934E5E17593DA99BBE0686E519F0662EC25C849DA959E60F804 +35EDCA1953BB19FA6A5F4B61849DE8B562DB30E85383A67C9E242944FF80DAF1 +59A51C22E9CE91AA5B92C001C9CE122EF6C78E42DCEF622B0BD76D2FB3697C9A +2D6E0942A81AA67EEED73B03773FD5CB4E21831BC096C07F78391E47061486E1 +88008EF87DF920B329BD0BB7C918369828FB1E3F873BD12AFB2341F845BC779E +60B7625E98BFCC3132D471DB7C6A7FDD6FDB9CAA2FC49198AB42755410EAAD9E +0B191DEB0CA44FD5BB84109112908E8A8ECB96E070CB473BB280BC7D4826AE03 +A579F724DB01E6678F428408D34E9344A64D8D2EA7675D820C561E8145CF1620 +3E13194355B2C1A57697AFC305BB906308E24365E66B6902B4269C5671E1AEB0 +E9C611FB1FF44BA6E78B28B223B01EFB64AE4502EF98AA5B9374D10232C98881 +B64851BD3820ADC4A7DFE08E4C3204DFF68E5879C46F2E1AEC856439DBACF818 +51CD04EE662B20C58017CA80B3F888C7331A06E6BB81AFA6674E50537AC6CB29 +CAA446AC914A00043837A26667F4158BE018BD8E62A503AA4430ACE200A98DBF +F8B8B78767F9CE4D549A087F7FA1E96F371BF6703FCC0A1076A60DA2F50C2ED5 +F9BE2D6945F5B7F44090CF3E10EB18FFB0EBA92F4413DA97A3B338154A9DF2E1 +D4DD0F9DB0BA706E5EA5EE7D5E591364C62AAE947076DDF0232E3FC71E477668 +B9D731D9D2FD1B78DA993FDDE06ABA940F9D35F01E5801D2FD5FEB5E88FA7D12 +7B04D149E4E46145D4F6D9233D4DACE9C1D4BB69193112B0FE831DA200102FA9 +29C096324A64C6DF0CCF3D52EB88FDDA629E7A71B1360F38C5A87B4E1ACBF294 +3895F1E75E07FC1857AFEFCFD2AFC9EBB2C617D7751CE609A5F24C77F549FEAB +651B13946580DF56CCA73DFD42B7A1C81D62E0717DF34D889E4A87DBD5304387 +AE2FAF2ABB39360CC802F24A695409D3351D0C87A76C09A98F3FFE79F07EE365 +7BCCB54C76321B82AEAFBBE8C0C28342B3EA76FDD90283E1FF850684502B019D +B3A9691758090160740CAEE96BEDA8D6BBF2AB321F7106834155E77AD41E358C +00879C8A44E91C60ED86EC6CC9FA711AEB173E5271F7871733259DC952D04BE4 +CC53D93907A1CDD026DA5340954A025E42EB844BF5A594E3E5D316BD5B419CEB +C08E1FE624B225955E751A0ED66A87C954E3F755C0E3BFCAB2E2AD8B27BC90F0 +432C3AAC430416162AC63245EC4D2926AEAB134B5755EB584263DDC91D3F93B9 +BAD527C3C0A5F608F0F2EB26365AD8EBA76297F57FCBB98B64AB660109B1FCA2 +8A21358E83536EB3D3CE7667AFDBE1DC52B7418630CC8F507A00827A62D15A13 +AC5D14A0AE48CA3F67C8CA759011C8C23AB1E3FACC0F28E59FAFBE57DA7917CC +56A636818F6B833441FC7BF1061C899027B56329D287526EF098873824F599FB +199194A22003F05F0B9ECB14BADEBF0DF7A6C80F50839A5FCF45209E3774A50E +17A375F61C5D3759EBF26EE62DE614FB8CFDA025550A0D56F9D3FA34DEF1F7CB +EC6368FAC63027C2887BDAF2093D247B057CE8EA80A2B04ABD2EA48108596C9D +654C41B566D01A78A01C273CE3BB407A417D8B50E76A2F9257700C1EC2918844 +3B980340453944288EDDA891C804E69155179A0DD1EF95A4D371E88ABF0946EE +BA7DB725B97CC2B7A4BDD0740C95A757D9DA85966B91AA14E1C85837884B1B78 +3CA9F7385F585C0982C43E7C3F4E3B4F11829126210FCEAF6C6FC9C6A5DBF3A4 +E9D86EFEE1400DDF61D630815209994807918C9A196BC84F9B64A31AB92A36AA +271B021359DE85EF2A9A757047C6275DFEE63C8EF59F02F8248305EFDC5015B2 +3011D07B98DC78ABB7FCCCF04575D5B8AE25696E053832A60DEBE4162545713A +57B48191F1EBE7C3DD940EA198400D89F839B3DFCE6E14CEFDC26AFD40FF7163 +E6CDD325588E396653C3050643C3BA39B8E7B5E7B8208E0DD4F364944B8ECEAE +CB584586A630C95140E0B4EBD68BA981287F57A4C2115D560FA9D3AE2960F8D5 +2043019D0C119A81B4F060DCD13C8A7A6DCE37CE61253F1A06FE1018E5D5447C +D692C6289EABBB35DAB603564F0ADC831760E40608EFAE87B4811D6C524BDF24 +1EB98A26491A7C64DCE206293B7E11C9D380770534F3F4E8D31601056C983D39 +915A7581647EFED73B5E6030C6814AD8CCEBCB9DB56C39A7127801FC22A6C427 +372C13FCFE5FFD96326E8E5F639EE95FED1BA04EF6BFA7DE21EBD474BD4AA87A +D97D7934AA486C1879542B57FDA1F202D75C31FAC106BA230B2058EBBBE12D98 +943451BE72A80582BD5B1B2FB61075BB1A1ADE11DD7EF0052186A6DCA7A8E08B +D43D38A39B972F81B11EE22ADA00046829F6C7B0110ACBBC47FBFDE195D96A93 +36C2D275C60DF4B6C6F3BF0284BBEA1EDAB9C3316D9A636CB1BFC23AA5A80A67 +92321F56194867F54AB82019BA64E27B964E04AD421297C2D8988810CBDFB237 +ADAA240AE7E27BE287DA9B884A22C7441553E588EF1C812130359EBA879FC74F +AE172A11550CDCBDBB9E30FF9B45122BC0C043F471BE9EB00E41F59D47407D7B +9936DF083B25232894EB674DB31C7E646B9009DAB4B708CFDD2362B18F715D2F +30D1EF79D7AE8FAD2AC430CF235866C89E7540AAA3D1AFD24795EE7D97D0F3C4 +DF3D45394771D050307FA3DD62142FEBF727E6FD143C556D935DFA8535A7AA1F +8770AFAC9B3DA19D06532CDC0AA8A6040617479C6955617388BEEDB6DB80370B +76C483F8BA14377019736E16FAE2BCCC5AF313AAECF926961F0E833376BBFBF1 +89CC0C6118FCEDE34B97D1BAAC665F6314FC5CE61941483234D93CDDB0EFB9E8 +C4330146F6320AA04D58F758224730C47B52CB76E9CC533DD35390BFACB945BB +65C86EEB0C365FC2F70AFD1B7DC6144AF0AAA1D19E769C71DEA1B4B76910C9A7 +34A6DF1156CAB321E394BB5B3B5186A63A91BA92A807E0F79D9977EE189F9A96 +714A54C9E6C3A8BB5F08DD509D2FD27C8018D794727509C5D25B2B41602310FC +09C45CB42C8C92041EAF1D8781712D7AC99AE5EDDE61696B7CEA6BB5D057858E +DE00BD447965F9B4103590A977D44DE07480ED4B86875C330EA0D2DAA8891031 +0FC7D0C77665DB7303AF14BDC24E4601D4403205D282CB18B06061829981339F +AD9BE89378FA29EF5ADA6EAA2BDDFEDA255C0A3551C83B2B08E87D15676FA94A +20BA9711D5DB08D426FB3E1A3DF10F3F143256B391230BFE5B5C9B3D2D4FD9E2 +BCDA391C3EE4AD779B2453404AE5C2786953F061BDCFC6E854BA5DD9E77E1948 +F1DF23B6F52A7906EBE3F4F225B74D2C48401A8DF68DD9BD04D82C1FB7BEB610 +680D8439D4606193B50926D7C2AC8C99AA949D18BE5A2E9B56D44C924622C222 +566563F4D816641385842D001D2A2972195FC55AB7DFBA118722389589489E3F +4770EBA66EF0E659C1C6417CC6E394C6F9B927E3F114E0C1A396DC50D15966D9 +F97B68A0859B74E40291376D0EB62D25BB38660709282C0AC3BFBFDA2F9B8880 +4B2E14B1E91B809DE7B53C05A787F446438A42264B0ABC9DDA781F4B381ADD20 +744D70A4945FC9DE01566AB429C08A87BEAF7327844DC1A8895587E364B43E40 +69DE49E8B171A19A5CC2116F5D5648079FBBE671E7119E76B57F34C1EDA5DC90 +5CFF7E9EB9D3E4993302BA3901A303B182A7A240FF3489B8B09AE820027D2586 +4D06AF576FEAE03FD39D934CD007F3E162AC1049D7168340D7FD4BDD903A0BA4 +00F32DE68815F6C19AB4430824E771A067CD065051FB9CF895C3A0599B61E751 +E0F107C4C1AE1649C8909ACED7427DF65235CF5579CCCEE83E3A9B1CEEDC520B +AF2D92A51D953F08F86911D207A1E0971D9DA7909F35EA5C7815F1672551833A +B9609C8D76B390E31E4F88AA2D1C5C977B772CC0DEE9DC65AC7F368594234345 +5C19877A237B938F410E5E8EC9D1FA4F986CB07A3F9AC64886B0D4C524819C59 +11FD51182E0E0613BC3FE47B5502DFE468485C2576FF4E7BA65121CE7D42B7B0 +7838BD5CFD50BB5F91BE699C69E0B9B0E5E510544498507C6B09DD71C1E02C40 +B80BEB8507B9BF9D591B20CA0378707E3AEF09E57C737AC66B8566D57AFEFF29 +983577E69CA97147B4BEA8CDEF5F9BA1F721916C63A38BCD4B6DD3D8C6BC280F +AB8609D17829E7C7E53799647D6456770F3B79B5B6A8D288ACF3E3DA26DB5A57 +69ECB172D60C00C5C83BE140A3D7C495E3F8840EC937566594CE10249B2869F7 +E92B1A3541BF6066D7415BAA809D9BCA8E21D0809A847CC8E080D849773428D0 +D5B5AD66EAD43EEE4FBC056E3B0EE27E4DD9C836C8AD1F43EB702A7B5621D391 +6C428FC59845DFCDF208166A3ECB4281212B98783E3BA60A15720B5A263FD303 +81D190A0499C457A46172EABD8B610B3832BDC7A8D51CE5D5E429848B21B8459 +4B1F0110CAFCE7A8B3602D9A8983ACEDE78577AFFE4690D69D9EB1C36E3E7C9B +887F9C385F4D8F0897DC0003CD6C5FD907DC9A303C5BAC859D96EFA3ECED26A5 +E3970BAA70CEA1F773A9367055BA25AFB35F779BCC747D56DA42075EB38EB7E0 +B5839306B05540E41E42219470F38132445CC19166BF5EC51185C19302505219 +4A4BD46B1F2E3882BA50E8EC1545B70054434A6109C2FD39986F049F8C2B1AA3 +3DE4774F66F3DB019188419123C14E4C097DDEEF9A938B897A4E8E48494BC0C0 +C7E8739D171116A57841E335C62D3E7C15437B3DE6735939136CBB706B4E148B +F797C870E0856299633CB03B65E655A5607320B5DE57A01E034BFF2BF7DA752E +F4B9256F003516AF3AACC27FD09EC54885C24CA6A524DDC2D413FCECFF521AE7 +26F2383C6FC807BFBC2F7C12D3DB2FCE84AB3D6964558EF78E699FE46B9EDAC5 +F1688D33A172C96DF748DAD7F59CEA54E876BCEC5DCCD471ED3521D6AE3C0FAD +46EB7F287FDE54F2ECCE77C540069547B6F6AE6D769DB4DF64D74CE47065D777 +C94566924F60BD207C8F013176A4A4EED9F095AEEFBA1177A9E8BDD12182E55F +419EBB5483DF2844D41906FFC636B132283D10513F31E3374A6C237C86C216AA +B94D57DE1F9CE86FF47F198F38425616810335505D9D754CCC40EAF52F5059B3 +B185C5603ADE59CFD87FBE5B60DBF808A835E3C669AF31A0BC93B89AB68373E1 +DAC31540A7E00E0B0EA4D5FCAE9637346B3C86173B5F49339C722D9017D3AF56 +BF80E5185A3A29A6EFAAE01158BFC7DFB5A1ED5417273B67ECE42ADC68511E9E +E2551265DB281A82888288FFB0A596A296543607DD298372AD18EA5C0E3535E6 +8F9B41E476AC37A837419DEEF1D7DC32D9439AF3E1A99EFC2D714905B9A21A7F +743B009D8E8D4FA6DCB24537CC48C91CA04E195A116B1819B9D778CF82739A11 +03F315F1823FAEF8035C959772168AE3D076B2ADA6393967F99D2BCABC035EE1 +2C3A818905FC4550ED17C4E23ECECBF263CA94BDAC1F08ED5A55907684AEA132 +831ECDCC65447C6780C63ABD0638D65E8F8451D29E75986F64748EA4389CAE37 +43EADBB813B2B10D7F473B73F854DF9E8ABCA0C228866B103778E93B2DB97D0F +4745ECFFAA2A4DAE1E6E450F0C1759CEA0C6AB130F5A7D83D98E11E33D9CCA97 +8A14FE3C27CA66D88CC2A0CD24EBDA27397A651136BE5249868B7C19037D9365 +B427A82A6645256BA75F8177830C93A74EEE2312AFD7176DAB8127C261A87484 +13630BE7DD0B5E6E64360B125208E338739FF644B22D9C450C131989D555DAA5 +77E1A731784D6C152D10C126F58221013995DD3447DE42D191C4707424C0DBC7 +1025EFE0C1A8A6C6668A5A29581C83267C5B4AA4C2F479A550D8943B48CCC2CA +D9A8B9ED9EB2A51CB98617B4805AE307281499BC1CE8886B3887FABDB3FDEACB +540DDE55DA4E96C5680DD39AD133E3B2D776426F18B928845F5CE730DBED4FB7 +19EED88D08CBA2F4C83D803E2932CEDC088B4CA22666386FA68DF24FCDFFF618 +BC73F11738853D9A74AB3E0836619A95A6A1C1C729FFD283E131F5CABD7D09C1 +4C7D3A9461BEE7401398E375BF3D17522FB2294901FAC0883F913F236EC15F1F +7469BDA601034F133C13B5DD5833A2C6AC843C23FFE1EAF5FFADFCEF28CDDCDE +DCDDF28129DDC97BF78CFFFEEB30D12BA698E99FF46EEE5B856A8C34958F32AB +6B2103238ED8C10B9F1C018336070D7FDA0126445E5EE67BD955E68F8C976C83 +E6530EDB363C773B0FD18750B673DE5F89DBB5D0FC1E14904F5DAFA496715CC0 +8516F4C28957AD8862B5D254A2BE2B8E12A9FC8999FD76B791984EFB47D45FD8 +7B1BE08895DC49F9D7A0852A069210FF89929E936386131913A9CDC1804B7C86 +F152B58466F6CD963C0F09276706748EBD1824939431F07FB1C74C7F3041458F +0935D26849FE9FBF6614048628CFC4B451B28AD4B7972CAA524654088EF9A91B +B239721520B829F3CCFC25710E56627EA22C38EBA475BD3F54E3973C79493350 +D5276A7455F0F029D03F24292AC6E8CCA1CF7E1AE9A7A61A9FAE9B368234E7D0 +B17F6E128F7E4A2C6F31F2B17D01681B72364D0BD9BC1693247F051B5F153798 +642408C2632667AFC0B25A5FD17EE325ABAB5A4225B01E8474D726DA3FE69029 +08CEBB920DEAD5807651CFA8C9B7D79DDC4E45B5B392DE482CE0682419FE9B98 +FD50C2A05C47AFC9CC1E8243BD31675AFEB0ABE5E0FF27CBEAB353976A90CBBA +62C64399F8FDDCF5015B95E92CCD8ED04DE51B9E922B06AE48EED5A4D9D5925C +C611B6D7814536914C28B03F6455C5438AEB7BADF718F63BAFE0242DD4467355 +03765B500DCA599DC776FDB53A7FFFAD40774F769E2F5D64CA6D7313A70E1FE8 +2E19573353CB59B9E646C5C1E5DEECB81216DC4CAF210F85F90FD2333B47C360 +D94D6B45DA01234024A37779121FE3ECAD42D00C335974454A53290CD2214733 +72DB9B951D37E3004B18F41BC01C88B4AA90BC4FC66444271C754039D92936DB +E6FCCE7CE68008AA02FA2A83DE7447ED +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT12 +%!PS-AdobeFont-1.1: CMTT12 1.0 +%%CreationDate: 1991 Aug 20 16:45:46 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-1 -234 524 695}readonly def +/UniqueID 5000833 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E +C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E +3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B +426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D +D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161 +E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32 +6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5 +A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE +0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC +85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF +F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4 +C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC +12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D +048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8 +0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725 +741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB +9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE +306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371 +CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666 +1353CC1FC512D59DFF847ACCD3D03959C548F21BF622A6C3224EE815E753BC87 +E0364A12A1728D0762C266515BFD30F7711A9F1F796BC4BCF679918151320681 +D3202FD01EE5901981E7EC55F58812978105DB71D10B0A5A39BB69F703B11160 +71E527862BBC00736D616BF295EA94ECB611548BE15829EEBD0909514403608D +4C7C220B61E9F004D1CE7760F7D96A75029244E5505A2579171BFC831AA0C18A +5D09BC573A582787ABBCF9C680DC4A5F41F6D7208A4DE3DD4E566675781B86D4 +7631FB52070FBD290AE6DE90DDCBECF4A71A9C04A88F4DCF468E3256B3E240D9 +86688B5DE5C0EC734599CC85478045BF32033E14B99C532D3192440F4D23BA99 +AABC774E8978CC4CC681102FECA5969C404FD82F9A0E9F772ABA32D9A309E140 +C33E65CD55DA1973802702A9D38953F95734097864C045690EB370F9600CF504 +1D8C256C3F54789A39130AF465468B2EC43496CD305352AB5C50B19B6D025C0A +8D85950ED3DEDCE064098AB2EFBE0E5470B1553AAA691B108AC28B169609B244 +B9A4596E9DDDBB5017847AE359E7CFAE76951CDB353ABB5EAC83026FDD24BFA2 +40899B9A904389B04CA8EDD18D19574585FC843F2D8459EDF6A296FFA0047F3A +7D08570D877CCC8AF22684DC4CC7BA11F5E2296FCE728087D5394F3D2E4CD157 +399E3BE34CC8A97E4D9B7AE8A54747C945C23C3A2E3C07307815EA77E3DB8F02 +FDB2E31E2EFC2F4FB10A6CCD14D6C5121AD7DE0BC201BDAB24998DF9797D7F37 +8C00252AA9783E54023EED68AF1D0A7C3DE94C0D51DFD79F6D1CECCC35FCB852 +C7F523D4CAD562FB00A60835EA49753F176913C4B79708A071CF88E1757215F9 +4844D934D0F0DE9E79A4E68328C9AA900C8351B7A51B5504C651FE9C6832AF05 +72A710A16C7693C544D585311E6F81BEC2C33BC8BD3FAE4E82B0DDFCFB1CE847 +B4BF65F30AB480B329774BF6BF1246E2D1F402FA72F4298B90887DDE0AD09DB5 +4CAAC75BBD2437B7B50A9F42206421D0AB69DF3DEBA9F0134BD699BB223EA67B +B65E5BFD4575E7DDEF810B768D568387AD94DE8A6673134B824C78AE36D0922B +E21F10BA2267BF39AF9D7C06E64A467D96A0F8C4B6733BC9D801FC391D426B46 +7FB6CEE46D3C2DD27770565774258E5F2C5773D82F491039976FC29DB4E86213 +0A4D9491E5EEFE362AAF37F6C0FC0BD6C285CADA011201809FCE904F0C558834 +FF6EDB62354EB38795A4FBA53A670912FF984A2A702B9898D4723FB993AD10D5 +E8A3CC543EDEC2D6CFC69E6DB0321010D6A7FC357B9B6292A9F6D5BCA1FC5B62 +E769CB1BD40E7711A0298D1A425DA896B11A68DB14795FFD9FCBAE6C35DD3FEC +6F914A57C65068473594716B2CE171E7B59270B129233571D0A5D6D477907286 +70057B799C2BC43735E2807CF34BD920C25B736BAE8034A6B8CC5E39EB4B7989 +84626CC8667E5912BCFE3C9FD65DA80D6CBAAFA6795E8B9AB9895EFBA2C46704 +64FFB18CA92B5215AFAB89876C41E34E5C1F14118714F73E516210C21D44D038 +F860AE5512AB012BA7931B8411359B63E6013B3599EA007B774D6B6D85E872DA +979837435B5EC037B756A26BC1DACF1050AA7884F3D694CC4D829688D599C994 +3352EF1436AACE4E456C6C8E1DCF29BC276D6B2130EFA0F2318B7904F3391387 +EA5650743E6CB1768F4A9ADEB48378D1B86513FD8BF92864812921D262407DEA +276AA0A2ED0C36C7678DD04C5975A8D9CA8A315FA127DB1DE6AEBDF79375543D +654BE2B92AA5BBC5461CEA72A689751C884E7139AEEFF88BC589DFC285CAA007 +FDE71A258B28A382967D314721B5D29A2D31444C9EC9A3481247E6C878D3BC6E +43FBDE0B6E18B7540600F0060455FDB2294C88A0C67D635103151F8FB91696DE +D372C14C3742AEFDA7DB3A5719CAFC7BA3BAE587B239F2D55F33C70347558225 +1C2A16490B20E00C8976A27FDD326D2151C6FF53CC045D2EC1DFC9E01C169FB6 +AD694DB6D8CE3489977471CBB867AACDE52F245BCDEE90C3A23F07BE0E7E2094 +7937446BC05A1705D86BB65AEAEE557E4B922C542EFB6172DB59FB9B49785C7E +9DFE1F47B9FE21B6C0D6436EC7E8B1A057B8AF5128E5B888589EC1307734D22D +C2B20BCBCC3DE667F067B44E9D0C9BB639B054CE402EC991B5B12F1A8E2E6BA2 +E50CF2D44A7C4C10EC7DC93C472B75ECEE779FCAD56FB7F293314ABEC48CCF74 +B04B2AF9078D0E57E936440867CE1BC1FA8FBD944E3EA779BD89977B7C0FCE9B +6B2E4F4895D91654FBB5788FBCA84985E90E92E5366CC32DC874B51ED2281CF2 +2E6FE6BE3B206CC18FE73233F014451BCD5D8C2F4873DB3EF2A393F62D5CB2F0 +B98CB8D8E19DCC6F885C4E8F7BE5F96BC34661DC6FFCB457F3642866D393DC45 +FE66B8AB77F95B02ED26A9D550860BFA4AF0881BBD5D0F01F035FB466CDB8C9D +B6406B2679EFEC268CA1AD8D4CDEE2D47D6EB641D13AB7F3151722588DE3E2C4 +3EDFC0BE4B9A65D0CBFA0F369C9900CC105216A86DB6FC9338910DBFBC4F3447 +531A32AD80C30F83BE7183E30D9C49D00CCABF3C615A94917851D3145F7FE82B +B62C60EDD92FEC634274679B1BBCD979F502CCE2D76A7A273D071BFF9A6EE664 +D88B56896613CEE8617A239391A3140C55D8EE40DB0EF84E1E6F378CA62073CE +D0C24F98F07BC80875B0D07E8D449344826CB71659AF33E196C925256B11A737 +066C9A1FF0BEF8C90B068024B012A25E605F1CAB88856FCCBA52F23ECEB9091C +368D3616332718EA80A122C74089B911DA55F7AB3E4BCE1C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX12 +%!PS-AdobeFont-1.1: CMBX12 1.0 +%%CreationDate: 1991 Aug 20 16:34:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-53 -251 1139 750}readonly def +/UniqueID 5000769 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 +B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 +AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 +7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF +20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 +B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D +68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 +D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E +26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D +F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 +77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 +BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E +C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 +30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 +148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C +E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D +E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 +337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 +0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 +472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E +A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 +30F2AD56EA22D77BA06F2F0A466830FEF19E343311E3EBB8A5CC4A176B791D9E +F82BD32F64C39C814379E8BCAC05C1FC19B2D49B4016C4E4625FBDF0F842CC15 +7A3B3FACF36C12CF87558FD4207335BA87796761C06535B3659123487E2B573E +8130BBB39A337725D90C83C4F96EA64AC8CA7588BA6958C08919B5B14EE68AC2 +4192D6EEB13E174589C35CBE00A961DBBDCF4597DF2F4821DB73BC21517F293B +8290D6FCE00579F118219F9E831B9BBDDF930053685B80BA9D9CC81E44A9F73E +8B4F751EDF6480A9BB5C0ED669DA82BCBE1DDBA44F26EA4482FDBC0A4ACCD749 +88E48FB46C1186FA557711B0264667A2D278B5C98E0F95951A95F541AD3979D2 +D4A6839DE475D9EB07E9C6B572B6C8655D8E0F15B2F130C72573F8522DF30857 +DD8FE25841B87C42BC7ACCBF96BC56C4A93F0F0E2AB990B9A16DC59544A359C0 +1053EB807CEDD81FAE05ECEB21A6CD0D68EC99FC69EA97B121FA189CB72AB522 +2BC463D5274A5260E208A66E6D5AE14ECCA328E3F888A6883368107249E8BFE9 +511D504A50488CAE2988BD34C694CA490EA0A0B71B565995BA19AFDC9C332C9C +4C0437B5AEFE5043AFA8796B64BB80572E9A658F47A46ADBA0A53C3F5263E80F +C0FD55067247A8BBD7A24D7FE0681F82678186957467B3AE7DD69A1B7071BA30 +A019C8A623D870511231C9BD91DF0444C126A3CFB3772E0973BF41FEF1DD96D4 +837AC41F35F1435F7DF971FF2571AFE0D8FFDE1DF2F1B25C7B366F94665DAB2C +719BDF3EECB6CEFE02F8CE16B2AB553A755FA500E15216313B0BF06385C25528 +7CFB7D9EC4A83016FB8075941261F7A0FBA01E6AAA5DEF1EDCA0037756E4FF0D +909A6321D1F0EA32A70AEA089647DF89121A373148F9982A926AFA4880AFD2B5 +C5E946BCF0CBC661DF6DE06A60E0680CBC9A6A856F119E57C9DE7B708B57C111 +4348040C914BCC3C88A986FBE2C7C77B7F2C1B039CD2518CC7218F0E68B52565 +47ED4BB997539E35A01E310306095E89A34E36629F57C6021AAD085BF5FD2BD2 +7CB4B9433139FCA7FEF5CE54BCE312B1ABCCADD14B8849B8FBC5EF6408A2743B +CCD12BDCAA46859992DF6570EAE001A7C547EB8B56E7ECD9129DC0FDA0FE8D1C +F25DF1565627FE33B9E8267F22B716A7441177964983F013093444BC07250E53 +6FDF5AE45FA0F43A48A5EB0A5AB25EAEC58D49B9049A26C94A024FBA51BD54BB +E5107C9BF98543D2E659FCAC3F3C77BE77FE7BF9A9E4920A890F05B68B136257 +31C2A63231DA1A2F37EAFB8E429EABBCDF443D9740054D17E6C4C2A1DEB40E22 +612BC6773C291F60394CE50709FBAAA2BB433008D096B820157E5A90BE248C32 +DA05C2D63F8F7B8F855B2FC5A6780D10238E43246ACEF6494EB2D782351C322B +422547CCF149F6438711B03001EEC2E2AFF843731E7C8B9A11248529485F861B +5B438F4CAEC933B798141DDF608BF7BACA7D47D81D9A686F31AE208851867ED1 +E46981D3F4DBDEF5ACB0AA591DE4731F85F3B35BDEC868F54264E28B4C703CE4 +68F96D02CD9C66BA640F60CA9EDB4B3E853F9EB5ED8A9CFCFC95D904E9FF1E03 +20168B675206C15D6D99633BC15420271E1D0A16CA0DF900A2439C5275656893 +713B773D96EFD7B2A723E09A1D4CFD3151B93FD04919B0A9A5E56E1A7DB05819 +C972B98D565961710D9F0CF85A2753EEF25100D22ABACC983A9A6C11D0793C77 +7C51208DE9DC478BD0F191FAE21DEEF2B47085604D2C239460EF1940F5B6B240 +AD022B4BAB72D407671AC5D4A163A2B00CCB2F297F52A7DF633A79996BBB15D1 +F480CA95A00861A0F5CCB947824B77D8EC1BA9261B99EB2C3A8D6EB39CDE6F5D +98AC095E31508B7260ACCC3F771C9424B0FEEB69B020B1C72B406C682E4E9B5A +AE70BE2D455B0DDB83BA412AEB478CFF3749E9E4CA79202B282969FA7435FFA9 +CC67C4C42123DB9B65991F5D858AB4A67B53ED2D83CD4EB3E5BBFC14D402DF36 +8F85B77A90E5543608D6B0B5D496BC9EF2D5011A6EF57C962604438BB6B7C5A7 +AAA59BAAC719D12A7CEF3ECC264DCECB29E45DC291FCFB83E6BEC0AF11801421 +9CD3744C24067F824C77FFBDE35435E16ADD36308270066FF494886A13DC05B0 +F325E8A2C55B9A36963732519286FE3A00E5D59C05551CC7E38C97594C94E83C +0A3F5D807E01BFB4BF37135BABF865225AFEB23E47D75834BDC22642678AD6FF +3BC38BB3F33F0AE2EA9BE668B7D8A705EACF48059D2108255922C34661E867DA +3747A99C7C765C0F88D0D6C7AF84750D04FA29AD801B34DCB798F181C7C34980 +478A8103A64394BEEFE49D2EA73E037EB2B09880E24E603FF6188DF37C43A306 +9006B33C0711C336BDD587326A3BB5C5D29D09FD9724D4073D595EF5AABFC06E +DCB16F8E9FE165E2A603231EF503C8BC3F2535722FF1FDBB1BFA160225FB865D +AA73E5B51DE27D61F26BF735C9BE6AE8EAED4356B9556FF31006719CCF5AA58A +91A2CF7E71369E335DBBA261C186A92C3C219A4B899DB1078B06B96EA4D0C444 +48B2B64E8F939007E6ABA7821B925E9A3A5A04BE33B36C546205A4B86BAFD4DA +86B635E6BBE0E09782D6BA5173906F8759FEB28DD5E00043BB62EAE4DB96DFFC +3FA20BC81686D43AC82FC4A1E418B24E8308D40D87489108D2641E6948269B10 +BCF9619D4069A027B7E09EC4D05F202E64C3C1327588168A4011DE869D1E6780 +DA5C10FB83B424BC6CDE0652FE542BD081ABC30C8D294A04D410D997FFBA02A0 +E150BC3CC8413E381B256E926D2956607D05EB1282791736233DFDE7BFEB98AF +18FA9EC712326F30A4BD0BCF3BE3D73C751FFACBE58431B44A53E5922EDE7A1B +03F8E2C3F71A70DA5579A6C79FE22DD3CBD9FDD0F26E75C7912C3912B1B19DF7 +93FEA62A929736E723E7C525CB01FEF37A5008B665B9932FA2D26E1047872090 +535A8962B423C0D3A7C6AF41503572C06DFC0637C600B12D8B23F93C9777DEBF +6FCBFFE8430A709E93626D5A7394102963669F3AD718A505E9B9A556FEA6962C +CE41D69F5E017AFE2A41EA8974D6778AFFAD895CAD7C292FDBCDDE4504E152FA +D0E315AA4E31EEBF9B6572138061DB77175F1DC0AFDA5837372A5EA42426D697 +84C9F986A34D05A68341C308E7875D4D1806ACB149C00AB86463AEF0934E9441 +606A0650DBCC8D794E33C368DA42F1BD337193DB17D279F06C1A375483847744 +E6C2782018F687F634777134A8E68859AE3A61888BC146BE26E9EAC8083E9D7F +EC591DF2847C1CE6B466DB5A05ABF048235E0B1D7906C2960FAFCBF704358BD4 +F4856525DAB9C58FA5348F6E85580ED76F440715E25D872F6C0363612DEAF591 +6A8BC8AC44378B6549659B73B0BAD49A1BF4FA04DAF375F7311B9788946ED020 +8B246212B3668DABC759166459885F04C3A59D68B80EDA109BDB2D1523B18D94 +B5E2044ADD046A1CDE38673997823E79CA7414F126372549CE9F9CD47B5DBDCA +DD897524B18033AF0CB04E21BAF952E7D9BA5DE9F3DE041D444C08F845AABDB4 +2D4A42DA4F29874DD9B2ECE6A7812AD01ACCC5C245DEEAF47B9D33F3E8B05C68 +A51E21B1F2A5746601CC69200F7C1CBDEF08036B0D392AC93A9D339A8B311728 +B2E37C7A7F098252E892ED698AA3E679AAC7FB4F8BD6A052B30B1AC12BB9AC96 +B6AA796C79C28155E70ABB018ECE7170D018B1AEBFB3E3E1F915C5176153E882 +784AF399AF15439A3E52F7751A33B0C840C32B711A736E4614807E7E386857E1 +87D227E2A3BBED127DB2CF6A84A3496BE2C2D2A40357FBF5B72028D708726260 +ECD5418264C0009ECC80472B0E28218C13EE65B533774D601A86108242A14F8A +2B3B011F032EC9618DBAE721497035A60DE12887C57FBEA197B36AD94E03C948 +CC229AB85C200D785496F4B38C36EA8560F83783C6633F15D4668FC4362D7FBA +A61A4E14C5B60DABF087C389AAFA41053B98736DF675D1CE2D1369B56EA8EE8F +12044122E522FE9A489D6251E26E38B28D445E5827A20CF3C5AEC07A4BF40302 +3A1D9106EA76088D30EB921EB90D9B3FBBA18ED6FF6923B903A32BDAC5128387 +258220918EE014C4A2379C060205BC7D45722B6A21D820E6CFE458C5303F0796 +36EC7309F711990C1BC0EA0C0FC511B8561BFA74CD0F5AC9BA153EDAD2531581 +F3325C59FD9C73CAB132882EE147D830292220837AEC13C864B44CB79BC943B9 +A58BCE34CAB70922B38959001F9A1851427A174576FE9BA944D2BD56ADE4B0FA +80E311C321DF356A88A9A401F3F6F1957F73A10726F8473AFA9C28C81A7CF382 +9FC8336812DE5ED38D2366BC58301669F5CFA7AE99F7912E06A4343383B5F4E9 +706F519C6D65FCBB66F5A1BD0C36D523A42F9E28B7C3B4BFBA9918A66C12CABC +786EC9BC73F82F141FBD837E8F9D9E1C4E083E6E00E57786E13128747183F5DA +A049C73396DB206D2CB2DFD593C37FCFC563F3479CAFDF1F57B012DB596793A8 +73BC08607620077991F13B7BD66DD573A86F605CBE308EDB0E23A9175CF03359 +0E3946E1FADEACC1141D71A0C9F9E0C093EABE2F55C3422C259B2646D6A20300 +03A9380B54C533346C14AA7564414983409DD9E76E1D6BA04A18CDE5E4DF79BD +03BF5EB4ACF4B60081F8ECBD049A402E4935B7390F0C33EAD610CC84F155B1AB +69D9DF881AAAF17997029B34E0E9453B952C43F6B6744D9ED373F79CFC2D5250 +C3CE02C5E490600966AA9CD8D6787D6F0493D9A16DE94C34DEEEE2E634D5AAF2 +3E8080B9F347D0D40D112906A3DF0B4223A4348F58736462CEEB76EE1D678C28 +ADAF46AE0ED2D4F3D5599398E6E3DF792475FCFA4A751E398D4DB71CAFB39C59 +0A38C2952483D00454EFBADB2725CC71DB513FC1C067840C6CCBE1A5416E6836 +09557C0435084E9F5E0A316185251A7948E67706140496F730B3CEB37A0B96A4 +39B9D62E2A1BC32516D26DC3C45D00E7553B8F8F3ACB2F03B60381B60F2DAA2A +3D512897CB5A4FD0A59C45E32AD6503A99D5A75CFA90D4E786ED9102170530A7 +781F75429AE774418F78E0D6629AE9E6148D99F71115AEDAFC6C9FCC590B956C +562F4A1337344A5E0D7ACA076BAA008E389A9D281A3C9738F49394F3E23A6BA8 +BC62D7B0566D2C24A367E7D3C1AEBEF5014D8050BF1950865071E2E1403CB972 +3BE007D6F7CA30F04E57834AA19E1E967C6E770881CE27EA48B171E651E75DA7 +628B68BCA031EA13AA31E08ADFC33CAC7D1A270599B5F5CC00702D510F4DADF9 +F89D57F1366BC7D85313FA73C89228C75E50AC2397986C33646F61F2548302D8 +6337F84E957D01013431576CD9C6C5D2F082CD971CFF2EFD7872F35FAB90BD14 +EE4CC0B1A749EEBF09A34F860CA3C86B6B70BE35F2618EBC832A68016C9CD282 +CE74117531E8FAD950C8C7E1504D83E90A5A95E50994959620A6AA5A489F3854 +117323F2DDEB30B54C0390A13BC026575296E6FE94FB4508C2776FCF7B77DB22 +BB753A440A3670463EE87DD0427A4B3D2E2FAC95B99DB90DA35A6C2B585E6F40 +41E2094A07B40B29F16A9662C7FD3575A8E9BB5DD5D2C23BCC45FD8B75F5BC28 +9BE8457BA91D06174D9F7C116816851F86A50500DBAA7383019C9C5A52DD7714 +9AAD3B92385F884BC057977EAE8DE2329888B245330B9FDE301CA4F09C06465F +677A7DE41712E376694BC097360D2F635CED53145AF9569605B959092FD976F1 +6B0147DD63F13EC750B93DD35E5C6A9DB94D4375EBA0C642B73879566D7A6537 +AFD9A31635724B8FB58AB20762432F428EA1E4DEC18461DE313663CDC969426C +35EDCA2658924918E721E9AFE04EEA210AA7D0FB3A2DCB38F224BEE6F0639373 +D4D69396E90C076E0B812171CE37B1BE7BE7818E1A910AF8609AF49EB2650673 +6C25FB6E3E86868E833FAFDACD2A97765E395D6F1E252CA311A16A1509B3E84A +ABF4AA15DA4158D971E0D4DF3FAB415B03092A98F7C07B5FBC45499644BEFADD +2EAA13C18685F4E4EF3D3D43C92AB9B42D2870C339ABC6CBA3C27ABA38C5D135 +DEF3B16CA1E75A3B9573D7067DD390CAB3F9DA7C2E67833325DC57D39B1DCD44 +8DFF73C0E89281077F529884A9A256B78DF1F8E0871A5EC1FFE2A5DE7BFCB468 +9D6C5E48620EA68CA19C5D18901C3032ABC42B8B3A301F8DD314512CF904F479 +EDFF66D5904D0068E43933C6C46FDD05B2B984496E8E53BC6A96AD60C6CC21DC +BE657CB2AE8839DEE243E7946A368665FC6EB84262B41815C1908B78C0589C8D +D34759D4EA392F2B94AC20259BE1298500550B6C74547FDA814DC31722DEF159 +650C13BDCA71E908182BAD4FF83443668EDAD752CE0C4E244300F1A897D9DF45 +8DB4FB909C1036B8FA7AA98626732F69F024E0D96E7F40B19AA55E339C15DA8E +D7053F237207D0639C2877254C59814E884E08E667EA3FA9EACE080454761E73 +F70ACBE3700699F6802088D73E73C485EAE9E64B58BC4D6A8E881DBA71E00191 +F3AA92053588E73C9084746CE792C0AF8CE34B24825AC8976AC3BD12460520BD +EDCF4F2A8DB299E94992967FCF870128AA9A2E7747A42299CBED9D3E8817A6DF +4CB839643999FB2B8C3CDA64C1B25CB64CAD99361B8EDDFC68FC83EDC5CA82EE +0BDF48E4D33BC139CC43DCD04B2B2642ACACCB99E7A44724D6C804BBCC0CB2B5 +381AE4D122E243BC29D3A8F1681D5EB106A4DA37F650BB761CA7FC7BF5B47B62 +F2C8E2347F0ADEE421B64B5ADB4BE6D80F1C582BCD18B92A79C2ED805EF83D9D +C9ED83166117B9552A061433BA10F87C39AE2ACC945C1BC8BF24762F9F2C7D83 +7A367489D75E0F6AC4F59F8C867E36F488FDE8DE50660156F26FD013BA3C90A5 +76EC94F0FE765090E78C13CE984BCB2C5245F44E9149400DC6AAAAB3E320680D +1C934A07436D45E591722FF154BD143ED9F074CC8D244530D1BCDBF77A708DF5 +A42907A3EBBF807D03AEC70B39F47B55F91870C5978E21658520E8BD3A2CF6D9 +030A32493F390BE775B4B6B6122F774286BC20D7C6A5C9EAA6B197B7F7C0E9F8 +A4A4BFDFE26BADE0C342DCBC9FCDADB64B565A50FBC8583D3A6E55993CB3DAF7 +3AAB1E30B48DC16472BFE4D7960659526B3CBDB3EB4DE3EAA8D84438B38CBC70 +2898F3B043E97C5BA639E38C5DE3C94946AF6CA31BE291A4333A6C1B7AE6924E +123FEC09B9624040126C54157B4A255CBD2314518E3A40709449851B79B82CCB +A2E6811922CF7EC6F6A9C1D2EC2F23E8F1E2F85B6F886139459554FF0609E2DD +419BAAAAB1EDB9BBBDB1A6387F40260C6D3A72EC49D9706585996317BCD845F3 +09F0CD17B82EBD7EFE1150C45437689A276C5F31B537A70FE42C1F35B4879280 +A06841FDFFD2056300331E5BDC2DCF285883247A5ED6376FEBF879CC3A8228BE +2AB9ED6EB579CB54FDE0116A68889D37B0DE18F3EFC83B0ECE49CC63BFE00BBF +7E1088318F4D429CCC6212B6D6C43EB151D35FB8D4898DDF7C07465D45237817 +FB7185D719298F94D9E547ACD938095CB2BDB9247EBD57DD2E86D04744E760AE +25BFC68141C64C7D23C5A9BF99791B71B9A2FDF3C0884F4AFE3CED51DDF04FB3 +EC9D8DCB4944A7791E40BF0FEBE2E1D80BA85569F4239EC337C013592FFEA905 +10E429746B2106108FDBF48C407C82D66D5D87886520F1538A9CFCCD7083F6A6 +D1F86588814E0707291AD77BBFC281C7B65A0CF008864BEDA5F11718C43ED544 +C767142BE54C640E2040BEC5D7367E8FF22FA9D839BC807001BF73528ECB7FA3 +3CB2207F127206FED87645803D9BAC5E8ECA8E8BC452586F8EC22168DEE55BF8 +E7CB5AEC4085B3E25C46138E3E8A98552752ABD6B4F8544E80067B5970565681 +A0F39BBEF5E3DFD3B79C052C6436586A9683FDA79DEC1491ED109517E3881FCD +FED3B5010F685C24DBE34E0CB63372E16907D843A794F445D5579517A64CB508 +B01B2C2DE005E05B4D01E46357F5A405B441DD492DBF7A959933932518F26DDC +62AC159B40C6B8E840146676138308A8D67683278C19FAFC7ABD1B9EF85DD21B +40AE84A583BBF306AE3AC4BDE1985CF1E8EB58F037F2BED81C8CAEAE51FBD20F +9251DDF379A40883A1C82CB8FAE99A3E18C471CF9A7C4BF127ED1B417842057F +7647123712ADF67936F19A01FC648D69E2817422FE5890D13ACA1B7A22CE84AC +FAD664800CF12AABFD3A891075C60B8602091298B42A5DE5C8BAFBCAD0B04762 +2F7D22A591AD4FDCE0B3B70C10AEA586511955989F55FC26961E6D1E2CA8CBD0 +278CECD6F7719B835F12E8AE27C7EA54BD83F367F5C20614FEAAB3BCF416B273 +4EA6F437442CCE904A40144981A55CA8EF59453CA378EB5161CFC1994A742BB7 +5E1CA866BA9EB123C3D4BBB76713A9A6B93611A233CAAA321E426D98E481C29F +589E51833C6278451EBF621B7F981B96164BCBE69C47B2D5D7EC4141E62F61FA +EF6669278B430A9AEEA910F8FEFD454178D63C9BEC694A79CFC94E413947986E +E03A7A290A4FA3515539F8C14A5DEABE164D28BF5500AE9A6DD84AC56F87B024 +CF83FC1299F514A6A879E5B7FB45CD52F6390F888B5CBA28BA3A14CED46C1062 +8BC5E05BD9A1117720211165EDA80F48267E8D1E5775E09772041B5F052DE32C +8FFBEB70CD8DBF01E9CBA4DAFD2AF4E44EF05E8DF2EDFC1B920FB83BCB147526 +1CEBF3B3D75AF9BDCDFF081CED6541D9DC32246E24945D724DC1F6F8C1113FCE +29999903098B4F84DEC6C4F882DCC5BE44F6A9A077A84CCD2A6A2E0D290A571A +16A61CEBF9D64CCA429D7D6604B3EE3FBE01A3C1BE841F4AFAF63DBC7E26A67B +8C8C6549D6FEB8E45CF8904341B7C279B9B8E4E683B7076BF925998A123A1440 +2A8071214BC24699040624EEC902F55BA0BE2B2C99962A765AFC51D29575351E +8BD44A480E95112DA49F8BD405967FC8C12352F766498A847560582CEF4DE75D +BA4F8C1F4B42D1BC32D6CDAC8B596DC7C5A8BDAF7B74412EF2DAC7721A9F6352 +83AA212C6522B0F4F25D51FE4B2FB032ECA88CAC112C115FC19C5765C1115CB0 +9262BA4C55F760AAF4A11F12EAA146470A4DB6C79CE56E80098738A6D9F892E6 +0A91B30F1801A86D537B7B5D061029E62F08E93EEBC0B56BC1BBAEDBD78F0614 +FD4825A43276D223BD493CF558FDC6207B36A39648E68E6B17251767892A542C +B39DEC514D12CB8CF895DDABB829256AA29C5AF02B96348959944D6C97BE5BAA +5F3620B514A6BD5A310476D9D3BF80F361CD531A7972FE0CAFF59FEA45D517DC +0E46FDE22860CE37F8A9C13EBA2C093A40DD4F86EE760AA43A500194EA5AAA9D +D0549F2D3071CEBAD7EB9D2112CC910586DC022342D0B8858AAFEAAD82C6DC36 +F2D6F78A8F1B0C360239C586ED511BB5301C074B27F94651521976CCE9E1CA83 +3903752BC8195047DFA846259325A9629E5630B3200D16A259789E184BC91FC0 +F2ACBB673A7F0420EB58A04DD4EDD1E8070E442A59C383D9E7689820319242E1 +1B92456B6AC03C89B8EFF42E7E7870D48F1A733F95CE3E604F65630EE016AE88 +3D39859EE3B869B53D8DBE0A9093EF247D53A7B7EC5D35334681F357056EDCC4 +62BE002A49367F2CA351942363493891220B00713C38D31CD9A974D2F08F3F22 +410D4BD87B79E20D6AC667832EA25E410DC594EA91B0BFF912BF6268DC7F4625 +2337E04D29D90F1A8EB0AD7FD00B9C3D242A73072DAF4844A53EE698C367AC52 +B8274F9B95A48FC52988F9D5F3243507C1BF3863385FEDA1BC97CEDA7B9B6521 +D9BCF64CA2B88CC697601F1B5898DF5D07BF064012207B5EF5C349637FF0618F +B97FE94990E42CA0D75CE9670E8C467B49ED55A329B95A14D79012E46746EE42 +AE646F3B99CD57E7996737D502D1064BEBF1F1AA1DD726162E32EF1B48AF03C1 +17D6C86B4D1457ADA3759EDDBA0E78EEF0324976CF8D31D0DC68C4DC69DF5888 +BA6C6E7B37218596825F013ADA779158999F8C8FEF9B828C3074E412CDBC4F55 +8B3B18ECBCBAA9DCC0A2FF8ABC86D2D84EC138986A37D4767FC1DA395A775220 +8D27042583CD3A6885A07E2D8CD14603A53B1A21B27C331AE63957A559A66D69 +CA94CD5BCAB722ED44DA9412FAF5F6F112CD6F5D8B50FE80025787D9E324822E +541D485498271A1F082F0D35F3D9492839298DE8B922CCDCD2D3ED1574A0DA23 +0FCA83FB62BA4617639929A43234876B7E50D658AE61B0FD15F6F4B789252BA6 +47CA59784F1C6E225AE4CBAB87C871CD72BF1CB830A39956FEC9FFA4908028A3 +2069B43A35672917070C98F4AD43A62DE79301A035205237C1E0E9F8CBB9BC7A +F57013EBF816EF9DDCC0C9DA49508195925FBEC09A4A7964672E7524BB503DDF +FC734B8BA116B1BE25BAF5290A8819DD2AB2FA94BFA0D9463B2FCEFE2F9CC2C3 +362B2A738070B39ECD6AB0FD299E6B64BFE25054904BBCE3015D70532836A6B0 +ECDE5F04DF46AE1399A2F4B506EA029C0F0BCBF366C1928DE388A8DEC79C4E21 +31845F4A75F706C0BD4BB929A2600BAFA08BCD6734A73C59DA145A66797A2404 +7626CCD5E8B287B1F6D5629E3B3BFF320F91403BCA38FC73BBA882D94B30284F +694A2DF5BC3C7762842DA0D072C4EAA4EA2EAF4F29B4EB59E473789552FD9A29 +637029E849322884CDB3F50EE84F33BDA5CF8D940445A6E8605AAD0A46C5406A +04C4FDD7133997266921F3EE980161841337090D127DF03F34AF77B9BF60010A +129C9760B71E55F8A1C09C55A01A154969EA3A7641C8F73EC48003DA57758E6C +F81FA2808A49BC10AC66818EC2321AA8CB39A49E44F891BA9A06153FD4649095 +ECA8ACD3E692977B94105AFE083FC090E610E3DC57AEB7C5944FDCA7756BFB7D +34877C72D38ED5015000220D81686D3287AB89BBA64B007DC25CB4A6D6A75862 +28D3FEA9E6B95D54B2ED1AB3568111C84CBBEFD45CC0DE8E86A2CAC84AC066F9 +B619BEB0BC881BF51D2E3E63B9AC95010FEE166D815B3D4A9832A7891E56C2F7 +34F459081D07B2FF7DD537A724B9B29D37725D94CDF7FB8C0CF83409F29D7DC1 +7345E7B5A66C2D41FB242E2F37E7FB1433298EBF6283914C908AC2BA6F124608 +7D67B247A38EAEE3FA5C80AB78E9E234F0FDFF082F3CF3CEFD4A638022F3675A +BDEBF1FB7E1182CBDDB02BE26F81935268E9F7FB5B445ECC31DDAC5D7615D3F0 +F7A67FDA2DC741C2B0BEA47086C9F3384FB5B6B5DB4407DF6C0B639025EB7DE7 +9EB85A13AF12B8D1F85932FFC87C70052CA0E2D0A916333232F0C570A048E318 +C2E59CD67E649E451EDB62DD4D5763B22581D43DF50DA72D6374B96F06D4B5FB +A2BF3EF609F8C9A74E37E65C38E398B1768AD59F5DC67C91E9C4DF618C201F71 +E1302D238E99D3C511EE52F9FAE664F984AF22CEF9F3ADF13D36FB1218C6D384 +296E7AFDFC0BB6ACFA0AF5B3572328192E82797681A10DE036501EF80BA166CB +244D312D042F32F12D8A849AEEBC1E4B6026851E1C2B9F4081BCCF5445B6660B +8E66A47214D3E39C68DE0FA26B6D5656716967A9A3646B6E2916647985199AC3 +9727B581E8B1B313D36F5A237030965A4129743DAEE19509A557118212026937 +45646A77F6E2CD6E2EEE0832F056DE348FE0888AD47ED0FF91E6B7E43958B440 +8217FF563C28AF954F2669EF3CC630C4F4BF782F3EBE4BE174A2D14C5EB57CC9 +9776628BB77A213D36D96696E6BA5FEAB8455F36BDAE26EA2B5F341A309A8166 +095A826D8E788CB44B7688F4CD2D86278D130B9250CA25F25B60BC1E5E6A4449 +F718DC6F4316EC61E863C2D69810ECC143B134929B21BFD5CD718EA28658661F +1823E20BB65653CE5678B8A44E66A6D75DE1EA612D492F52CB1DB757CD8504C0 +04899BC85E53BE683FF8BE68EB1458CB45E71339BE3C569C01675E13627E8E1B +498D6EFB5EABDCAAB2B6A4298FBBE7C4F33887B1B17E9243E386B4F51257C584 +6800EB53B7D324A6B06E3ADFCFA315C1DD509730DA5CB68CD4DAFCFF51F401DB +9E8CE303B3707D635AAC3BB630F8CDF2AE8F9868DBA9CEEF483F2BF9FD2582A2 +4902F90A1C5B92E30F507E2B34E760D2E2D6C500B2CA6FC6F8A1F70C69641295 +0C4AE3E39F585AC52727C62480C7F8538C7E5793809D4DAA2375ADC2B523C5FD +6C0A20CAF26FC974CBFAA310F7094B4EA5DB158C17C1D116DE562D42CCA8AE85 +553F65D6EE166EB08A30F1D86AAA7FCD86F37FE98B1FD86D42DCBA22D5AE708E +D3D2D120C0A30820752AAB84018FC498F67A493019E0BB9301B04B403A370B02 +4D1061B0451D3B5A6E4C8AE111E07A6C5802255F0C716FC7BEA55EDBEE20AEBA +6FD7250847E18AAAF41E0B7008C01C7721A7AD6F739AE1A79D1105D3DFEC7711 +A5CF05D7BFC28AA27FFD1EDFEFB706CAF476463B3776424B1F7F8E0A9C9E71AF +A7C08C94636D74BFFE5CEA7AAF219DBE41DFFC3188983B9263A8AE1ED2B07F99 +5482A6C02577535863D2E9632EA2729ADBD4D5B6F26E300EB093E20CC341AEF4 +134AB90BEB7E6EE96BE51B2B369F57F26E05260626504CC5D124137EC8EFFE68 +4EB3BDD8E5612B35B4AB36D1C5D351D4EB505289DB20F3CF5DE9ADA6E248CA0F +ED03ED6DAE1F87D72F2A12E709DDE5DD5BE463C6D37293E7757D310887AEF858 +C77B640E0AED544F8AAABC3DB13A53E1733935BDAE204F4D5DA0B78A5E1F095D +0142F8A7B733E2810B35078BAD71CB81C38FA4AA55FD5ADFB75DCB8028074C0B +9908387ACED66DB0E276A3DF185C9767DE2EF1416C06A18473F364EA8EA95379 +504522446EFA99061121BB82284A19A86A25BF9EE137EFBC6860A3A0E742793D +3354890CE8E27287D376E0741FD56F9E1D267FB1BF4529EA7C741C07CBA7CB10 +E579C1FF0C6C79998E878C1D77005D3CAD64BB44D2A569B6263C047FA4C5E6FD +A8F5DE9C7789813726B4B4CDFF1BB42E3D170639C25DCB87A51394B4BF980C18 +CBE6FBE545B60E648C9CC123C76CF0747DF0608DB71A896203D46746511FE16E +6A9992318489A53521D0C39E13B161CE7CF1CDC0B4F496298C87CB2236BE32BA +37D7A7BBF573AD8A58111F53990F8D894AF5DF8D3DA1CBAE0D5FCC1D3DE945A2 +D1B66BF07B6D07CADB63646479E790B667C063FDAB3FAEBBAE91352357AAA4EA +71AF012052ECBE5012A889A8E87CFFDFE91B144948EA0692F389B40880F52072 +6EBBD95DD71439F0B20E6539AB27F19FDDC2EE9C2FBF2F343E4B3BBB55326878 +EF4551B426DCEDFA238AD4D9F217EF242C801466F7CC109F44189719ABE37170 +DC219172DC422EB3ACD828F381437D1E521B2CC5C208C4E1806671912B198DC4 +2B6BD090C443420EDB377A04E95AE613DBF39608CB0EB1FCD9FFC310AC33B46A +101C44AFBB5AD7E393CDBF13C02894EB1999E25390EF0834FFD74395ADC9DE47 +55C2962AE9B64B227777A76CE7223E56F70AAB580474EC1480A80F4488F1EDD4 +E88E48F963563D00E650C8FAD93F0B322467863982DA3FC340C0665EAB586975 +70604B7D14C85A3F9D4A9E35CC1B064C93B63B52E73F18EAAA30CEA0F5BA0588 +934BB8402DA346C060C2CD5D1F9CF86F531C519BE17CAAAC99E70122E5D7FD42 +9D18B92C82894112786DB1C19EF81411EF852B9F6C2957705A18 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTI10 +%!PS-AdobeFont-1.1: CMTI10 1.00B +%%CreationDate: 1992 Feb 19 19:56:16 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMTI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-163 -250 1146 969}readonly def +/UniqueID 5000828 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F +21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 +06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF +55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 +B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 +0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 +1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 +7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A +7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 +356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B +19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 +C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F +244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B +AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 +5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC +D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D +993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363 +2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B +E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3 +309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513 +F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7 +E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66 +AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9 +17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D2E3 +05965AA02B8A67AEB04D915DADC1B84A531A1D672AAA06E9F720BA88419A3183 +63D1F9A3BEF8CB2E23CD1F9C003BD7849F093D3B4C83C153A5A790C1F9E37948 +5799C02F004C61A6FFDEAA1F9AE884DDD40DEB1539CFE3C3BE03C7C33CB54D56 +2C2A0F467049797B56D407AA43EE6B8C3F978A7D945A80BF711C12D6BFFA3DED +35FA8B22E68BBE4FEC59E4C56D3C57E14995A8ADFA51CC6C3A84D3D775CAFA87 +A1A0F45C0283139FB485B8FB0BEF5232494C0CB564F966DFE0D0566031392619 +3FE8F0BB6747BDA591DFB26132947872D3B209FFD838A17EB1D5047FF880E7CA +28BA81889AB0DEC353C3435B95D95C2F085D4137A62F570CDEB16C44DBB361AE +83DE118ADA0DA5161C826F65DC8323D7D8C9CC860FDA7ED795EAA20B1CC97FA8 +AF8EA786924702E9D7923D38C729D4CF51F3FA68583E9CEFE4C7E2C46F7E343A +78D6B6DFF1CE99695B525932A36FCAE65CBF8CA33F19B5FCC65501732575ADB7 +75275A8B076C41B49F6B9DD98CCEE4248EA55F396FF5FD3F2C535A291657FFAF +9F8670C5806792CAB5FA50A235A9D2E5357D8D8A0E05A75A790249CF09AD48B6 +05FA7E9A8751BF2EF4D2AA0222D20E405D2471F19DE6D58FAEF624A437902362 +5D81178CD62290E4B519BB1C5003AD7D7FE7A42A48F04D640C744AD138C159C5 +0F88C3FB95A0E541777EA35C392F09182FD45847263DCE59588AC86D95FBB79D +BCDABA5CE37C217572D6E450C20DC0E84E25EDE104ED8B8E840530134214F0BF +BBB2EFE76225C286D3FF468E55477CB868CA563C7D28C94733A75DB8947B510A +3F4699FCE22CBFF8C01FC6286CB0F64415BD65CCE6A80B84CA751BCEBF315BCB +A3675338D53AAC627C2DAB1F230D056CCF017CFC0DD87A3A47CFC0C126D408B7 +4DD99F2DF57DB3330681F0F9E215366B38CF48284DECEA833DAAC926EBE5A535 +86F0EFA4474CB1AC1DEE03AEA22D5AE1484355BCD2E6B5A715F1BE34FFDC7E25 +5011233239AEE2C49A61AEE7B63068F3FCCE4D8C498E120BA9B13DF0A067285E +49887B2653BE88CF91C6239FEC6192E9DB3A0EF33095056CB4D28588028D61EF +16D171D79CC6A01C4C8983D992C72179D08666AA484F8842335B3F348373B5D3 +4284A7168B38B18DBED86BB8E87569A61337D79303F889DE30E1E3EB8A9F59E7 +A5FBE8AD4FA13CAE431276AA758B55DAFB8087E3B4B5BDA6F4E491E32010F7DA +1622BAA5796897149FD7A0078B9736039D38E61B3F45DFB9A59791207157B4E1 +A9B7A6ED061DD169A3DBE6AEBB360102A01A4A9A939D5B1B4D88354435384C01 +D90646D9FA33F52A6F51AE7BC3C20FD35400B7EB9E0DEF902DCD5C683A812E0C +317BCE806452BAF0B635924B29155908F9E398DC842325E7A805CFBBECC780E8 +858C4E651DB3F21D7C2A7B0A136320959B4CE6648C443AD58D8940E892160AE4 +EAC7A410773E0447C1AD979935B5FCBD2AD2A4700E60F5C7B2DC3B6F952307A2 +284241E23617650AC6F7D4699032B7AE2A33429A74EEB3147CA630BBCF023F57 +0760E9EAE801D873707FABFB28F845993C74AFC7DDDA61616273420E40D441F0 +87E195147C084FD24F5ABC665BC8404927DE8C7FC1AD3905336D6B5C270AF89B +E30DC11A608A6CCE6BCBE3965B99462E74F4104B025134F94F9CAF6355CF48EE +36A0E6E93B01C8A47B6E25801AC20A70055EA99BE72E82781EE7762CECAB33F4 +5D2D49CF6A3762310C0926D9EB6D02EFCAE6AE0F19C90F9EADEE2147665594A1 +61D1F4BFB9F9F026638A63392DF68995369084E8878D0DDECFB9014051A63949 +10A7E2EF46B2E13A6156C7EBC5953AF095AC1DD4D0046E4C5BD5AD4AB5551DFD +FC79F4B1CB623F49131D78C0EBFABA072734D63AD9060418DA63E769B555D7C5 +503DE5766C2E8E58F18972DA3A971E059D617B6C87BE20C0D7F35C6DB48A87B9 +479E2DC34D28F52E7581E1500ACE5D297FAD917497329D2C861DE6CCDE674AC6 +709F1560B9A3815A137C94B3656A9530C94A8E93F785D1F3D3C6D6B572249C54 +8096B03616551E37F33EEEBB6E8F51487798BB139BF82DFD0B920F30FF3CEA03 +9337A75AE908C570BC7DD9BA08C06A580DC513383EE610E916988B2CE823374F +24394F119F5CE5B07E764FCBF963378288A5250EDDC7D91DF02F7D5B46F45217 +F7B52D7F80F82E0C909BDA40B366D02E85D35F2C3165B5D13BFDA6C394093EB9 +22AC1D7417C2D8AF50B8EF4C4331FC7C1966BE7F1F9F50847A52CCA3607BE7BF +6508E15283A54B1532BFC2F35597A006CE5427FF7C114B80BD33B58FE42C811D +6706A12A615F4B7BC1CB26E1D686ECB4FF2A962F76D5E946EA5C934650BF0816 +988D09E7B49917BC4B33F68982A6D6A0C91A86CF1ADF26EC250FA56FB73813B1 +79475C929EE854F49CB11190E94A9173E7C78A65ECAD54643127F8D64F84FAEA +A6E31E14C146A3A3C6DC59D0C29C4C7916E6D2B60B17650AA80EEE170ACE051B +7AD90FED27278C197B82954E63C566AB102CBDF0FA581117782F3A6ADF241ADE +7826CFEEF17961FF5C4EE4BD84C45047A300648F4EC19FDA8212292DBC54B027 +901EDC9AAB0D6F5274A1A20CAF591A4B2598409676C9DD3522515458F226C946 +7C05F4D88915BD2C149A025027281C92C6EBA700B57EAE12702BFA3D03F5D079 +A58999697C16E18F99865FF93ABDA0EA4D01AD8C14BFE3944704AB250D9E7D58 +B4E2811DA6C1C1AD351EA15A23AC406F2395F1FD1301F23AEA6CE23A8EC34BB6 +032AB1C4B6F3E748FE852BE0C044E07852579E6D0A84B72CDD725ADA718AC14C +DE1FF077D87D37D7282166BE35BE1D6AC4D0C40A0C11852F3F9001BC78E2BC78 +35D0B4CBE6965C515002320BDA2721D4968C1835406680A72A0B02B6D83329BD +DB81D24FFA508AA58C8A509C18D9854CB4645A7C05460297B32A2FF9AD1D2F57 +4828A85DDD879B7596564425611A023FEBA4859F1080B4F4AACF4565A152697A +FFE891139F18DB6691D2C9CC4B10DF957FCCED4CDE00DB326382676C38F25E8E +759955441A70DE8F722915822357183302742447D892C56CDD3E74D007BCB5B2 +27B25D0507053F4EDB0BC66289C83A47B4633FCAB7E626AD5AAD6D24BB252F52 +176F6F32826442D59D2195B2A7F5DD540599229A6CC6371D4D94422E31A64047 +029DA906D2BDB4B267851488C22347845B0BB402C8A97E7E5E133D8917236A1C +30806D41551582E7C728AC0FB480C255EC810266DE7B46E52A6423579CBFC06E +C8E2FF9FF00EF9FCC51FBB22DE4428E280CE1FD5241CCBF81070486A0DB9536F +B6BF451F7C706EE44D37A0D78793D24CE9049BF285C1DC9AEB61BEED88C4CDF5 +D3BFFED602B26D4B3788E171579289859313C918CBF70EF8F655CD4FB73C514A +A34BCFB555B6BD835FA0B80997608E9F938257050F1673AE03E6B4C6F96045AA +A8FE116B8A9C0295D34802D22528B80EDCA6AC2C5CFCD57E12F12ECA8C0BDD0E +EF7F3B6F4EC14C3A9C68ADB70B6454CDDDCD3181DDA00BB3A9DDE3C64F162D0A +9250AAB836AF3F3C71589E1DE6B542E9D82B1266E23046AF5A57A7FD5A3EBA92 +B137FA2161E97A54B5C472BD23CF56F3936DAF5C468AB88A6B587226829516C7 +71BCD7CF1D3DD40CEC1A6F7895DC95C9C9BF1A571878036428A9A42E9B363EE8 +64FE7D1473CF558A246F0921C3257F0EDC4EC2C1FE4E342011AA9CFA4472204C +CA1DF74F5BF01A3D0F518FBD76194711589E02F3F5290599E0F066F617B8F0DF +6C9196A71F091B8D7A8FA8A72E907EFD9821E1A023FA4583B1BFE762A07CB409 +FE74B4CE4A642AE77B5FFAE5FD7D65A1C03EF6FB31264EE51BCA46A8927907F3 +AD83EC5B5337F738F44E204BB64FE063A8C7738F217BA319F23FDC8A65610014 +D99A05449EC21CECBEB27602F66708B1207810BB167AD4D4FA4AF54767A35B1F +B17454FD0D82F04386A595397E2246ED339259A4B70854BAF3F41500CD1FA69F +799BEB5C6FF670D4E0623B2385D545E2F46436FDFEE4F37DE68308BC86551E26 +0DAA88D7A8E54B4E5FAA94B88E322EC04542C3F8C9AD3DB9954CC32DDA1A7002 +8793B4532A5D6D31DA33470BB6D812891A52EAF966AA1629461C25930BFC4C8B +6B03832F4AEEA5D0B27EDA93F980E91B5493B9618F143A4CBD26B4CD8F0C3D16 +5B2F27AE628D9AAFD99F4A1677557D68AA42A8832A7D44092AF20DC586290685 +48BC89B6DC4734F8E13F714A54742DFDDC2C85EC30E53E39206594DB51BDCD17 +5A68BD85E351CF51E86163748D3AD70555FF1D5F7B0E556E54744181F7C48BA1 +C2C56129EBAADE51F7764AB181B6FBA1828107F61E8047A5CE36B58F5D6C2C17 +61990478D0D44C23B1BE2BE6CCE369DDD14AC25BBAFEB3E33D5D50285E947EED +3A23B5A8698CF9F42F75A514D7B3B0EE048B2F2A4084912CA66A14D1977AC21F +7B2A332F41CB33D48E09F8F0AE912170F6019D655DE6827277CC043E001E37E0 +88C7898F6ED2FDB215E4D4EF79787DB95777151B1951A2CAE8A9528D7E2BD15E +37F3BD6449856E5150075B92F10F9615F66FDDE2111A4B7BB546DAB5536B9437 +2290D2405C5152996CB1D4B217FB16D6628A0FAA3DAE60943C98F4890D18E18D +3E2740F42CE9151E388827AAFDAD7CE9F12C54A932837464336B5575F0E2FA55 +15DE03FD73C73060E4AB72F7BB3B2FC23D1691FD104F0330193915910A3FA534 +B4EBE0B42222AF6F1F8E2657D3CE8AB1E8CEB40686CD6953C233E52C3D1534E9 +A7B5EC22ED0CE565CF1B414FF50B6E3D6CFC342DE97F723B674E63CF67D8AE5D +C786A0F6BDE30587A1CCB7BB049B73559AD44CC0BF2CB3934ADF7401E5A8F327 +9D701A04B88CF62B6B57FEEB8A36ADC12DCF241AA96C019969BD00317C36D0CA +2642B811E7611680AC3B4DC34B1E98426D7F85043A042B74D8711F587EF31CFE +3AC4F7FD9CC6CCCBA3522AE22809395B0B3BB1B4AB9CC1A5D1EB982E9F8C3F97 +2BF975141C39AC80AB0904EAC1BE6A2C7F97A9AF3B32ED276373AE4D9FED44FF +4F1A91ACD26F957F9E50E1D4940263BEA65E273B926AA3E7DF828A43F54D9A49 +7AA151A70ED55B8B5717527339C2A468608C1A5D665D0541F53B5386BF6CDE9C +E07FE982E83975D173824F2CE58A357A1EF179483CACF1C2E95563C2E60345CC +21556A26D49F40B84A4B4F00EBE05FE36CB920F65FDACB38AE6EA7734BF35029 +9865BF659669E1C829199BD232A128E494B1D6FBEE9D92681BD7C0E430C6F958 +2054B0587017126033B6696ACF3ECF85A90B3894AF9FC37D65A6A8853DBBB25B +1E016D3BC01EFC65C13E487DA69A7399F57D02FA6FC3EE6FFA7EEB7186D1AB77 +493EB4A36D0FD86592DCB7F28617E4EAD22AB1601138628F521962C978CE0D8A +384573776F31625C13F19D35CC396DFC57DC36173DEB95F8A86C3870DB90C065 +70481E6DC8F7980CD49C6A2CFDA7EC07CA76FF8DA24E7B8A6364F2B734E1E645 +1829B8652B838E7C55FF037DD51C13B2A6867000D3E8C6652DAA087170804F66 +3F9E437FDEBA6989464E9C03528EFA9D82D5C67B80A06892B23F6DBC7FB79988 +FE00769CB542ECCDC42FA28F34EBDE4C37152A6C6419033854C7351FFD8DFC69 +361909D977C3E8CE7E1AFD26FE2B8A7FE5F43058233310A63B0E11F28C516A4C +7B82A552BB84C0294DE50E6969628C96A9506B1EA590E02D199A6174C0CDDC50 +B7E822C9312F3534030FD1838B843375F0B30DBD4AFBAA0D0E3A49495971AF2C +E98061E422984F585528EDC16DAA7ED05B4353424554AD2D6345D6767AC69675 +2151A3A2B5C28561DBFEE99CE0C957E8BF045D790BA25949E2B9CE6F63BE452D +7786129389D5314E1A0D6EFE59139FA6583DFAD8C130C8BC8C5D4B9D77E778CF +175CFCA392C7D49331486E34C4A934969F61D00E32750170C7B70CF72983E39B +79C07A23D10937CCCEC01186C028E704BBE47ADD015EFEC387B6419F6E1CEAC5 +56E182CC28172FD62A1CD65CF7CB008C637CEE19FD4EFFC27E6BE2ABCC70C5B1 +C98E9E4975B21FFF757DBEF194AA8266B0D62FFADC903D525766B90D94F3ACD3 +A7FC9C32DE3F22F4501B952AFA043A333C7D4F5EEFC8B8733EC891B1A8737D06 +867EB30136155DD70E9843E5E240BE2A27B2A5FE49E681CE09FDF95580D6EAE3 +005674C7DDB1F9CCD71599383B145B25B0E2F8D97A257CEC5CB815B87E866C4E +C5742D0259F6ABE53CEB7F99038C604C3F975E43D8549C79C26BE9D90F3B7E8C +D4BDF13BDA5FC962ABDD444491851D4C4DFAB33BA07ACFE9BD0FFBAAFE053379 +E2524F7C96C62E2F32A9FF6ACCE2377ED03DEA4C75F4872E9BB2971DCE61F2D6 +5E40EB4A94B72A99D95D10B1EA7380DE2D290F06E6A63F50F1C942AB62371FBA +E81128E0B72132BC5967C2AC5863B8E849A57A4A9D21635DA15150B3A5F68E6E +A64170777942B04EB0B06033F5C37CA43F00D2C513D6572370E16B8E381652B1 +D4F4270B1ABA10CD543C1CA4F8B86E4A8A41B75733223D9F7632019B86EF650A +FC8290993AF5B2AB365A600B766738BEBF9E9653FF5FAA418D73D84C60056D98 +06D94BF718A217725D0EB7E2983DF02FE8D17FB2D3F269A0322839D5B0252A07 +EB950B64535EAD9AD6DF3A623855983B92803E98A5B15AD12BC1A74A439B9C1D +9374691E7A77F4967AFA1B84034673A932B0DC5C8401347F5126E2C91F775310 +84CC81A0DCE7F2F5B6C94FB0154BB6FF0B4AF290AC3E47AD945E5D5F2E1E094F +1FA125199DE39E768166F35BEAFD4F013E46E91BD2F3A43B1313AAE36DACF9B7 +3D930CD6196960C6CCF6AC5898F4A74F00C641BB654C72C8F6F4019487892314 +5D7BEA38D16CB807395999F745E89C2C0AF226CB5B4A37A01228457DC91FF7BA +768300416FA88230832FC3E5DF27756173824D8C4B438974947DCDB17FE523A6 +E26822458D3861C4E3D94679FC72A3E54C11E4FCA8FAE335DEA7D9F09F3EB320 +1DC5E1B69CDAEDF6D01999C3B48F27428FE44CD0EBD9BD2F21D7FFB99EECA344 +83DDCA627C2B934935DB8C6EA42C40194F84581FEDD784F1305B49917EE2D745 +CD43006AAB08048202F11D0461B6B6917E54717A8FCC254A7FCB525167519DBC +B3A261DA71CA704743F06FBD3BFCFF50FDD815E1C31D3A07BEA05D8FEAA4371F +968D5593D20D351DEF6829F95A89B836D6F67F43C5A969A5495F8142B3527AA3 +A8B0B484A7082985804922DC8704C9863C30A798854725D31716115801E440FF +37E1C000A901CCA9316C327F4C5CD651E24629A9D6DB57FF174619AB1BFADE6B +03F189C1121F12731A0BFEB2706E2E49802AECEB2C869E8F3916808FEB82893E +D9102140B95BDECE891EBFDC0877CB05D5D693595BE1744486199A80D2F299F0 +1532B5B51D44A81F6630285B775CAEC4219484AB679C387736AB657D2FAB5FF4 +C1F38955043568B0923EED7871A79EC0EBE857CEBFEFCDC56BB88B8DF95A5955 +B1B5C6C3758EBD3961A9AA8EB80F727587D52F520D9C2F3B16D53D04373C40FF +8B43EF30AA6905E7954B30F8CAC576C961A97D017E38333401D46497F464C58A +6F6DAEA14796130F4207C9A2C915FD60987A4FADCF15B1CE028E19D84741A4CF +E92F14975B22E90408636EC2C6BEADBBE2F700D9C52DAB85A8305314D0E9EF86 +7FE155A21200C540749897BBB8446DB0FD9EA6ABCF1EE1384401EDFBC56780F7 +BA296BC9949FD913A6C1465F372FBE8A94ECEEB080DE004F68CA85D8E14E2FA3 +C2C9F25A7AA3107560737D89D424415F4519CD32C08EE537ED3C1D868FD9E959 +B7EFAC23F9A3391952F82B64900A8E823A2C151A507F13B5B8494D969668D5AD +18E616740BF5FB4FCB456948366D740DB5977F1486ECEEC222BA34275678D000 +E72627EDBA485B582B3D0B8D39A84066E9EC9AEA514C99A610647E8EBD15002A +2A06B2B774369115542E5819FF5CDC8EFBB376FB8848BABC2A9FE36FE58664CE +ACC537460646EF5BE3E27AEA3EF1B448F483352A74BB076C6C70F26919DC748A +8F8C8F00D17DA9BA1A2C6B2EF2991820AFE725820547C323DC5D881A09951743 +CF93DBF69B34DB77E5179489647F10AE99BE1A397C3E9F867E32A41D5E648D37 +D2A23BB0BCEE888C27357C184545AEFFEEDFD381F02CDF27365C2F6081A9F130 +6C093331619FCD8DAA5785ED724C65C750F68AA4F0DB9482ED5A9C7AFCF992DC +C7E835150F6FB2FA3B7ECF0EF9E2DC3FC4B662A39BB4E6647C970729D6C4AB8F +CE91E89425D5C3A7CFF43E0DE81B4010EBFD6F4B59E6974D8ED78EFAF93403EF +2546021413AECAEC33F23DD20C120A352490BCB429609877704A5283163164B8 +36B1F3C515F58DB0539340A6063F88E2846698593D5518413D76184212A1DF22 +DD13C9CD8251056A988A0054F340A7A69CA5B946BA01456FD45BED04A44158EB +89AC05C4E21BB4CD9D1721250A8254B62795B4F723DD561ACD73A975B84D387B +FAE002B7854DE9284C72FB4E32BD70F440083A990FCF0B35A7DFC987DF094D8E +31700EACE3BAE2DF2AF61E8675D5A55062426268A169B24CE0975982C76D36A8 +BBE2559A8A48F3B022DA0E3339FEB3357B83EDDEA914391DF8F6E80EAACF0742 +B31348E509D17A4C02582E854D3838AAC88AA0C0906C8505FCEAF8703970A3B4 +38B0579D7AF0E0283FCBEE979A3E08AD484F0C1171E41F58AD8BA063FE85D248 +60EA777285CBAC139159875E82165494DC8A35E3A67A75D8B9C8CCDE9805325E +39EA26FFF3BC9BC99BF2D2D70A5F00F410E50D759E1CA678492DE1072966BDE3 +6469C249BC34CD048FA81F3241D36839491656C95313E1BBA617EDEEC4ED9703 +DA7A345DE172C2760FBF66559ED167BCB696C93FF085D81987602B193E87495D +2A2A19DC6FE716765861A94108BC65FB38DB6EB504E7E351B9347B68886382DC +B872968991EAE65F67B8FC8DFF6E3E97E94AF46EC98C89D877EBE2A9793CA763 +EB155FF47A65BEA3D5D23177D8CDEED3523026E9B5132F6342F1257225F087D3 +BF2C1177C097AD32E23138CDDE0F651AFB6F10FD173A3B73042669C116081E80 +2A4868ECBE26189E358956839C56678FCBAE2D1705A1E5928A5967596A4CB329 +AA02488FB3E2EE9E52C67FE4FC7D40F2030E7072F160176BBBD66DF7B2AFB1D7 +2A5AF0F3564FAF8049C4B7397D1DAD17A1DC4E2099D3D8BA176FC81EF20A0A63 +C3116BFDC1F0700720DC16B6C58259582B39D00B478ECE899951E5B8084E876A +ABB69C19482D66277AF4323FAB7039AA9CD3B17539E75FD7EC8AB8474E9BD4EA +423607C7FAA068A9339ED9ED7B1C67EEE03AF3F3137CFEE8FFE71FFF275D900E +AC82CEFF1A42FF1955309E22E006B69967452AB7F01A2C3ECC090AA180CCAAED +EF42CAD566B25CEF7BB035E4C6F50264BDE376609389EBEB3EAE245555F49F1B +C67BE891C11FE7A4FAB4D9C62974F4E0655A72B36A86AFF1634B6F5E5B569BA2 +3C3C5D9E133A4229C4597D4B767C3F55009E29FEF97A003D249E1DF465C73A41 +6BC404CE79CDE12E861E8455E88A5C8A92E325192599261D99C319B561B54931 +518EC86D45D7BB6F19CC3C66069E597E1CC055C4A3BBDAB813CE6813C6D8BA2B +DE6327582814F278D91B2BA37035F322B921A22EDF9D80DF29C0F6DD0D81C17D +7DA05D5668C25720338B7DD5D71683926279031B8F1C3A6585726F45B173E405 +2ACF6F97355BC9856D0597990EA6A35DB3B1EFB83CF1009882AF73CC04FA44A3 +5F4B1D9C72BE9F2441B09AF179D154D7964DD71B0F9469525D314330DD1C8BDF +0B2312D6ABF64290EC0B24BCD55294BF719A222D945ACEA9E427A42F32F5F5FE +D839F6378F381BC8194497A8A3B4F042EE1B960DAAB4148B5F1DEAD2049D1726 +F28D34283E1F2A2CE61C3DA6E3D1B25F21A2617377C4C5B3B275678A158BBBF2 +430A7079B4FC2873DCA92DD3B3DD4903C71E544302E76AA5B855A51FFC17C7DB +D11D7906E024E2F193A10ECD6E74CEC5B1ED8A6A494F4E79E2269AC55A26EA8F +02A6901D66FCD03C338FC6614B892D011DC089C36236AB07DC5104B8266790AB +D464B1775BDEDFB991A9015DA95A6BCE1B3E61B71BDB2C08D3C58108929F1E6A +5BCFA64BBF4E1EE1DC873492B686DA569873C0EB51DF8CFA743FCBBA2CCDE3D1 +F4DFB080A258BB14081593ADA424B77DFBA348CE11E723F091AC89C0D25F6794 +5D0DD2D1A78CAF3AA1DD692EE3D76C6750B1104A0D6512FF293E23CB895D3285 +F9B4CFAE9F4B44129E45102104786D8EFCE9F00B15AF914D27CA7332886D68E7 +F32963740C6ED8D1934EDA3A3BC3D16FD3121E76040657E4C917AE56512E46B1 +B3E57AD1A83FE1EF1A640E9D1F532A30515CD527153C9A597C5257E6B1DA8018 +63A379B4B36F7C0352E184A30A581CDBEDF325D9D92CF9FE2EAF2B4056ADCC46 +817C75FAF27861C519C2EECA730EB6215EEAEAFF9E13E9636E356B24C1FF32E2 +BDDDD4CAD0D46769E3A4CBF16C9AF3D2C739723CAB2427464A9B5FFCF7BC5318 +8365C834564EA5B11F1A22CA59575D07C25C30567983467499F27352D34457F0 +DCD55D488CC9E5AB42DB1AF140B73EA7FE27CD44D8E610D9012FB57EA1438F85 +5DA3A2ED40810B23A6A8F814CEEB2320CE5E1A9A1BB117EC249E409A06BE8BC5 +A37EA89E74B99FBD237917F62EF1CDFFC3893CB8D1BB527779417FEB0351C69A +06231B2BA6939CC21BD9414B9C1C1295D6BA5745B2F6FFA498C20964AA73DA93 +F2BB60822D88A77C029C81CBC8118F1369AD883B16CEE5E59E892A027681D02A +D67B1389B10A2A0ABF8F22B6F8382F06F3CB90CFDA91AC45FFFD7AD3A192DCE6 +14201D03D9C5F6331137715B6B10D0547434E4E129EFD3ED59C5B2134356F265 +E2DFA95CB62EFC4B820966A9A172E5B2A134D359D777B68186704FAF7DAF575A +D201A26C6194B9FA36D41DC291A62613B5522552D2CFFA81D276009A8612212E +293FCC8A5C85EEDA263009C4FB50ACD7B65555A9174AE37B1DC8264A15225426 +C43F8A6ED11198FF1BE2ACB099D3A03197696AE50238E20ABB729E5E52571C77 +191CF13CCC1401723756C86B0A420A0B906EA5D42A64A44E519F55E03AFC0661 +751F9A3C792E69FC2C33129196534A91F1F939092789965E9477CD9BB709ED4F +FBE00A1C99CB740844686E0376C00AD3EAEEE30EB00722D4868842EE0892E746 +9659A2100DE024835D5CEE113295339BDDF6DEB2A98A0AD1BFD3B14F635D08C7 +AD869861D8996F6D62C1E427117BD63D64EA42D7BA83524496C4987056CFADC9 +63125C0FE0140ED103B5D6B0E1AB36A0B1D4CBF91F4169A7D9AFD33DE1797C81 +9CE9D164F82D8FE0A418F6C507BC58553625BAE9DBE8BC9C32EBCE696D794999 +0CF08A51E382D9D61BA9A775E65AAF66530FE0EC1AC59169B9BCB4639D7BA735 +3F2EC8F2717E3FE8D5DE9FF5455B965D020917253C4D2547F2181C4D654D212F +3FC05C4228A594B7210983D1CFD275B1FC3ED531ABF2ED9C2D7DEA0A76803647 +F39332BEF79D7E9BC27B37DB13A0FB28589853079C450D5CA4DF04DB318C960D +99AC8299307D088A4FE960B7A9825996C0DAE4D079B7432BE00BE3F7464A964C +5C3C3CAA002B275224F74A1D321C88B5B5A1C75E4BF4D6CFA08A5757A9170235 +D6FC628111A061B5BE909D9DFA94D2C9AAF14485C29C8E989E4AC62BFACA48C6 +1446A1815C66E27532A8C4739EA1B66CF6C2B1958EA6A4D5050437EC38EF0611 +8029D9239ED52DD578381676619C50EA37B607B850897BD128127EEB1E3D309A +C639B8EE8EE137E869CF4A7ABD7A95C91A92843F10695BF222727E1468E3C441 +8EA028EF7DB486CF36F39B3FF362C8B1EC317F3308593E9161D3344B0EA7FCC0 +D2F9DE79BF85D1FD4E99C08C739F6912D31D564D6CDD5259CD1C4F8A6CD880FA +61B17D640C53D0FDA25243FE24145E591D5AE252F5FFA4D915F7D5A276F24734 +C1871202059121ED1925B364F6CB73BC01ED20F15C2DE3B8A57BEC3573521A9B +983424E10A5912C522B1C3910959709D1CA6059BF5D62CD29F839E8990DB94A0 +D2F2F933E6222C7B7D2AD2CFD06A7BE46A88D0AF8DAACDE46F75D49A34C4F272 +AD93FB97BE8954A737C1703F7A0F838F1D0B3D5087ED11B65E48EC276C768325 +A3BE5EF5D572A248068D9E620412F1B3AE3B7946A213712E31318D888CB42AFB +1747CE163ED1CA8A3EFE18FD59ADD9911A8D8106104514123440BBBA69E5CEF5 +08B630C56C95328280FD4B222DF082439F36A30FA69D24901879298B98925255 +7CAB87C2A1B917A1382E2A7B4253A9FA3A72A7AD0236C9D75910DB3902C6D3C5 +2D81416C240740255CA5703A3EB0DBF6BBACFCA8A76EE8C5F5F00D71234556F1 +5EA0C1FE6AF7D11E5AE2430405A0031F82BC23C50F689D5521205D6188FE143F +C120F809C26E1628F32CC760D4DA7A4781DC7EF8508ECF12E141F2D9AC668E8C +6E6A41E979AE5CC8488B365F78C9CB2C9B0B213AB9A57EDF56E618B189129E95 +DDC72CB8A9DA836D83A01C5909BFCEBDF3C696E6DE0D1144E0BA3DA3FA20006D +C5C73BFE3DEEC1FA9504F2F09B34C269635F6FB343FFFD7BA1562539EFCFB33B +7448C2A38564FFE17B1D9CA7048901FFD113163499A42776AE0A30947AC65D75 +4735A13414A2A533A0F1575CCB273C435E78398D74A731E940B750CD4F90FC9E +E03A7A20C25141BDC34A5D729647939D4D90D583CBAD8DDD432446BF28D60362 +958F81E6A99F0CB2DBAE71D6C17BEF29ECD901AC4344F3BA01E631467A9938D0 +A1188EBA5C2F40FD98466EBFEAF7D4BD6E7FCB269B0992FFC5BE3AA4F1FF7AE1 +6A5CC0D5D4E1DD0EC2F1B9B879785048BF5791B06F628482A44159BE758D62E6 +E52911494CF6F0E8D0EB25ED90D0641990FB7A39230B47580A34D29F2A900476 +A515DF6568B93E22C53C98F7C36DE18EA8B4D501C16190A7C4C91EB7BF7BCB60 +74FC91B34B8A6536FABA7E00E0955F5E7A8D382123C7A01D480C8CA3D67B2D74 +10BD37407A3CB7F5304D5B79433FCAF67A27453A29467C231B4C96F0A5244EF8 +66939723C6B14C7B8B12EABAA8B71920FD550DC8B709333C8680EB548DB9734C +B3759DB19C0AD15F16D3558570A1B2CC7EE67800C4AF664886EFD5198862559D +7294CA27D656B76DABB77A757DAA94E81AC235978E29AF +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSL10 +%!PS-AdobeFont-1.1: CMSL10 1.0 +%%CreationDate: 1991 Aug 20 16:40:20 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSL10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -9.46 def +/isFixedPitch false def +end readonly def +/FontName /CMSL10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-62 -250 1123 750}readonly def +/UniqueID 5000798 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 +08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C +30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF +C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A +BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 +5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D +43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 +374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 +DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 +B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 +63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B +89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A +5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 +C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 +7B6DF50EE617C00966B9A2828882804DB7477F4A8CF5345B7F3568B4F72BCE73 +2E2AA5BC4B4C70E21F3AD9AFC3B8605A00D67EF9ED1F4D13DDAA920D45B43CE0 +0941BF17CF05D2B777C11D4D844AB20C0693D1DDF00B27D9E1AA2D98A4A06CC6 +D342AD8F644F4787B66CA7D861E7CE13FCDA85C1B0C9F94009768EA89838EBA2 +7818F40A3ADDFA3289CF11C1ABC8DA5AC3A477CC71580E3842433B383B7A6662 +2C86BD7E6DBF9E45B9BB6086E0E014F50DC64B401C33C8AEDE6B2756F5341ADF +C9E390C565A64326A18ABBBCF16E34D9F65897A334D9E64077D4A27867103DB0 +08C77CD64D79A5E5F9EEFB3DB4D3793C20E6B2E76AC6AB2DEB5A90CFA93E334C +257BD0068AF79C07C4866CEC5F430DF8F884A653CD1B88157B7DDE592F218979 +EE3E839363A39DA10E5282390355ACAAD951D63C2FDF3D99BC77E54AF18A30EA +A47AF562D077BD7E5248D279A933CD80A3CD51CE38A991341BD96B71C0E5C264 +3B7DDA225411DD0E3B744E8FC0BCDC2B6D7C48722F0CE06873C62CEDB6FEF393 +7D03841FC158E2A243B635A38C018B3092B574FD93F9A62CFCEDACBF09EF0251 +A1CC77E97C9613A9CD124F9AF7B9B7A0301C78055EC9E31BC58AC86913751A58 +4A7D0798331B71F2991FF4CD88F3941095E8AB1558645733709A14D61580FE67 +B31AFB106CCFB57F1325CF351786962AB73D6F7CBB948AADA5D3829E465247CC +087D25AD54023D15C5E1E229BB7BB422085A2C1EB62F9EB74B00F887F67B8A23 +017A793AEC5A4537C494D49E61B9091C9339DB3544C73AF64D3BBE0056987DC8 +E3D230DF0B82DC9D9DB5DA80647AC90C542C7A1965FD835D069CCE389D5F665F +DE21106ADCFF7AA7A93914E31A1BFE1F39633145498BDAE7A4C5FD94254594A8 +06B4D5B66DC6A1560AB80EF3A26FA66A4532FB591F2AB99C98E27E035CFEB2B4 +7B310B722DB67CFEE05FF09C3107110C847BA7879663AB69193885448328216F +336B65F083F3C17A641F2EEE9551C64FD7F5EE6EAADAAD908324915DF373D0AC +F567132A7034CB61EABC2816845DB93F5A05EA541680C9F49784FB8B00EBCCC6 +6BEEC3B142C24B9AB6F5672763F8B051E9D2CFD7E27E2697A2665E684FB94BB7 +F0907238FB54782608D8144A853C338C768705F7EFBB13FBBBDAA7CC1DFE6478 +63FD9E1195504255C5A87980BBE692D75BD996DF8B3A09D43998AAB833D694AF +C7BFA95E9DF0A8676B84D1381DFF1CDA7E2F1C6F8F9D14FDF23DB01D31CC1CCA +3F5962F0568CD50D12ACB13EE81E0860C8848AE1271F6DD7772AE083212F2D48 +780EABA77C42057DD1FD54E4070E3194BABB272FC86104643B80D997A467891F +630B6E3561058BC3B9A28511CD0D45F417D8FF9F4198A5C72E0C7C5E7CA54739 +94045DFA1CF0D558581D78CB8205BBAFEA27CA9A4F282DFF0C29B629968913CC +CC8F782A01C606892F8B948443BFB3A4E79F777FAC8225F1DC09A8533EF65C17 +CE6A783131F4B6CD6C324EEED05F573BE5A8641447EE8D8EF96D115D632C1B4E +4ACD4BAE86DD8F14B7B4C709A9A82DD0AA2A9B43BFA330AECDCED601728370E9 +F8D4E668A916E27CBE843B8B5854445848C3BDDC10211E274D6A54C0C4A67A0D +19678F750D5A700FC9307A6433D1CE71897A3CC25221CCB5370FBE42872A482D +2052708A3F2516897A060C4DB178E5C4312432972861B6225570A9ED4978D287 +94D9615A650D235B1127671E30A38810408C80B8DCE01286B8D3D74AE9CC8B01 +D83C4E4B2BF5E6808F7753FD0DEA81B69F8C9B60821A48777B7AA7F3DC0596A7 +756CFAE0C08AB5536A555A05174313B3D75368489A1F2CA8F73A7F56BC56F9D8 +2400F622E16C6A1763E525DD70BE17DCFF962FD52AFDD44D9C50FFE9DF6B507C +E1A1FAF9739C011B262D8DE65801C3B1BB7D78679756B7DCB47F7DCEB9B2A2AA +D5F6F7C8296D83B1513D3C8D0B94E006E901C2CB8EE13ECD14BFDFAAC75B8A66 +431AE22CE58CB869B08AF92E2B0941FA8B822ADF2CD54D65C959EFBE35BD6408 +1C3CBBD68696DAEF6843C29D63633F345162299797AB724D357C061999ACB616 +B7F0B6F639C32BA34A9796B2442587E74C5D90211F1793EC68D119C260565172 +1B9E03C660A5FE4F12CD75D1F3A80451DCDAE137A0F972D31BCF4E7035CD9F67 +113415F928705DD89EC43862D1C1DCE445D6A132AFACDA3CD01B2E1AFF5F3120 +97C536C42AD9322BA34D1E8CE90D67DB144FE71B1300BD0B69F81268918C2867 +83E718CC8CBF432E523CE8A240870ED708068E551BC3744FF481CCE43216003A +4434CE57B3E55A5C861C4E3D158FD88989B59D242605C1900F241018A8C8B298 +935C650C038917AC8311D5D8AF4008EF5084AB624BCC93AA3534A86E22501F76 +A02F76C7F610DC077E55FEF5A37AB2F46EE55C2C507BE4C5F330F449412781F8 +1298597517BD3A6CF5AA604BC7EC073B1BAA19AEC6C3A626B4620D58122A97D9 +1CE84A5A049C6F033EB302AAB1094B292B6254EB8DDA76742550BBC2AE8C9F4F +620C3FF47BC32D4C758B10F40D3EEDC5EF711B593F3363BC144CA9E356C2E6AF +283E0AB8600EA8A2706C860EF823A035B102829B239A61C49565DF182AD92F7A +74149C35A4A46511AE451A93E28391CBD324387F3FEF232D53EF91483E09AB19 +56F39FE9C6513737940B7232F5153458CEDAB4A6E80F9001979275070B3B194F +B6A0F8CDD628AA150AB8E6729352A1E2CA1B4847AAF49A524CF8EE3B1A9761E1 +22915D55303E430BB5AAF7404760AF827DF53D63857A8ED31F40DFFB7711A68F +5687D6B397AE004B8D490D1360CB062EEB45199BB8DF4DC51A2CC2EDCE65183F +B101A020ECEC5E4678A03EF4FFEADBCD2AC36CFA64D3FAD3FE8E6FEAD4CF30B6 +530365AF486008E60A0392C1E5937A482AE8705565DFB0EC87422B26B2662FAC +2C79094D1AEDEE757709898EA92927C5DD183C13880CBE926184850529122B5E +F91C48D56C835D14AD2CD4E5AA2221894A68A91E2155A7A1809DD71D5BA8F5FD +D23815E05315EAE40422545CFE5F49DA9EA4642D27CFF414DE97819E3845C34F +E914776DB01CEF3667A3B547A6F8C5940529EE4C2C68AC1204F32D5DEB366D7B +C8997AFCEBAC14A9009A5174C54CDBA3F336CD3F7AC525309BAC156626F9B5E3 +91F65A3A8F9C62B56C1C49C8CAD0E8857487F6728BC548B08CC4D4DFA8B3B76F +7BD1CAC3BE68D6426822548EA702FB57DD1A9E050FBF68787CE97B18E5904993 +5DEBC1684E7C35AE0AEE844E9A9D1F24BE5A5950F6880D793359F58A3214E352 +E4D07130C9BBFD00F3635C8507DF0985FB56E9EFBF113DA98A23574B49239064 +C8D06697205C4E74E708F5AC699CCC68282D03773530B3A479B0A3FE8A6AA9DE +0AA677A925E25BCE731C0EAA652FAA03D188F32BD7541085B6123484E97FB263 +FE43B844F6D34DDC8916243D3F8B126BF0DD6C8536B69ECDFD06670B80BDE750 +9FA4C6128126DCD36C9894D54AC125E21B57EDFE228C8DE6774DA44461221106 +3B507EAA89865E445C192146050A956443F308DF446E7CA7C19E75EFC0F62C6A +4B6A1AA33884AD4ED5B74676CC2AD323CA41223DC6EE8D621F1EF94E7A4AF0EB +AF1F40FDFCE5FD8C9CFB2E5FB4F4C0D7E42887FC7B4BAFD748EFF5EF48B0459A +C4E880E6446E2F51169A7818EA7DE6FBD936CF66586A947C3EE2A15AF479B27E +60C9949FB301D3B7218D72C5FE1B6DB91B685CE42792CAFAFCD5271F1D9084E6 +DDB017D33088EBFB3C479D5357102925A710482F05417892355F9C58FB5D9937 +1250AEDB15EE99524558CE9CDDEA43CFE66A97E05D3B86BFF7B5362A4A84B736 +47C3DB1DBC5B150314BD7F5FC8139050B40194A5AE1F691A78AE9353F788E266 +00424C0987C9B0B93F965131742202844C3383BA6CFF52995C08B406C27D2A21 +B7822664081F30AA39709CD76CA9EEB1E59179A8C3332A391027DC0B21CA7F62 +14CCD2AED6249DDC2B0F8A50959B61A60F342F44119BF8508D05509D65683607 +2DB3F753D076ED3FCA6A2802D35390FDB79A7393F5082F62794AF00912B0CD29 +495549A63B0C060A64B5AA351523200D6C1EE31A782165BCD6C5AF13A9BE91CA +44331ECD97CA95A0B9842F5069C9A73759451646312E4AD61C551805ECB3BBF6 +266EC78F08132E28A6DD7318B200CAED5EC69CB7387DBAD895C26C314645258D +2503B6B2AAAD2FA9882B172B33B6FA61817108F1C3AF88A0F52550C7411D0767 +9D49FC7E256AF00317E751D347A148F4A7951F5D7C2ED12070FAAB14464B004B +1ADE76BDD497590718895D1766F3B0E735C7CC421E455521AFE33705659928B0 +18354E80BD38DEA4034719ACE13378B191327B185EAD5C22281CB520ECED6AF4 +1242691EB0308F5E6A0B9EB2FD1D3F8F4F91219F7E8C95320915862A2CF98CDD +A035BC61B859CB4638F82D09113F1A33B9C01456DE233622885F8EE3DC5600A4 +451BBBDE57F42DD995DF42DB4BFE247BC4AC6F441461A05A702E28A8A19261D1 +05EEDD11D807808C9810553ED04DDFF35F79F266001FC760CB4D5F11FB54300F +2E15853F57AF0334B453AA7846BB53261B57C52184A3D427E50752800642F3AB +A1B999320EBB096DD2C295EEC8911FEFF88D2CA88A370073828641C4A3FD6D55 +A822251639757FA9F0C8BA1CB9AB479401262ED37980725271F4CF15DA8C8933 +1FCF465B1DDC6668CA0ECE9AC01706B0A8F0A7BFA24AE8220DEAB2595304CC05 +AC1A6B5A1B0D6F11D814A59659928E7A2D0DEDC004559166BC4247AC3F874032 +5659E2D272B073CF42C9039559813615C984981A981E028B0BFC312E0030A1B4 +3C888FA54DB54191BBB106F4A1A0758C7E764B4D7C4ACE41D0FC0508EDCF9063 +1F92C05A4125C2C161EBE22ED9E5406EE92E4616C187D20D78C3DC5119D98EA3 +6A61D4C68946257C1EF72C73B963A3019C98F398975839227AAE45A9BE4C98D8 +81F059372F5AE180D266C038D3BF49633CCE671AA3FF3549E86ABE6CDADBCC5B +DE5CBDCC11B6E38435C7C6D6CFAC215B87339E046A493664FBF08E5DDC255E3E +2177C6F9EB01F99C9324C636EB668BF03D2CE7F21F964DBF28C2F945E368CBAB +EC5728270B6D38D7D88F5091B942E20FACD25B4ED69A780E327F10A2A13254A5 +349888371329059948E672D23CA607A6168C12EEB1CD90AC7A78DD5B43DD4F16 +6F9376D4740643A52BD60FCEFC8D3E05A91ABAA74717FA0802FD4AA2C01B1354 +62C7C1FDA92904E02E5CF4D37AD588B5E73FB826E06DD1A6500157D1131C6AA9 +25B38CEBDDC9255BC58B92F88CECE0F6B18F019438D2BCE56CE686DD29A32258 +63B624C8D492BFE52883079B7995D5F868080D90C297121CC800D6FEA1A33CFC +108FFEBC29FAF9A2CC2BCB0A22D9AA42FB825F16EF09DB92103C9D644F49BFD0 +2A2CB434F4DA6E7C2BC9B4EBF5D814B2BCD8103E730DEFCA70FFCEC0BD46654C +CD6F74684B6AFDF4B3C25CD8355A787C1D72B5C85C54180C37A58E725A7EE4BB +32E73438CFF5A973F5660C452027F5A226D102047BB6E7F30A99C4EF253A31EB +CF976821A2F4B5E88E4812BE125DB3F8780220D9123485CEF8F4FE4A649B8F3F +AFB543CE79F22AF78DD5A98B0BCD358F0BF81A1087F73EF1DDA956BE09E31D48 +9D378715A7400B565869F0774754CA7E4AD76D335B03EA7902874AE4B75E70D5 +651D44FE1380CE4445EDD7ABC14D7B6355DE55DE3DD72330F70CAEDF95D6705F +29A9C9F578F36A9167809816BB9C0AF317A7FA6CCAC1B0CE9B1A78276DC53A9F +A75188831B0F3A23591BE06780EE4A15B5C690A1AB56F8FACC395BF408EEEE51 +4D481E48B606246CD923BE9FFA8E54C878D1B311149FB2331374C3E020388118 +0275346988D2A90358D944DECFE459AE69D94F9F8FD7C7B48C0DFB861111AF66 +0069BEF3F1EF40840FF0764BCF8DC107996F4CACA42CAAFE7EA447132443F50D +C24B5B2CCCB9D3B829EF589AEE5ECCB0D8C1F8CB9E6A51C42BD57B4FC1CAB49F +21E28E418D0519CF2445BA410618D4E40E4C95D632C7B65A802F5AEF2786C1D4 +7768196D752BB954AB5656F209E72E091150728B33AF8FFD5BE128B1A79180FA +86EB92B9E70BDC48D1C6C34E22A880F7A9760DDB9365C8B93076452B20813171 +73F6DB182B495422532DE4E40034633B57A7C92E1A7B31AFEDDDCC3BF1800488 +283D63A3C691420ECD269A22D905669D2C0310615AAF63E0DF63F26C2997A13C +55CCE68A45FCC8998638E4618BF57755BCCD2DE97DC0577584EBD84DD712F03F +D15203B0BB130F44E6F73B1A5970EDEB76493CA365AFBAF67396C7F75A0932F2 +432FFC177E86B6D1CDDEF700720DE437C5041B76687F8E809D07B66D64D22931 +A07E301230079BD03874E6A5A055028457DFD073A4FA6750B5EA2EBB40DDC2EE +4606E47BE9E10F709A158A4C65D5C10BFC3A548470835DF29E5CDD74C0B02621 +100F124E90CCB954B742FFE19B90DFAEE0754A8EAD4BB4905633EEDB61B71F12 +2F63040C1100F7803991C184E5827AC34469FE3E7E5095CE098117DD22CDAE8C +6C920D76767B1E686FD901164AEF47FDA9B92EB9DC76708B2F2F36240D8D11AD +E294922366D2DD0D28F55DA0FF964128A5223FF57DBA66B8C22D392E6AD1B6BD +4EC69AD619DBBBB2699B50ACFAC8744CD53E798EA08D5D396CEDC38A3EFBF870 +E4B38D546B081D28A4371D1F87720BF5A36648922E92DAF68B0067BE1C093C48 +94B24453680E9C4B625E77F353402CBFA35C135B5C0E95C8DEB5BD7997D0EDEF +16091E4BA39FEDB943CC272FCFD78E2A09CB616CF3EAC21BD921FFA14DC15C07 +F3D601E00889F2C967C88B1A04439ACD707335EE56CE8DCD1109A10D7522FE03 +D17A3AB244F8A6CC69F32D2CCC7EDF594081D6F37AFDA8711D8E89DC22588637 +38F4712914B72C86D669CBE598F90FE585004AB77AFCBC3FB1FC937233D2BEC5 +50BBFD682D20B2971ADFDD060AE9338F845C5665E307FB3E851F0394C1E9458B +040A4713B19BEC70C601E1BC5B4FE1198B4046EB74C8B42C6EA21652BD8FBAA5 +EE30F10C032AE379B366D1D7EC26B053DC7694E7AB1DD90B9F7971F4C0560BA0 +B4A90E4DA818BA24F7AF3C9A9C01FAA90C3111D86C6EF207A01DA98A1DD67219 +CA750F4BBB5FA1CBA65B110722F9C62839D3E48868F41DDEDB1685DEE3FE9C00 +4C4B5A894E4F89F25346FE0A1E18222D14320E7DC6FE54F37DF7266C1408105B +D4A79211F3C44A64855325F80403D59155615213081AE8B1BD4A1CA5E4364957 +43406190FC152BB31F90726E6C3F594B8CA1A939A73A2DABBD5D549F4B638E29 +D6DFC72D57ACE7E6A33FF9000066C52685F07134E5BC9DF4E776D749742F163A +C14A7F07898745D2CF4F55F5CC10E4F1AEEE09932171894933C3A4E079B2EC44 +5D59EFDE1688D1EB57937CCE92E9D315A12AB179EE19C48EA1A0AE40615829BF +5866E4217A337084668DA912BBCEAEE455E82C271F1786BDDA03025956A81C91 +C064EDF471361AF6AF86FABA4537A0E7FB3F6A6425834F3BE587CB157268E6FB +D4AC0BEDD9E8E552AE51758707D28CB03E0873BCD0A5B1F1154902544FE2E006 +D297EDBE9736395C05ABD2BA27391094AC4D937DC359E5E411833DD7ADE001AF +0A1655C45B7575871522A0A5D06E3FE350A2F43034EE8C2C8F4110CF288CFD52 +0E59942FEBFAE475647608A9D2F0B63AD46B36063F1A23032CB800E05411FD28 +42946B2E87ABFB3D70430BDC3A3009A80FE720B15B5940191F0FB60C223C57A8 +FEC36F5EB459ECBDEFCBE905B15600879325DFDDA763D9A155D59D28A5E1CB55 +57816930E3826CADE29ABA5ED3A464235FC797CA8886B624924F5B5DD6F1A456 +CCD960398BEA79E011AFEA3E705A0282A70EB79EE0A7F4D4675A43DF7C70D38D +79145E7A07D37029188341B1D63FDE4A5C5CC36A1892578B5B54CD8091C3172C +6E0A0B19159A7628512A525199BA7CDB6D992C1A9A5FDDAA99FFB4A37E4B6E72 +21FDDD98960F9167AA5825000B4BA73566F2F2CC2B9708D17DB5257B28CE36E9 +DC11711E3614F99AEC6CA60D2251C4A5611A3B3D103751A823DFDC9644B80E77 +D9C0C47DA707CE0C350F3C46CDCC16170BFE28280D6172BA5E5767D256E6D45C +AD0E773F896C99FD3234DFECD792E2F8AD09BC3526EB34B78B86E28E1CF09331 +0D1B99ECFFE17653F95AE29E8C3677FDCF913198D630AE5C063C900DE3A2D23A +406208F9B9F55AE84CB034FA2CE266D75EB77E9CB946050FA7D73D4FB943DF58 +E59AABC7A3D77E765B1971D19D487A679F0649E9581E6A73DDDA9A2A43F102BA +45547C603C5AAB447481309E58E4DC32F5C2809EBBB03356093B2C7C0A74578E +7284C24847F5E866DF58F83B471A8E9F4BE01A4F64B862E4D29569326618186D +A7B976BAF1AC858F39B7E78E0EE321A498E6AFD21D999F7DA70FEECFB8685222 +8CC65AF2D54D9A48A4C8C3814FED8D2077430CB904EB3E1F9B93C26798A9C4D1 +C3FF4D8BCF5DEF1BB075A81CC73E6C0745D64A423FDF6565A3A88C7F40FA58BB +7CE92F26D2EC92DCF98479DA7483C92FA26D4685DC678F1B3C4A4A7382A6F932 +AA0579C468939AE28B2F0AF5E7B24084C3F2377771A4FA99C004DD363D0D5ECE +2E1E6276843D91E01451FD565EE1923D801A957A4FBCBF4ED69718B97A589207 +9BB69EC43BD1213E8DD30DA0D612560C072BB1DA7030FD895914431FB8E0FBFE +EEADC7D78186E4C7AB07AC47B4999755449050EBE24C26C44A6A2D416A3900ED +5555A8DA510EB6E320F0206C1BF6C735B1C8B86118450BBE44B9F7B5C618783A +2935CE222D28794C2B84D4316243DDD98CBB876EE54113ABAC115EA040E1FEBD +D1818680857C97640BFD4F92AE77A57FC4545F7E69E3B07E22DE3CDE7CBF6564 +2B2B1BF587148149CA6A626FA21AE060A42B7BEF98D889450F8F95F402DB20C6 +514ADC3DE2668C3EB909E4424D6FC58561D702DEF6468213097B2DD1E9DE5A3A +A052503DFF3F3E37DB8D4A16A7F2FBD97AEEAAA7E3A1FC528EB13E492CCD5B33 +5CB787AFC490B1823557D6549683229E8E8949FBE6352C361354BAC54EDA985E +B11CFFC7A12409C0D04686430738B4FC277218B59361F2903D58B145554C4EF6 +C257C7861330D4B7C987D597F9B9EA54D241DAA822DD28D9AF6056AB2306BC0C +7EB0D27347EC94159764B11B2625CB1D57C5A0A83DB4940FC7F8E00BD4DEFBFD +81766464EBBE6CF70A97193269B6BD8C30484F758224A2D5 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +/UniqueID 5000820 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD +5F3D998D8365AF76D4CF6A06FB66E1CBCFDB3A67D8880377CD677B9705EE853A +D849F88A828E244FA5816B7D081D4D1975A56D771790C21AE05809BEE6613452 +953F26C39CE61F0E134BC35404FE2F0B7D244D9A6F66E4D817D1C65024013AD3 +5F242EDE94633B8E20EA42B07F83BA649F12B784B2AAFA542BC597C6C2C9AE9C +39D60FBA6CD16AADB5DFDABF22F37E244DF3987FBFA55031CFCD46ADF03650CE +D6CDFFD87BF7407FFB63F3FE4C29FE753896101B2CEAB9007B66E29D6A5B85D3 +FF91F888E445677157A5996FC7A3BD19BAF3A3BCF33F0719B992A0F013B1F0A1 +82E42DF6F651071FB407F448DFF37653E2A0569BDD8EABC3280B3582745DB98B +644E5B341F531B0D81ED85F815B993C2B8B34CDDC6AE97606F6B3B1C5427F174 +362FAB82B935087B568E6F526347058C406E878F1CC2DD05C26D35565347C5A5 +7575891BB4 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 +0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 +B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D +AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 +97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 +FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 +20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 +0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD +F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 +3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 +A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 +5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA +2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9 +0E172209FBE3857AF495A7F2B34BC893D942C145C2204CFCD6A5C69FEFC25B60 +E412CB2BEAE7F7FAD03AF46344F6A7D483BBB1E896BF16B0F4C363799DF23CE2 +E8127996DE841B6F9D8A9E56BD799B6A938582988AF87151BB8D3AEA85C49857 +DD862B5E10D9F33D57795D656FB616BC9B8397B3612131A2B0F472656700958F +739A548F7C3A348698AF9F6F9821D7A9FD4131781ACBF7EAB885A3AC254DBF94 +02FA697941A0F97F048861788BEACC20DE829764413CA58F9D045A6B38BCD6E6 +E4827247EDF1171F64E3B041A69B244308DC07F66643FCD7D5FD37F36EC4CB5F +957D4ADAF91850A3B1A765E0E580EDC77556593D1B2E1C22685268469298688A +45C474C9D0472D019CE1E83F25182D084AD85A49C502E8D679C227DA8E32045F +8055D1622C478F8FDA342685F858DE3F53F1CEA0D70BF3FE09037D981E9E7FFB +BC3F896535D0DCF53F4C85A1DA5D0B632484D1F25460E3EB38E251D2AA17817E +F3B25A2A49C0AEDE0B89E277F52CBF744EF0243C409FD71FB0C574640CF11599 +117A4F42F27D8D282D34485AD116F7E753A8DEBFDF7C552A1179C02B7A37782B +743D0DF85C15A333BE9EE82C13DBC9CB007DEB5900954AD9309902E08B3D5BB4 +E8414211B971CE8B9F05A61C15F400D9297745F606C6419E8A8A9ADCBDC39243 +617EFABFDCF9F836D14411BD72EE19D0BDE89234BF7D52E7A68ECC952FB74FE3 +33E1A87DA39AEEE9E90406E2B1CF3799C63E9BA858D54F38918B814C0DF0B696 +839C820C26FB473ACC5C08E2056457A74123A398806EECDB427BB183F5458105 +2B66D7E1FC3529025D3243A045625E9DD9417FA089B3C7C394D2B65C0367FF73 +79F17ADEC6B5D27A5D3D3E244A0839E38267ACF07B2D994C2B4E7F30A416EEE2 +D1688F167D1641A72A795B1F4DA3350F75AD6D546AA118B5F8A5085F5794E6E5 +28256CD31D250D8328C9620B8ACAB03E4A33DB4595E959F4D0FB1C8CE85A710E +22F1940067C036A7DCED7EA48F1EB81AC4735FB26A249A32AC2E3E7636B32D31 +7D76FBEBA106D6C67C94A3BD4256B786B71C6EF8D191CA90CAD8D2EEAD42C6DD +8BB4BEA7DAD4ECB6E002F3B71C2955A5A401E34D55F755BED68178C270109BAB +FA0AD848347EB977325530B27180661A59447D7DB55A62D65309DE24B6638986 +1D3A539BD37E74C2C00DFED3336B5C6B28D915AB7188FFBCE3ADB3CB903944DF +1BA5923A1C053D4682BB8616F44E81E18DB2B58298F4B1A6289CA993DF3E7C73 +B00DEA3A9B747FEEBC4A11E5B9B8B05CA2709B8AA935A42159D3DE399544F5AF +AC1CC00F6CB94AB69856078C9A2EB2046BB9055CDD6A0622112F7D3710143F1C +20CD8DAB4109CD47BC00EBCB88314081C1D6C43132412F261CE0262FA28DB7A3 +C7D8534BCBE1A60488EA230DC558B73C72AE87539A9D7E28C2BE05FC05F58DDD +87117EE8FAF3A04EF44C9A4020B1725993A09C560AFF330080A53AC25D5FD7CE +7EF47AC32DA4032E3B69032505A2E7FEB961C16EC693C931AF988BC1F88299FE +8A83805D021F2E3BD6C0F422441E48786BFB7C7B9369FAAC61EF94113FB5A09F +5B635ED1B7AB82441FA6D37D43788209B0F0CB48675E8F4EED3B4E40B131EFE2 +7A62A5E7A4829FDB51F9D2FDDD9235864795FB6A7E35B00CF593EE5B10DC32F1 +3E4E56F4441D4E21EB964D0802FC2A5CC4D579723D751FB07F49B263178A7F55 +7F5732646257C2D8E07DFE7303BF3E564EF08A25BF42A1E973D5266EB4DCD07E +DEA171F3A020A5A5EF98887A048523603FA6AED2C4D78615852461EBC8626B2A +3592FD561370E74C76C37BCD1286D56D5B02D2FC6D3DA35E693DB67002953F26 +A917F29B0CC194A84F435BD0474F94CB7DFE5D62DA09EBCA1BCF344FBCBC0E5E +DAF4A7638F50EED5F97A42B4F49F6AC709727BAD621D383DE360A9B8A93E842D +4B91F8097BDC51D0E571CF4EE5C252BE1EB5EF7EB38094E58F183BCA9C827EC2 +F30745A0E0D1CA2FDF07395E9E1AB24A685E6A37565DE435C2D320C9D656E024 +FDFEAE3FDA071E31DB8FB403A7B1F9DCDD6EAF6C2DD70832FF3B0123DD20E5FA +9150583463CC1C96A61E63FEEABB39C988C152208C348296FF6949DBE5FB84C5 +A15B8F758CCA07DBA756FA4A071F5F83513E928D0D08A075DC2497BFCDF4AF24 +2B02C7C3693C0F303F848482A3DF422733E8BC738197124745A03DD519B827EE +84E900762D6365FFD2CB41EA45BF0C57AE703AE4DEAD4C477D86037DB937F8A6 +D599D13CCAFE8DEA8FE920AEC09F669F3C7990252DC434FC36F0C6C077C3BBF0 +D70F2686B59227F2CA6244C1E40740C19AD2B3F6B60F933AFC53C4AC65B9F181 +4D8FE23F5C518BC193E4EA50F6731E91BD18B3F3CDD23606B181482F23A9E291 +11E0B29E943262873E137C902EBB3D52E2C4CFE7982CE0F493B891006812CE34 +AF792849A25359E3D795507257DA3B143CE7F036F4730AEFACDC3B09B1436727 +722BC7D257750FF5DC77229F9FB15D25C6DC92667ABAAFFED5EA14096E3DCD6C +C3C26E0876B548B52B217E1C39BE74C0735B95F84FA239D87545D62169361ED0 +369DA20E240804AF7288BFF7618C6431DB42E5C41F3256E47FA2436E82908F24 +D2D9EEDB7E9D3A81C1BDA0598B4F5DBCF0141D97F1AA82FB08948F78860E2343 +501700E457E03219F1E33998531B5F27EDBBAE52483ED79DE6C294211D835A0D +A30FC94ADCC7854E8FF9A241E14CA4A3713EFBB932B305494191E93BD969AC7D +9D129BF7DD661A970B03D17543B64F3D690FBE809611A8FEBD6D5B64C7072D10 +2C5B0575C32383558B0A6F5F5C75603DBC19D672D50F8E0A1A61053D58722291 +0C6CAF79A40C6CA8186ED01F37686DAC94FE80C1FDE34CF9A1E864B5A541AEC7 +4619BBD36317C204EE3098884A992D7FFD05DFDC5422B6067B760690FE082070 +3950D0A1FC6AAC937BF37A964548E748F5E69643F9C91FFC46ED86A1CE613570 +445B9067458CD4F82F0DF1A37E640225086D640A97A9A100E336AAB021F39CA5 +2F8550A707070C8AA5EFCF0157DB7823627AD01A9AD2B9851E39ACE6B24CB787 +17AAA254B349B5C2B1D6478AAFF1E8F450D0A6DFC19B381FF94A67CD15A22CFD +CFEE409F71E0B9AF34BBB4D5AC0AB98A69797D1F43D9F013A56C627D3D90504A +0F17DBCB03BDF740E3810AE9AC288B9511A952F4B47C182F3B4D86EEAE488200 +88CCEC9CE4C2113E0C3A75B2EE73577048530474613C27D9D04119CE44D1E016 +77606065D96E89271D107C3281036010944BBEF0810EC016C7D841081D99C11C +1D83B982E3AF62A32F5A3D56DD6B59339C80D7D461B94FFD9207B46EE809E886 +368CE4589308F55BD78987657E65AC269A8FFC39363F5BD475D8A1A680B93E10 +217F84204A39E12CFCA85A472C528269F04215C411461389AF5E9F2DD8227DFC +CF1AEEF9342018CF38838D67639E625F0FAA434F6DAD0AB03E4EC2E932CD30CE +A3BC4B7E67177EB7CB99A5AF5C4EC17BE29EE2B07263EB932F9795E3332B9487 +BB02A1EB222FBD292C5E86F0653B09A194DADC4C24C73E223017B2E70680F327 +075BBA88496F0905578CFF71C07CE3F46D018352116CEAD7F219B1FFBAF09893 +028DD06F5AF04275B3C1A5140CE055CC84FE8CF1019927885B8D173D5A7580F0 +B07ADE2180DB44670BA4E6F994B671C6369E510B135EE3BE61ED047199CF0725 +65B0BA4DC6F03EDC42E332B89D9EE8C9E7D884CBB9A99290B455C8079295F807 +767A6CAE1F5577C6FBF05AA24667A66E460ED23509FEF861C13968ECAC508A3D +B66840F35A153C78ED23EB1D874CEE172DB4D0CE00622A3B28A6C10813C998B7 +04A38C1120E04AFAF09D8EF9EA6C3750B318707BD4DE09622680D07AB8D10DFC +D26740AD8EA8E1F7A93A1AE975D0B159869BB452A62959A07D89F339CAF543EE +ADDF81D8CB868482879025840DB8E3DB9512CB8DACB3546F52C861B1F840AA46 +8A766A437A47574BABAE4EAE70BC4271AC12ABC28651EE7BD063468201ED055A +B5D8403E72C0B504895E80839D11E54E200D9FA6866D43FB95240262D9892259 +7ECF5039C110343985E3DD0B5AA309B6ABE57F5599F0FCB46D292703BF969219 +18461B585740D4609AB58960F6DB114B5573F890C0A3816876BBF06DFA1E98A2 +8C2A601A76D3A8216842DE2341CBDC750AF85B4DEECA987B5BA66A6F6DE4F797 +07B387CF02F0969D9E154E4204E8A0C0892A814EEF54FFCEC6E351596321E650 +736160981008221EB805C1E49D9B6F2DD183CB41129EF228FCFEEB637CDAB86E +33015FE68944ECA716C07628B8030CE87956CD0E8DE0205FFDA01BDB84B20FA2 +317EFD862406924353045B0D4241A85124083346F4C00E872CE4610F14BD0988 +1A5F9ED7481F947ECCF2126120E420B4F0CB727FC3133CCBA4305BE0EABEBB1D +73CB539B7EA9F92588C098000C5C488EA9508DDA2986FAA24309D553F8F557C2 +4D2473903552EB821353DF4534623C6AE5EF79D982D05BFF67E97F2C6EACDBE6 +EF0467FB82F54C00EB9572B1A13A3CFCD058FB1FD7FE954E800D3A892C2F61A2 +094EFB8F89585F933E56A54D0AADD20ADDB9E937E138D53C8AAC13E0904D0B40 +055B2AF95712B488414BC1089BD29C1160034B1A1A38C95D5936D0802E11305A +C8090D7EFBA3624704AF26B0C05A6133E27DAE7356CCB5C21A33B07728F1E83E +B0488734103EA8DB4192741D536F7C97350BA9A006D60603B95ABA09A6C71BA6 +6C5EEDC7B7DC48CC6467FB8A27ADEE17E7A96DF0899B87E47F16D615B1B91A26 +B050C27EABDD028A92979050039D1CAEDF2907B061798BE79E62A4EC5CEEA6D6 +12EEBB05FBB716A3A60F6D3CDD6CBBFC4CF4029BA7B1180B76C85A598E05E083 +EAC829660C76529CC5E6603DACD5D1A47667D713F8DEFAC3F2E203E4344BC38A +8B9D8916EAD5E48816F31E0DA810AE5C21B09C184EFAFB3F17324CFBD2B696E7 +4AFB2D060E9A01A7EF4D0B08A562B499737E3FFA3CB0960420807455CD330703 +A9B2BC874F7A2414695AD4D87B9134E8A53D65EF82DDD707B9D398C3EFDDFBA3 +C69E1B3A5BA5FDEBD4783A0C70E289252CAB144C00222018BF2CD8F2773B5BC2 +E06B8B17A3C669A43409541C5D4AD0DD5FDF21E57BD420EE40808B7535706BB4 +67B11AF5440E43DCEE2EE4F420D08AA51DA170B08C5470EFB6C731EBD7649975 +62F58090389120202D7CA8ED4FB9AF564985C1BC9C00CA804D295CBA672C16A6 +EFA3F767E1BB38D6D364E21430E70E3B4AA4ED3D6FABEF4DE09048EED656E400 +89CF3F5864C75C3600587AA94EAA012201602DB62C528CC05DE3AF08F196A861 +57FBE68BBEC5DEACB74B9CDEFDF54530EB5EFFC56882E167F0610FCC7C461F30 +A3171557B94E7BD0D659B7CC2CD0B8BFF57D7286AF2A7378858A4445ACDCCE48 +C7A5C50412895DA2265D32F195E09A07805642EFED5C54199080FE10E2941FF3 +2078EF7EEA1CD37C35D2B4E708DBB45C328BC16DB5D6F3DD77612977617E74FB +34088498D0D14A7C8A25D2A8B31B1FC242F76C63984205B4242975B00C9D53BB +BA04452FA68F4854E3A96B27D8FEFD2C3D772795FAE2CA868B485F0622D8EAEE +12BE413B18668455B3C3879C080C478C99EE6F4713C1B417721812E021B27970 +C4E616793ABAF63D206266E92813FD580B75B5436618003B7ACF906D97AFCD4E +E1497402BF45DB772D011B7C756AA89B9D4F516E82E9ED0670D4A7684C8A3763 +615EAAFCD3C7D022534AEF4D43F494D0EE2EA4D0D87FBED55F43AF3B42FA8F5C +3B7789141C8EAA23EDB6B988E492F22287623B61F130FBB6D1131FA0AA6D8DF4 +70F5D8A3D9163B96F1594124BE4452E9C5864814E698717E49AE7A39D07F42B1 +EB27EEE6E0B53D718115725B2EAA2546FCB741D1516673D4BD2E88EE33DEDD30 +868E4C61E12ADC25192A724695BDE0C72A54E1C97555BE73022C3C931A708D72 +DF11C1A1E371C235AFE73CA254A6366643222BCC641979EAE2DD8A29A186B78C +B1DF1BB02200441D1FD73195158BB32A03C314AB974C7B641C5C28B4B4628D0D +C0C5559B575727E0CAEFCEAA978D1D1EADE592A2E7B9BA7DD0D00A3AE759718A +A4904F6A7EEE30EFF4AAF9F3529D1C79F654DDF6DAB70142A17516B8ABD439DA +53F6DE513E8CB1FD7AC03239F7DE76041AA11D3BC19CCFED635CC9835DA458DA +A25C394B6679DAB4ACF76692C9CBA52DB56C2D6467C14ED50668D7678DBE81DF +FF0BFF55C614FA2609DD902C14FA3A379664E449A0DCEE81693B10F60AA540CF +81540D43290BE0AFEBED295461B649A9779DBCC1A3BD9F1A5FF1E6F887CFB636 +8C02DF95BE1B47B29337E5C15784409074BB88996F2F753C5B0A0A3640D5A81D +3C1C6CD879A8E2B3186A1F030B00D023E9E903407BB8DD148A7BA65BF9A95FB6 +3980046A774FDD9E7EA5FDA1F8810FC74CDC707658D2C0260BEAD0AA587B34AC +36AC3FC6D5F105A8FFDA7E736687050D5AA3E21E240634F443F764F5232C6A13 +C9FD4A61C926A14D3FF8437AAFBC201553B745CEA1811D1E2D028F4DEDB4A8DC +2344EAB65DD7B543E1CBA556523A9C696B1C7160797E85598CD5CBE336FFED1A +8CB41FF8218C40EADDBEE89285648A7DEBFC1700CAA09BEBBD163B90A6A2342C +DF9DAF31D393E1265285C83DC5289CC1C4C128B820044983995D36E77608C40A +4F167048C14E5135ABFBA5E40484AFE8CE2251156DCC2E8C847EE2D8F7E29B48 +50B6EA48C53AF6D9ECD988ED30D316CF6FFD07946EE3ED32ED87D4579F14635C +850D3F625EC16A287FE70467F8BD85BC72AD0C5FAA1D70DB9A78BC573DBB0BD8 +5C89B19DC37C715180F86BBF737021C01DC41BA14A370ECBC8185D5060348879 +B1FB58AFABE8AD55083CCFDB8A5BF3618B2AB44FFD556AC5050D708315095C37 +2164A48F1A67BF2E40B5F15BA0173C0A247504ED1342A8968E8527A0C44A95BA +0F3DF0A60BFA33F4085615BD6BB6B6F34CEAB9AB0142ADB2ABAA08B028F1E096 +9F38449495A706785CB1C46B5E5731D77F28C2A73C2AE1BEA8FFC5F7224CEDDF +E66A0B0C35DB740A3D2398705842D49C6161D88F7CD754A289F7B3C4940A3806 +FE2908D54168F19C1C98FDE7822FF31375CFA6D359B6762844DE78CD51075604 +589E3229EB6E3D1972E66947B4999FB4E2AACFB7A965FF3260543F289DEDFA11 +C8833E7EB2972F7C7CCE00B6ABB95F5740C9E2C9997F0DF39BA7E43BA6B5ECA4 +C587009D37CEB257865A1CDB9A0654254C225E11056E90A4682E4BA7C68AA056 +7C54A81437276F071B067C5E79711CF6147D8ED3C410BE2C874D4BA26268B190 +F9AC54BCB45B23207426A122A6D28319C2EC5A6D2D968CF1216DBD74BD9D6430 +625DFCEFC3A680EB2324F1E2ACFD387CCE51788A401B92BC3B86AF185F8EA881 +AE9FF6A6A9471A6A5701CE2B987CD4DA06634785112E326450263FF6193C304B +80ECF6EC773CE8DF1D248A6BC027D3547D1C1CCD7518F311A1C06BDFF8B78C26 +27DEDB432D0AEDF36EDB3FA156B81D0773B17998CDC8D5B9C4837AFF61000B10 +89C233A58051604DD0ED874B9EF34FB16AFF0186D795508E04AFF1B7537C727C +AF79F73B023B67BE4574F931C48CFDAD8FF4C08A89DD85022AD6412F40A3D95E +9F1040B2FC92B8D19DF79AC537AB96DE652D5BB9F6A957BB06F9DD4BB4E18628 +2F3689C160F8435677E0FB6847144C18D9C650CBBF7D97AAAE4F9266E846C63C +F45577DBEA7F5203DF521812003AAF9699918D090B06D32378AB96DAAA1BF45E +C9FA449E7F67561E745063950DA722C50BAADC3ADF03CE66060C85F31BCA0643 +D419D74D352A065271F01F6A273650ACE31F43723BA351E3CC279A3D8FAB0DB8 +4D587F126BDA34D7AD10C76E17003621566F8E19B71A4C434CD4F1D7AE686A0B +A07172AB285ACE6F1EF89F16E35B63EF5C458491A5A0A10D49C3CBB7FA7FF04D +F6347FF5331A1EF9CD90F66AA875B1E5E4CC1D11031CFA6075C43B4D0BE9F5AA +D2C9B0848EA42591BCD48F552DC71077B5E0458226716B266D8ACED04703F644 +43F136C0ADDABAD16380FF9DC9D6F8761C1EE0F3E067B4EADDCD8074A9F4BED8 +28EB1D93F2F69060E63D3B7A75DB2BB7EBC84733B38C302B359BF0CBF8CD4F06 +868DCC36E5F5078A87602C77C00CB36A1BB749F3B66AB3B259B015B839DF0E33 +AD6C9C7220C3B3ACEAAF37F2BDE073D33A51DD60EA827B94BE0739722567D1A3 +8E8183AAF92A41C13BBFA53BED31946F74DD91211452FB2111B4114D4BF69349 +B47BF8BD85663C615DB8AD7E5814F9E9D674AF69EB52802498EA7A520EEA6A82 +6E0799FD975ED07F59D64A139EB98256CB39868A60F5C95B76F1B32CFC4A610A +16A41249F52A0B484C89A8CDFB8816B65093E629390B6F716820DCA409EE3B9F +E749AB230DC69552E32FC755C726DDB02AC2099E7ED6B153F4FE112EED6F4216 +0068B75329B7D0C52B748866630341391CC8FB1C69161188F56765E1BEFBCDDC +802BE5EC785BD1564DDF133015B45B481E6E57A4FFA79D49F792361A970652B4 +B9FADA8242DDEB704DB34D4E84F9E7A7E48AB957DD04F91E96B15A8F742B64B3 +EA928009F07EA6B727F734E60EFDAAADA39F2909222A5848D581ED647105575A +78AF6704B14A9BC89616E21C42995F0F10536E8B66A391DAABBDB7E077807CA8 +A1CA57B2C2551D3A5574BFA56CD930DEDB666B14D9E5460DE2F6FDE12A101908 +69912C5AC85D24E14F14535403754901B1170A5DE349FF1E9AA6DF86ED9DD992 +0A403B4411D73E3FB2E0F8C02C42572790F0224A7ACC93E1CB0FD8009F8229EA +A6BE77D644B44361C340C2F04585550C9325D5D89EA69EA8E9C77BEB254D9D06 +074E9594878BF49C8BE1DA57EA01730B40290A87862A46515E840EF7EF95D5C2 +F7CB0438C94F7196D0150A2606088203E72F73889C6B351D3B7AEA89FA8ED68E +BC22C235C8B94D91DEC7ABF4F67827C123EBB2E0114CA9B430F8C3A4C52D9F91 +5FBF1E5B7EE99EE1F32FAD68E51C9EF5857935D90CD6787F5A7D26CA2DAE398C +B0E03FFB6686769682F45187CA9ADC29528AFD6C0626B569D1E1CF81ECBE911C +7272D78A7E9C2892E0A9864D82DD7A06EEE8C79DE87AA7CDEF73A81F62174E28 +A3DE77D00BD02174B4E4EE5A960CF73F742D0402470B87C1255AA3FE9F9C0798 +7C691462AAD55FFF9115731B36F827B8197FCB50C20AC134427E3AF225F3852E +C320C4F6564D19E9D90DAAA6C6989440EECEFBC7E0515F6C903ACDF55EBB2745 +7FD1866136E1E34CF014CBF6AF08BF8637046532A649D2A703C1D163AA125FC3 +B5A1A7A54787690A355A386198B496440EC3DB11C0477B0FC6A1BFD9C68DCEB8 +D05FF860951090B268B62347999024F0B029619A1329A7CDC9B22E221F29482F +7880831094A44EEDB2BDD19581A52453E1A5CC6C5D357DCBE28C087E64F3BF42 +A34081BBE7BD7CBB456033B6B743EC91E8F31652F99FF2F888157BB68605E782 +A08186A4CD2D3185B96C4DBF360530FC93B1EA53F295B47EB37B7FA1DD44C5F4 +416E4F17CC18ADF918BECF8A33D638DBB55567FB9BB3B416D4384D709466BDE5 +3E19F1A83F5A635B879BF0BC9BEA61310213702A61A9B64A551FBDFF61D7A484 +E7B92AD5E0CE331F4D747750E4B1D05083370437C57F4175F5D632BDD017A398 +12D14D8A8540103F3C8836C108063D8A354B61B5843E7CB98B68421F7EF3BE66 +DAB94C5FE72A193A6A85701535576837E16173B173C4D458BFAFCF235DB013BA +3ED696A230834BB66260CD8B6FEEAB419B16C8D09EF7AF735263E9DEFD4491F2 +8ADEADFF0477E817EB061C2FD5501FA5B11EFBC8F2A251165E832D7498C346D4 +0C5038BA7DCD69117065EEEB44A4D2F1B00F7812008578D1F08473950F91602D +CB26FD9A426BA5FBCBC3A67E43CEFEF418D4DFEE378B51EE79914E438CCD8512 +5A3FDFC5AC5CBA66884350FB1817FB8D81512E4421CDD7B55FCF6C5DC5AE410A +FBD21F40836104D515BDD985FC5D7FFAE58DBD62099554740986A908E655BA82 +5879165458C9CB5CB893A1300F850C70C9880979EEDDF306C1B2CDEEAC6F08A7 +B8A286E2816D538207988E80C8B8ABB3B584901C310A2C37E2DF00AEDC429F9F +51FA60DCA40CFD89457C0DEC2329114407910E6945826A15AD634A34026524AB +D7EB01765E0A01735F527D084D99D70AC10FE0AF7358D2958734BD3B251B686F +75370D45DE3B02CCEB64BC773DC9AE49C5EEB9CA4E1F6025F37760DF03EB384A +9AB69AF3695772239C5C210144E7793801260D4F712E2375C7BED1475CF0EC98 +7D3396A1FDD01ADA41E26B6FB486E7A65379CA697E94453E12C7E1EBACFF713C +7686104C1E8A97F5CA43D90720A9DF8158BA122B30E76780D2D7D14B28A8E2CD +487EA9ACD7F41FF520C828F96B01113AF6326E709FB33E4C0C40630ECDBACDE4 +2B00CF4DA171C5FB56EC13D2314AAC34B7E6CD522EF577849F16FBD63CA74115 +B1020955853DFDD69504896C78DDAEBA13CE1503CE6298857E95AD30F9AE3D13 +EA679C0755CD9D347E62C2C6BB02B3B70BB5ABE5D42E933095995E82F2B468E8 +1E67BD75E31F3FC998AB527CEAF6D22C3A9D3A9D37F49792B0613BC26E966D10 +ACFCB08924B5DBBB5F34C1532918F5EC819D58D58F22F5B4C34091B6D5D5AE4A +2DAA6A4153DA1E980C1A877F92F3E62CADEE753F835E1D4041726AB4DD8FB54A +663731BF848A92548D7FF200CDCEB755AAC2D4538D609CFC32AC7A64BA4C19A1 +A60FCC95E65834A8477AD1851D4F42313C7D45BD41A7C128FB3F1EB3B8A9C9DC +EB87ECB0E62437F660D7B7B1A2BD1A83D0A858B48DB4FC346A5019BE1453FFFD +365DB2B79BA982FF3074C61A7EF728068C3276A7454B934249CB0FF347B72375 +2B98FD0D5407161B65BFFE96F974730D5700AC5426D102933BC8CEE26A3D7CE4 +E91439C6AC286879CB513453533CE793440B6465A43FC931A95934B0F389FD9D +F2C414562251BA1015F2877F28E0A113876AF203836E03AA29BD327204A55C35 +A8595C42D4C65F6F7EAA5E7C82F8B764B311428074BE70A8A730D323C96EBCB0 +3E0DEA328220E2DD2967423BC227D2EEE3B92D520F08AA0C6670F8D3634F9964 +80B6CF0C575A43AAE6701022678EB581216F94D96E120319F8B4C669DB4F8563 +1EEE57B64FD370EACC725A8C3365A9DA815CCA27ED6B225AAEC2B63231D9EDD1 +251B2FB4E2E428427005B886A09CC42A37323DB8C0FC0B236BFA6608BF3BF90F +F9331DE8D013BE9246A5F7E11BF56A82480A7E3A789D2148EDF9D4C31E9D1621 +BCD28FD7E3129FB191484009367760D442109F4289F0C1F793B1B54A245FA790 +FA945075EA220FE8BAC943E1D68DE00BE2401819AE2F0854AC5C85EAFB40F5F8 +CEF3513B826DB403A4C94CACB3CBCAD5DDB843C4864840AD4086C00C8354B4DB +6F7A67A9238155ED872AF356E27BAE5121450C534F1D64C5814E9FAA11FC6BD4 +FBB0EB1A762EA9D591C97B938349323B9FE6B541A13DB805D6DD18719C3C7BE8 +EFB5471E10BACB574AE708504E9BCB71861246CDABCDEB07164173C949FE332C +4D9EBA9DC8DCB71D914B4AEEDD0F91C891450BD84D7CD827516E33BE15F1AD6B +30396AF928DFB1F8078F439C335261C98BB7CD4DF1532C0F04DABB1B58AF4874 +6D889884716E069AFDA1D41DD9773B024FDC110E565DABD6FE092E062F394EA2 +4B23A3F5647E41143558F695F1648CAEC64AE83F13B900FE6D3F3D1CC94137D5 +DDC2D608F6D09E46AE5300FD23D9873580B6AC180B5CAE378FC14189B8823E96 +CDA6234404F1D472FE468FB4F8BB2DE023BDAF6F43156720B75B175F94CACCAD +68D901CCC375B24AD5AD32965B59D528B555DEA3585B610BFA6F4528FA5BB645 +525F2D4DFFF85703A9E3B82F43B5863FC5EBE8D0B9D96C6E8DABBC2D84DEA858 +5B6A1D35CE535251B09B2E4CE62C43DBAD3E86FC2E0EF06EA1FA62A4B6EEA756 +6EAF9D5AEAC1337CB9D791D54CC67CDDC03FEE7A4BF9D9D967AAC6882EA113C9 +3008B00C93E10C9B5FC8C763EA8EA0C3ACB25D29DE119D42A09019E539D0D99E +69DC8A812E12D5FEA6E95EF4BB6F142AACB08C5C4B0440DA7202830C929B2E75 +9A7294BD9E4F4F891BBFC0CE1029B85FEFE7AB2B4C7731DB532A79A365A58258 +76F20C921730965662DDF829970BAD45BD66D6928DCFE7399A2FDB0BEEA5F75A +8488E764D3D29CEC29558F06370948DD2FE4F7985DAADA9FFBDDAFC956AAC926 +9F924773215CE94B0D3632CFEDF4CFE7AACF7940FEDF598434E4F82E9F6C9C22 +2DADA01E508C43FDBF0E41454A57682007F12B979E6C21BAF4380993B54413B0 +50A8F42E4D5D8C11BEF44E49F4543890822697654567E8BE9EC4487A00C1678C +D25849E8B3CF962D0EB05A3C1BB5DC3AD0964DA95CA31DC31D84FD0757725F02 +D1A9906969EBD96F5B5FF34614F7030CD4E7C39A6324A2E3B3D70002CA3FC904 +A56B650D65061B3FD52D6D0ADF4C9230949F0C89058F623AE1126ABB094517E4 +CF8529C15C7EAFFB689F749694BCA6BEB6208D9AF34CBD4B2F50EC03979E59D4 +DCCA4DA1CE446CC07A923D80D9574B5C4A9311B4E2E83B88F378998D5CCE9EDA +1778C87383FF7363A374FA6E5272120EC8032FA66EBDDC75567BD586FFC49DDF +861A0A3A3D382C07E1E2CFB2200EF1F8D6E47EA35FC0909F6D4E3EFA71C68327 +374F80D5AF728F4C7EB3BC8D470D67FEFC190F86FB837788E058223E2A0E3D74 +2DAC9DC921F7CEBC61454AB8D82964F636EE2E235F38801032F451039CFD5DB5 +D7AC5F17DBFD037123021F2D661A966F70CF41782FA372D86669DB84557C6EF2 +EAA4E0B2CA8340D21DF6F0273E286B13FA6BB4505BA75AE8A25FEB68A14967CB +2F32AC4283212B8C7767DE86CE7ED5DF41BC4B4A26F0E3E1CE53D40C64A2FFE2 +0882EED4A6663DDA91BAE6386AD46CFB4745F48CA93F7E89962067DD2808F3C1 +BC082814D72465ACEE843CF6A2B2C9821BE729E04B8F8C12FA56EF1B1E04F005 +6167690B0DCDBC4DC8FB782B0DEE1B00D586DDD499EA9D4A2394DE1339A8DAB3 +A71E0F8CC3D3DF4AEF3B65BF73E2C6EF888CFEAA804659B6AD76708F54E36F88 +7B3D9A39C8A9FF93205FD30C87E9EACE8AFE46CDCB5520DA38A5228C5B5D3DC5 +89888E0D559F379D40DB5625B2394805D7BD7052A33EC03C399B3413C44ABED6 +111BAF898686E9CE54093969AF7B6F2FD9E27633BB681B8218882EF7BD9877B4 +3F649F01FBF7E8C5F523E66DAB6485FFD34FE0CA373EB4CF8BD7C84CD22A6502 +F43F50EC14A412454156777C8935E5C7B61B9E4BF51132D97EF8DF945068B33A +3C122D4C34CDFD5085C6437F20CEC3B29E6AAA2065AD05A19E7BB92969EEA246 +87BEAAAEB0F01F53844AC095F629AD8D0BEF5AD402D1C874CE9DE233326BA82F +BE7C30A81A98802A01A3D5113285B0EBC89337265DA78A32512397426637D5FD +58F646D86B111E53FF600FDEEC02DD2DA52DA9AE875F43585C69733B7F5D8515 +41E1EAD1B961A6920B9728604930397AA497739C3E8B2470BACB685ABAB79214 +5EF5E1DC2D6FCF072A01C43D5B0BE96D9D4475474F5B683D01A03AF6D2979FD2 +58F34D54ABAC17D9B7B4A9DBEC9DF5D179C402F4B1FE8F74B47DF5C628A22762 +5853D4128C42D4D11C8DEC7E99C01F4AB06C57A92D84C55D82238AA1ADC5CC85 +1A7D3D2DD4CD962FD2EC8B3251B360A9A55C3C22DDCAFCD06DE5F9F2D859260C +1A14F2650D7E83ADB95231FA22718B8F7A2CE6A39E44AA844EE6CB6C1865BD4C +2425E517598BB8DA4ABCB8F7B41AD8AE2C364B85A7439598F1F9A9696E9FA50F +1BEC16680627D3346DF648576CA30DA11B04F2C5C5AFC18EBD9EF3A04D4EE2F2 +3E326A34339A26924C2059A50C5284B4EF69140C6D99A5376F79C39B006C2D8A +840D064DB477C70EB9B0BDB4581C493BCFAD557A01BDCD96A24B6013780C0DDE +65C1CEDF6EDA691BAED459EE21A54CB814E2C6C05DE4D8D3EAB7010F12747EEC +EB73CD6846C12B4F2FD8F3ECEFF292C255B29AB938F2C3DC50BC46ED04888F9F +5A60430EE5871FA0488422819C81849BAB5D3FABF176CF71168A7694156DD65C +1837A0916DAFFDC44D36B66AA28B3BA1C6178DD86C6A096C6C36794935BCE017 +DF02EADECA82A05166D2C100A56C2C4038E3A3694401CD53D514F787F8361279 +2EC1C2853D50DA2B2C481B2CAC90726914DE60E7D3F99C0AEF696B242204A174 +CB4EC72F5B142190E913937F422994B5D082D412509C67810C6D6F6B3A6E7E4E +E5938B3FAC8E8124E026460DD215C4F3E01E399B3C25EC98E7F7256E0BF02250 +BDDDD75E918B04532C2E4EF6984C5A546ABEEF79233893FE95E7AD29B22DA6D1 +B3A722417C714688444C7DA3E545407B8E95D50F75F4E0AB7CAE2EA9AD82C43C +2C2ECD095EAAE32158ECCA60A5B92D96E760CD2474454C9025930850705DC591 +FE9B8A9B83F0A59D7919BE14A4E57E164C114FD4461506D5D32001F73C70D21D +013F753C716A60FFA0FC1E8D5726141FB24EC31E97FBFC9C11909706FE8646CC +983B0DEC377A9009D3EFDBE831518DEF429EDF15D4D0B81D932F18ED82E80D1E +DD7752CF86609B6801D34AE6733317369CB04AE78C5AB83E9E72C55F0FFBDEFC +521C1AE7733880A49B109DC2E6E11950A22A094DBC4B74DB9326E7AA2732A2D2 +D4DBBEED9B069829444316B586CCC5F95FFA1807D31EEFAD24AAA205F2ECBB37 +927D69F778371A8765FBDF9E47D908E54030996576783DD21A4B57DC28CEE8B5 +46E88FB974A48A15437630C300F527644A83C286420E843F8980D507DBE88D07 +08CB5DE0992A1608D994853082567887C6E5C62B2751F78E87EE808A01C7E11D +6401C4226C0B9615E778C63DB94A6180862183C350020ACBA3DFDA4C41E028FB +4C6286B287EFDE41D4963FF5BD4D849729067A9C99D6BB9D90345E630DDA41F9 +A6F9C0D3DE55A58EEF3B01ED8830E785015F3BD0AEDA7C79207A249F46CFCCA6 +FD26130A755B058DEE5032BF842F1D65F1573A2E53B8AD566EFC9211421646C1 +83F1951BAD29A5AF7FD01A9E267BA2B91420EB7CB0CF3A9D61BFDDB23FA70390 +2553247EB8A1D940BD6A8EC2D5E6AA90E7FB1E23EF6C68F65003CEA43F34F59A +807CC4D834EF3845D9C192F9B83D44138DA9ABC8B05C8EC383596FA63642D774 +26CADF5AD03D5F86830D61556E212B49B0C73CBD761E1EB254CE971C4E854EC7 +35DE8CD55B036D00C2407E6884F4B0BACC0A7D8CA9D64F32E78E97A6DE0CC2AF +C86AFC0EFB124CC153B3528451A064465A68A4898AA720A0932B019A81F1DF6D +AEBD44901714879141C2153121583B695C1F54855671FC0703DB52CCF8306636 +B49196BDB6FF50FAAE3C9C100F5E8AE60B112144C72552ABAAA0F1C2560C72E6 +0DCB995D07686152CAC803A73351E3914DB513B7C8D268FDB1F8965B06D95ED7 +DF552B25C4B3465173F37D839159980598C3DECD6B8555758D88330E3E17FFCB +D29B2091A2D9D86C15FAAF029A718ACCDAE07C7E70342E1C2A47627A54A162BA +9FF7D5E72485BB785C09FB709BAD704B8E7C3CEF9066EF387E7D9803AEDCA0FC +A786E44EA4371613BB4AC89A71016E3857450A95A332DDE5E348D96D04838428 +C9EF68881B174397FFB02E9557CCA0978F098E6613015ADE1994A66B47B430F1 +5FA7C42208D301FFEB0C35C8C1944987A025F0F00B2A5D4E71A4053F60AA18DA +08B991358C00879C8DEFBBC37AEFFFFA76D701518CCD0F773EFBC32E400073A4 +F91B3BBFDECB3B697D23AF2D526D4636E740DDE5BFEE12CB605D705C69D98B21 +E62BC152A81A7ADDA0CE3A2CCA277302647A40B3F94F884579AC6DD4670CB768 +B11E9C08E6FB9B6461C21C9090ABDE38ABF5F2FB7C6A163784215401581C0FA0 +5EA26685A6AB6351F8967C3A652C61E467ADDD5DA9CE1E60999F95EA03DCADBA +636EE42A60183BE03A25550D37BAAC6A177361F106FD1EF77946E7E21FF6F17E +0B09D91B215CA56AA2799948B07213571E2C462A273E3E1C582E991207603D64 +C348DBE840D52086441A52896A2EF4305AC3F5048D9AAB82E4A256AC5BD25DCC +14DECEAFDFD4E46098B5DEFCF699852EDCCF7EE6DF2AE8A1BA43F77BFAE0B16F +08C783F559A763514CA8C3D114E79D47592A52C1E4FD7AE46E13817E658D509E +2B16B1AC6EA63DF28961F6D35D584C29AF35E6021A8B1D0C5AACE373B5ADFDA2 +CC7C25BF3F6397DE4B97D012DDF18A066D93382B4E3E1EE2948F4632984DD1DC +4795465CE32DF616F42463605831229F6F3FDB8C66420045F0409EC28E5E45D7 +5A5979B40534A35343C6CDC35515031721D9A41480E61BBE5F41D0173561F717 +251E614ADA39D9CAFC8017D2BBD6B8A7D9ACE4567B3481B0386C247041D8535E +2059DC62BE192C837AAC57ECE8BB1256A687B9E73DC708FDD26E2A07A0FCCB85 +5C0600DB53B27C1BBEF0730AF506520443AB98903180D5F6B68273A6A81DB392 +890B2D8B56555758EBD98F49A60BB468812928C80AADBE5E0F8AE8B17277799D +ADD186DE3F8735C86CE4DC9122FADE97507F52B1A5DCD766880326F5D07ED228 +C68D6F1256E08F598B9C405D32011C07E3EF24B33ADC2BEEE55F2CA3C9BEFEB0 +4F9BC5339835342D1B1D1E2E7864C924E00C009BA28029DA8AD356C82D4B987A +DC6E6405542A7048A952657A0A94D0AAD64A28EEB99982C9C77E298B019709C5 +67922CD18D730CC44A6E9C9C03CC22647CCE27B5662EE14BFFEA77A58D99E657 +0D21CCBB6464E161D3B4C3DC0CBD41EB8B67CE18111FEDDEE11CFA14809418B4 +1DCDFDADC8F204ED30F457E21EB21492E66094D37B04EC331B34BFB08DA5BD5F +BE5ABE603E5E26D003DEDC0151BA1DB0BAA9EF1293DE5BDDAE043D1F58177418 +97175B27708F82EC3BC739F3B3CC50A2C7DF59D2EDA2A3A701217C0B4F3425EC +150F2F53EC9C7F823A35C1B13DA22F6E1688DB0D18F4B0E7320EA04EA52D1D23 +9C117231F36047CC26C7B15AA6FAADA74E07F4DC00F14B621A33D7232B37614D +2014859AE78E007C8C57F2B0800817848623EE7E7DA0335A7D98088C1BE24B23 +9584830E0AE0B406A03270B81D1B3D1CC8F838C72EFB71BC4E56F423C256E550 +E34E89EBF764B578D2576F8171E6EFB9BD269F2C96C3335BBB610D8589DE3DA1 +AEDCDEC233B6F7CAFD98E5EB6A14566E43952F8AB3EFFFA2DF5BA57E9FF04ADC +79A8E2A1971D9E5802794190B5FB7131A47C8790C1AF9D74134735BAB737648F +5ECF5D2E7B124B75922C67463FC6AFCB67B4B050E0D8F7094966E8D8C42EDAFB +FCB5A34AB0EFDF76ED504FAC574C7667917B6DC812A2C062FC744BCB4CBB8009 +0201AC104B89711D037A28493C7D40BBAA55A26668428384E5EDC782A896D2D5 +B67E7E5D3E1CBBEA10C3DA445AF8B51B387EF2FA5A12FBE6F8F5FF04FFF0AA8C +0A934A2259067CF3A287149E79F65339A1661D71E31E77A84D8BE1C030B4E849 +E995B605C68C2F2D662DB7BFFB205F4A2C620115F61D472405D0745D36337C56 +053AB2EE55ED8E3B46FF9D634AF9C2807B3E8A919BF7ACC98BCAAD21CEBEFA70 +F9263F6438BB0F791F35FCA852028B2BB08E5B57F25E3E3367BF7C7EFDEEAEEF +64654A2C610F133228CD4159A997B8C81C4ACC1EAE871F26275D1C46F2A71228 +3AD44F71E23E7B9D8CB24098F82793417D1D6B547900F304F0BD915D70388940 +6BC6BB4F99A25171A19A3A49A4682BC2C4819445A6383A0CEC2FBBCC975064C3 +A8B783644C5A9A7B45C51BD257936652E470FF4876ACD7D567468964E1D17E4F +5DE87E683451CCC4777D684E8B75FE7879670EBFE59972F3B4F85E20A056F5FC +9A73B433D6798F8132828E29E30FDDA1C6592A846B14F92D2BB812D3AEB8780B +36F2A057F3C8FF33790598EC213C88D21A75E380652B0D4308E4856ED490F5BD +A33A67149FE25942BEFDCFCBC1243659CD06477B1424840CBA441885AAB15C70 +1F05F620B2EE3F5E171C57AE618560872D76E985649E8C8178769BD863EADE0D +DE389553B5D4EE8ABF2FA369CDBDD68BC74C1C627949D90ADABE106AC61BDC34 +AF63527A7C44AB04726F6D2216BFCC49578C10D9AA5A83BF402ADEA76503752A +44A1E728C720ADCE158F5555C4919CBE7510AB284FCDA60C44473291851043EA +E27EB7392BC9C02F65B218065ACF4A2A12E7E6C191140C7D16890EA4739D122D +0D1910388185988AB09430CC172034413A0097E8E4EEEC00A514FBFD8CA689C9 +FB1A59A36A678B81CEAB955DBD690722D33C28828CBA0911A51E5CD170620018 +2D88E8374B77DD966ADBE2F693685B43EB7FC26E5C107ACD8E1CD3AB0401DA30 +E75D5378A2E95E4E068AC2CC8DBBC377F964787119122E8674C39BC01464D9D4 +6AFD9D742ACD9C8730C26F3A29D754F292F21B50E9819B75D7878D1449569DD7 +CE9619F575219243BE5C48B6C29E5D93DB338C64544ACD8BA3C60B8DB63086CD +4E7C342CE820938C59B90336C494DF404FCBB970580C89CF3E430E4B5C648F1C +5AAC545AA7895598C44728EB40597009CEB21F94432843FD41CBE45EC38491BF +F1A492213D9B002D64B26E1EF68C939D7402AE4C3B5268DCEC1F55E1D3CFED5C +21F43524F211F2646FAF3F4A73B1707CDD2E302CE0297BE68BFEED4D98D60EC0 +C331FA1FA8E94F8840E822B01B45A7F1FD0E34C95A4B414D2DC72A765C3A12B6 +2E61819B8B8F6E549C3AD47F4A005933545C7F4537960466DEAD6DC011C691B1 +230B986605436BB3F87716BAEDF2A009CA6CE0B3AC37A14E9E3D50F9393FD7E7 +CD9C9B4E91C4C0B8D6A9F093538991E08657EA0D37561EC0357A85F2F1D9994A +73728736C1D15161CEDA7335EAEAC671A519647BA805E095ABC7ABE4796D6649 +634167E28BA49AF423D23AAC9151012CA7CA16271C844A02655293A9589AA236 +5408AE35CBE9FF075EF4EC925F8D82DFF3CE17EADEDC820C2BC7DD1671D8D546 +B333FFAA0B13255B8608062ACFAFC4BAE24DB9DBADFADA09D939E39A69BE279C +160F8AAA24B939A48AF73A17CE378DA9A8B2F9FB6843033CCAC112CF9D4492D3 +B0B8B51997F3077A185C240B8CD73DCD8BBACF71762963D6BF35985179AFEF4B +F3720D8A17CB7CFBFF4A9824518BC2311677C6900B37F6338547EA7274D01CC5 +FAF067C615AFBAF3B625FB7354368E58A6C8CFB9974E6FE9F72AD2C801108A48 +7C5C4C57BFAC2718DEBCFC39573842037B1E806C96BB76E310994014CC777A7B +7072BB178DDB5A2E78D9441C4008D9E72B21C20D44620648BC51B8A0AF3C5B21 +7B7DE4EC1F908DA6248A818308C6021EFC68AAA131DA1233CE09066FB2D022F6 +7C00417A6120E014276DD53BF924FD8FC8D62DBF94AE802273F32DE34AD2BB79 +90BAF4BBCE936757788F785D315D36B5A8E7891A0ADDB26B847DB4FC969A7AA3 +22B535DFD9BD86B3CFECF0D9AD58A4D30BCEC2FA55A2DD3159C47CF0D0F6ED13 +E584D3FA9D83105746EA536AF600FB81772184A0679A14AEFEF3A3F15DC20DD3 +D450FDA175002E11E4EA83F19A7EBD343FB951CF0B33693A5BC7C5B4DA252B4B +D9D752CE580B129019FE89FC62EE05E08A68283CD59DA8F1B072A046B3690978 +496A7B4E4A39ABD78EFB7D42BAD9884536F8AA9CE3A397411CE310FA9A108FDC +6DB7779D805786104892881576FBDBD87FB608524A2B171AEF771A2070539087 +6D82E338FD43A9C72F7714B8ECB03E3FC5229844C9A132436F3AE54F1CC9D069 +41EAEB395B9D960DB455E7D71B26F04442E6F66BB044FCFB98AB5D0115D59D77 +6346B0A8F5D6BFE8CB240E20FE02728D769CC024EDFF580C77F607C22046F362 +81A4BB6083DE452A01872F5AB7A045FEF26926AB10C914BEA406BC396A8CB3A2 +6AF03BCE3356885EA2181D91D3381152F8FB94F9E6C3BC8159B2A95486E78AC9 +4890BC76DF88DD6D80A5E8529048F864513F09534299232FA33D4797F174AB4C +88951B4043D2B724EBFAC18A0A1B60CCBC732DF60E2DFC613CE316C63B9B8430 +23AEA901FB72B0322483374E0430A29193CCFDCB327338736BC8CD82799ECB38 +51FC9003F04B7C46158CC3C0C8703BDC2FD260F7A88040E423EF89DE955AB912 +CA3DB5BC0C2CF534F74D86AB4BF8BCAFAC5ABE1E1E61DE252D241DDA0EEFF7C9 +FEFBD77818325F307B9BB9245E9FEDB0F525CE15E5CE1C72437136BC12F8B102 +C77F2C0315BA67D7A9EF59C21145EFAFDD57479BB4C89198CFFCDD2488C61BC0 +62373DF3E6B62F53EA0ABF2151C590ACD370721AE1D831AFC1B28E87597356F5 +6923A192FEBC63B357B2BF3323891D8CEA75C37B8FEF56A4083A4523F8F83738 +26B1E6099D34CFEC32A10B2FFCBCC0F324876EDD1110AB3540D641BA415F44E6 +9BBC0473FB420CEB68575A6664E99CF248B0511749F0B11EE124A87086EA7E9F +B73F3A8AE1D5585CA6FB3A72456E06C3BF32AA6C130B1209D9B969AC4A13C8A4 +F14AE884A8779D9C3759C2BCCCBCDE519673CA73CC606EEC30E9D2BBAA2EE540 +2E8683D8E61EB78FABDD8E7C111D7F5A772E9319692BCA9D462FA4E064FA9C3C +62BAE54D0AB9C0B183F9F45699E52301A20D409FD6F95823392FCCBA892D7BFD +4590D2FCB9F75B90CB94609467794E6F0AE74F37E9999014CBBE9BFA1BE5F64E +B9E57A6F904E89576042A9BFBD00DBF255BC5B26089049AE818EFA4973F9A776 +0E9517ED7470822328DCA1A7DDA0E0821F59EE4A7F4E3407ABDB0D0F4703A1D4 +A389A53DFFE0E49964F60DED12E1F9A2F703FB29E4593CE8C070D7261651E8FF +7C2EC6E37E497195BBCDA16056F8E192B28067010CD5F001F4F861DC7D83B3F9 +94B2B59F6EFF26EFF0E50C43FB20723041DC07F63FEACCBBA360BCC8FEEE0799 +911159C30E4090004DB4B12A6B26B0532A8EAE44AEC0A912F0D7D1FD51A62A32 +141F8CA382B6E41CEC4D70F73B81597A56AD2795B3C835D5ED894847D49DAAF4 +B771485F39ECDD20D29EA4133DCCDF90C9CA0F1F2385317B2053B1A53FF8F4C4 +0BB4DECE37AB4D36CA7CC8E339ACBB356296EA6C459C740074DA8B2B6DBA2ED2 +5F1CCEE6432198244CDA15DEECB51A2CD7CD5D16AB8425 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 39158280 55380996 1000 600 600 (./gperf.dvi) +@start /Fa 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 +119.552 /CMBXTI10 rf /Fb 209[24 46[{ TeX74afc74cEncoding ReEncodeFont } +1 74.7198 /CMTI9 rf /Fc 130[39 1[39 39 39 39 39 1[39 +39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 +39 1[39 39[39 9[39 7[39 37[{ TeX09fbbfacEncoding ReEncodeFont }29 +74.7198 /CMTT9 rf /Fd 133[34 41 1[55 41 43 30 30 30 1[43 +38 43 64 21 2[21 43 38 23 34 43 34 43 38 21 10[58 1[43 +4[58 70 48 60 39 28 2[50 1[59 55 54 58 7[38 38 38 1[38 +38 38 38 38 38 3[21 4[21 39[{ TeXf7b6d320Encoding ReEncodeFont }47 +74.7198 /CMR9 rf /Fe 147[25 10[44 97[{ + TeXf7b6d320Encoding ReEncodeFont }2 90.9091 /CMB10 rf +/Ff 214[35 35 40[{ TeXf7b6d320Encoding ReEncodeFont }2 +90.9091 /CMSS10 rf /Fg 136[83 2[45 45 47 2[57 64 4[32 +64 2[53 64 2[56 97[{ TeXf7b6d320Encoding ReEncodeFont }11 +99.6264 /CMBX10 rf /Fh 138[52 52 52 4[52 4[52 1[52 1[52 +52 100[{ TeX09fbbfacEncoding ReEncodeFont }8 99.6264 +/CMTT10 rf /Fi 138[56 56 56 56 3[56 4[56 3[56 56 56 99[{ + TeX09fbbfacEncoding ReEncodeFont }9 109.091 /CMTT12 +rf /Fj 134[65 1[89 65 68 48 48 50 1[68 61 68 102 34 2[34 +68 61 37 56 68 55 1[60 9[127 1[94 6[96 2[96 1[46 1[96 +77 81 94 89 1[93 12[61 61 61 61 2[34 41 45[{ + TeXf7b6d320Encoding ReEncodeFont }37 109.091 /CMBX12 +rf /Fk 141[62 1[62 8[62 62 62 101[{ TeX09fbbfacEncoding ReEncodeFont }5 +119.552 /CMTT12 rf /Fl 133[37 44 42 1[42 49 30 37 38 +1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 42 46 4[47 +4[91 1[68 65 51 66 1[62 70 68 82 57 3[68 70 59 62 1[65 +1[68 6[28 11[28 33 5[28 4[47 34[{ TeX74afc74cEncoding ReEncodeFont }45 +90.9091 /CMTI10 rf /Fm 141[74 1[74 8[74 74 74 101[{ + TeX09fbbfacEncoding ReEncodeFont }5 143.462 /CMTT12 +rf /Fn 129[48 48 1[48 48 48 48 48 48 48 48 48 48 1[48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 2[48 +1[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 34[{ TeX09fbbfacEncoding ReEncodeFont }86 90.9091 +/CMTT10 rf /Fo 133[40 48 1[66 48 51 35 36 36 1[51 45 +51 76 25 48 28 25 51 45 28 40 51 40 51 45 9[93 2[66 51 +8[47 3[59 2[66 17[45 2[25 30 5[25 26[51 12[{ + TeXf7b6d320Encoding ReEncodeFont }35 90.9091 /CMSL10 +rf /Fp 134[85 85 117 85 90 63 64 66 1[90 81 90 134 45 +85 1[45 90 81 49 74 90 72 90 78 11[124 112 90 120 1[110 +1[126 1[97 126 1[60 126 127 1[106 124 117 115 122 9[81 +81 81 81 81 81 81 3[54 45[{ TeXf7b6d320Encoding ReEncodeFont }47 +143.462 /CMBX12 rf /Fq 240[45 1[91 13[{ + TeXbbad153fEncoding ReEncodeFont }2 90.9091 /CMSY10 +rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 +71 1[37 75 67 41 61 75 60 75 65 7[102 1[139 1[103 94 +75 100 1[92 101 105 128 81 105 69 50 105 106 85 88 103 +97 96 102 7[67 67 67 67 67 67 67 67 67 67 1[37 45 37 +6[112 24[75 78 11[{ TeXf7b6d320Encoding ReEncodeFont }61 +119.552 /CMBX12 rf /Fs 131[91 1[40 48 48 66 48 51 35 +36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 +45 25 2[25 45 25 1[68 68 93 68 68 66 51 67 71 62 71 68 +83 57 71 47 33 68 71 59 62 69 66 64 68 3[71 1[25 25 45 +45 45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 +71 1[45 76 45 19[76 51 51 53 11[{ TeXf7b6d320Encoding ReEncodeFont }85 +90.9091 /CMR10 rf /Ft 141[89 1[89 8[89 89 89 101[{ + TeX09fbbfacEncoding ReEncodeFont }5 172.154 /CMTT12 +rf /Fu 138[108 75 76 79 2[97 5[54 3[88 108 14[149 13[152 +19[97 1[97 97 1[54 6[54 39[{ TeXf7b6d320Encoding ReEncodeFont }15 +172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin -%%BeginPaperSize: a4 -a4 -%%EndPaperSize - +%%PaperSize: A4 + end %%EndSetup %%Page: 1 1 -1 0 bop 150 1318 a Fu(User's)65 b(Guide)h(to)e Ft(gperf)f -Fu(3.0)p 150 1423 3600 34 v 2005 1519 a Fs(The)30 b(GNU)h(P)m(erfect)h -(Hash)e(F)-8 b(unction)30 b(Generator)2792 1627 y(Edition)e(3.0,)k(7)f -(Ma)m(y)g(2003)150 4958 y Fr(Douglas)46 b(C.)f(Sc)l(hmidt)150 -5091 y(Bruno)f(Haible)p 150 5141 3600 17 v eop +TeXDict begin 1 0 bop 150 1318 a Fu(User's)65 b(Guide)g(to)f +Ft(gperf)f Fu(3.0.1)p 150 1423 3600 34 v 2005 1519 a +Fs(The)30 b(GNU)h(P)m(erfect)h(Hash)e(F)-8 b(unction)31 +b(Generator)2662 1627 y(Edition)f(3.0.1,)j(12)e(June)e(2003)150 +4958 y Fr(Douglas)46 b(C.)f(Sc)l(hmidt)150 5091 y(Bruno)f(Haible)p +150 5141 3600 17 v eop end %%Page: 2 2 -2 1 bop 150 4152 a Fs(Cop)m(yrigh)m(t)602 4149 y(c)577 -4152 y Fq(\015)30 b Fs(1989-2003)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F) --8 b(oundation,)31 b(Inc.)150 4286 y(P)m(ermission)f(is)i(gran)m(ted)h -(to)f(mak)m(e)i(and)d(distribute)f(v)m(erbatim)i(copies)g(of)g(this)f -(man)m(ual)h(pro)m(vided)f(the)150 4396 y(cop)m(yrigh)m(t)g(notice)f -(and)g(this)f(p)s(ermission)f(notice)i(are)h(preserv)m(ed)f(on)h(all)e -(copies.)150 4530 y(P)m(ermission)36 b(is)i(gran)m(ted)g(to)h(cop)m(y)g -(and)f(distribute)e(mo)s(di\014ed)g(v)m(ersions)h(of)i(this)e(man)m -(ual)g(under)g(the)150 4640 y(conditions)42 b(for)h(v)m(erbatim)g(cop)m -(ying,)k(pro)m(vided)42 b(also)h(that)i(the)e(section)h(en)m(titled)f -(\\GNU)h(General)150 4749 y(Public)25 b(License")h(is)g(included)e -(exactly)k(as)f(in)e(the)i(original,)f(and)g(pro)m(vided)g(that)h(the)g -(en)m(tire)g(resulting)150 4859 y(deriv)m(ed)i(w)m(ork)i(is)e -(distributed)f(under)h(the)h(terms)g(of)h(a)g(p)s(ermission)c(notice)k -(iden)m(tical)e(to)i(this)e(one.)150 4994 y(P)m(ermission)i(is)i(gran)m -(ted)g(to)h(cop)m(y)g(and)f(distribute)d(translations)i(of)i(this)e -(man)m(ual)g(in)m(to)h(another)g(lan-)150 5103 y(guage,)41 -b(under)35 b(the)j(ab)s(o)m(v)m(e)g(conditions)e(for)h(mo)s(di\014ed)f -(v)m(ersions,)i(except)h(that)e(the)h(section)f(en)m(titled)150 -5213 y(\\GNU)f(General)g(Public)d(License")i(ma)m(y)h(b)s(e)e(included) -f(in)h(a)i(translation)e(appro)m(v)m(ed)h(b)m(y)h(the)f(author)150 -5322 y(instead)30 b(of)g(in)f(the)i(original)d(English.)p -eop +TeXDict begin 2 1 bop 150 4152 a Fs(Cop)m(yrigh)m(t)602 +4149 y(c)577 4152 y Fq(\015)30 b Fs(1989-2003)k(F)-8 +b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 +4286 y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d +(distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m +(vided)f(the)150 4396 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s +(ermission)g(notice)h(are)g(preserv)m(ed)f(on)h(all)g(copies.)150 +4530 y(P)m(ermission)38 b(is)h(gran)m(ted)f(to)h(cop)m(y)g(and)f +(distribute)g(mo)s(di\014ed)f(v)m(ersions)h(of)h(this)f(man)m(ual)g +(under)f(the)150 4640 y(conditions)44 b(for)f(v)m(erbatim)h(cop)m +(ying,)k(pro)m(vided)43 b(also)h(that)h(the)e(section)i(en)m(titled)g +(\\GNU)f(General)150 4749 y(Public)27 b(License")g(is)g(included)f +(exactly)j(as)e(in)f(the)h(original,)i(and)d(pro)m(vided)h(that)g(the)g +(en)m(tire)h(resulting)150 4859 y(deriv)m(ed)i(w)m(ork)h(is)f +(distributed)g(under)f(the)h(terms)g(of)h(a)g(p)s(ermission)e(notice)j +(iden)m(tical)g(to)f(this)f(one.)150 4994 y(P)m(ermission)j(is)h(gran)m +(ted)f(to)h(cop)m(y)g(and)f(distribute)f(translations)i(of)g(this)f +(man)m(ual)g(in)m(to)h(another)f(lan-)150 5103 y(guage,)41 +b(under)35 b(the)j(ab)s(o)m(v)m(e)g(conditions)g(for)f(mo)s(di\014ed)g +(v)m(ersions,)i(except)g(that)e(the)h(section)g(en)m(titled)150 +5213 y(\\GNU)e(General)h(Public)e(License")h(ma)m(y)g(b)s(e)e(included) +h(in)g(a)h(translation)g(appro)m(v)m(ed)f(b)m(y)h(the)f(author)150 +5322 y(instead)c(of)f(in)g(the)h(original)g(English.)p +eop end %%Page: 1 3 -1 2 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 -b(1)150 299 y Fp(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537 -564 y Fs(V)-8 b(ersion)30 b(2,)h(June)f(1991)390 720 +TeXDict begin 1 2 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(1)150 299 y Fp(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537 +564 y Fs(V)-8 b(ersion)31 b(2,)g(June)f(1991)390 720 y(Cop)m(yrigh)m(t)842 717 y(c)817 720 y Fq(\015)g Fs(1989,)j(1991)f(F) --8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)30 b(Inc.,)390 -824 y(59)h(T)-8 b(emple)30 b(Place,)h(Suite)e(330,)j(Boston,)g(MA)e -(02111-1307,)35 b(USA.)390 1032 y(Ev)m(ery)m(one)c(is)f(p)s(ermitted)f -(to)i(cop)m(y)g(and)f(distribute)e(v)m(erbatim)i(copies)390 -1135 y(of)h(this)e(license)g(do)s(cumen)m(t,)i(but)e(c)m(hanging)i(it)f -(is)f(not)i(allo)m(w)m(ed.)150 1462 y Fr(Pream)l(ble)275 -1683 y Fs(The)39 b(licenses)h(for)g(most)h(soft)m(w)m(are)g(are)g -(designed)e(to)i(tak)m(e)h(a)m(w)m(a)m(y)h(y)m(our)d(freedom)g(to)h -(share)g(and)150 1793 y(c)m(hange)g(it.)70 b(By)40 b(con)m(trast,)k -(the)c(GNU)h(General)f(Public)e(License)i(is)f(in)m(tended)g(to)h +-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.,)390 +824 y(59)g(T)-8 b(emple)31 b(Place,)h(Suite)e(330,)i(Boston,)g(MA)e +(02111-1307,)35 b(USA.)390 1032 y(Ev)m(ery)m(one)c(is)g(p)s(ermitted)f +(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 +1135 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f +(is)f(not)h(allo)m(w)m(ed.)150 1462 y Fr(Pream)l(ble)275 +1683 y Fs(The)39 b(licenses)j(for)e(most)h(soft)m(w)m(are)g(are)g +(designed)f(to)h(tak)m(e)h(a)m(w)m(a)m(y)h(y)m(our)d(freedom)g(to)h +(share)g(and)150 1793 y(c)m(hange)g(it.)71 b(By)40 b(con)m(trast,)k +(the)c(GNU)h(General)g(Public)f(License)h(is)f(in)m(tended)g(to)g (guaran)m(tee)i(y)m(our)150 1902 y(freedom)24 b(to)h(share)f(and)f(c)m (hange)i(free)f(soft)m(w)m(are|to)j(mak)m(e)e(sure)e(the)h(soft)m(w)m -(are)i(is)d(free)h(for)g(all)f(its)h(users.)150 2012 -y(This)38 b(General)i(Public)d(License)j(applies)e(to)i(most)g(of)g -(the)g(F)-8 b(ree)41 b(Soft)m(w)m(are)g(F)-8 b(oundation's)39 -b(soft)m(w)m(are)150 2121 y(and)c(to)h(an)m(y)g(other)g(program)f -(whose)h(authors)f(commit)g(to)i(using)d(it.)55 b(\(Some)36 +(are)i(is)e(free)g(for)g(all)h(its)g(users.)150 2012 +y(This)39 b(General)i(Public)e(License)i(applies)f(to)g(most)g(of)g +(the)g(F)-8 b(ree)41 b(Soft)m(w)m(are)g(F)-8 b(oundation's)40 +b(soft)m(w)m(are)150 2121 y(and)35 b(to)h(an)m(y)g(other)g(program)f +(whose)h(authors)f(commit)h(to)h(using)e(it.)56 b(\(Some)36 b(other)g(F)-8 b(ree)37 b(Soft)m(w)m(are)150 2231 y(F)-8 -b(oundation)31 b(soft)m(w)m(are)i(is)d(co)m(v)m(ered)j(b)m(y)e(the)g -(GNU)h(Library)e(General)h(Public)e(License)h(instead.\))43 -b(Y)-8 b(ou)150 2340 y(can)31 b(apply)e(it)h(to)h(y)m(our)f(programs,)g +b(oundation)32 b(soft)m(w)m(are)h(is)e(co)m(v)m(ered)i(b)m(y)e(the)g +(GNU)h(Library)f(General)h(Public)f(License)g(instead.\))44 +b(Y)-8 b(ou)150 2340 y(can)31 b(apply)f(it)h(to)g(y)m(our)f(programs,)g (to)s(o.)275 2503 y(When)37 b(w)m(e)g(sp)s(eak)g(of)g(free)h(soft)m(w)m -(are,)i(w)m(e)e(are)g(referring)d(to)j(freedom,)h(not)f(price.)60 -b(Our)36 b(General)150 2612 y(Public)c(Licenses)h(are)i(designed)e(to)i +(are,)i(w)m(e)e(are)g(referring)e(to)i(freedom,)h(not)f(price.)61 +b(Our)36 b(General)150 2612 y(Public)e(Licenses)g(are)h(designed)f(to)h (mak)m(e)g(sure)f(that)g(y)m(ou)h(ha)m(v)m(e)g(the)g(freedom)f(to)g -(distribute)e(copies)150 2722 y(of)k(free)h(soft)m(w)m(are)g(\(and)f(c) -m(harge)i(for)e(this)f(service)h(if)f(y)m(ou)i(wish\),)g(that)f(y)m(ou) -h(receiv)m(e)g(source)f(co)s(de)h(or)150 2832 y(can)e(get)h(it)e(if)f -(y)m(ou)i(w)m(an)m(t)h(it,)f(that)g(y)m(ou)g(can)g(c)m(hange)h(the)e -(soft)m(w)m(are)i(or)f(use)f(pieces)h(of)f(it)g(in)g(new)g(free)150 +(distribute)g(copies)150 2722 y(of)i(free)h(soft)m(w)m(are)g(\(and)f(c) +m(harge)i(for)e(this)g(service)h(if)f(y)m(ou)h(wish\),)h(that)e(y)m(ou) +h(receiv)m(e)h(source)e(co)s(de)h(or)150 2832 y(can)e(get)h(it)f(if)f +(y)m(ou)h(w)m(an)m(t)h(it,)g(that)f(y)m(ou)g(can)g(c)m(hange)h(the)e +(soft)m(w)m(are)i(or)f(use)f(pieces)i(of)e(it)h(in)g(new)f(free)150 2941 y(programs;)c(and)g(that)h(y)m(ou)g(kno)m(w)f(y)m(ou)h(can)f(do)h (these)g(things.)275 3104 y(T)-8 b(o)40 b(protect)h(y)m(our)f(righ)m -(ts,)i(w)m(e)e(need)g(to)h(mak)m(e)g(restrictions)d(that)j(forbid)d(an) -m(y)m(one)j(to)g(den)m(y)f(y)m(ou)150 3213 y(these)d(righ)m(ts)f(or)g -(to)h(ask)g(y)m(ou)f(to)h(surrender)e(the)h(righ)m(ts.)58 -b(These)36 b(restrictions)f(translate)i(to)g(certain)150 -3323 y(resp)s(onsibilities)25 b(for)31 b(y)m(ou)f(if)g(y)m(ou)g -(distribute)e(copies)i(of)h(the)f(soft)m(w)m(are,)j(or)d(if)f(y)m(ou)i -(mo)s(dify)e(it.)275 3485 y(F)-8 b(or)30 b(example,)f(if)g(y)m(ou)g -(distribute)e(copies)j(of)f(suc)m(h)g(a)h(program,)g(whether)e(gratis)i -(or)f(for)g(a)h(fee,)h(y)m(ou)150 3595 y(m)m(ust)i(giv)m(e)h(the)g -(recipien)m(ts)e(all)h(the)g(righ)m(ts)g(that)h(y)m(ou)g(ha)m(v)m(e.)51 +(ts,)j(w)m(e)d(need)g(to)h(mak)m(e)g(restrictions)f(that)h(forbid)e(an) +m(y)m(one)i(to)g(den)m(y)f(y)m(ou)150 3213 y(these)d(righ)m(ts)g(or)f +(to)h(ask)g(y)m(ou)f(to)h(surrender)e(the)h(righ)m(ts.)59 +b(These)36 b(restrictions)h(translate)h(to)f(certain)150 +3323 y(resp)s(onsibilities)30 b(for)h(y)m(ou)f(if)h(y)m(ou)f +(distribute)g(copies)h(of)g(the)f(soft)m(w)m(are,)j(or)d(if)g(y)m(ou)h +(mo)s(dify)f(it.)275 3485 y(F)-8 b(or)30 b(example,)g(if)g(y)m(ou)f +(distribute)g(copies)i(of)e(suc)m(h)g(a)h(program,)g(whether)e(gratis)j +(or)e(for)g(a)h(fee,)h(y)m(ou)150 3595 y(m)m(ust)i(giv)m(e)i(the)f +(recipien)m(ts)g(all)h(the)e(righ)m(ts)h(that)g(y)m(ou)g(ha)m(v)m(e.)51 b(Y)-8 b(ou)34 b(m)m(ust)g(mak)m(e)g(sure)f(that)h(they)-8 -b(,)35 b(to)s(o,)150 3704 y(receiv)m(e)j(or)g(can)g(get)g(the)g(source) +b(,)35 b(to)s(o,)150 3704 y(receiv)m(e)k(or)f(can)g(get)g(the)g(source) g(co)s(de.)62 b(And)37 b(y)m(ou)h(m)m(ust)f(sho)m(w)h(them)f(these)h -(terms)f(so)h(they)g(kno)m(w)150 3814 y(their)29 b(righ)m(ts.)275 -3976 y(W)-8 b(e)29 b(protect)g(y)m(our)f(righ)m(ts)f(with)g(t)m(w)m(o)i -(steps:)40 b(\(1\))29 b(cop)m(yrigh)m(t)f(the)g(soft)m(w)m(are,)j(and)c -(\(2\))i(o\013er)g(y)m(ou)f(this)150 4086 y(license)h(whic)m(h)g(giv)m -(es)i(y)m(ou)g(legal)f(p)s(ermission)d(to)k(cop)m(y)-8 -b(,)32 b(distribute)c(and/or)i(mo)s(dify)f(the)i(soft)m(w)m(are.)275 -4248 y(Also,)45 b(for)d(eac)m(h)i(author's)f(protection)f(and)g(ours,)j -(w)m(e)e(w)m(an)m(t)h(to)f(mak)m(e)h(certain)e(that)h(ev)m(ery)m(one) -150 4358 y(understands)29 b(that)j(there)f(is)f(no)h(w)m(arran)m(t)m(y) -h(for)f(this)f(free)h(soft)m(w)m(are.)44 b(If)30 b(the)i(soft)m(w)m -(are)g(is)e(mo)s(di\014ed)f(b)m(y)150 4467 y(someone)i(else)e(and)g -(passed)h(on,)g(w)m(e)g(w)m(an)m(t)h(its)e(recipien)m(ts)g(to)h(kno)m -(w)g(that)g(what)g(they)g(ha)m(v)m(e)h(is)e(not)h(the)150 -4577 y(original,)e(so)h(that)g(an)m(y)h(problems)d(in)m(tro)s(duced)g -(b)m(y)i(others)g(will)d(not)j(re\015ect)h(on)f(the)g(original)e +(terms)f(so)h(they)g(kno)m(w)150 3814 y(their)30 b(righ)m(ts.)275 +3976 y(W)-8 b(e)29 b(protect)g(y)m(our)f(righ)m(ts)g(with)g(t)m(w)m(o)h +(steps:)40 b(\(1\))29 b(cop)m(yrigh)m(t)g(the)f(soft)m(w)m(are,)j(and)c +(\(2\))i(o\013er)g(y)m(ou)f(this)150 4086 y(license)j(whic)m(h)f(giv)m +(es)i(y)m(ou)f(legal)h(p)s(ermission)d(to)i(cop)m(y)-8 +b(,)32 b(distribute)e(and/or)g(mo)s(dify)g(the)h(soft)m(w)m(are.)275 +4248 y(Also,)46 b(for)c(eac)m(h)i(author's)f(protection)g(and)f(ours,)j +(w)m(e)e(w)m(an)m(t)h(to)f(mak)m(e)h(certain)f(that)g(ev)m(ery)m(one) +150 4358 y(understands)29 b(that)j(there)f(is)g(no)g(w)m(arran)m(t)m(y) +h(for)f(this)g(free)g(soft)m(w)m(are.)44 b(If)30 b(the)i(soft)m(w)m +(are)g(is)f(mo)s(di\014ed)f(b)m(y)150 4467 y(someone)h(else)f(and)f +(passed)h(on,)g(w)m(e)g(w)m(an)m(t)h(its)f(recipien)m(ts)h(to)f(kno)m +(w)g(that)g(what)g(they)g(ha)m(v)m(e)h(is)f(not)g(the)150 +4577 y(original,)h(so)e(that)g(an)m(y)h(problems)e(in)m(tro)s(duced)g +(b)m(y)h(others)g(will)g(not)g(re\015ect)h(on)f(the)g(original)h (authors')150 4686 y(reputations.)275 4849 y(Finally)-8 -b(,)24 b(an)m(y)h(free)f(program)g(is)g(threatened)g(constan)m(tly)h(b) -m(y)g(soft)m(w)m(are)h(paten)m(ts.)39 b(W)-8 b(e)26 b(wish)c(to)j(a)m -(v)m(oid)150 4958 y(the)30 b(danger)g(that)h(redistributors)c(of)k(a)f -(free)h(program)f(will)d(individually)e(obtain)30 b(paten)m(t)h -(licenses,)e(in)150 5068 y(e\013ect)39 b(making)e(the)h(program)f -(proprietary)-8 b(.)62 b(T)-8 b(o)38 b(prev)m(en)m(t)g(this,)h(w)m(e)f -(ha)m(v)m(e)h(made)f(it)f(clear)g(that)i(an)m(y)150 5178 -y(paten)m(t)31 b(m)m(ust)g(b)s(e)e(licensed)g(for)h(ev)m(ery)m(one's)i -(free)f(use)f(or)g(not)h(licensed)e(at)i(all.)275 5340 -y(The)e(precise)h(terms)g(and)g(conditions)f(for)h(cop)m(ying,)h -(distribution)26 b(and)k(mo)s(di\014cation)f(follo)m(w.)p -eop +b(,)27 b(an)m(y)e(free)f(program)g(is)h(threatened)f(constan)m(tly)i(b) +m(y)f(soft)m(w)m(are)h(paten)m(ts.)39 b(W)-8 b(e)26 b(wish)d(to)i(a)m +(v)m(oid)150 4958 y(the)30 b(danger)g(that)h(redistributors)e(of)i(a)f +(free)h(program)f(will)g(individually)g(obtain)h(paten)m(t)g(licenses,) +g(in)150 5068 y(e\013ect)39 b(making)f(the)g(program)f(proprietary)-8 +b(.)63 b(T)-8 b(o)38 b(prev)m(en)m(t)g(this,)i(w)m(e)e(ha)m(v)m(e)h +(made)f(it)g(clear)g(that)h(an)m(y)150 5178 y(paten)m(t)31 +b(m)m(ust)g(b)s(e)e(licensed)i(for)f(ev)m(ery)m(one's)i(free)f(use)f +(or)g(not)h(licensed)g(at)g(all.)275 5340 y(The)e(precise)i(terms)f +(and)g(conditions)h(for)f(cop)m(ying,)i(distribution)d(and)h(mo)s +(di\014cation)h(follo)m(w.)p eop end %%Page: 2 4 -2 3 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 -b(2)150 166 y Fr(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g(COPYING,)150 -299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 b(TION)199 515 -y Fs(0.)61 b(This)41 b(License)h(applies)e(to)k(an)m(y)f(program)f(or)g -(other)h(w)m(ork)g(whic)m(h)e(con)m(tains)i(a)g(notice)f(placed)330 -625 y(b)m(y)33 b(the)h(cop)m(yrigh)m(t)g(holder)e(sa)m(ying)i(it)f(ma)m -(y)h(b)s(e)f(distributed)e(under)h(the)h(terms)h(of)g(this)e(General) -330 735 y(Public)37 b(License.)67 b(The)39 b(\\Program",)j(b)s(elo)m -(w,)f(refers)e(to)h(an)m(y)g(suc)m(h)f(program)g(or)g(w)m(ork,)j(and)d -(a)330 844 y(\\w)m(ork)29 b(based)f(on)h(the)g(Program")g(means)f -(either)h(the)f(Program)h(or)g(an)m(y)g(deriv)-5 b(ativ)m(e)28 -b(w)m(ork)g(under)330 954 y(cop)m(yrigh)m(t)k(la)m(w:)42 -b(that)32 b(is)e(to)j(sa)m(y)-8 b(,)33 b(a)e(w)m(ork)h(con)m(taining)f -(the)g(Program)h(or)f(a)h(p)s(ortion)e(of)h(it,)g(either)330 -1063 y(v)m(erbatim)e(or)g(with)e(mo)s(di\014cations)g(and/or)i -(translated)g(in)m(to)g(another)g(language.)40 b(\(Hereinafter,)330 -1173 y(translation)26 b(is)g(included)f(without)h(limitation)f(in)h -(the)h(term)g(\\mo)s(di\014cation".\))40 b(Eac)m(h)27 -b(licensee)g(is)330 1282 y(addressed)i(as)i(\\y)m(ou".)330 -1429 y(Activities)38 b(other)h(than)f(cop)m(ying,)k(distribution)35 -b(and)j(mo)s(di\014cation)f(are)i(not)g(co)m(v)m(ered)h(b)m(y)f(this) -330 1538 y(License;)33 b(they)g(are)f(outside)g(its)f(scop)s(e.)47 -b(The)32 b(act)h(of)g(running)c(the)k(Program)f(is)f(not)i(restricted,) -330 1648 y(and)24 b(the)g(output)g(from)g(the)h(Program)f(is)g(co)m(v)m -(ered)i(only)d(if)g(its)h(con)m(ten)m(ts)i(constitute)f(a)g(w)m(ork)f -(based)330 1758 y(on)h(the)h(Program)f(\(indep)s(enden)m(t)f(of)i(ha)m -(ving)f(b)s(een)f(made)i(b)m(y)f(running)e(the)i(Program\).)40 -b(Whether)330 1867 y(that)31 b(is)e(true)i(dep)s(ends)d(on)i(what)h -(the)f(Program)h(do)s(es.)199 2014 y(1.)61 b(Y)-8 b(ou)42 -b(ma)m(y)g(cop)m(y)g(and)e(distribute)f(v)m(erbatim)i(copies)g(of)h -(the)f(Program's)h(source)f(co)s(de)h(as)g(y)m(ou)330 -2123 y(receiv)m(e)32 b(it,)f(in)f(an)m(y)h(medium,)f(pro)m(vided)g -(that)h(y)m(ou)h(conspicuously)d(and)h(appropriately)g(publish)330 -2233 y(on)j(eac)m(h)h(cop)m(y)g(an)f(appropriate)f(cop)m(yrigh)m(t)i -(notice)f(and)g(disclaimer)d(of)k(w)m(arran)m(t)m(y;)h(k)m(eep)f(in)m -(tact)330 2342 y(all)d(the)g(notices)h(that)h(refer)e(to)h(this)f -(License)g(and)g(to)i(the)f(absence)g(of)g(an)m(y)g(w)m(arran)m(t)m(y;) -h(and)e(giv)m(e)330 2452 y(an)m(y)g(other)f(recipien)m(ts)g(of)g(the)h -(Program)f(a)h(cop)m(y)g(of)g(this)e(License)h(along)g(with)f(the)i +TeXDict begin 2 3 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(2)150 166 y Fr(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g +(COPYING,)150 299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 +b(TION)199 515 y Fs(0.)61 b(This)42 b(License)h(applies)f(to)i(an)m(y)f +(program)f(or)g(other)h(w)m(ork)g(whic)m(h)f(con)m(tains)i(a)f(notice)g +(placed)330 625 y(b)m(y)33 b(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m +(ying)i(it)f(ma)m(y)g(b)s(e)f(distributed)g(under)f(the)h(terms)h(of)g +(this)f(General)330 735 y(Public)39 b(License.)68 b(The)39 +b(\\Program",)j(b)s(elo)m(w,)g(refers)d(to)h(an)m(y)g(suc)m(h)f +(program)g(or)g(w)m(ork,)j(and)d(a)330 844 y(\\w)m(ork)29 +b(based)f(on)h(the)g(Program")g(means)f(either)i(the)e(Program)h(or)g +(an)m(y)g(deriv)-5 b(ativ)m(e)30 b(w)m(ork)e(under)330 +954 y(cop)m(yrigh)m(t)33 b(la)m(w:)43 b(that)32 b(is)f(to)i(sa)m(y)-8 +b(,)33 b(a)e(w)m(ork)h(con)m(taining)h(the)e(Program)h(or)f(a)h(p)s +(ortion)f(of)g(it,)h(either)330 1063 y(v)m(erbatim)e(or)f(with)f(mo)s +(di\014cations)h(and/or)g(translated)h(in)m(to)g(another)f(language.)41 +b(\(Hereinafter,)330 1173 y(translation)28 b(is)f(included)g(without)g +(limitation)i(in)e(the)g(term)g(\\mo)s(di\014cation".\))42 +b(Eac)m(h)27 b(licensee)i(is)330 1282 y(addressed)g(as)i(\\y)m(ou".)330 +1429 y(Activities)41 b(other)e(than)f(cop)m(ying,)43 +b(distribution)38 b(and)g(mo)s(di\014cation)h(are)g(not)g(co)m(v)m +(ered)h(b)m(y)f(this)330 1538 y(License;)34 b(they)f(are)f(outside)h +(its)f(scop)s(e.)47 b(The)32 b(act)h(of)g(running)d(the)j(Program)f(is) +g(not)h(restricted,)330 1648 y(and)24 b(the)g(output)g(from)g(the)h +(Program)f(is)h(co)m(v)m(ered)h(only)e(if)g(its)h(con)m(ten)m(ts)h +(constitute)g(a)f(w)m(ork)f(based)330 1758 y(on)h(the)h(Program)f +(\(indep)s(enden)m(t)g(of)h(ha)m(ving)g(b)s(een)e(made)i(b)m(y)f +(running)f(the)h(Program\).)40 b(Whether)330 1867 y(that)31 +b(is)f(true)h(dep)s(ends)d(on)i(what)h(the)f(Program)h(do)s(es.)199 +2014 y(1.)61 b(Y)-8 b(ou)42 b(ma)m(y)g(cop)m(y)g(and)e(distribute)h(v)m +(erbatim)h(copies)g(of)g(the)f(Program's)h(source)f(co)s(de)h(as)g(y)m +(ou)330 2123 y(receiv)m(e)33 b(it,)f(in)f(an)m(y)g(medium,)g(pro)m +(vided)g(that)g(y)m(ou)h(conspicuously)f(and)f(appropriately)i(publish) +330 2233 y(on)h(eac)m(h)h(cop)m(y)g(an)f(appropriate)g(cop)m(yrigh)m(t) +i(notice)f(and)f(disclaimer)g(of)h(w)m(arran)m(t)m(y;)h(k)m(eep)f(in)m +(tact)330 2342 y(all)f(the)e(notices)i(that)g(refer)e(to)h(this)g +(License)g(and)f(to)i(the)f(absence)g(of)g(an)m(y)g(w)m(arran)m(t)m(y;) +h(and)e(giv)m(e)330 2452 y(an)m(y)g(other)f(recipien)m(ts)i(of)e(the)h +(Program)f(a)h(cop)m(y)g(of)g(this)f(License)h(along)g(with)f(the)h (Program.)330 2598 y(Y)-8 b(ou)31 b(ma)m(y)g(c)m(harge)h(a)f(fee)g(for) -f(the)h(ph)m(ysical)e(act)j(of)f(transferring)e(a)i(cop)m(y)-8 +f(the)h(ph)m(ysical)g(act)h(of)f(transferring)f(a)h(cop)m(y)-8 b(,)32 b(and)e(y)m(ou)h(ma)m(y)g(at)g(y)m(our)330 2708 -y(option)f(o\013er)h(w)m(arran)m(t)m(y)g(protection)g(in)e(exc)m(hange) -j(for)e(a)g(fee.)199 2854 y(2.)61 b(Y)-8 b(ou)24 b(ma)m(y)h(mo)s(dify)d -(y)m(our)i(cop)m(y)g(or)g(copies)g(of)g(the)g(Program)g(or)g(an)m(y)g -(p)s(ortion)e(of)i(it,)h(th)m(us)f(forming)f(a)330 2964 -y(w)m(ork)k(based)g(on)f(the)h(Program,)h(and)f(cop)m(y)g(and)g -(distribute)d(suc)m(h)j(mo)s(di\014cations)e(or)h(w)m(ork)h(under)330 -3074 y(the)k(terms)f(of)g(Section)h(1)f(ab)s(o)m(v)m(e,)i(pro)m(vided)d -(that)i(y)m(ou)g(also)f(meet)h(all)f(of)g(these)h(conditions:)379 -3220 y(a.)61 b(Y)-8 b(ou)43 b(m)m(ust)f(cause)i(the)e(mo)s(di\014ed)f -(\014les)g(to)i(carry)g(prominen)m(t)e(notices)i(stating)f(that)i(y)m -(ou)510 3330 y(c)m(hanged)31 b(the)g(\014les)e(and)h(the)g(date)h(of)g +y(option)g(o\013er)g(w)m(arran)m(t)m(y)g(protection)h(in)e(exc)m(hange) +i(for)e(a)g(fee.)199 2854 y(2.)61 b(Y)-8 b(ou)24 b(ma)m(y)h(mo)s(dify)e +(y)m(our)h(cop)m(y)g(or)g(copies)h(of)f(the)g(Program)g(or)g(an)m(y)g +(p)s(ortion)f(of)h(it,)i(th)m(us)e(forming)g(a)330 2964 +y(w)m(ork)j(based)g(on)f(the)h(Program,)h(and)f(cop)m(y)g(and)g +(distribute)f(suc)m(h)h(mo)s(di\014cations)g(or)f(w)m(ork)h(under)330 +3074 y(the)k(terms)f(of)g(Section)i(1)e(ab)s(o)m(v)m(e,)i(pro)m(vided)e +(that)h(y)m(ou)g(also)g(meet)g(all)h(of)e(these)h(conditions:)379 +3220 y(a.)61 b(Y)-8 b(ou)43 b(m)m(ust)f(cause)i(the)e(mo)s(di\014ed)g +(\014les)g(to)h(carry)g(prominen)m(t)f(notices)i(stating)f(that)h(y)m +(ou)510 3330 y(c)m(hanged)31 b(the)g(\014les)f(and)g(the)g(date)h(of)g (an)m(y)g(c)m(hange.)374 3476 y(b.)60 b(Y)-8 b(ou)31 -b(m)m(ust)g(cause)g(an)m(y)h(w)m(ork)f(that)g(y)m(ou)g(distribute)d(or) -j(publish,)d(that)j(in)f(whole)g(or)h(in)e(part)510 3586 -y(con)m(tains)35 b(or)h(is)e(deriv)m(ed)g(from)h(the)g(Program)g(or)g -(an)m(y)h(part)f(thereof,)i(to)f(b)s(e)e(licensed)g(as)i(a)510 -3695 y(whole)30 b(at)h(no)f(c)m(harge)i(to)f(all)e(third)f(parties)i -(under)f(the)i(terms)f(of)g(this)g(License.)384 3842 -y(c.)61 b(If)39 b(the)h(mo)s(di\014ed)e(program)h(normally)f(reads)i -(commands)f(in)m(teractiv)m(ely)h(when)f(run,)i(y)m(ou)510 -3951 y(m)m(ust)30 b(cause)h(it,)f(when)g(started)h(running)c(for)k(suc) -m(h)f(in)m(teractiv)m(e)h(use)f(in)f(the)i(most)g(ordinary)510 -4061 y(w)m(a)m(y)-8 b(,)25 b(to)d(prin)m(t)e(or)h(displa)m(y)f(an)h -(announcemen)m(t)g(including)d(an)k(appropriate)e(cop)m(yrigh)m(t)i -(notice)510 4170 y(and)i(a)g(notice)h(that)f(there)h(is)e(no)h(w)m -(arran)m(t)m(y)h(\(or)g(else,)g(sa)m(ying)f(that)h(y)m(ou)g(pro)m(vide) -e(a)i(w)m(arran)m(t)m(y\))510 4280 y(and)35 b(that)g(users)g(ma)m(y)g -(redistribute)e(the)j(program)f(under)e(these)j(conditions,)f(and)g -(telling)510 4390 y(the)f(user)f(ho)m(w)h(to)g(view)f(a)i(cop)m(y)f(of) -g(this)f(License.)50 b(\(Exception:)e(if)32 b(the)i(Program)g(itself)f -(is)510 4499 y(in)m(teractiv)m(e)i(but)e(do)s(es)h(not)g(normally)e -(prin)m(t)h(suc)m(h)g(an)h(announcemen)m(t,)h(y)m(our)f(w)m(ork)g -(based)510 4609 y(on)c(the)h(Program)f(is)g(not)g(required)f(to)i(prin) -m(t)e(an)h(announcemen)m(t.\))330 4792 y(These)41 b(requiremen)m(ts)g -(apply)f(to)i(the)g(mo)s(di\014ed)e(w)m(ork)h(as)h(a)g(whole.)73 -b(If)42 b(iden)m(ti\014able)d(sections)330 4902 y(of)j(that)h(w)m(ork)g -(are)f(not)h(deriv)m(ed)e(from)h(the)h(Program,)i(and)d(can)h(b)s(e)e -(reasonably)h(considered)330 5011 y(indep)s(enden)m(t)24 -b(and)j(separate)g(w)m(orks)g(in)e(themselv)m(es,)j(then)e(this)g -(License,)h(and)f(its)h(terms,)g(do)g(not)330 5121 y(apply)36 -b(to)i(those)f(sections)g(when)g(y)m(ou)g(distribute)e(them)i(as)g +b(m)m(ust)g(cause)g(an)m(y)h(w)m(ork)f(that)g(y)m(ou)g(distribute)f(or) +h(publish,)f(that)h(in)g(whole)g(or)g(in)f(part)510 3586 +y(con)m(tains)36 b(or)g(is)f(deriv)m(ed)g(from)g(the)g(Program)g(or)g +(an)m(y)h(part)f(thereof,)i(to)f(b)s(e)e(licensed)i(as)g(a)510 +3695 y(whole)31 b(at)g(no)f(c)m(harge)i(to)f(all)g(third)e(parties)i +(under)e(the)i(terms)f(of)g(this)h(License.)384 3842 +y(c.)61 b(If)39 b(the)h(mo)s(di\014ed)f(program)g(normally)h(reads)g +(commands)f(in)m(teractiv)m(ely)k(when)c(run,)i(y)m(ou)510 +3951 y(m)m(ust)30 b(cause)h(it,)g(when)f(started)h(running)d(for)j(suc) +m(h)f(in)m(teractiv)m(e)j(use)d(in)g(the)h(most)g(ordinary)510 +4061 y(w)m(a)m(y)-8 b(,)25 b(to)d(prin)m(t)f(or)g(displa)m(y)h(an)f +(announcemen)m(t)g(including)g(an)h(appropriate)f(cop)m(yrigh)m(t)i +(notice)510 4170 y(and)h(a)g(notice)i(that)e(there)h(is)f(no)g(w)m +(arran)m(t)m(y)h(\(or)g(else,)h(sa)m(ying)f(that)g(y)m(ou)g(pro)m(vide) +f(a)h(w)m(arran)m(t)m(y\))510 4280 y(and)35 b(that)g(users)g(ma)m(y)g +(redistribute)g(the)h(program)f(under)e(these)j(conditions,)h(and)e +(telling)510 4390 y(the)f(user)f(ho)m(w)h(to)g(view)g(a)h(cop)m(y)f(of) +g(this)g(License.)51 b(\(Exception:)e(if)33 b(the)h(Program)g(itself)h +(is)510 4499 y(in)m(teractiv)m(e)i(but)c(do)s(es)h(not)g(normally)g +(prin)m(t)g(suc)m(h)f(an)h(announcemen)m(t,)h(y)m(our)f(w)m(ork)g +(based)510 4609 y(on)c(the)h(Program)f(is)h(not)f(required)g(to)h(prin) +m(t)f(an)g(announcemen)m(t.\))330 4792 y(These)41 b(requiremen)m(ts)h +(apply)f(to)h(the)g(mo)s(di\014ed)f(w)m(ork)g(as)h(a)g(whole.)74 +b(If)42 b(iden)m(ti\014able)g(sections)330 4902 y(of)g(that)h(w)m(ork)g +(are)f(not)h(deriv)m(ed)f(from)g(the)h(Program,)i(and)d(can)h(b)s(e)e +(reasonably)i(considered)330 5011 y(indep)s(enden)m(t)25 +b(and)i(separate)g(w)m(orks)g(in)f(themselv)m(es,)j(then)d(this)h +(License,)h(and)e(its)i(terms,)f(do)g(not)330 5121 y(apply)37 +b(to)h(those)f(sections)h(when)f(y)m(ou)g(distribute)g(them)g(as)g (separate)h(w)m(orks.)61 b(But)37 b(when)g(y)m(ou)330 -5230 y(distribute)27 b(the)i(same)g(sections)h(as)f(part)g(of)g(a)h -(whole)e(whic)m(h)g(is)g(a)h(w)m(ork)h(based)e(on)h(the)h(Program,)330 -5340 y(the)h(distribution)d(of)j(the)h(whole)e(m)m(ust)h(b)s(e)g(on)g -(the)g(terms)g(of)h(this)e(License,)h(whose)g(p)s(ermissions)p -eop +5230 y(distribute)29 b(the)g(same)g(sections)i(as)e(part)g(of)g(a)h +(whole)f(whic)m(h)g(is)g(a)g(w)m(ork)h(based)e(on)h(the)h(Program,)330 +5340 y(the)h(distribution)g(of)g(the)h(whole)f(m)m(ust)g(b)s(e)g(on)g +(the)g(terms)g(of)h(this)f(License,)h(whose)f(p)s(ermissions)p +eop end %%Page: 3 5 -3 4 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 -b(3)330 299 y(for)22 b(other)h(licensees)e(extend)i(to)g(the)f(en)m -(tire)g(whole,)i(and)d(th)m(us)h(to)h(eac)m(h)h(and)d(ev)m(ery)i(part)g -(regardless)330 408 y(of)31 b(who)e(wrote)i(it.)330 538 -y(Th)m(us,)48 b(it)d(is)f(not)i(the)f(in)m(ten)m(t)g(of)h(this)e -(section)h(to)h(claim)f(righ)m(ts)f(or)h(con)m(test)i(y)m(our)f(righ)m -(ts)e(to)330 648 y(w)m(ork)34 b(written)e(en)m(tirely)h(b)m(y)h(y)m -(ou;)h(rather,)g(the)f(in)m(ten)m(t)g(is)e(to)j(exercise)e(the)h(righ)m -(t)f(to)i(con)m(trol)f(the)330 757 y(distribution)27 -b(of)j(deriv)-5 b(ativ)m(e)30 b(or)h(collectiv)m(e)f(w)m(orks)h(based)f -(on)g(the)h(Program.)330 887 y(In)41 b(addition,)h(mere)f(aggregation)i -(of)f(another)f(w)m(ork)g(not)h(based)f(on)g(the)g(Program)h(with)e -(the)330 996 y(Program)22 b(\(or)g(with)e(a)i(w)m(ork)g(based)f(on)h -(the)g(Program\))g(on)f(a)h(v)m(olume)g(of)g(a)g(storage)h(or)f -(distribution)330 1106 y(medium)28 b(do)s(es)j(not)f(bring)f(the)h -(other)h(w)m(ork)f(under)f(the)i(scop)s(e)f(of)h(this)e(License.)199 -1235 y(3.)61 b(Y)-8 b(ou)38 b(ma)m(y)f(cop)m(y)h(and)f(distribute)d -(the)k(Program)f(\(or)g(a)h(w)m(ork)f(based)g(on)g(it,)i(under)c -(Section)i(2\))330 1345 y(in)29 b(ob)5 b(ject)31 b(co)s(de)g(or)g -(executable)g(form)f(under)e(the)j(terms)f(of)h(Sections)f(1)h(and)f(2) -h(ab)s(o)m(v)m(e)g(pro)m(vided)330 1455 y(that)g(y)m(ou)g(also)f(do)g +TeXDict begin 3 4 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(3)330 299 y(for)22 b(other)h(licensees)g(extend)g(to)g +(the)f(en)m(tire)h(whole,)i(and)c(th)m(us)h(to)h(eac)m(h)h(and)d(ev)m +(ery)i(part)g(regardless)330 408 y(of)31 b(who)e(wrote)i(it.)330 +538 y(Th)m(us,)48 b(it)e(is)f(not)h(the)f(in)m(ten)m(t)h(of)g(this)f +(section)h(to)g(claim)h(righ)m(ts)e(or)g(con)m(test)i(y)m(our)f(righ)m +(ts)f(to)330 648 y(w)m(ork)34 b(written)f(en)m(tirely)i(b)m(y)f(y)m +(ou;)h(rather,)g(the)f(in)m(ten)m(t)h(is)e(to)i(exercise)f(the)g(righ)m +(t)g(to)h(con)m(trol)g(the)330 757 y(distribution)30 +b(of)g(deriv)-5 b(ativ)m(e)32 b(or)f(collectiv)m(e)i(w)m(orks)e(based)f +(on)g(the)h(Program.)330 887 y(In)41 b(addition,)j(mere)d(aggregation)j +(of)e(another)f(w)m(ork)g(not)h(based)f(on)g(the)g(Program)h(with)f +(the)330 996 y(Program)22 b(\(or)g(with)f(a)h(w)m(ork)g(based)f(on)h +(the)g(Program\))g(on)f(a)h(v)m(olume)h(of)f(a)g(storage)h(or)f +(distribution)330 1106 y(medium)29 b(do)s(es)i(not)f(bring)g(the)g +(other)h(w)m(ork)f(under)f(the)i(scop)s(e)f(of)h(this)f(License.)199 +1235 y(3.)61 b(Y)-8 b(ou)38 b(ma)m(y)f(cop)m(y)h(and)f(distribute)f +(the)i(Program)f(\(or)g(a)h(w)m(ork)f(based)g(on)g(it,)j(under)35 +b(Section)j(2\))330 1345 y(in)30 b(ob)5 b(ject)31 b(co)s(de)g(or)g +(executable)h(form)e(under)e(the)j(terms)f(of)h(Sections)g(1)g(and)f(2) +h(ab)s(o)m(v)m(e)g(pro)m(vided)330 1455 y(that)g(y)m(ou)g(also)g(do)f (one)h(of)f(the)h(follo)m(wing:)379 1584 y(a.)61 b(Accompan)m(y)47 -b(it)e(with)f(the)i(complete)g(corresp)s(onding)e(mac)m(hine-readable)h -(source)g(co)s(de,)510 1694 y(whic)m(h)25 b(m)m(ust)h(b)s(e)f -(distributed)e(under)h(the)j(terms)e(of)i(Sections)e(1)i(and)e(2)h(ab)s -(o)m(v)m(e)i(on)d(a)i(medium)510 1803 y(customarily)i(used)h(for)g -(soft)m(w)m(are)i(in)m(terc)m(hange;)f(or,)374 1933 y(b.)60 -b(Accompan)m(y)30 b(it)f(with)f(a)i(written)e(o\013er,)j(v)-5 -b(alid)27 b(for)i(at)i(least)e(three)h(y)m(ears,)g(to)g(giv)m(e)g(an)m -(y)g(third)510 2042 y(part)m(y)-8 b(,)32 b(for)f(a)h(c)m(harge)g(no)f -(more)h(than)f(y)m(our)g(cost)h(of)f(ph)m(ysically)f(p)s(erforming)f -(source)i(distri-)510 2152 y(bution,)c(a)h(complete)h(mac)m -(hine-readable)e(cop)m(y)h(of)g(the)g(corresp)s(onding)e(source)i(co)s -(de,)h(to)g(b)s(e)510 2262 y(distributed)i(under)i(the)h(terms)g(of)h -(Sections)f(1)g(and)g(2)h(ab)s(o)m(v)m(e)g(on)f(a)h(medium)d -(customarily)510 2371 y(used)e(for)g(soft)m(w)m(are)i(in)m(terc)m -(hange;)f(or,)384 2501 y(c.)61 b(Accompan)m(y)33 b(it)e(with)g(the)h -(information)e(y)m(ou)i(receiv)m(ed)g(as)g(to)g(the)g(o\013er)g(to)h -(distribute)c(cor-)510 2610 y(resp)s(onding)i(source)i(co)s(de.)50 -b(\(This)31 b(alternativ)m(e)j(is)e(allo)m(w)m(ed)h(only)g(for)g -(noncommercial)f(dis-)510 2720 y(tribution)e(and)h(only)g(if)g(y)m(ou)i -(receiv)m(ed)f(the)g(program)g(in)f(ob)5 b(ject)33 b(co)s(de)f(or)g -(executable)g(form)510 2829 y(with)d(suc)m(h)h(an)g(o\013er,)h(in)e -(accord)j(with)d(Subsection)g(b)h(ab)s(o)m(v)m(e.\))330 +b(it)f(with)f(the)h(complete)h(corresp)s(onding)e(mac)m(hine-readable)i +(source)e(co)s(de,)510 1694 y(whic)m(h)26 b(m)m(ust)g(b)s(e)f +(distributed)g(under)f(the)j(terms)e(of)i(Sections)f(1)h(and)e(2)h(ab)s +(o)m(v)m(e)i(on)d(a)i(medium)510 1803 y(customarily)k(used)f(for)g +(soft)m(w)m(are)i(in)m(terc)m(hange;)g(or,)374 1933 y(b.)60 +b(Accompan)m(y)30 b(it)g(with)f(a)h(written)f(o\013er,)i(v)-5 +b(alid)29 b(for)g(at)i(least)f(three)g(y)m(ears,)g(to)g(giv)m(e)h(an)m +(y)f(third)510 2042 y(part)m(y)-8 b(,)32 b(for)f(a)h(c)m(harge)g(no)f +(more)h(than)f(y)m(our)g(cost)h(of)f(ph)m(ysically)i(p)s(erforming)d +(source)h(distri-)510 2152 y(bution,)d(a)g(complete)i(mac)m +(hine-readable)f(cop)m(y)f(of)g(the)g(corresp)s(onding)f(source)h(co)s +(de,)h(to)g(b)s(e)510 2262 y(distributed)k(under)g(the)h(terms)g(of)h +(Sections)g(1)f(and)g(2)h(ab)s(o)m(v)m(e)g(on)f(a)h(medium)e +(customarily)510 2371 y(used)d(for)g(soft)m(w)m(are)i(in)m(terc)m +(hange;)g(or,)384 2501 y(c.)61 b(Accompan)m(y)33 b(it)f(with)g(the)g +(information)g(y)m(ou)g(receiv)m(ed)h(as)f(to)g(the)g(o\013er)g(to)h +(distribute)e(cor-)510 2610 y(resp)s(onding)h(source)h(co)s(de.)50 +b(\(This)32 b(alternativ)m(e)k(is)d(allo)m(w)m(ed)i(only)f(for)f +(noncommercial)h(dis-)510 2720 y(tribution)e(and)f(only)h(if)g(y)m(ou)h +(receiv)m(ed)g(the)f(program)g(in)g(ob)5 b(ject)33 b(co)s(de)f(or)g +(executable)h(form)510 2829 y(with)d(suc)m(h)g(an)g(o\013er,)h(in)f +(accord)i(with)e(Subsection)g(b)g(ab)s(o)m(v)m(e.\))330 2979 y(The)j(source)h(co)s(de)g(for)f(a)h(w)m(ork)g(means)f(the)h -(preferred)e(form)h(of)h(the)g(w)m(ork)f(for)h(making)f(mo)s(di\014-) -330 3088 y(cations)e(to)g(it.)40 b(F)-8 b(or)31 b(an)f(executable)h(w)m -(ork,)g(complete)f(source)h(co)s(de)f(means)h(all)e(the)h(source)h(co)s -(de)330 3198 y(for)25 b(all)g(mo)s(dules)f(it)h(con)m(tains,)i(plus)c -(an)m(y)j(asso)s(ciated)g(in)m(terface)h(de\014nition)c(\014les,)j -(plus)d(the)j(scripts)330 3308 y(used)41 b(to)i(con)m(trol)g -(compilation)d(and)i(installation)e(of)i(the)h(executable.)76 +(preferred)e(form)h(of)h(the)g(w)m(ork)f(for)h(making)g(mo)s(di\014-) +330 3088 y(cations)e(to)f(it.)41 b(F)-8 b(or)31 b(an)f(executable)i(w)m +(ork,)f(complete)g(source)g(co)s(de)f(means)h(all)g(the)f(source)h(co)s +(de)330 3198 y(for)25 b(all)i(mo)s(dules)e(it)h(con)m(tains,)i(plus)c +(an)m(y)i(asso)s(ciated)h(in)m(terface)h(de\014nition)d(\014les,)i +(plus)d(the)i(scripts)330 3308 y(used)41 b(to)i(con)m(trol)h +(compilation)f(and)f(installation)i(of)e(the)h(executable.)77 b(Ho)m(w)m(ev)m(er,)48 b(as)42 b(a)g(sp)s(e-)330 3417 -y(cial)30 b(exception,)i(the)f(source)g(co)s(de)g(distributed)d(need)i -(not)h(include)e(an)m(ything)h(that)i(is)e(normally)330 -3527 y(distributed)37 b(\(in)h(either)h(source)h(or)f(binary)f(form\))i -(with)e(the)i(ma)5 b(jor)39 b(comp)s(onen)m(ts)h(\(compiler,)330 -3636 y(k)m(ernel,)35 b(and)f(so)g(on\))g(of)h(the)f(op)s(erating)g -(system)g(on)g(whic)m(h)f(the)h(executable)h(runs,)f(unless)e(that)330 -3746 y(comp)s(onen)m(t)f(itself)e(accompanies)i(the)f(executable.)330 -3875 y(If)39 b(distribution)c(of)40 b(executable)g(or)f(ob)5 -b(ject)40 b(co)s(de)f(is)g(made)g(b)m(y)g(o\013ering)g(access)h(to)g -(cop)m(y)g(from)330 3985 y(a)e(designated)f(place,)i(then)f(o\013ering) -f(equiv)-5 b(alen)m(t)37 b(access)h(to)h(cop)m(y)f(the)f(source)h(co)s -(de)g(from)f(the)330 4095 y(same)29 b(place)f(coun)m(ts)g(as)h -(distribution)24 b(of)k(the)h(source)f(co)s(de,)h(ev)m(en)g(though)e -(third)g(parties)g(are)i(not)330 4204 y(comp)s(elled)g(to)i(cop)m(y)g -(the)g(source)f(along)h(with)e(the)h(ob)5 b(ject)31 b(co)s(de.)199 +y(cial)32 b(exception,)h(the)e(source)g(co)s(de)g(distributed)f(need)g +(not)h(include)g(an)m(ything)g(that)h(is)f(normally)330 +3527 y(distributed)39 b(\(in)g(either)h(source)g(or)f(binary)g(form\))h +(with)f(the)h(ma)5 b(jor)39 b(comp)s(onen)m(ts)h(\(compiler,)330 +3636 y(k)m(ernel,)c(and)e(so)g(on\))g(of)h(the)f(op)s(erating)h(system) +f(on)g(whic)m(h)g(the)g(executable)i(runs,)e(unless)f(that)330 +3746 y(comp)s(onen)m(t)e(itself)g(accompanies)h(the)e(executable.)330 +3875 y(If)39 b(distribution)f(of)i(executable)h(or)e(ob)5 +b(ject)40 b(co)s(de)f(is)h(made)f(b)m(y)g(o\013ering)h(access)g(to)g +(cop)m(y)g(from)330 3985 y(a)e(designated)g(place,)i(then)e(o\013ering) +g(equiv)-5 b(alen)m(t)39 b(access)f(to)h(cop)m(y)f(the)f(source)h(co)s +(de)g(from)f(the)330 4095 y(same)29 b(place)g(coun)m(ts)f(as)h +(distribution)e(of)h(the)h(source)f(co)s(de,)h(ev)m(en)g(though)e +(third)h(parties)g(are)h(not)330 4204 y(comp)s(elled)i(to)g(cop)m(y)g +(the)g(source)f(along)i(with)e(the)g(ob)5 b(ject)31 b(co)s(de.)199 4334 y(4.)61 b(Y)-8 b(ou)35 b(ma)m(y)h(not)f(cop)m(y)-8 -b(,)37 b(mo)s(dify)-8 b(,)35 b(sublicense,)f(or)g(distribute)f(the)i -(Program)f(except)i(as)f(expressly)330 4443 y(pro)m(vided)k(under)g -(this)h(License.)70 b(An)m(y)41 b(attempt)h(otherwise)e(to)h(cop)m(y)-8 -b(,)45 b(mo)s(dify)-8 b(,)42 b(sublicense)c(or)330 4553 -y(distribute)24 b(the)j(Program)g(is)e(v)m(oid,)i(and)f(will)e -(automatically)j(terminate)f(y)m(our)h(righ)m(ts)f(under)f(this)330 -4663 y(License.)70 b(Ho)m(w)m(ev)m(er,)45 b(parties)40 -b(who)g(ha)m(v)m(e)h(receiv)m(ed)g(copies,)i(or)d(righ)m(ts,)j(from)d -(y)m(ou)g(under)f(this)330 4772 y(License)d(will)e(not)j(ha)m(v)m(e)h -(their)e(licenses)f(terminated)i(so)g(long)f(as)h(suc)m(h)f(parties)g -(remain)g(in)f(full)330 4882 y(compliance.)199 5011 y(5.)61 -b(Y)-8 b(ou)38 b(are)g(not)g(required)d(to)j(accept)h(this)e(License,)i -(since)e(y)m(ou)g(ha)m(v)m(e)i(not)f(signed)e(it.)62 -b(Ho)m(w)m(ev)m(er,)330 5121 y(nothing)23 b(else)g(gran)m(ts)i(y)m(ou)f -(p)s(ermission)c(to)25 b(mo)s(dify)d(or)h(distribute)f(the)i(Program)g -(or)f(its)g(deriv)-5 b(ativ)m(e)330 5230 y(w)m(orks.)38 -b(These)23 b(actions)g(are)h(prohibited)c(b)m(y)j(la)m(w)g(if)f(y)m(ou) -h(do)g(not)h(accept)g(this)e(License.)38 b(Therefore,)330 -5340 y(b)m(y)e(mo)s(difying)d(or)j(distributing)c(the)k(Program)g(\(or) -h(an)m(y)f(w)m(ork)g(based)g(on)f(the)i(Program\),)h(y)m(ou)p -eop +b(,)37 b(mo)s(dify)-8 b(,)36 b(sublicense,)g(or)e(distribute)h(the)g +(Program)f(except)i(as)f(expressly)330 4443 y(pro)m(vided)40 +b(under)f(this)i(License.)71 b(An)m(y)41 b(attempt)h(otherwise)f(to)g +(cop)m(y)-8 b(,)45 b(mo)s(dify)-8 b(,)43 b(sublicense)d(or)330 +4553 y(distribute)26 b(the)h(Program)g(is)f(v)m(oid,)i(and)e(will)h +(automatically)j(terminate)d(y)m(our)g(righ)m(ts)g(under)e(this)330 +4663 y(License.)71 b(Ho)m(w)m(ev)m(er,)45 b(parties)c(who)f(ha)m(v)m(e) +h(receiv)m(ed)h(copies,)i(or)c(righ)m(ts,)k(from)c(y)m(ou)g(under)f +(this)330 4772 y(License)e(will)g(not)g(ha)m(v)m(e)h(their)f(licenses)g +(terminated)h(so)f(long)g(as)g(suc)m(h)f(parties)h(remain)g(in)f(full) +330 4882 y(compliance.)199 5011 y(5.)61 b(Y)-8 b(ou)38 +b(are)g(not)g(required)e(to)i(accept)h(this)f(License,)i(since)e(y)m +(ou)f(ha)m(v)m(e)i(not)f(signed)f(it.)63 b(Ho)m(w)m(ev)m(er,)330 +5121 y(nothing)24 b(else)g(gran)m(ts)h(y)m(ou)f(p)s(ermission)e(to)j +(mo)s(dify)e(or)g(distribute)h(the)g(Program)g(or)f(its)h(deriv)-5 +b(ativ)m(e)330 5230 y(w)m(orks.)38 b(These)23 b(actions)h(are)g +(prohibited)e(b)m(y)h(la)m(w)h(if)f(y)m(ou)g(do)g(not)h(accept)g(this)f +(License.)39 b(Therefore,)330 5340 y(b)m(y)d(mo)s(difying)f(or)h +(distributing)f(the)h(Program)g(\(or)h(an)m(y)f(w)m(ork)g(based)g(on)f +(the)i(Program\),)h(y)m(ou)p eop end %%Page: 4 6 -4 5 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 -b(4)330 299 y(indicate)31 b(y)m(our)i(acceptance)h(of)f(this)e(License) -h(to)i(do)e(so,)h(and)f(all)f(its)h(terms)g(and)g(conditions)f(for)330 -408 y(cop)m(ying,)g(distributing)26 b(or)31 b(mo)s(difying)c(the)k -(Program)f(or)h(w)m(orks)f(based)g(on)g(it.)199 545 y(6.)61 -b(Eac)m(h)43 b(time)e(y)m(ou)h(redistribute)e(the)i(Program)g(\(or)g -(an)m(y)h(w)m(ork)f(based)f(on)h(the)g(Program\),)k(the)330 -655 y(recipien)m(t)31 b(automatically)i(receiv)m(es)g(a)g(license)e -(from)h(the)g(original)f(licensor)g(to)i(cop)m(y)-8 b(,)34 -b(distribute)330 765 y(or)i(mo)s(dify)f(the)h(Program)h(sub)5 -b(ject)36 b(to)h(these)g(terms)f(and)g(conditions.)57 +TeXDict begin 4 5 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(4)330 299 y(indicate)33 b(y)m(our)g(acceptance)h(of)f +(this)f(License)h(to)h(do)e(so,)h(and)f(all)h(its)g(terms)f(and)g +(conditions)h(for)330 408 y(cop)m(ying,)f(distributing)d(or)i(mo)s +(difying)e(the)i(Program)f(or)h(w)m(orks)f(based)g(on)g(it.)199 +545 y(6.)61 b(Eac)m(h)43 b(time)f(y)m(ou)g(redistribute)g(the)g +(Program)g(\(or)g(an)m(y)h(w)m(ork)f(based)f(on)h(the)g(Program\),)k +(the)330 655 y(recipien)m(t)33 b(automatically)j(receiv)m(es)e(a)f +(license)g(from)f(the)g(original)i(licensor)f(to)g(cop)m(y)-8 +b(,)34 b(distribute)330 765 y(or)i(mo)s(dify)g(the)g(Program)h(sub)5 +b(ject)36 b(to)h(these)g(terms)f(and)g(conditions.)59 b(Y)-8 b(ou)37 b(ma)m(y)g(not)f(imp)s(ose)330 874 y(an)m(y)27 -b(further)f(restrictions)f(on)i(the)g(recipien)m(ts')f(exercise)h(of)g -(the)g(righ)m(ts)f(gran)m(ted)h(herein.)38 b(Y)-8 b(ou)28 -b(are)330 984 y(not)j(resp)s(onsible)c(for)j(enforcing)g(compliance)g -(b)m(y)g(third)e(parties)i(to)h(this)e(License.)199 1121 +b(further)f(restrictions)h(on)g(the)g(recipien)m(ts')h(exercise)g(of)f +(the)g(righ)m(ts)g(gran)m(ted)g(herein.)39 b(Y)-8 b(ou)28 +b(are)330 984 y(not)j(resp)s(onsible)e(for)h(enforcing)h(compliance)h +(b)m(y)e(third)f(parties)i(to)g(this)f(License.)199 1121 y(7.)61 b(If,)27 b(as)g(a)g(consequence)h(of)f(a)g(court)g(judgmen)m(t) -f(or)h(allegation)f(of)h(paten)m(t)h(infringemen)m(t)c(or)j(for)g(an)m -(y)330 1230 y(other)h(reason)f(\(not)h(limited)d(to)j(paten)m(t)h -(issues\),)e(conditions)f(are)h(imp)s(osed)f(on)h(y)m(ou)h(\(whether)f -(b)m(y)330 1340 y(court)c(order,)h(agreemen)m(t)g(or)f(otherwise\))f -(that)h(con)m(tradict)h(the)e(conditions)f(of)i(this)f(License,)i(they) -330 1450 y(do)34 b(not)g(excuse)h(y)m(ou)f(from)g(the)g(conditions)f -(of)h(this)f(License.)52 b(If)33 b(y)m(ou)i(cannot)g(distribute)c(so)k -(as)330 1559 y(to)f(satisfy)f(sim)m(ultaneously)f(y)m(our)h -(obligations)g(under)f(this)g(License)h(and)g(an)m(y)h(other)g(p)s -(ertinen)m(t)330 1669 y(obligations,)41 b(then)f(as)g(a)g(consequence)h -(y)m(ou)f(ma)m(y)g(not)g(distribute)e(the)i(Program)g(at)g(all.)68 -b(F)-8 b(or)330 1778 y(example,)25 b(if)e(a)i(paten)m(t)g(license)e(w)m -(ould)g(not)h(p)s(ermit)f(ro)m(y)m(alt)m(y-free)j(redistribution)20 -b(of)k(the)h(Program)330 1888 y(b)m(y)35 b(all)f(those)h(who)f(receiv)m -(e)i(copies)f(directly)e(or)i(indirectly)e(through)h(y)m(ou,)i(then)f -(the)g(only)f(w)m(a)m(y)330 1998 y(y)m(ou)27 b(could)e(satisfy)h(b)s -(oth)f(it)h(and)g(this)f(License)h(w)m(ould)f(b)s(e)h(to)h(refrain)d -(en)m(tirely)i(from)g(distribution)330 2107 y(of)31 b(the)f(Program.) -330 2244 y(If)43 b(an)m(y)g(p)s(ortion)f(of)h(this)g(section)g(is)f -(held)g(in)m(v)-5 b(alid)41 b(or)i(unenforceable)f(under)g(an)m(y)i -(particular)330 2354 y(circumstance,)i(the)e(balance)f(of)g(the)h -(section)f(is)f(in)m(tended)g(to)i(apply)e(and)g(the)i(section)f(as)h -(a)330 2463 y(whole)30 b(is)f(in)m(tended)g(to)i(apply)e(in)g(other)i -(circumstances.)330 2600 y(It)41 b(is)e(not)i(the)f(purp)s(ose)f(of)i -(this)e(section)i(to)g(induce)e(y)m(ou)i(to)g(infringe)d(an)m(y)j -(paten)m(ts)g(or)g(other)330 2710 y(prop)s(ert)m(y)e(righ)m(t)h(claims) -e(or)i(to)h(con)m(test)h(v)-5 b(alidit)m(y)38 b(of)i(an)m(y)g(suc)m(h)g -(claims;)j(this)c(section)h(has)g(the)330 2819 y(sole)30 -b(purp)s(ose)e(of)j(protecting)f(the)g(in)m(tegrit)m(y)g(of)g(the)h -(free)f(soft)m(w)m(are)h(distribution)c(system,)j(whic)m(h)330 -2929 y(is)k(implemen)m(ted)g(b)m(y)h(public)d(license)i(practices.)55 -b(Man)m(y)36 b(p)s(eople)e(ha)m(v)m(e)i(made)f(generous)h(con)m(tri-) -330 3039 y(butions)e(to)i(the)f(wide)g(range)g(of)h(soft)m(w)m(are)h -(distributed)32 b(through)j(that)h(system)f(in)f(reliance)h(on)330 -3148 y(consisten)m(t)h(application)e(of)h(that)h(system;)i(it)d(is)g -(up)f(to)i(the)g(author/donor)f(to)h(decide)f(if)g(he)g(or)330 -3258 y(she)i(is)g(willing)d(to)k(distribute)d(soft)m(w)m(are)k(through) -e(an)m(y)g(other)h(system)g(and)f(a)g(licensee)g(cannot)330 -3367 y(imp)s(ose)29 b(that)i(c)m(hoice.)330 3504 y(This)25 -b(section)j(is)e(in)m(tended)g(to)i(mak)m(e)g(thoroughly)e(clear)h -(what)g(is)f(b)s(eliev)m(ed)g(to)i(b)s(e)f(a)g(consequence)330 -3614 y(of)k(the)f(rest)h(of)f(this)f(License.)199 3751 -y(8.)61 b(If)35 b(the)g(distribution)c(and/or)k(use)g(of)g(the)g -(Program)g(is)f(restricted)h(in)f(certain)h(coun)m(tries)f(either)330 -3861 y(b)m(y)h(paten)m(ts)h(or)g(b)m(y)f(cop)m(yrigh)m(ted)h(in)m -(terfaces,)h(the)e(original)f(cop)m(yrigh)m(t)i(holder)e(who)h(places)g -(the)330 3970 y(Program)h(under)f(this)g(License)h(ma)m(y)h(add)e(an)i -(explicit)d(geographical)j(distribution)32 b(limitation)330 -4080 y(excluding)27 b(those)i(coun)m(tries,)g(so)g(that)g(distribution) -c(is)i(p)s(ermitted)h(only)f(in)g(or)i(among)g(coun)m(tries)330 -4189 y(not)k(th)m(us)f(excluded.)47 b(In)32 b(suc)m(h)g(case,)j(this)c -(License)i(incorp)s(orates)f(the)h(limitation)d(as)j(if)f(written)330 -4299 y(in)d(the)i(b)s(o)s(dy)d(of)j(this)e(License.)199 +f(or)h(allegation)i(of)e(paten)m(t)h(infringemen)m(t)e(or)h(for)g(an)m +(y)330 1230 y(other)h(reason)f(\(not)h(limited)g(to)g(paten)m(t)h +(issues\),)f(conditions)g(are)f(imp)s(osed)g(on)g(y)m(ou)h(\(whether)f +(b)m(y)330 1340 y(court)c(order,)h(agreemen)m(t)g(or)f(otherwise\))g +(that)g(con)m(tradict)i(the)d(conditions)h(of)g(this)g(License,)i(they) +330 1450 y(do)34 b(not)g(excuse)h(y)m(ou)f(from)g(the)g(conditions)h +(of)f(this)g(License.)53 b(If)33 b(y)m(ou)i(cannot)g(distribute)e(so)i +(as)330 1559 y(to)f(satisfy)g(sim)m(ultaneously)h(y)m(our)e +(obligations)j(under)c(this)h(License)h(and)f(an)m(y)h(other)g(p)s +(ertinen)m(t)330 1669 y(obligations,)44 b(then)c(as)g(a)g(consequence)h +(y)m(ou)f(ma)m(y)g(not)g(distribute)g(the)g(Program)g(at)g(all.)70 +b(F)-8 b(or)330 1778 y(example,)26 b(if)e(a)h(paten)m(t)g(license)g(w)m +(ould)f(not)g(p)s(ermit)g(ro)m(y)m(alt)m(y-free)j(redistribution)c(of)h +(the)h(Program)330 1888 y(b)m(y)35 b(all)h(those)f(who)f(receiv)m(e)j +(copies)f(directly)f(or)g(indirectly)h(through)e(y)m(ou,)i(then)f(the)g +(only)g(w)m(a)m(y)330 1998 y(y)m(ou)27 b(could)f(satisfy)h(b)s(oth)e +(it)i(and)f(this)g(License)h(w)m(ould)f(b)s(e)g(to)h(refrain)e(en)m +(tirely)j(from)e(distribution)330 2107 y(of)31 b(the)f(Program.)330 +2244 y(If)43 b(an)m(y)g(p)s(ortion)g(of)g(this)h(section)g(is)f(held)g +(in)m(v)-5 b(alid)44 b(or)f(unenforceable)g(under)f(an)m(y)i +(particular)330 2354 y(circumstance,)j(the)d(balance)g(of)f(the)h +(section)g(is)f(in)m(tended)g(to)h(apply)f(and)f(the)i(section)g(as)g +(a)330 2463 y(whole)31 b(is)f(in)m(tended)g(to)h(apply)f(in)g(other)h +(circumstances.)330 2600 y(It)41 b(is)f(not)h(the)f(purp)s(ose)f(of)i +(this)f(section)i(to)f(induce)f(y)m(ou)h(to)g(infringe)f(an)m(y)h +(paten)m(ts)g(or)g(other)330 2710 y(prop)s(ert)m(y)e(righ)m(t)i(claims) +f(or)g(to)h(con)m(test)h(v)-5 b(alidit)m(y)41 b(of)f(an)m(y)g(suc)m(h)g +(claims;)45 b(this)40 b(section)h(has)f(the)330 2819 +y(sole)31 b(purp)s(ose)d(of)j(protecting)g(the)f(in)m(tegrit)m(y)i(of)e +(the)h(free)f(soft)m(w)m(are)h(distribution)f(system,)g(whic)m(h)330 +2929 y(is)35 b(implemen)m(ted)h(b)m(y)f(public)f(license)i(practices.) +56 b(Man)m(y)36 b(p)s(eople)f(ha)m(v)m(e)h(made)f(generous)h(con)m +(tri-)330 3039 y(butions)f(to)h(the)f(wide)h(range)f(of)h(soft)m(w)m +(are)h(distributed)d(through)h(that)h(system)f(in)g(reliance)i(on)330 +3148 y(consisten)m(t)g(application)g(of)e(that)h(system;)i(it)e(is)g +(up)e(to)i(the)g(author/donor)f(to)h(decide)g(if)g(he)f(or)330 +3258 y(she)i(is)h(willing)g(to)g(distribute)f(soft)m(w)m(are)i(through) +e(an)m(y)g(other)h(system)g(and)f(a)g(licensee)i(cannot)330 +3367 y(imp)s(ose)30 b(that)h(c)m(hoice.)330 3504 y(This)26 +b(section)j(is)e(in)m(tended)g(to)h(mak)m(e)g(thoroughly)f(clear)h +(what)f(is)g(b)s(eliev)m(ed)h(to)g(b)s(e)f(a)g(consequence)330 +3614 y(of)k(the)f(rest)h(of)f(this)g(License.)199 3751 +y(8.)61 b(If)35 b(the)g(distribution)f(and/or)h(use)g(of)g(the)g +(Program)g(is)g(restricted)h(in)f(certain)h(coun)m(tries)f(either)330 +3861 y(b)m(y)g(paten)m(ts)h(or)g(b)m(y)f(cop)m(yrigh)m(ted)i(in)m +(terfaces,)h(the)d(original)i(cop)m(yrigh)m(t)g(holder)e(who)g(places)h +(the)330 3970 y(Program)g(under)f(this)h(License)h(ma)m(y)g(add)e(an)i +(explicit)g(geographical)i(distribution)c(limitation)330 +4080 y(excluding)29 b(those)g(coun)m(tries,)h(so)f(that)g(distribution) +f(is)g(p)s(ermitted)h(only)f(in)g(or)h(among)g(coun)m(tries)330 +4189 y(not)k(th)m(us)f(excluded.)48 b(In)32 b(suc)m(h)g(case,)j(this)d +(License)i(incorp)s(orates)f(the)g(limitation)h(as)f(if)g(written)330 +4299 y(in)d(the)h(b)s(o)s(dy)d(of)j(this)f(License.)199 4436 y(9.)61 b(The)26 b(F)-8 b(ree)28 b(Soft)m(w)m(are)g(F)-8 -b(oundation)26 b(ma)m(y)i(publish)23 b(revised)i(and/or)i(new)f(v)m -(ersions)g(of)h(the)g(General)330 4545 y(Public)35 b(License)h(from)h -(time)g(to)g(time.)61 b(Suc)m(h)36 b(new)h(v)m(ersions)f(will)f(b)s(e)h -(similar)e(in)i(spirit)f(to)j(the)330 4655 y(presen)m(t)30 -b(v)m(ersion,)h(but)e(ma)m(y)i(di\013er)e(in)g(detail)h(to)h(address)e -(new)h(problems)f(or)h(concerns.)330 4792 y(Eac)m(h)46 -b(v)m(ersion)e(is)g(giv)m(en)h(a)g(distinguishing)40 -b(v)m(ersion)45 b(n)m(um)m(b)s(er.)83 b(If)44 b(the)h(Program)g(sp)s -(eci\014es)f(a)330 4902 y(v)m(ersion)35 b(n)m(um)m(b)s(er)g(of)h(this)e -(License)i(whic)m(h)e(applies)g(to)j(it)e(and)g(\\an)m(y)i(later)e(v)m -(ersion",)j(y)m(ou)e(ha)m(v)m(e)330 5011 y(the)d(option)f(of)h(follo)m -(wing)e(the)i(terms)g(and)f(conditions)f(either)i(of)g(that)g(v)m -(ersion)f(or)h(of)g(an)m(y)g(later)330 5121 y(v)m(ersion)d(published)c -(b)m(y)k(the)g(F)-8 b(ree)31 b(Soft)m(w)m(are)g(F)-8 -b(oundation.)41 b(If)29 b(the)i(Program)f(do)s(es)g(not)g(sp)s(ecify)f -(a)330 5230 y(v)m(ersion)e(n)m(um)m(b)s(er)g(of)h(this)e(License,)i(y)m -(ou)g(ma)m(y)h(c)m(ho)s(ose)f(an)m(y)h(v)m(ersion)e(ev)m(er)h -(published)c(b)m(y)k(the)g(F)-8 b(ree)330 5340 y(Soft)m(w)m(are)31 -b(F)-8 b(oundation.)p eop +b(oundation)27 b(ma)m(y)h(publish)d(revised)h(and/or)h(new)f(v)m +(ersions)h(of)g(the)g(General)330 4545 y(Public)37 b(License)g(from)g +(time)h(to)f(time.)62 b(Suc)m(h)36 b(new)h(v)m(ersions)g(will)h(b)s(e)e +(similar)h(in)g(spirit)g(to)h(the)330 4655 y(presen)m(t)30 +b(v)m(ersion,)i(but)d(ma)m(y)i(di\013er)f(in)g(detail)i(to)f(address)e +(new)h(problems)g(or)g(concerns.)330 4792 y(Eac)m(h)46 +b(v)m(ersion)f(is)g(giv)m(en)h(a)f(distinguishing)f(v)m(ersion)i(n)m +(um)m(b)s(er.)83 b(If)44 b(the)h(Program)g(sp)s(eci\014es)g(a)330 +4902 y(v)m(ersion)36 b(n)m(um)m(b)s(er)f(of)h(this)f(License)i(whic)m +(h)e(applies)h(to)h(it)f(and)f(\\an)m(y)i(later)f(v)m(ersion",)j(y)m +(ou)d(ha)m(v)m(e)330 5011 y(the)d(option)g(of)g(follo)m(wing)h(the)f +(terms)g(and)f(conditions)h(either)h(of)f(that)g(v)m(ersion)g(or)g(of)g +(an)m(y)g(later)330 5121 y(v)m(ersion)e(published)d(b)m(y)i(the)g(F)-8 +b(ree)31 b(Soft)m(w)m(are)g(F)-8 b(oundation.)42 b(If)29 +b(the)i(Program)f(do)s(es)g(not)g(sp)s(ecify)g(a)330 +5230 y(v)m(ersion)e(n)m(um)m(b)s(er)f(of)h(this)f(License,)i(y)m(ou)f +(ma)m(y)h(c)m(ho)s(ose)f(an)m(y)h(v)m(ersion)f(ev)m(er)g(published)e(b) +m(y)i(the)g(F)-8 b(ree)330 5340 y(Soft)m(w)m(are)31 b(F)-8 +b(oundation.)p eop end %%Page: 5 7 -5 6 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 -b(5)154 299 y(10.)61 b(If)29 b(y)m(ou)g(wish)f(to)i(incorp)s(orate)f -(parts)g(of)g(the)g(Program)h(in)m(to)f(other)h(free)f(programs)g -(whose)g(distri-)330 408 y(bution)e(conditions)g(are)j(di\013eren)m(t,) -e(write)g(to)i(the)f(author)f(to)i(ask)e(for)h(p)s(ermission.)37 -b(F)-8 b(or)29 b(soft)m(w)m(are)330 518 y(whic)m(h)23 -b(is)g(cop)m(yrigh)m(ted)h(b)m(y)g(the)g(F)-8 b(ree)25 -b(Soft)m(w)m(are)g(F)-8 b(oundation,)25 b(write)e(to)i(the)f(F)-8 -b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oun-)330 628 y(dation;)28 -b(w)m(e)g(sometimes)g(mak)m(e)g(exceptions)g(for)f(this.)39 -b(Our)26 b(decision)g(will)f(b)s(e)h(guided)h(b)m(y)g(the)h(t)m(w)m(o) -330 737 y(goals)23 b(of)g(preserving)e(the)h(free)h(status)g(of)f(all)g -(deriv)-5 b(ativ)m(es)22 b(of)g(our)g(free)h(soft)m(w)m(are)h(and)e(of) -h(promoting)330 847 y(the)31 b(sharing)e(and)g(reuse)h(of)h(soft)m(w)m +TeXDict begin 5 6 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(5)154 299 y(10.)61 b(If)29 b(y)m(ou)g(wish)g(to)h +(incorp)s(orate)g(parts)f(of)g(the)g(Program)h(in)m(to)g(other)g(free)f +(programs)g(whose)g(distri-)330 408 y(bution)f(conditions)h(are)h +(di\013eren)m(t,)f(write)g(to)h(the)f(author)f(to)i(ask)e(for)h(p)s +(ermission.)39 b(F)-8 b(or)29 b(soft)m(w)m(are)330 518 +y(whic)m(h)24 b(is)g(cop)m(yrigh)m(ted)h(b)m(y)f(the)g(F)-8 +b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oundation,)26 b(write)e(to)h(the)f +(F)-8 b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oun-)330 628 +y(dation;)29 b(w)m(e)f(sometimes)h(mak)m(e)f(exceptions)h(for)e(this.) +40 b(Our)26 b(decision)i(will)g(b)s(e)e(guided)i(b)m(y)f(the)h(t)m(w)m +(o)330 737 y(goals)c(of)f(preserving)f(the)g(free)h(status)g(of)f(all)i +(deriv)-5 b(ativ)m(es)24 b(of)e(our)g(free)h(soft)m(w)m(are)h(and)e(of) +h(promoting)330 847 y(the)31 b(sharing)f(and)f(reuse)h(of)h(soft)m(w)m (are)h(generally)-8 b(.)330 995 y Fr(NO)45 b(W)-15 b(ARRANTY)154 1187 y Fs(11.)61 b(BECA)m(USE)40 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g (FREE)g(OF)h(CHAR)m(GE,)h(THERE)e(IS)g(NO)330 1297 y(W)-10 @@ -2420,26 +3840,26 @@ b(OR)g(A)h(F)-10 b(AILURE)40 b(OF)g(THE)330 3185 y(PR)m(OGRAM)f(TO)f (SUCH)330 3294 y(HOLDER)33 b(OR)h(OTHER)f(P)-8 b(AR)g(TY)34 b(HAS)f(BEEN)h(AD)m(VISED)g(OF)g(THE)f(POSSIBILITY)f(OF)330 3404 y(SUCH)e(D)m(AMA)m(GES.)150 3661 y Fr(END)45 b(OF)g(TERMS)f(AND)h -(CONDITIONS)p eop +(CONDITIONS)p eop end %%Page: 6 8 -6 7 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 -b(6)150 299 y Fr(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11 +TeXDict begin 6 7 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(6)150 299 y Fr(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11 b(erms)45 b(to)g(Y)-11 b(our)44 b(New)i(Programs)275 -503 y Fs(If)38 b(y)m(ou)i(dev)m(elop)f(a)g(new)g(program,)j(and)c(y)m -(ou)i(w)m(an)m(t)g(it)e(to)i(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible) -36 b(use)j(to)150 612 y(the)i(public,)g(the)h(b)s(est)e(w)m(a)m(y)i(to) -g(ac)m(hiev)m(e)g(this)e(is)g(to)i(mak)m(e)g(it)f(free)g(soft)m(w)m -(are)h(whic)m(h)e(ev)m(ery)m(one)j(can)150 722 y(redistribute)28 -b(and)i(c)m(hange)h(under)e(these)i(terms.)275 868 y(T)-8 -b(o)29 b(do)h(so,)g(attac)m(h)h(the)f(follo)m(wing)e(notices)h(to)i -(the)e(program.)40 b(It)30 b(is)f(safest)h(to)g(attac)m(h)h(them)f(to)g -(the)150 978 y(start)j(of)g(eac)m(h)h(source)e(\014le)g(to)h(most)g -(e\013ectiv)m(ely)h(con)m(v)m(ey)g(the)e(exclusion)g(of)g(w)m(arran)m -(t)m(y;)j(and)d(eac)m(h)i(\014le)150 1087 y(should)28 -b(ha)m(v)m(e)k(at)f(least)g(the)f(\\cop)m(yrigh)m(t")i(line)d(and)g(a)i -(p)s(oin)m(ter)f(to)h(where)f(the)g(full)e(notice)j(is)e(found.)390 -1227 y Fo(one)i(line)d(to)j(giv)m(e)g(the)g(program's)f(name)h(and)e -(an)i(idea)f(of)g(what)g(it)g(do)s(es.)390 1331 y Fn(Copyright)45 +503 y Fs(If)38 b(y)m(ou)i(dev)m(elop)g(a)f(new)g(program,)j(and)c(y)m +(ou)i(w)m(an)m(t)g(it)f(to)h(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible) +d(use)h(to)150 612 y(the)i(public,)i(the)f(b)s(est)e(w)m(a)m(y)i(to)g +(ac)m(hiev)m(e)h(this)e(is)g(to)h(mak)m(e)g(it)g(free)f(soft)m(w)m(are) +h(whic)m(h)f(ev)m(ery)m(one)i(can)150 722 y(redistribute)30 +b(and)g(c)m(hange)h(under)e(these)i(terms.)275 868 y(T)-8 +b(o)29 b(do)h(so,)g(attac)m(h)h(the)f(follo)m(wing)h(notices)f(to)h +(the)e(program.)40 b(It)30 b(is)g(safest)g(to)g(attac)m(h)h(them)f(to)g +(the)150 978 y(start)j(of)g(eac)m(h)h(source)e(\014le)h(to)g(most)g +(e\013ectiv)m(ely)j(con)m(v)m(ey)e(the)e(exclusion)i(of)e(w)m(arran)m +(t)m(y;)j(and)d(eac)m(h)i(\014le)150 1087 y(should)29 +b(ha)m(v)m(e)j(at)f(least)h(the)e(\\cop)m(yrigh)m(t")j(line)e(and)e(a)i +(p)s(oin)m(ter)g(to)g(where)f(the)g(full)g(notice)i(is)e(found.)390 +1227 y Fo(one)h(line)f(to)h(giv)m(e)h(the)f(program's)f(name)h(and)e +(an)i(idea)g(of)f(what)g(it)h(do)s(es.)390 1331 y Fn(Copyright)45 b(\(C\))i Fo(y)m(ear)103 b(name)30 b(of)h(author)390 1539 y Fn(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h (redistribute)e(it)i(and/or)390 1642 y(modify)f(it)h(under)g(the)g @@ -2456,1339 +3876,1350 @@ b(\(C\))i Fo(y)m(ear)103 b(name)30 b(of)h(author)390 (General)f(Public)g(License)390 2680 y(along)g(with)h(this)g(program;)e (if)i(not,)g(write)f(to)i(the)e(Free)h(Software)390 2784 y(Foundation,)e(Inc.,)h(59)h(Temple)f(Place,)g(Suite)h(330,)f(Boston,)g -(MA)h(02111-1307,)e(USA.)275 2930 y Fs(Also)30 b(add)f(information)g -(on)h(ho)m(w)h(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)h(and)f -(pap)s(er)f(mail.)275 3076 y(If)f(the)g(program)h(is)e(in)m(teractiv)m -(e,)j(mak)m(e)g(it)e(output)g(a)h(short)f(notice)h(lik)m(e)f(this)f -(when)h(it)g(starts)h(in)e(an)150 3185 y(in)m(teractiv)m(e)k(mo)s(de:) -390 3325 y Fn(Gnomovision)45 b(version)h(69,)g(Copyright)g(\(C\))h -Fo(y)m(ear)103 b(name)30 b(of)g(author)390 3429 y Fn(Gnomovision)45 -b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for)i(details)390 -3533 y(type)g(`show)f(w'.)95 b(This)46 b(is)h(free)g(software,)e(and)i -(you)g(are)g(welcome)390 3637 y(to)g(redistribute)e(it)i(under)f -(certain)g(conditions;)f(type)h(`show)h(c')390 3740 y(for)g(details.) -275 3886 y Fs(The)27 b(h)m(yp)s(othetical)g(commands)h(`)p -Fn(show)h(w)p Fs(')f(and)f(`)p Fn(show)j(c)p Fs(')d(should)f(sho)m(w)i -(the)g(appropriate)f(parts)h(of)150 3996 y(the)38 b(General)g(Public)d -(License.)63 b(Of)37 b(course,)j(the)f(commands)e(y)m(ou)h(use)g(ma)m -(y)g(b)s(e)f(called)g(something)150 4106 y(other)25 b(than)f(`)p -Fn(show)29 b(w)p Fs(')c(and)f(`)p Fn(show)29 b(c)p Fs(';)e(they)d -(could)g(ev)m(en)h(b)s(e)f(mouse-clic)m(ks)g(or)h(men)m(u)f -(items|whatev)m(er)150 4215 y(suits)29 b(y)m(our)h(program.)275 -4361 y(Y)-8 b(ou)28 b(should)e(also)i(get)h(y)m(our)f(emplo)m(y)m(er)g -(\(if)f(y)m(ou)h(w)m(ork)g(as)h(a)f(programmer\))g(or)g(y)m(our)f(sc)m -(ho)s(ol,)i(if)e(an)m(y)-8 b(,)150 4471 y(to)34 b(sign)f(a)g(\\cop)m -(yrigh)m(t)i(disclaimer")c(for)j(the)f(program,)h(if)f(necessary)-8 -b(.)51 b(Here)34 b(is)e(a)i(sample;)g(alter)g(the)150 +(MA)h(02111-1307,)e(USA.)275 2930 y Fs(Also)31 b(add)e(information)i +(on)f(ho)m(w)h(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)j(and)d +(pap)s(er)f(mail.)275 3076 y(If)f(the)g(program)h(is)f(in)m(teractiv)m +(e,)k(mak)m(e)e(it)f(output)f(a)h(short)f(notice)i(lik)m(e)g(this)e +(when)g(it)h(starts)g(in)f(an)150 3185 y(in)m(teractiv)m(e)33 +b(mo)s(de:)390 3325 y Fn(Gnomovision)45 b(version)h(69,)g(Copyright)g +(\(C\))h Fo(y)m(ear)103 b(name)30 b(of)g(author)390 3429 +y Fn(Gnomovision)45 b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for) +i(details)390 3533 y(type)g(`show)f(w'.)95 b(This)46 +b(is)h(free)g(software,)e(and)i(you)g(are)g(welcome)390 +3637 y(to)g(redistribute)e(it)i(under)f(certain)g(conditions;)f(type)h +(`show)h(c')390 3740 y(for)g(details.)275 3886 y Fs(The)27 +b(h)m(yp)s(othetical)i(commands)f(`)p Fn(show)h(w)p Fs(')f(and)f(`)p +Fn(show)j(c)p Fs(')d(should)g(sho)m(w)h(the)g(appropriate)g(parts)g(of) +150 3996 y(the)38 b(General)h(Public)e(License.)64 b(Of)37 +b(course,)j(the)f(commands)e(y)m(ou)h(use)g(ma)m(y)g(b)s(e)f(called)i +(something)150 4106 y(other)25 b(than)f(`)p Fn(show)29 +b(w)p Fs(')c(and)f(`)p Fn(show)29 b(c)p Fs(';)e(they)d(could)h(ev)m(en) +g(b)s(e)f(mouse-clic)m(ks)i(or)f(men)m(u)f(items|whatev)m(er)150 +4215 y(suits)30 b(y)m(our)g(program.)275 4361 y(Y)-8 +b(ou)28 b(should)f(also)i(get)g(y)m(our)f(emplo)m(y)m(er)h(\(if)f(y)m +(ou)g(w)m(ork)g(as)h(a)f(programmer\))g(or)g(y)m(our)f(sc)m(ho)s(ol,)j +(if)e(an)m(y)-8 b(,)150 4471 y(to)34 b(sign)g(a)f(\\cop)m(yrigh)m(t)j +(disclaimer")e(for)g(the)f(program,)h(if)g(necessary)-8 +b(.)51 b(Here)34 b(is)f(a)h(sample;)h(alter)g(the)150 4580 y(names:)390 4720 y Fn(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f (all)i(copyright)390 4824 y(interest)f(in)h(the)g(program)e (`Gnomovision')390 4928 y(\(which)h(makes)g(passes)h(at)g(compilers\))e -(written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fo(signature)30 -b(of)g(T)m(y)h(Co)s(on)p Fn(,)47 b(1)g(April)g(1989)390 -5343 y(Ty)g(Coon,)g(President)e(of)i(Vice)p eop +(written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fo(signature)31 +b(of)f(T)m(y)h(Co)s(on)p Fn(,)47 b(1)g(April)g(1989)390 +5343 y(Ty)g(Coon,)g(President)e(of)i(Vice)p eop end %%Page: 7 9 -7 8 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h(LICENSE)2052 -b(7)275 299 y(This)19 b(General)h(Public)f(License)h(do)s(es)h(not)g(p) -s(ermit)e(incorp)s(orating)g(y)m(our)i(program)f(in)m(to)h(proprietary) -150 408 y(programs.)38 b(If)22 b(y)m(our)h(program)f(is)g(a)h -(subroutine)e(library)-8 b(,)23 b(y)m(ou)g(ma)m(y)g(consider)f(it)g -(more)h(useful)e(to)j(p)s(ermit)150 518 y(linking)33 -b(proprietary)i(applications)g(with)g(the)h(library)-8 -b(.)57 b(If)35 b(this)h(is)f(what)h(y)m(ou)h(w)m(an)m(t)g(to)g(do,)h -(use)e(the)150 628 y(GNU)31 b(Library)e(General)h(Public)e(License)i -(instead)f(of)i(this)e(License.)p eop +TeXDict begin 7 8 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(7)275 299 y(This)20 b(General)h(Public)g(License)g(do)s +(es)g(not)g(p)s(ermit)f(incorp)s(orating)h(y)m(our)g(program)f(in)m(to) +i(proprietary)150 408 y(programs.)38 b(If)22 b(y)m(our)h(program)f(is)h +(a)g(subroutine)f(library)-8 b(,)25 b(y)m(ou)e(ma)m(y)g(consider)g(it)g +(more)g(useful)f(to)i(p)s(ermit)150 518 y(linking)36 +b(proprietary)g(applications)i(with)e(the)g(library)-8 +b(.)59 b(If)35 b(this)i(is)f(what)g(y)m(ou)h(w)m(an)m(t)g(to)g(do,)h +(use)e(the)150 628 y(GNU)31 b(Library)f(General)h(Public)f(License)h +(instead)f(of)h(this)f(License.)p eop end %%Page: 8 10 -8 9 bop 150 -116 a Fs(Con)m(tributors)29 b(to)i(GNU)g -Fn(gperf)e Fs(Utilit)m(y)2137 b(8)150 299 y Fp(Con)l(tributors)51 -b(to)i(GNU)h Fm(gperf)f Fp(Utilit)l(y)225 533 y Fq(\017)60 -b Fs(The)45 b(GNU)h Fn(gperf)d Fs(p)s(erfect)j(hash)e(function)g -(generator)j(utilit)m(y)c(w)m(as)j(written)e(in)g(GNU)i(C)p -Fn(++)330 643 y Fs(b)m(y)e(Douglas)h(C.)g(Sc)m(hmidt.)82 -b(The)44 b(general)h(idea)f(for)g(the)h(p)s(erfect)g(hash)e(function)h -(generator)330 752 y(w)m(as)34 b(inspired)c(b)m(y)j(Keith)f(Bostic's)j -(algorithm)d(written)g(in)g(C,)h(and)g(distributed)d(to)k(net.sources) -330 862 y(around)42 b(1984.)79 b(The)42 b(curren)m(t)g(program)h(is)f -(a)h(hea)m(vily)f(mo)s(di\014ed,)h(enhanced,)j(and)c(extended)330 -971 y(implemen)m(tation)36 b(of)h(Keith's)f(basic)h(idea,)h(created)g -(at)g(the)f(Univ)m(ersit)m(y)f(of)i(California,)e(Irvine.)330 -1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)g(should)f(b)s(e)g +TeXDict begin 8 9 bop 150 -116 a Fs(Con)m(tributors)30 +b(to)h(GNU)g Fn(gperf)e Fs(Utilit)m(y)2140 b(8)150 299 +y Fp(Con)l(tributors)50 b(to)j(GNU)h Fm(gperf)f Fp(Utilit)l(y)225 +533 y Fq(\017)60 b Fs(The)45 b(GNU)h Fn(gperf)d Fs(p)s(erfect)j(hash)e +(function)h(generator)i(utilit)m(y)f(w)m(as)g(written)f(in)g(GNU)h(C)p +Fn(++)330 643 y Fs(b)m(y)e(Douglas)i(C.)f(Sc)m(hmidt.)83 +b(The)44 b(general)i(idea)f(for)f(the)h(p)s(erfect)g(hash)e(function)i +(generator)330 752 y(w)m(as)34 b(inspired)e(b)m(y)h(Keith)g(Bostic's)j +(algorithm)e(written)f(in)g(C,)g(and)g(distributed)f(to)i(net.sources) +330 862 y(around)42 b(1984.)79 b(The)42 b(curren)m(t)g(program)h(is)g +(a)g(hea)m(vily)h(mo)s(di\014ed,)g(enhanced,)i(and)c(extended)330 +971 y(implemen)m(tation)d(of)e(Keith's)g(basic)h(idea,)h(created)f(at)g +(the)f(Univ)m(ersit)m(y)h(of)g(California,)h(Irvine.)330 +1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)h(should)f(b)s(e)f (rep)s(orted)h(to)h Fn()p Fs(.)225 -1215 y Fq(\017)60 b Fs(Sp)s(ecial)31 b(thanks)i(is)f(extended)h(to)h -(Mic)m(hael)f(Tiemann)f(and)h(Doug)h(Lea,)g(for)f(pro)m(viding)e(a)j -(useful)330 1325 y(compiler,)29 b(and)h(for)g(giving)f(me)i(a)g(forum)e -(to)i(exhibit)e(m)m(y)h(creation.)330 1460 y(In)22 b(addition,)g(Adam)h -(de)f(Bo)s(or)h(and)f(Nels)h(Olson)e(pro)m(vided)g(man)m(y)i(tips)e -(and)h(insigh)m(ts)f(that)i(greatly)330 1569 y(help)s(ed)28 -b(impro)m(v)m(e)j(the)f(qualit)m(y)g(and)g(functionalit)m(y)e(of)j -Fn(gperf)p Fs(.)225 1704 y Fq(\017)60 b Fs(Bruno)26 b(Haible)g -(enhanced)h(and)f(optimized)g(the)h(searc)m(h)h(algorithm.)39 -b(He)27 b(also)g(rewrote)h(the)f(input)330 1813 y(routines)i(and)h(the) -h(output)f(routines)f(for)h(b)s(etter)g(reliabilit)m(y)-8 -b(,)28 b(and)i(added)g(a)h(testsuite.)p eop +1215 y Fq(\017)60 b Fs(Sp)s(ecial)33 b(thanks)g(is)g(extended)g(to)h +(Mic)m(hael)h(Tiemann)e(and)g(Doug)h(Lea,)g(for)f(pro)m(viding)g(a)h +(useful)330 1325 y(compiler,)d(and)f(for)g(giving)h(me)g(a)g(forum)e +(to)i(exhibit)g(m)m(y)f(creation.)330 1460 y(In)22 b(addition,)i(Adam)f +(de)f(Bo)s(or)h(and)f(Nels)i(Olson)e(pro)m(vided)g(man)m(y)h(tips)f +(and)g(insigh)m(ts)h(that)g(greatly)330 1569 y(help)s(ed)29 +b(impro)m(v)m(e)j(the)e(qualit)m(y)i(and)e(functionalit)m(y)h(of)g +Fn(gperf)p Fs(.)225 1704 y Fq(\017)60 b Fs(Bruno)26 b(Haible)i +(enhanced)f(and)f(optimized)i(the)f(searc)m(h)h(algorithm.)41 +b(He)27 b(also)h(rewrote)g(the)f(input)330 1813 y(routines)j(and)g(the) +h(output)f(routines)g(for)g(b)s(etter)g(reliabilit)m(y)-8 +b(,)33 b(and)d(added)g(a)h(testsuite.)p eop end %%Page: 9 11 -9 10 bop 150 -116 a Fs(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2591 -b(9)150 299 y Fp(1)80 b(In)l(tro)t(duction)275 533 y -Fn(gperf)31 b Fs(is)i(a)g(p)s(erfect)h(hash)e(function)g(generator)j -(written)d(in)g(C)p Fn(++)p Fs(.)49 b(It)33 b(transforms)g(an)g -Fo(n)f Fs(elemen)m(t)150 643 y(user-sp)s(eci\014ed)j(k)m(eyw)m(ord)j -(set)g Fo(W)49 b Fs(in)m(to)38 b(a)f(p)s(erfect)h(hash)e(function)g -Fo(F)p Fs(.)i Fo(F)44 b Fs(uniquely)35 b(maps)i(k)m(eyw)m(ords)150 -752 y(in)d Fo(W)47 b Fs(on)m(to)36 b(the)f(range)g(0..)p -Fo(k)p Fs(,)j(where)c Fo(k)40 b Fn(>)p Fs(=)35 b Fo(n-1)p -Fs(.)54 b(If)35 b Fo(k)40 b Fs(=)35 b Fo(n-1)42 b Fs(then)35 -b Fo(F)42 b Fs(is)34 b(a)h Fl(minimal)46 b Fs(p)s(erfect)35 -b(hash)150 862 y(function.)67 b Fn(gperf)39 b Fs(generates)i(a)f(0..)p -Fo(k)46 b Fs(elemen)m(t)40 b(static)g(lo)s(okup)f(table)g(and)g(a)i -(pair)d(of)i(C)f(functions.)150 971 y(These)34 b(functions)f(determine) -h(whether)f(a)i(giv)m(en)f(c)m(haracter)i(string)e Fo(s)k -Fs(o)s(ccurs)c(in)f Fo(W)p Fs(,)i(using)d(at)k(most)150 -1081 y(one)31 b(prob)s(e)e(in)m(to)h(the)h(lo)s(okup)e(table.)275 -1215 y Fn(gperf)22 b Fs(curren)m(tly)g(generates)k(the)d(reserv)m(ed)h -(k)m(eyw)m(ord)g(recognizer)h(for)e(lexical)g(analyzers)g(in)g(sev)m -(eral)150 1325 y(pro)s(duction)29 b(and)h(researc)m(h)h(compilers)e -(and)i(language)g(pro)s(cessing)e(to)s(ols,)i(including)c(GNU)32 -b(C,)e(GNU)150 1435 y(C)p Fn(++)p Fs(,)24 b(GNU)f(Ja)m(v)-5 -b(a,)26 b(GNU)d(P)m(ascal,)i(GNU)f(Mo)s(dula)e(3,)j(and)d(GNU)h(inden)m -(t.)37 b(Complete)23 b(C)p Fn(++)f Fs(source)h(co)s(de)150 -1544 y(for)42 b Fn(gperf)f Fs(is)g(a)m(v)-5 b(ailable)41 -b(from)h Fn(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p +TeXDict begin 9 10 bop 150 -116 a Fs(Chapter)30 b(1:)41 +b(In)m(tro)s(duction)2592 b(9)150 299 y Fp(1)80 b(In)l(tro)t(duction) +275 533 y Fn(gperf)31 b Fs(is)j(a)f(p)s(erfect)h(hash)e(function)h +(generator)i(written)e(in)g(C)p Fn(++)p Fs(.)49 b(It)33 +b(transforms)g(an)g Fo(n)f Fs(elemen)m(t)150 643 y(user-sp)s(eci\014ed) +k(k)m(eyw)m(ord)i(set)g Fo(W)49 b Fs(in)m(to)39 b(a)e(p)s(erfect)h +(hash)e(function)h Fo(F)p Fs(.)h Fo(F)44 b Fs(uniquely)37 +b(maps)g(k)m(eyw)m(ords)150 752 y(in)e Fo(W)47 b Fs(on)m(to)36 +b(the)f(range)g(0..)p Fo(k)p Fs(,)j(where)c Fo(k)40 b +Fn(>)p Fs(=)35 b Fo(n-1)p Fs(.)54 b(If)35 b Fo(k)40 b +Fs(=)35 b Fo(n-1)42 b Fs(then)35 b Fo(F)42 b Fs(is)35 +b(a)g Fl(minimal)46 b Fs(p)s(erfect)35 b(hash)150 862 +y(function.)68 b Fn(gperf)39 b Fs(generates)i(a)f(0..)p +Fo(k)46 b Fs(elemen)m(t)41 b(static)g(lo)s(okup)f(table)g(and)f(a)i +(pair)e(of)h(C)f(functions.)150 971 y(These)34 b(functions)g(determine) +h(whether)e(a)i(giv)m(en)g(c)m(haracter)h(string)f Fo(s)j +Fs(o)s(ccurs)c(in)g Fo(W)p Fs(,)h(using)e(at)j(most)150 +1081 y(one)31 b(prob)s(e)e(in)m(to)i(the)g(lo)s(okup)f(table.)275 +1215 y Fn(gperf)22 b Fs(curren)m(tly)h(generates)j(the)d(reserv)m(ed)h +(k)m(eyw)m(ord)g(recognizer)i(for)d(lexical)j(analyzers)e(in)g(sev)m +(eral)150 1325 y(pro)s(duction)30 b(and)g(researc)m(h)h(compilers)g +(and)g(language)h(pro)s(cessing)e(to)s(ols,)i(including)e(GNU)i(C,)e +(GNU)150 1435 y(C)p Fn(++)p Fs(,)24 b(GNU)f(Ja)m(v)-5 +b(a,)26 b(GNU)d(P)m(ascal,)j(GNU)e(Mo)s(dula)f(3,)i(and)d(GNU)h(inden)m +(t.)38 b(Complete)24 b(C)p Fn(++)e Fs(source)h(co)s(de)150 +1544 y(for)42 b Fn(gperf)f Fs(is)h(a)m(v)-5 b(ailable)44 +b(from)e Fn(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p Fs(.)70 b(A)42 b(pap)s(er)f(describing)150 1654 y Fn(gperf)p -Fs('s)d(design)h(and)g(implemen)m(tation)g(in)f(greater)j(detail)e(is)g -(a)m(v)-5 b(ailable)39 b(in)g(the)h(Second)f(USENIX)150 -1763 y(C)p Fn(++)29 b Fs(Conference)g(pro)s(ceedings)g(or)h(from)f +Fs('s)d(design)i(and)f(implemen)m(tation)j(in)d(greater)i(detail)g(is)f +(a)m(v)-5 b(ailable)42 b(in)e(the)g(Second)f(USENIX)150 +1763 y(C)p Fn(++)29 b Fs(Conference)g(pro)s(ceedings)h(or)g(from)f Fn(http://www.cs.wustl.edu)o(/~sc)o(hmid)o(t/r)o(esum)o(e.ht)o(ml)p -Fs(.)p eop +Fs(.)p eop end %%Page: 10 12 -10 11 bop 150 -116 a Fs(Chapter)30 b(2:)41 b(Static)31 -b(searc)m(h)g(structures)e(and)h(GNU)h Fn(gperf)1425 -b Fs(10)150 299 y Fp(2)80 b(Static)54 b(searc)l(h)f(structures)e(and)j -(GNU)f Fm(gperf)275 533 y Fs(A)24 b Fo(static)h(searc)m(h)g(structure)k -Fs(is)24 b(an)g(Abstract)h(Data)i(T)m(yp)s(e)c(with)h(certain)g -(fundamen)m(tal)f(op)s(erations,)150 643 y(e.g.,)32 b -Fl(initialize)p Fs(,)g Fl(insert)p Fs(,)f(and)f Fl(r)-5 -b(etrieve)p Fs(.)42 b(Conceptually)-8 b(,)30 b(all)g(insertions)f(o)s -(ccur)h(b)s(efore)h(an)m(y)g(retriev)-5 b(als.)150 752 -y(In)20 b(practice,)k Fn(gperf)19 b Fs(generates)k(a)e -Fl(static)27 b Fs(arra)m(y)22 b(con)m(taining)e(searc)m(h)i(set)f(k)m -(eyw)m(ords)h(and)e(an)m(y)h(asso)s(ciated)150 862 y(attributes)36 -b(sp)s(eci\014ed)f(b)m(y)i(the)f(user.)59 b(Th)m(us,)37 -b(there)g(is)f(essen)m(tially)f(no)i(execution-time)g(cost)g(for)g(the) -150 971 y(insertions.)h(It)27 b(is)f(a)h(useful)f(data)h(structure)g -(for)g(represen)m(ting)f Fl(static)k(se)-5 b(ar)g(ch)32 -b(sets)p Fs(.)40 b(Static)27 b(searc)m(h)h(sets)150 1081 -y(o)s(ccur)c(frequen)m(tly)g(in)f(soft)m(w)m(are)j(system)e -(applications.)37 b(T)m(ypical)23 b(static)i(searc)m(h)g(sets)g -(include)d(compiler)150 1191 y(reserv)m(ed)42 b(w)m(ords,)j(assem)m -(bler)d(instruction)e(op)s(co)s(des,)45 b(and)c(built-in)e(shell)i(in)m -(terpreter)g(commands.)150 1300 y(Searc)m(h)h(set)g(mem)m(b)s(ers,)h -(called)e Fo(k)m(eyw)m(ords)p Fs(,)k(are)c(inserted)g(in)m(to)g(the)h -(structure)f(only)f(once,)45 b(usually)150 1410 y(during)28 -b(program)i(initialization,)e(and)i(are)g(not)h(generally)f(mo)s -(di\014ed)e(at)j(run-time.)275 1544 y(Numerous)c(static)h(searc)m(h)h -(structure)e(implemen)m(tations)f(exist,)j(e.g.,)g(arra)m(ys,)g(link)m -(ed)e(lists,)g(binary)150 1654 y(searc)m(h)45 b(trees,)j(digital)42 -b(searc)m(h)j(tries,)i(and)c(hash)g(tables.)82 b(Di\013eren)m(t)44 -b(approac)m(hes)h(o\013er)f(trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e -(space)h(utilization)c(and)j(searc)m(h)g(time)f(e\016ciency)-8 -b(.)76 b(F)-8 b(or)42 b(example,)j(an)c Fo(n)h Fs(elemen)m(t)g(sorted) -150 1873 y(arra)m(y)e(is)f(space)i(e\016cien)m(t,)h(though)e(the)g(a)m -(v)m(erage-case)k(time)39 b(complexit)m(y)h(for)g(retriev)-5 -b(al)39 b(op)s(erations)150 1983 y(using)30 b(binary)f(searc)m(h)j(is)e -(prop)s(ortional)f(to)i(log)h Fo(n)p Fs(.)42 b(Con)m(v)m(ersely)-8 -b(,)32 b(hash)e(table)h(implemen)m(tations)f(often)150 -2092 y(lo)s(cate)c(a)g(table)f(en)m(try)h(in)e(constan)m(t)j(time,)f -(but)f(t)m(ypically)f(imp)s(ose)g(additional)g(memory)h(o)m(v)m(erhead) -i(and)150 2202 y(exhibit)i(p)s(o)s(or)g(w)m(orst)i(case)g(p)s +TeXDict begin 10 11 bop 150 -116 a Fs(Chapter)30 b(2:)41 +b(Static)32 b(searc)m(h)f(structures)e(and)h(GNU)h Fn(gperf)1425 +b Fs(10)150 299 y Fp(2)80 b(Static)53 b(searc)l(h)g(structures)e(and)j +(GNU)f Fm(gperf)275 533 y Fs(A)24 b Fo(static)i(searc)m(h)f(structure)k +Fs(is)c(an)f(Abstract)h(Data)i(T)m(yp)s(e)c(with)i(certain)g(fundamen)m +(tal)f(op)s(erations,)150 643 y(e.g.,)32 b Fl(initialize)p +Fs(,)g Fl(insert)p Fs(,)f(and)f Fl(r)-5 b(etrieve)p Fs(.)42 +b(Conceptually)-8 b(,)32 b(all)g(insertions)f(o)s(ccur)f(b)s(efore)h +(an)m(y)g(retriev)-5 b(als.)150 752 y(In)20 b(practice,)25 +b Fn(gperf)19 b Fs(generates)k(a)e Fl(static)27 b Fs(arra)m(y)22 +b(con)m(taining)g(searc)m(h)g(set)f(k)m(eyw)m(ords)h(and)e(an)m(y)h +(asso)s(ciated)150 862 y(attributes)37 b(sp)s(eci\014ed)f(b)m(y)h(the)f +(user.)59 b(Th)m(us,)37 b(there)g(is)g(essen)m(tially)h(no)f +(execution-time)i(cost)e(for)g(the)150 971 y(insertions.)j(It)27 +b(is)g(a)g(useful)g(data)g(structure)g(for)g(represen)m(ting)g +Fl(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fs(.)40 b(Static)28 +b(searc)m(h)g(sets)150 1081 y(o)s(ccur)c(frequen)m(tly)h(in)f(soft)m(w) +m(are)i(system)e(applications.)40 b(T)m(ypical)25 b(static)h(searc)m(h) +f(sets)g(include)f(compiler)150 1191 y(reserv)m(ed)42 +b(w)m(ords,)j(assem)m(bler)e(instruction)f(op)s(co)s(des,)j(and)c +(built-in)h(shell)h(in)m(terpreter)f(commands.)150 1300 +y(Searc)m(h)g(set)g(mem)m(b)s(ers,)h(called)g Fo(k)m(eyw)m(ords)p +Fs(,)i(are)c(inserted)h(in)m(to)g(the)g(structure)f(only)g(once,)k +(usually)150 1410 y(during)29 b(program)h(initialization,)k(and)c(are)g +(not)h(generally)h(mo)s(di\014ed)d(at)i(run-time.)275 +1544 y(Numerous)c(static)i(searc)m(h)g(structure)e(implemen)m(tations)i +(exist,)h(e.g.,)f(arra)m(ys,)g(link)m(ed)g(lists,)g(binary)150 +1654 y(searc)m(h)45 b(trees,)j(digital)d(searc)m(h)g(tries,)j(and)43 +b(hash)g(tables.)83 b(Di\013eren)m(t)45 b(approac)m(hes)g(o\013er)f +(trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e(space)h(utilization)g(and)f +(searc)m(h)g(time)g(e\016ciency)-8 b(.)77 b(F)-8 b(or)42 +b(example,)k(an)41 b Fo(n)h Fs(elemen)m(t)h(sorted)150 +1873 y(arra)m(y)d(is)g(space)h(e\016cien)m(t,)i(though)d(the)g(a)m(v)m +(erage-case)k(time)c(complexit)m(y)i(for)e(retriev)-5 +b(al)41 b(op)s(erations)150 1983 y(using)31 b(binary)f(searc)m(h)i(is)f +(prop)s(ortional)g(to)g(log)i Fo(n)p Fs(.)42 b(Con)m(v)m(ersely)-8 +b(,)33 b(hash)d(table)i(implemen)m(tations)h(often)150 +2092 y(lo)s(cate)27 b(a)f(table)g(en)m(try)g(in)f(constan)m(t)i(time,)g +(but)e(t)m(ypically)i(imp)s(ose)e(additional)i(memory)e(o)m(v)m(erhead) +i(and)150 2202 y(exhibit)k(p)s(o)s(or)e(w)m(orst)i(case)g(p)s (erformance.)275 2336 y Fl(Minimal)26 b(p)-5 b(erfe)g(ct)28 -b(hash)f(functions)32 b Fs(pro)m(vide)23 b(an)g(optimal)g(solution)f -(for)h(a)h(particular)e(class)i(of)f(static)150 2446 -y(searc)m(h)31 b(sets.)41 b(A)31 b(minimal)c(p)s(erfect)j(hash)g -(function)f(is)h(de\014ned)f(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)225 -2580 y Fq(\017)60 b Fs(It)34 b(allo)m(ws)g(k)m(eyw)m(ord)h(recognition) -f(in)f(a)i(static)g(searc)m(h)g(set)g(using)e(at)i(most)g -Fl(one)41 b Fs(prob)s(e)33 b(in)m(to)i(the)330 2690 y(hash)30 -b(table.)40 b(This)29 b(represen)m(ts)h(the)h(\\p)s(erfect")g(prop)s -(ert)m(y)-8 b(.)225 2824 y Fq(\017)60 b Fs(The)35 b(actual)i(memory)f -(allo)s(cated)g(to)g(store)h(the)f(k)m(eyw)m(ords)h(is)e(precisely)f -(large)i(enough)g(for)g(the)330 2934 y(k)m(eyw)m(ord)31 -b(set,)g(and)f Fl(no)j(lar)-5 b(ger)p Fs(.)42 b(This)28 -b(is)i(the)g(\\minimal")f(prop)s(ert)m(y)-8 b(.)275 3093 -y(F)g(or)38 b(most)g(applications)e(it)h(is)g(far)g(easier)h(to)g -(generate)h Fl(p)-5 b(erfe)g(ct)47 b Fs(hash)37 b(functions)f(than)i +b(hash)f(functions)32 b Fs(pro)m(vide)24 b(an)f(optimal)i(solution)f +(for)f(a)h(particular)g(class)h(of)e(static)150 2446 +y(searc)m(h)31 b(sets.)41 b(A)31 b(minimal)f(p)s(erfect)g(hash)g +(function)g(is)h(de\014ned)e(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)225 +2580 y Fq(\017)60 b Fs(It)34 b(allo)m(ws)i(k)m(eyw)m(ord)f(recognition) +h(in)e(a)h(static)h(searc)m(h)f(set)g(using)f(at)h(most)g +Fl(one)41 b Fs(prob)s(e)33 b(in)m(to)j(the)330 2690 y(hash)30 +b(table.)41 b(This)30 b(represen)m(ts)g(the)h(\\p)s(erfect")g(prop)s +(ert)m(y)-8 b(.)225 2824 y Fq(\017)60 b Fs(The)35 b(actual)j(memory)e +(allo)s(cated)i(to)e(store)h(the)f(k)m(eyw)m(ords)h(is)f(precisely)g +(large)h(enough)f(for)g(the)330 2934 y(k)m(eyw)m(ord)31 +b(set,)g(and)f Fl(no)j(lar)-5 b(ger)p Fs(.)42 b(This)29 +b(is)i(the)f(\\minimal")i(prop)s(ert)m(y)-8 b(.)275 3093 +y(F)g(or)38 b(most)g(applications)h(it)f(is)g(far)f(easier)i(to)f +(generate)h Fl(p)-5 b(erfe)g(ct)47 b Fs(hash)37 b(functions)g(than)h Fl(minimal)150 3203 y(p)-5 b(erfe)g(ct)47 b Fs(hash)36 -b(functions.)59 b(Moreo)m(v)m(er,)41 b(non-minimal)34 -b(p)s(erfect)j(hash)f(functions)f(frequen)m(tly)i(execute)150 -3313 y(faster)44 b(than)g(minimal)d(ones)j(in)e(practice.)82 -b(This)42 b(phenomena)h(o)s(ccurs)g(since)g(searc)m(hing)h(a)g(sparse) -150 3422 y(k)m(eyw)m(ord)34 b(table)f(increases)g(the)h(probabilit)m(y) -c(of)k(lo)s(cating)f(a)g(\\n)m(ull")g(en)m(try)-8 b(,)35 -b(thereb)m(y)e(reducing)f(string)150 3532 y(comparisons.)55 -b Fn(gperf)p Fs('s)34 b(default)g(b)s(eha)m(vior)g(generates)j -Fl(ne)-5 b(ar-minimal)47 b Fs(p)s(erfect)35 b(hash)f(functions)g(for) +b(functions.)60 b(Moreo)m(v)m(er,)41 b(non-minimal)c(p)s(erfect)g(hash) +f(functions)g(frequen)m(tly)i(execute)150 3313 y(faster)44 +b(than)g(minimal)g(ones)g(in)f(practice.)83 b(This)43 +b(phenomena)g(o)s(ccurs)g(since)h(searc)m(hing)h(a)f(sparse)150 +3422 y(k)m(eyw)m(ord)34 b(table)g(increases)g(the)g(probabilit)m(y)f +(of)h(lo)s(cating)h(a)e(\\n)m(ull")i(en)m(try)-8 b(,)35 +b(thereb)m(y)e(reducing)g(string)150 3532 y(comparisons.)56 +b Fn(gperf)p Fs('s)34 b(default)h(b)s(eha)m(vior)g(generates)i +Fl(ne)-5 b(ar-minimal)47 b Fs(p)s(erfect)35 b(hash)f(functions)h(for) 150 3641 y(k)m(eyw)m(ord)40 b(sets.)68 b(Ho)m(w)m(ev)m(er,)44 -b Fn(gperf)39 b Fs(pro)m(vides)f(man)m(y)i(options)e(that)i(p)s(ermit)e -(user)h(con)m(trol)h(o)m(v)m(er)h(the)150 3751 y(degree)31 -b(of)g(minimalit)m(y)c(and)j(p)s(erfection.)275 3885 -y(Static)36 b(searc)m(h)g(sets)g(often)g(exhibit)e(relativ)m(e)i -(stabilit)m(y)e(o)m(v)m(er)j(time.)57 b(F)-8 b(or)36 -b(example,)h(Ada's)f(63)h(re-)150 3995 y(serv)m(ed)31 -b(w)m(ords)f(ha)m(v)m(e)i(remained)d(constan)m(t)j(for)f(nearly)f(a)h -(decade.)42 b(It)31 b(is)f(therefore)h(frequen)m(tly)f(w)m(orth-)150 -4105 y(while)20 b(to)j(exp)s(end)e(concerted)i(e\013ort)g(building)18 -b(an)k(optimal)g(searc)m(h)g(structure)g Fl(onc)-5 b(e)p -Fs(,)25 b(if)c(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)g -(use)e(m)m(ultiple)f(times.)38 b Fn(gperf)22 b Fs(remo)m(v)m(es)i(the)f -(drudgery)f(asso)s(ciated)i(with)d(constructing)150 4324 -y(time-)37 b(and)g(space-e\016cien)m(t)i(searc)m(h)e(structures)g(b)m -(y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)f(and)g -(practical)150 4433 y(to)s(ol)28 b(for)g(serious)f(programming)g(pro)5 -b(jects.)40 b(Output)27 b(from)h Fn(gperf)e Fs(is)h(curren)m(tly)h -(used)f(in)g(sev)m(eral)h(pro-)150 4543 y(duction)d(and)f(researc)m(h)j -(compilers,)e(including)d(GNU)k(C,)g(GNU)g(C)p Fn(++)p -Fs(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)i(and)150 -4653 y(GNU)38 b(Mo)s(dula)e(3.)63 b(The)36 b(latter)i(t)m(w)m(o)h -(compilers)d(are)h(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)f(GNU)h -(distribu-)150 4762 y(tion.)50 b(Eac)m(h)34 b(compiler)e(utilizes)g -Fn(gperf)g Fs(to)i(automatically)f(generate)i(static)f(searc)m(h)g -(structures)f(that)150 4872 y(e\016cien)m(tly)d(iden)m(tify)f(their)g -(resp)s(ectiv)m(e)i(reserv)m(ed)f(k)m(eyw)m(ords.)p eop +b Fn(gperf)39 b Fs(pro)m(vides)g(man)m(y)h(options)f(that)h(p)s(ermit)f +(user)g(con)m(trol)i(o)m(v)m(er)g(the)150 3751 y(degree)31 +b(of)g(minimalit)m(y)g(and)f(p)s(erfection.)275 3885 +y(Static)37 b(searc)m(h)f(sets)g(often)g(exhibit)g(relativ)m(e)i +(stabilit)m(y)f(o)m(v)m(er)g(time.)58 b(F)-8 b(or)36 +b(example,)i(Ada's)e(63)h(re-)150 3995 y(serv)m(ed)31 +b(w)m(ords)f(ha)m(v)m(e)i(remained)e(constan)m(t)i(for)f(nearly)g(a)g +(decade.)42 b(It)31 b(is)g(therefore)g(frequen)m(tly)g(w)m(orth-)150 +4105 y(while)22 b(to)h(exp)s(end)e(concerted)i(e\013ort)g(building)e +(an)h(optimal)i(searc)m(h)e(structure)g Fl(onc)-5 b(e)p +Fs(,)25 b(if)d(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)f +(use)e(m)m(ultiple)i(times.)39 b Fn(gperf)22 b Fs(remo)m(v)m(es)i(the)f +(drudgery)f(asso)s(ciated)j(with)d(constructing)150 4324 +y(time-)38 b(and)f(space-e\016cien)m(t)j(searc)m(h)d(structures)g(b)m +(y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)g(and)f +(practical)150 4433 y(to)s(ol)29 b(for)f(serious)g(programming)g(pro)5 +b(jects.)40 b(Output)27 b(from)h Fn(gperf)e Fs(is)i(curren)m(tly)h +(used)e(in)h(sev)m(eral)h(pro-)150 4543 y(duction)d(and)e(researc)m(h)j +(compilers,)g(including)e(GNU)h(C,)g(GNU)g(C)p Fn(++)p +Fs(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)j(and)150 +4653 y(GNU)38 b(Mo)s(dula)f(3.)63 b(The)36 b(latter)j(t)m(w)m(o)g +(compilers)f(are)f(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)h(GNU)f +(distribu-)150 4762 y(tion.)51 b(Eac)m(h)34 b(compiler)g(utilizes)h +Fn(gperf)d Fs(to)i(automatically)i(generate)f(static)g(searc)m(h)f +(structures)f(that)150 4872 y(e\016cien)m(tly)f(iden)m(tify)f(their)f +(resp)s(ectiv)m(e)i(reserv)m(ed)e(k)m(eyw)m(ords.)p eop +end %%Page: 11 13 -11 12 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(11)150 -299 y Fp(3)80 b(High-Lev)l(el)54 b(Description)f(of)h(GNU)g -Fm(gperf)275 539 y Fs(The)29 b(p)s(erfect)h(hash)g(function)f -(generator)i Fn(gperf)e Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i -(from)d(an)i(input)d(\014le)150 648 y(\(or)34 b(from)g(the)g(standard)f -(input)f(b)m(y)i(default\).)51 b(It)34 b(attempts)h(to)f(deriv)m(e)g(a) -g(p)s(erfect)g(hashing)e(function)150 758 y(that)37 b(recognizes)h(a)f -(mem)m(b)s(er)f(of)h(the)g Fo(static)g(k)m(eyw)m(ord)g(set)j -Fs(with)35 b(at)j(most)f(a)g(single)e(prob)s(e)h(in)m(to)h(the)150 -867 y(lo)s(okup)25 b(table.)40 b(If)26 b Fn(gperf)f Fs(succeeds)i(in)f -(generating)h(suc)m(h)f(a)h(function)e(it)i(pro)s(duces)e(a)i(pair)f -(of)g(C)h(source)150 977 y(co)s(de)39 b(routines)f(that)i(p)s(erform)d -(hashing)h(and)g(table)h(lo)s(okup)e(recognition.)67 -b(All)37 b(generated)j(C)f(co)s(de)150 1086 y(is)e(directed)g(to)h(the) -g(standard)f(output.)62 b(Command-line)36 b(options)h(describ)s(ed)e(b) -s(elo)m(w)i(allo)m(w)g(y)m(ou)h(to)150 1196 y(mo)s(dify)29 -b(the)h(input)f(and)g(output)h(format)h(to)g Fn(gperf)p -Fs(.)275 1332 y(By)23 b(default,)h Fn(gperf)e Fs(attempts)i(to)g(pro)s -(duce)e(time-e\016cien)m(t)i(co)s(de,)h(with)d(less)h(emphasis)e(on)i -(e\016cien)m(t)150 1442 y(space)31 b(utilization.)39 -b(Ho)m(w)m(ev)m(er,)33 b(sev)m(eral)d(options)g(exist)g(that)h(p)s -(ermit)e(trading-o\013)h(execution)h(time)f(for)150 1552 -y(storage)j(space)f(and)g(vice)f(v)m(ersa.)46 b(In)31 -b(particular,)f(expanding)g(the)i(generated)h(table)f(size)f(pro)s -(duces)g(a)150 1661 y(sparse)26 b(searc)m(h)g(structure,)h(generally)e -(yielding)e(faster)k(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 -b(,)27 b(y)m(ou)g(can)f(direct)f Fn(gperf)150 1771 y -Fs(to)c(utilize)e(a)i(C)f Fn(switch)f Fs(statemen)m(t)k(sc)m(heme)e -(that)g(minimizes)d(data)j(space)g(storage)h(size.)38 -b(F)-8 b(urthermore,)150 1880 y(using)39 b(a)h(C)g Fn(switch)e -Fs(ma)m(y)i(actually)g(sp)s(eed)f(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 -b(al)39 b(time)h(somewhat.)70 b(Actual)150 1990 y(results)29 -b(dep)s(end)g(on)h(y)m(our)g(C)g(compiler,)g(of)g(course.)275 -2126 y(In)44 b(general,)49 b Fn(gperf)44 b Fs(assigns)g(v)-5 -b(alues)45 b(to)h(the)f(b)m(ytes)h(it)f(is)f(using)g(for)h(hashing)e -(un)m(til)h(some)h(set)150 2236 y(of)d(v)-5 b(alues)42 -b(giv)m(es)g(eac)m(h)i(k)m(eyw)m(ord)e(a)h(unique)d(v)-5 -b(alue.)76 b(A)42 b(helpful)d(heuristic)i(is)g(that)i(the)f(larger)g -(the)150 2345 y(hash)36 b(v)-5 b(alue)36 b(range,)j(the)e(easier)g(it)f -(is)g(for)g Fn(gperf)f Fs(to)j(\014nd)d(and)h(generate)i(a)f(p)s -(erfect)g(hash)f(function.)150 2455 y(Exp)s(erimen)m(tation)29 -b(is)g(the)i(k)m(ey)g(to)g(getting)g(the)g(most)g(from)e +TeXDict begin 11 12 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(11)150 299 y Fp(3)80 b(High-Lev)l(el)52 b(Description)f(of)j(GNU)g +Fm(gperf)275 539 y Fs(The)29 b(p)s(erfect)h(hash)g(function)g +(generator)h Fn(gperf)e Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i +(from)d(an)i(input)e(\014le)150 648 y(\(or)34 b(from)g(the)g(standard)f +(input)g(b)m(y)h(default\).)52 b(It)34 b(attempts)h(to)f(deriv)m(e)h(a) +f(p)s(erfect)g(hashing)f(function)150 758 y(that)k(recognizes)i(a)e +(mem)m(b)s(er)f(of)h(the)g Fo(static)h(k)m(eyw)m(ord)f(set)j +Fs(with)c(at)i(most)f(a)g(single)g(prob)s(e)f(in)m(to)i(the)150 +867 y(lo)s(okup)26 b(table.)41 b(If)26 b Fn(gperf)f Fs(succeeds)i(in)g +(generating)h(suc)m(h)e(a)h(function)f(it)i(pro)s(duces)d(a)i(pair)g +(of)f(C)h(source)150 977 y(co)s(de)39 b(routines)g(that)h(p)s(erform)d +(hashing)i(and)f(table)i(lo)s(okup)e(recognition.)69 +b(All)39 b(generated)h(C)f(co)s(de)150 1086 y(is)f(directed)g(to)g(the) +g(standard)f(output.)62 b(Command-line)38 b(options)g(describ)s(ed)e(b) +s(elo)m(w)i(allo)m(w)h(y)m(ou)f(to)150 1196 y(mo)s(dify)30 +b(the)g(input)g(and)f(output)h(format)h(to)g Fn(gperf)p +Fs(.)275 1332 y(By)23 b(default,)i Fn(gperf)d Fs(attempts)i(to)g(pro)s +(duce)e(time-e\016cien)m(t)k(co)s(de,)f(with)e(less)h(emphasis)e(on)h +(e\016cien)m(t)150 1442 y(space)31 b(utilization.)43 +b(Ho)m(w)m(ev)m(er,)33 b(sev)m(eral)e(options)g(exist)g(that)g(p)s +(ermit)f(trading-o\013)h(execution)h(time)f(for)150 1552 +y(storage)i(space)f(and)g(vice)g(v)m(ersa.)46 b(In)31 +b(particular,)h(expanding)f(the)h(generated)h(table)g(size)f(pro)s +(duces)f(a)150 1661 y(sparse)26 b(searc)m(h)g(structure,)h(generally)g +(yielding)f(faster)h(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 +b(,)28 b(y)m(ou)f(can)f(direct)g Fn(gperf)150 1771 y +Fs(to)21 b(utilize)h(a)f(C)f Fn(switch)f Fs(statemen)m(t)k(sc)m(heme)e +(that)g(minimizes)g(data)g(space)g(storage)h(size.)39 +b(F)-8 b(urthermore,)150 1880 y(using)40 b(a)g(C)g Fn(switch)e +Fs(ma)m(y)i(actually)i(sp)s(eed)d(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 +b(al)41 b(time)g(somewhat.)70 b(Actual)150 1990 y(results)30 +b(dep)s(end)f(on)h(y)m(our)g(C)g(compiler,)i(of)e(course.)275 +2126 y(In)44 b(general,)50 b Fn(gperf)44 b Fs(assigns)h(v)-5 +b(alues)46 b(to)g(the)f(b)m(ytes)h(it)g(is)f(using)g(for)g(hashing)f +(un)m(til)i(some)f(set)150 2236 y(of)d(v)-5 b(alues)43 +b(giv)m(es)g(eac)m(h)h(k)m(eyw)m(ord)e(a)h(unique)e(v)-5 +b(alue.)77 b(A)42 b(helpful)f(heuristic)i(is)f(that)h(the)f(larger)h +(the)150 2345 y(hash)36 b(v)-5 b(alue)37 b(range,)i(the)e(easier)h(it)f +(is)g(for)f Fn(gperf)f Fs(to)j(\014nd)d(and)h(generate)i(a)f(p)s +(erfect)g(hash)f(function.)150 2455 y(Exp)s(erimen)m(tation)31 +b(is)f(the)h(k)m(ey)g(to)g(getting)h(the)f(most)g(from)e Fn(gperf)p Fs(.)150 2717 y Fr(3.1)68 b(Input)44 b(F)-11 b(ormat)46 b(to)f Fk(gperf)275 2911 y Fs(Y)-8 b(ou)38 -b(can)g(con)m(trol)h(the)f(input)e(\014le)h(format)h(b)m(y)g(v)-5 -b(arying)37 b(certain)g(command-line)g(argumen)m(ts,)j(in)150 -3021 y(particular)d(the)i(`)p Fn(-t)p Fs(')g(option.)65 -b(The)38 b(input's)f(app)s(earance)i(is)f(similar)e(to)j(GNU)h -(utilities)c Fn(flex)i Fs(and)150 3131 y Fn(bison)29 -b Fs(\(or)i(UNIX)f(utilities)e Fn(lex)i Fs(and)f Fn(yacc)p -Fs(\).)40 b(Here's)31 b(an)g(outline)e(of)h(the)h(general)f(format:)390 +b(can)g(con)m(trol)i(the)e(input)f(\014le)h(format)g(b)m(y)g(v)-5 +b(arying)38 b(certain)g(command-line)h(argumen)m(ts,)h(in)150 +3021 y(particular)f(the)g(`)p Fn(-t)p Fs(')g(option.)66 +b(The)38 b(input's)g(app)s(earance)h(is)g(similar)g(to)g(GNU)h +(utilities)g Fn(flex)e Fs(and)150 3131 y Fn(bison)29 +b Fs(\(or)i(UNIX)f(utilities)i Fn(lex)e Fs(and)f Fn(yacc)p +Fs(\).)40 b(Here's)31 b(an)g(outline)g(of)f(the)h(general)g(format:)390 3261 y Fn(declarations)390 3365 y(\045\045)390 3469 y(keywords)390 3572 y(\045\045)390 3676 y(functions)275 3806 y Fl(Unlike)41 -b Fn(flex)35 b Fs(or)g Fn(bison)p Fs(,)h(the)g(declarations)e(section)i -(and)f(the)h(functions)e(section)i(are)g(optional.)150 -3915 y(The)30 b(follo)m(wing)f(sections)h(describ)s(e)f(the)h(input)f -(format)i(for)f(eac)m(h)h(section.)275 4051 y(It)h(is)f(p)s(ossible)f -(to)j(omit)f(the)h(declaration)f(section)g(en)m(tirely)-8 -b(,)33 b(if)e(the)i(`)p Fn(-t)p Fs(')f(option)g(is)f(not)i(giv)m(en.)47 -b(In)150 4161 y(this)29 b(case)j(the)e(input)f(\014le)g(b)s(egins)g -(directly)g(with)g(the)i(\014rst)e(k)m(eyw)m(ord)i(line,)e(e.g.:)390 +b Fn(flex)35 b Fs(or)g Fn(bison)p Fs(,)h(the)g(declarations)g(section)h +(and)e(the)h(functions)f(section)i(are)f(optional.)150 +3915 y(The)30 b(follo)m(wing)i(sections)f(describ)s(e)f(the)g(input)g +(format)h(for)f(eac)m(h)h(section.)275 4051 y(It)h(is)g(p)s(ossible)g +(to)h(omit)g(the)g(declaration)h(section)f(en)m(tirely)-8 +b(,)35 b(if)d(the)h(`)p Fn(-t)p Fs(')f(option)h(is)f(not)h(giv)m(en.)48 +b(In)150 4161 y(this)30 b(case)i(the)e(input)g(\014le)g(b)s(egins)g +(directly)h(with)f(the)h(\014rst)e(k)m(eyw)m(ord)i(line,)g(e.g.:)390 4292 y Fn(january)390 4395 y(february)390 4499 y(march)390 4603 y(april)390 4707 y(...)150 4926 y Fj(3.1.1)63 b(Declarations)275 -5121 y Fs(The)33 b(k)m(eyw)m(ord)i(input)e(\014le)g(optionally)g(con)m -(tains)i(a)g(section)f(for)g(including)d(arbitrary)j(C)g(declara-)150 -5230 y(tions)c(and)f(de\014nitions,)f Fn(gperf)h Fs(declarations)h -(that)h(act)g(lik)m(e)f(command-line)f(options,)h(as)g(w)m(ell)g(as)g -(for)150 5340 y(pro)m(viding)e(a)j(user-supplied)c Fn(struct)p -Fs(.)p eop +5121 y Fs(The)33 b(k)m(eyw)m(ord)i(input)f(\014le)g(optionally)i(con)m +(tains)g(a)f(section)g(for)f(including)g(arbitrary)h(C)f(declara-)150 +5230 y(tions)d(and)e(de\014nitions,)h Fn(gperf)f Fs(declarations)j +(that)f(act)g(lik)m(e)h(command-line)f(options,)g(as)f(w)m(ell)i(as)e +(for)150 5340 y(pro)m(viding)g(a)h(user-supplied)e Fn(struct)p +Fs(.)p eop end %%Page: 12 14 -12 13 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(12)150 -299 y Fj(3.1.1.1)63 b(User-supplied)43 b Fi(struct)275 -487 y Fs(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)g(\(or,)j(equiv)-5 -b(alen)m(tly)d(,)25 b(the)g(`)p Fn(\045struct-type)p -Fs(')d(declaration\))i Fl(is)32 b Fs(enabled,)25 b(y)m(ou)g -Fl(must)150 597 y Fs(pro)m(vide)36 b(a)g(C)h Fn(struct)d -Fs(as)j(the)g(last)f(comp)s(onen)m(t)h(in)e(the)i(declaration)f -(section)g(from)g(the)h(input)e(\014le.)150 706 y(The)26 -b(\014rst)f(\014eld)g(in)g(this)g(struct)h(m)m(ust)g(b)s(e)g(of)g(t)m +TeXDict begin 12 13 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(12)150 299 y Fj(3.1.1.1)63 b(User-supplied)43 b +Fi(struct)275 500 y Fs(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)h(\(or,) +i(equiv)-5 b(alen)m(tly)d(,)28 b(the)d(`)p Fn(\045struct-type)p +Fs(')d(declaration\))k Fl(is)32 b Fs(enabled,)26 b(y)m(ou)f +Fl(must)150 609 y Fs(pro)m(vide)37 b(a)f(C)h Fn(struct)d +Fs(as)j(the)g(last)g(comp)s(onen)m(t)g(in)f(the)h(declaration)h +(section)f(from)f(the)h(input)f(\014le.)150 719 y(The)26 +b(\014rst)f(\014eld)h(in)g(this)g(struct)g(m)m(ust)g(b)s(e)g(of)g(t)m (yp)s(e)g Fn(char)j(*)d Fs(or)g Fn(const)j(char)h(*)25 -b Fs(if)g(the)i(`)p Fn(-P)p Fs(')f(option)f(is)h(not)150 -816 y(giv)m(en,)k(or)h(of)f(t)m(yp)s(e)g Fn(int)g Fs(if)f(the)h(option) -g(`)p Fn(-P)p Fs(')g(\(or,)h(equiv)-5 b(alen)m(tly)d(,)29 -b(the)i(`)p Fn(\045pic)p Fs(')e(declaration\))h(is)g(enabled.)150 -926 y(This)k(\014rst)g(\014eld)g(m)m(ust)i(b)s(e)e(called)h(`)p -Fn(name)p Fs(',)h(although)f(it)g(is)g(p)s(ossible)e(to)j(mo)s(dify)d -(its)i(name)h(with)e(the)150 1035 y(`)p Fn(-K)p Fs(')c(option)g(\(or,)h -(equiv)-5 b(alen)m(tly)d(,)30 b(the)g(`)p Fn(\045define)f(slot-name)p -Fs(')f(declaration\))i(describ)s(ed)f(b)s(elo)m(w.)275 -1165 y(Here)h(is)g(a)h(simple)d(example,)i(using)f(mon)m(ths)h(of)h -(the)f(y)m(ear)i(and)d(their)h(attributes)g(as)g(input:)390 -1290 y Fn(struct)46 b(months)g({)i(char)e(*name;)g(int)h(number;)f(int) -h(days;)f(int)h(leap_days;)e(};)390 1393 y(\045\045)390 -1497 y(january,)141 b(1,)47 b(31,)g(31)390 1601 y(february,)93 -b(2,)47 b(28,)g(29)390 1705 y(march,)237 b(3,)47 b(31,)g(31)390 -1809 y(april,)237 b(4,)47 b(30,)g(30)390 1912 y(may,)333 -b(5,)47 b(31,)g(31)390 2016 y(june,)285 b(6,)47 b(30,)g(30)390 -2120 y(july,)285 b(7,)47 b(31,)g(31)390 2224 y(august,)189 -b(8,)47 b(31,)g(31)390 2327 y(september,)e(9,)i(30,)g(30)390 -2431 y(october,)93 b(10,)47 b(31,)g(31)390 2535 y(november,)e(11,)i -(30,)g(30)390 2639 y(december,)e(12,)i(31,)g(31)275 2762 -y Fs(Separating)24 b(the)h Fn(struct)f Fs(declaration)g(from)h(the)g -(list)f(of)h(k)m(eyw)m(ords)h(and)e(other)h(\014elds)f(are)h(a)h(pair)e -(of)150 2871 y(consecutiv)m(e)32 b(p)s(ercen)m(t)g(signs,)e(`)p -Fn(\045\045)p Fs(',)i(app)s(earing)e(left)h(justi\014ed)e(in)h(the)i -(\014rst)e(column,)h(as)g(in)f(the)i(UNIX)150 2981 y(utilit)m(y)d -Fn(lex)p Fs(.)150 3192 y Fj(3.1.1.2)63 b(Gp)s(erf)42 -b(Declarations)275 3381 y Fs(The)31 b(declaration)h(section)h(can)f -(con)m(tain)h Fn(gperf)d Fs(declarations.)46 b(They)32 -b(in\015uence)f(the)h(w)m(a)m(y)h Fn(gperf)150 3490 y -Fs(w)m(orks,)43 b(lik)m(e)d(command)h(line)e(options)h(do.)72 -b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)g(is)g(equiv)-5 -b(alen)m(t)40 b(to)i(a)150 3600 y(command)30 b(line)f(option.)40 -b(There)30 b(are)h(three)f(forms)g(of)h(declarations:)199 -3730 y(1.)61 b(Declarations)31 b(without)e(argumen)m(t,)i(lik)m(e)f(`)p -Fn(\045compare-lengths)p Fs('.)199 3860 y(2.)61 b(Declarations)31 -b(with)e(an)h(argumen)m(t,)h(lik)m(e)f(`)p Fn(\045switch=)p -Fo(coun)m(t)r Fs('.)199 3990 y(3.)61 b(Declarations)112 -b(of)g(names)g(of)g(en)m(tities)g(in)e(the)i(output)g(\014le,)131 -b(lik)m(e)112 b(`)p Fn(\045define)330 4100 y(lookup-function-name)25 -b Fo(name)5 b Fs('.)275 4251 y(When)35 b(a)h(declaration)f(is)g(giv)m -(en)g(b)s(oth)g(in)g(the)g(input)f(\014le)h(and)g(as)h(a)g(command)f -(line)f(option,)j(the)150 4360 y(command-line)29 b(option's)h(v)-5 -b(alue)30 b(prev)-5 b(ails.)275 4490 y(The)29 b(follo)m(wing)g -Fn(gperf)g Fs(declarations)h(are)h(a)m(v)-5 b(ailable.)150 -4641 y(`)p Fn(\045delimiters=)p Fo(delimiter-lis)o(t)r -Fs(')630 4751 y(Allo)m(ws)28 b(y)m(ou)h(to)g(pro)m(vide)f(a)h(string)f -(con)m(taining)g(delimiters)f(used)g(to)j(separate)g(k)m(eyw)m(ords)630 -4860 y(from)k(their)g(attributes.)53 b(The)34 b(default)f(is)h -Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)33 b(option)h(is)f(essen)m(tial)i -(if)e(y)m(ou)i(w)m(an)m(t)630 4970 y(to)c(use)f(k)m(eyw)m(ords)h(that)g -(ha)m(v)m(e)g(em)m(b)s(edded)f(commas)h(or)f(newlines.)150 -5121 y(`)p Fn(\045struct-type)p Fs(')630 5230 y(Allo)m(ws)g(y)m(ou)g -(to)i(include)c(a)j Fn(struct)d Fs(t)m(yp)s(e)j(declaration)f(for)g -(generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 5340 -y(for)f(an)g(example.)p eop +b Fs(if)h(the)h(`)p Fn(-P)p Fs(')f(option)g(is)h(not)150 +829 y(giv)m(en,)k(or)g(of)f(t)m(yp)s(e)g Fn(int)g Fs(if)g(the)g(option) +h(`)p Fn(-P)p Fs(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)32 +b(the)f(`)p Fn(\045pic)p Fs(')e(declaration\))j(is)f(enabled.)150 +938 y(This)k(\014rst)f(\014eld)h(m)m(ust)h(b)s(e)e(called)j(`)p +Fn(name)p Fs(',)f(although)g(it)g(is)g(p)s(ossible)f(to)h(mo)s(dify)e +(its)i(name)g(with)f(the)150 1048 y(`)p Fn(-K)p Fs(')30 +b(option)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 b(the)d(`)p +Fn(\045define)f(slot-name)p Fs(')f(declaration\))k(describ)s(ed)e(b)s +(elo)m(w.)275 1191 y(Here)g(is)h(a)g(simple)f(example,)h(using)f(mon)m +(ths)g(of)h(the)f(y)m(ear)i(and)d(their)i(attributes)g(as)f(input:)390 +1328 y Fn(struct)46 b(month)g({)i(char)f(*name;)f(int)h(number;)e(int)i +(days;)g(int)g(leap_days;)e(};)390 1432 y(\045\045)390 +1535 y(january,)141 b(1,)47 b(31,)g(31)390 1639 y(february,)93 +b(2,)47 b(28,)g(29)390 1743 y(march,)237 b(3,)47 b(31,)g(31)390 +1847 y(april,)237 b(4,)47 b(30,)g(30)390 1950 y(may,)333 +b(5,)47 b(31,)g(31)390 2054 y(june,)285 b(6,)47 b(30,)g(30)390 +2158 y(july,)285 b(7,)47 b(31,)g(31)390 2262 y(august,)189 +b(8,)47 b(31,)g(31)390 2366 y(september,)e(9,)i(30,)g(30)390 +2469 y(october,)93 b(10,)47 b(31,)g(31)390 2573 y(november,)e(11,)i +(30,)g(30)390 2677 y(december,)e(12,)i(31,)g(31)275 2813 +y Fs(Separating)25 b(the)g Fn(struct)f Fs(declaration)i(from)f(the)g +(list)h(of)f(k)m(eyw)m(ords)h(and)e(other)h(\014elds)g(are)g(a)h(pair)f +(of)150 2922 y(consecutiv)m(e)33 b(p)s(ercen)m(t)f(signs,)f(`)p +Fn(\045\045)p Fs(',)h(app)s(earing)f(left)h(justi\014ed)e(in)h(the)h +(\014rst)e(column,)i(as)f(in)g(the)h(UNIX)150 3032 y(utilit)m(y)g +Fn(lex)p Fs(.)275 3175 y(If)k(the)i Fn(struct)d Fs(has)i(already)h(b)s +(een)f(declared)h(in)f(an)g(include)g(\014le,)i(it)f(can)g(b)s(e)e(men) +m(tioned)i(in)f(an)150 3284 y(abbreviated)31 b(form,)f(lik)m(e)i(this:) +390 3421 y Fn(struct)46 b(month;)390 3525 y(\045\045)390 +3629 y(january,)141 b(1,)47 b(31,)g(31)390 3733 y(...)150 +3966 y Fj(3.1.1.2)63 b(Gp)s(erf)43 b(Declarations)275 +4167 y Fs(The)31 b(declaration)j(section)g(can)e(con)m(tain)i +Fn(gperf)c Fs(declarations.)48 b(They)32 b(in\015uence)g(the)g(w)m(a)m +(y)h Fn(gperf)150 4276 y Fs(w)m(orks,)43 b(lik)m(e)f(command)f(line)g +(options)g(do.)72 b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)i +(is)f(equiv)-5 b(alen)m(t)42 b(to)g(a)150 4386 y(command)30 +b(line)h(option.)41 b(There)30 b(are)h(three)f(forms)g(of)h +(declarations:)199 4529 y(1.)61 b(Declarations)33 b(without)d(argumen)m +(t,)h(lik)m(e)h(`)p Fn(\045compare-lengths)p Fs('.)199 +4667 y(2.)61 b(Declarations)33 b(with)d(an)g(argumen)m(t,)h(lik)m(e)h +(`)p Fn(\045switch=)p Fo(coun)m(t)r Fs('.)199 4806 y(3.)61 +b(Declarations)114 b(of)e(names)g(of)g(en)m(tities)i(in)d(the)h(output) +g(\014le,)132 b(lik)m(e)114 b(`)p Fn(\045define)330 4916 +y(lookup-function-name)25 b Fo(name)5 b Fs('.)275 5088 +y(When)35 b(a)h(declaration)h(is)f(giv)m(en)g(b)s(oth)f(in)h(the)f +(input)g(\014le)h(and)f(as)h(a)g(command)f(line)h(option,)i(the)150 +5197 y(command-line)31 b(option's)g(v)-5 b(alue)31 b(prev)-5 +b(ails.)275 5340 y(The)29 b(follo)m(wing)j Fn(gperf)d +Fs(declarations)j(are)f(a)m(v)-5 b(ailable.)p eop end %%Page: 13 15 -13 14 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(13)150 -299 y(`)p Fn(\045ignore-case)p Fs(')630 408 y(Consider)42 -b(upp)s(er)g(and)i(lo)m(w)m(er)g(case)h(ASCI)s(I)e(c)m(haracters)i(as)f -(equiv)-5 b(alen)m(t.)81 b(The)44 b(string)630 518 y(comparison)27 -b(will)f(use)i(a)h(case)g(insigni\014can)m(t)d(c)m(haracter)k -(comparison.)39 b(Note)29 b(that)g(lo)s(cale)630 628 -y(dep)s(enden)m(t)g(case)j(mappings)c(are)j(ignored.)150 -783 y(`)p Fn(\045language=)p Fo(language-name)5 b Fs(')630 -892 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f(in)e(the)i -(language)g(sp)s(eci\014ed)d(b)m(y)j(the)g(option's)f(ar-)630 -1002 y(gumen)m(t.)41 b(Languages)31 b(handled)e(are)i(curren)m(tly:)630 -1157 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)25 b(K&R)h(C.)g(This)e -(language)j(is)f(understo)s(o)s(d)e(b)m(y)i(old-st)m(yle)g(C)g(com-) -1110 1267 y(pilers)c(and)i(ANSI)f(C)h(compilers,)g(but)g(ANSI)f(C)h -(compilers)f(ma)m(y)h(\015ag)h(w)m(arn-)1110 1377 y(ings)k(\(or)i(ev)m -(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)g(`)p Fn(const)p -Fs('.)630 1532 y(`)p Fn(C)p Fs(')382 b(Common)23 b(C.)f(This)g -(language)h(is)f(understo)s(o)s(d)f(b)m(y)i(ANSI)g(C)f(compilers,)i -(and)1110 1641 y(also)29 b(b)m(y)f(old-st)m(yle)g(C)h(compilers,)e(pro) -m(vided)g(that)j(y)m(ou)f Fn(#define)f(const)f Fs(to)1110 -1751 y(empt)m(y)k(for)f(compilers)f(whic)m(h)g(don't)h(kno)m(w)h(ab)s -(out)f(this)f(k)m(eyw)m(ord.)630 1906 y(`)p Fn(ANSI-C)p -Fs(')142 b(ANSI)39 b(C.)h(This)d(language)j(is)f(understo)s(o)s(d)f(b)m -(y)h(ANSI)g(C)h(compilers)e(and)1110 2016 y(C)p Fn(++)29 -b Fs(compilers.)630 2171 y(`)p Fn(C++)p Fs(')286 b(C)p -Fn(++)p Fs(.)40 b(This)28 b(language)j(is)f(understo)s(o)s(d)e(b)m(y)i -(C)p Fn(++)g Fs(compilers.)630 2326 y(The)g(default)f(is)h(C.)150 -2482 y(`)p Fn(\045define)f(slot-name)e Fo(name)5 b Fs(')630 -2591 y(This)64 b(declaration)i(is)f(only)g(useful)f(when)h(option)g(`)p -Fn(-t)p Fs(')h(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)74 -b(the)630 2701 y(`)p Fn(\045struct-type)p Fs(')27 b(declaration\))j -(has)g(b)s(een)g(giv)m(en.)40 b(By)31 b(default,)e(the)h(program)g -(assumes)630 2810 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m -(ti\014er)d(for)i(the)g(k)m(eyw)m(ord)h(is)e(`)p Fn(name)p -Fs('.)94 b(This)46 b(option)630 2920 y(allo)m(ws)e(an)g(arbitrary)f(c)m -(hoice)i(of)g(iden)m(ti\014er)d(for)j(this)e(comp)s(onen)m(t,)48 -b(although)c(it)g(still)630 3029 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g -(\014rst)e(\014eld)g(in)g(y)m(our)i(supplied)c Fn(struct)p -Fs(.)150 3185 y(`)p Fn(\045define)i(initializer-suffix)c -Fo(initializers)t Fs(')630 3294 y(This)64 b(declaration)i(is)f(only)g -(useful)f(when)h(option)g(`)p Fn(-t)p Fs(')h(\(or,)76 -b(equiv)-5 b(alen)m(tly)d(,)74 b(the)630 3404 y(`)p Fn(\045struct-type) -p Fs(')33 b(declaration\))j(has)f(b)s(een)g(giv)m(en.)57 -b(It)36 b(p)s(ermits)e(to)j(sp)s(ecify)d(initializers)630 -3513 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)f -Fo(slot-name)50 b Fs(in)42 b(empt)m(y)j(hash)e(table)h(en)m(tries.)630 -3623 y(The)e(list)e(of)j(initializers)38 b(should)i(start)j(with)e(a)h -(comma.)77 b(By)42 b(default,)j(the)d(emitted)630 3733 -y(co)s(de)31 b(will)c(zero-initialize)i(structure)h(mem)m(b)s(ers)g -(follo)m(wing)f Fo(slot-name)p Fs(.)150 3888 y(`)p Fn(\045define)g -(hash-function-name)c Fo(name)5 b Fs(')630 3998 y(Allo)m(ws)29 -b(y)m(ou)h(to)g(sp)s(ecify)f(the)h(name)g(for)f(the)h(generated)h(hash) -e(function.)39 b(Default)30 b(name)630 4107 y(is)f(`)p -Fn(hash)p Fs('.)40 b(This)29 b(option)h(p)s(ermits)e(the)j(use)f(of)h -(t)m(w)m(o)g(hash)f(tables)g(in)f(the)i(same)g(\014le.)150 -4262 y(`)p Fn(\045define)e(lookup-function-name)24 b -Fo(name)5 b Fs(')630 4372 y(Allo)m(ws)41 b(y)m(ou)h(to)h(sp)s(ecify)d -(the)j(name)f(for)f(the)h(generated)h(lo)s(okup)e(function.)74 -b(Default)630 4482 y(name)28 b(is)f(`)p Fn(in_word_set)p -Fs('.)37 b(This)26 b(option)h(p)s(ermits)f(m)m(ultiple)g(generated)i -(hash)f(functions)630 4591 y(to)k(b)s(e)f(used)f(in)g(the)i(same)g -(application.)150 4746 y(`)p Fn(\045define)e(class-name)e -Fo(name)5 b Fs(')630 4856 y(This)65 b(option)i(is)f(only)h(useful)e -(when)i(option)f(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 -b(equiv)-5 b(alen)m(tly)d(,)76 b(the)630 4966 y(`)p Fn -(\045language=C++)p Fs(')43 b(declaration\))i(has)h(b)s(een)f(giv)m -(en.)87 b(It)46 b(allo)m(ws)f(y)m(ou)h(to)g(sp)s(ecify)f(the)630 -5075 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)40 -b(Default)31 b(name)f(is)g Fn(Perfect_Hash)p Fs(.)150 -5230 y(`)p Fn(\0457bit)p Fs(')190 b(This)35 b(option)i(sp)s(eci\014es)f -(that)h(all)f(strings)g(that)i(will)c(b)s(e)j(passed)f(as)i(argumen)m -(ts)f(to)h(the)630 5340 y(generated)e(hash)e(function)f(and)i(the)g -(generated)g(lo)s(okup)f(function)f(will)f(solely)i(consist)p -eop +TeXDict begin 13 14 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(13)150 299 y(`)p Fn(\045delimiters=)p Fo(delimiter-list)r +Fs(')630 408 y(Allo)m(ws)30 b(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g +(con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 +518 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h +Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j +(if)d(y)m(ou)h(w)m(an)m(t)630 628 y(to)c(use)f(k)m(eyw)m(ords)h(that)g +(ha)m(v)m(e)g(em)m(b)s(edded)f(commas)h(or)f(newlines.)150 +774 y(`)p Fn(\045struct-type)p Fs(')630 883 y(Allo)m(ws)i(y)m(ou)e(to)i +(include)e(a)h Fn(struct)d Fs(t)m(yp)s(e)j(declaration)h(for)e +(generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 993 +y(for)f(an)g(example.)150 1139 y(`)p Fn(\045ignore-case)p +Fs(')630 1249 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g +(ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 +b(The)44 b(string)630 1358 y(comparison)28 b(will)h(use)f(a)h(case)g +(insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29 +b(that)g(lo)s(cale)630 1468 y(dep)s(enden)m(t)g(case)j(mappings)d(are)i +(ignored.)150 1614 y(`)p Fn(\045language=)p Fo(language-name)5 +b Fs(')630 1724 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de) +f(in)f(the)h(language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-) +630 1833 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m +(tly:)630 1979 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)27 +b(K&R)f(C.)g(This)f(language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m +(yle)i(C)e(com-)1110 2089 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but) +e(ANSI)f(C)h(compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 +2198 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m +(king)i(`)p Fn(const)p Fs('.)630 2345 y(`)p Fn(C)p Fs(')382 +b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i +(ANSI)g(C)f(compilers,)k(and)1110 2454 y(also)k(b)m(y)e(old-st)m(yle)i +(C)f(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fn(#define)f(const)f +Fs(to)1110 2564 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m +(w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 2710 y(`)p +Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s +(o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 2819 +y(C)p Fn(++)29 b Fs(compilers.)630 2966 y(`)p Fn(C++)p +Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)29 b(language)j(is)f(understo)s +(o)s(d)d(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 3112 y(The)g(default)g +(is)h(C.)150 3258 y(`)p Fn(\045define)e(slot-name)e Fo(name)5 +b Fs(')630 3367 y(This)65 b(declaration)j(is)e(only)g(useful)f(when)g +(option)h(`)p Fn(-t)p Fs(')g(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)77 +b(the)630 3477 y(`)p Fn(\045struct-type)p Fs(')27 b(declaration\))32 +b(has)e(b)s(een)g(giv)m(en.)41 b(By)31 b(default,)f(the)g(program)g +(assumes)630 3587 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m +(ti\014er)f(for)g(the)g(k)m(eyw)m(ord)h(is)f(`)p Fn(name)p +Fs('.)94 b(This)47 b(option)630 3696 y(allo)m(ws)f(an)e(arbitrary)g(c)m +(hoice)i(of)f(iden)m(ti\014er)f(for)h(this)f(comp)s(onen)m(t,)k +(although)d(it)g(still)630 3806 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g +(\014rst)e(\014eld)h(in)g(y)m(our)h(supplied)e Fn(struct)p +Fs(.)150 3952 y(`)p Fn(\045define)g(initializer-suffix)c +Fo(initializers)t Fs(')630 4061 y(This)65 b(declaration)j(is)e(only)g +(useful)f(when)g(option)h(`)p Fn(-t)p Fs(')g(\(or,)76 +b(equiv)-5 b(alen)m(tly)d(,)77 b(the)630 4171 y(`)p Fn(\045struct-type) +p Fs(')33 b(declaration\))38 b(has)d(b)s(een)g(giv)m(en.)58 +b(It)36 b(p)s(ermits)f(to)i(sp)s(ecify)e(initializers)630 +4281 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)i +Fo(slot-name)51 b Fs(in)43 b(empt)m(y)i(hash)e(table)i(en)m(tries.)630 +4390 y(The)d(list)g(of)h(initializers)g(should)e(start)i(with)f(a)g +(comma.)77 b(By)42 b(default,)k(the)c(emitted)630 4500 +y(co)s(de)31 b(will)f(zero-initialize)k(structure)c(mem)m(b)s(ers)g +(follo)m(wing)i Fo(slot-name)p Fs(.)150 4646 y(`)p Fn(\045define)d +(hash-function-name)c Fo(name)5 b Fs(')630 4755 y(Allo)m(ws)31 +b(y)m(ou)f(to)g(sp)s(ecify)g(the)g(name)g(for)f(the)h(generated)h(hash) +e(function.)40 b(Default)31 b(name)630 4865 y(is)f(`)p +Fn(hash)p Fs('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h +(t)m(w)m(o)g(hash)f(tables)h(in)f(the)h(same)g(\014le.)150 +5011 y(`)p Fn(\045define)e(lookup-function-name)24 b +Fo(name)5 b Fs(')630 5121 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e +(the)i(name)f(for)f(the)h(generated)h(lo)s(okup)f(function.)75 +b(Default)630 5230 y(name)28 b(is)g(`)p Fn(in_word_set)p +Fs('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f +(hash)f(functions)630 5340 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g +(application.)p eop end %%Page: 14 16 -14 15 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(14)630 -299 y(of)33 b(7-bit)g(ASCI)s(I)f(c)m(haracters)j(\(b)m(ytes)f(in)e(the) -h(range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 -408 y(functions)e Fn(isalnum)g Fs(and)i Fn(isgraph)e -Fs(do)i Fl(not)41 b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)e(in)f -(this)h(range.)630 518 y(Only)e(an)h(explicit)f(test)i(lik)m(e)f(`)p -Fn(c)g(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fs(')f(guaran)m(tees)j(this.\)) -150 682 y(`)p Fn(\045compare-lengths)p Fs(')630 792 y(Compare)40 -b(k)m(eyw)m(ord)g(lengths)f(b)s(efore)g(trying)g(a)i(string)d -(comparison.)69 b(This)38 b(option)h(is)630 902 y(mandatory)32 -b(for)h(binary)d(comparisons)i(\(see)h(Section)g(3.3)g([Binary)f -(Strings],)g(page)h(18\).)630 1011 y(It)g(also)g(migh)m(t)g(cut)g(do)m -(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)f(comparisons)g(made)h -(during)e(the)630 1121 y(lo)s(okup,)i(since)g(k)m(eyw)m(ords)g(with)f -(di\013eren)m(t)h(lengths)g(are)g(nev)m(er)h(compared)f(via)g -Fn(strcmp)p Fs(.)630 1230 y(Ho)m(w)m(ev)m(er,)e(using)c(`)p -Fn(\045compare-lengths)p Fs(')d(migh)m(t)k(greatly)h(increase)f(the)h -(size)f(of)h(the)f(gen-)630 1340 y(erated)j(C)f(co)s(de)h(if)e(the)i -(lo)s(okup)e(table)i(range)f(is)g(large)g(\(whic)m(h)g(implies)e(that)j -(the)f(switc)m(h)630 1450 y(option)23 b(`)p Fn(-S)p Fs(')h(or)g(`)p -Fn(\045switch)p Fs(')f(is)g(not)h(enabled\),)h(since)e(the)h(length)g -(table)f(con)m(tains)i(as)f(man)m(y)630 1559 y(elemen)m(ts)31 -b(as)f(there)h(are)g(en)m(tries)f(in)f(the)h(lo)s(okup)f(table.)150 -1724 y(`)p Fn(\045compare-strncmp)p Fs(')630 1833 y(Generates)22 -b(C)f(co)s(de)g(that)h(uses)e(the)i Fn(strncmp)d Fs(function)g(to)j(p)s -(erform)e(string)g(comparisons.)630 1943 y(The)30 b(default)f(action)i -(is)f(to)h(use)f Fn(strcmp)p Fs(.)150 2107 y(`)p Fn -(\045readonly-tables)p Fs(')630 2217 y(Mak)m(es)41 b(the)f(con)m(ten)m -(ts)h(of)f(all)f(generated)h(lo)s(okup)e(tables)i(constan)m(t,)j(i.e.,) -g(\\readonly".)630 2326 y(Man)m(y)31 b(compilers)e(can)i(generate)h -(more)e(e\016cien)m(t)h(co)s(de)g(for)f(this)g(b)m(y)g(putting)f(the)i -(tables)630 2436 y(in)e(readonly)h(memory)-8 b(.)150 -2600 y(`)p Fn(\045enum)p Fs(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 -b(alues)30 b(using)f(an)h(en)m(um)g(lo)s(cal)g(to)h(the)g(lo)s(okup)e -(function)g(rather)h(than)630 2710 y(with)36 b(#de\014nes.)60 -b(This)35 b(also)i(means)h(that)f(di\013eren)m(t)g(lo)s(okup)f -(functions)g(can)h(reside)f(in)630 2819 y(the)31 b(same)f(\014le.)40 -b(Thanks)29 b(to)j(James)e(Clark)f Fn()p -Fs(.)150 2984 y(`)p Fn(\045includes)p Fs(')630 3093 y(Include)g(the)i -(necessary)h(system)f(include)e(\014le,)h Fn()p -Fs(,)f(at)i(the)g(b)s(eginning)e(of)i(the)630 3203 y(co)s(de.)39 -b(By)27 b(default,)f(this)f(is)g(not)h(done;)i(the)e(user)f(m)m(ust)h -(include)e(this)g(header)i(\014le)f(himself)630 3313 -y(to)31 b(allo)m(w)f(compilation)f(of)h(the)h(co)s(de.)150 -3477 y(`)p Fn(\045global-table)p Fs(')630 3587 y(Generate)38 -b(the)f(static)g(table)f(of)h(k)m(eyw)m(ords)g(as)g(a)g(static)g -(global)f(v)-5 b(ariable,)37 b(rather)f(than)630 3696 -y(hiding)28 b(it)i(inside)e(of)i(the)h(lo)s(okup)e(function)g(\(whic)m -(h)g(is)h(the)g(default)g(b)s(eha)m(vior\).)150 3861 -y(`)p Fn(\045pic)p Fs(')238 b(Optimize)40 b(the)h(generated)h(table)f -(for)g(inclusion)d(in)i(shared)g(libraries.)70 b(This)39 -b(reduces)630 3970 y(the)c(startup)g(time)g(of)g(programs)g(using)f(a)i -(shared)e(library)f(con)m(taining)i(the)g(generated)630 -4080 y(co)s(de.)j(If)21 b(the)h(`)p Fn(\045struct-type)p -Fs(')d(declaration)j(\(or,)i(equiv)-5 b(alen)m(tly)d(,)23 -b(the)f(option)f(`)p Fn(-t)p Fs('\))h(is)f(also)630 4189 -y(giv)m(en,)31 b(the)g(\014rst)e(\014eld)h(of)g(the)h(user-de\014ned)e +TeXDict begin 14 15 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(14)150 299 y(`)p Fn(\045define)29 b(class-name)e +Fo(name)5 b Fs(')630 408 y(This)66 b(option)i(is)f(only)h(useful)e +(when)h(option)g(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 +b(equiv)-5 b(alen)m(tly)d(,)79 b(the)630 518 y(`)p Fn(\045language=C++) +p Fs(')43 b(declaration\))k(has)f(b)s(een)f(giv)m(en.)88 +b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s(ecify)g(the)630 +628 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)41 +b(Default)32 b(name)e(is)h Fn(Perfect_Hash)p Fs(.)150 +792 y(`)p Fn(\0457bit)p Fs(')190 b(This)36 b(option)i(sp)s(eci\014es)f +(that)g(all)h(strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m +(ts)f(to)h(the)630 902 y(generated)e(hash)e(function)g(and)h(the)g +(generated)g(lo)s(okup)g(function)f(will)h(solely)h(consist)630 +1011 y(of)d(7-bit)h(ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g +(range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 +1121 y(functions)f Fn(isalnum)f Fs(and)i Fn(isgraph)e +Fs(do)i Fl(not)41 b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f +(this)h(range.)630 1230 y(Only)e(an)g(explicit)i(test)f(lik)m(e)h(`)p +Fn(c)e(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fs(')f(guaran)m(tees)j(this.\)) +150 1395 y(`)p Fn(\045compare-lengths)p Fs(')630 1504 +y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h +(string)e(comparison.)70 b(This)39 b(option)h(is)630 +1614 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h +(3.3)f([Binary)g(Strings],)g(page)g(18\).)630 1724 y(It)g(also)h(migh)m +(t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g +(comparisons)g(made)g(during)f(the)630 1833 y(lo)s(okup,)i(since)g(k)m +(eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h +(compared)f(via)h Fn(strcmp)p Fs(.)630 1943 y(Ho)m(w)m(ev)m(er,)d +(using)d(`)p Fn(\045compare-lengths)p Fs(')c(migh)m(t)29 +b(greatly)h(increase)f(the)g(size)g(of)g(the)f(gen-)630 +2052 y(erated)j(C)f(co)s(de)h(if)f(the)h(lo)s(okup)f(table)i(range)e +(is)h(large)g(\(whic)m(h)g(implies)g(that)g(the)f(switc)m(h)630 +2162 y(option)24 b(`)p Fn(-S)p Fs(')g(or)g(`)p Fn(\045switch)p +Fs(')f(is)h(not)g(enabled\),)i(since)e(the)g(length)h(table)f(con)m +(tains)i(as)e(man)m(y)630 2271 y(elemen)m(ts)32 b(as)e(there)h(are)g +(en)m(tries)g(in)f(the)g(lo)s(okup)g(table.)150 2436 +y(`)p Fn(\045compare-strncmp)p Fs(')630 2545 y(Generates)22 +b(C)f(co)s(de)g(that)h(uses)e(the)i Fn(strncmp)d Fs(function)h(to)i(p)s +(erform)e(string)h(comparisons.)630 2655 y(The)30 b(default)g(action)i +(is)f(to)g(use)f Fn(strcmp)p Fs(.)150 2819 y(`)p Fn +(\045readonly-tables)p Fs(')630 2929 y(Mak)m(es)41 b(the)f(con)m(ten)m +(ts)h(of)f(all)h(generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,) +h(\\readonly".)630 3039 y(Man)m(y)31 b(compilers)g(can)g(generate)h +(more)e(e\016cien)m(t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h +(tables)630 3148 y(in)f(readonly)h(memory)-8 b(.)150 +3313 y(`)p Fn(\045enum)p Fs(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 +b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to)f(the)g(lo)s(okup)f +(function)g(rather)g(than)630 3422 y(with)37 b(#de\014nes.)60 +b(This)36 b(also)i(means)g(that)f(di\013eren)m(t)h(lo)s(okup)f +(functions)g(can)g(reside)g(in)630 3532 y(the)31 b(same)f(\014le.)41 +b(Thanks)29 b(to)j(James)e(Clark)g Fn()p +Fs(.)150 3696 y(`)p Fn(\045includes)p Fs(')630 3806 y(Include)g(the)h +(necessary)h(system)f(include)g(\014le,)g Fn()p +Fs(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 3915 y(co)s(de.)39 +b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e(user)f(m)m(ust)h +(include)g(this)f(header)h(\014le)g(himself)630 4025 +y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 +4189 y(`)p Fn(\045global-table)p Fs(')630 4299 y(Generate)38 +b(the)f(static)h(table)f(of)g(k)m(eyw)m(ords)g(as)g(a)g(static)h +(global)g(v)-5 b(ariable,)39 b(rather)d(than)630 4408 +y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s(okup)f(function)g(\(whic)m +(h)g(is)h(the)f(default)h(b)s(eha)m(vior\).)150 4573 +y(`)p Fn(\045pic)p Fs(')238 b(Optimize)42 b(the)f(generated)h(table)g +(for)f(inclusion)g(in)g(shared)f(libraries.)73 b(This)40 +b(reduces)630 4682 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g +(a)h(shared)e(library)h(con)m(taining)i(the)e(generated)630 +4792 y(co)s(de.)j(If)21 b(the)h(`)p Fn(\045struct-type)p +Fs(')d(declaration)24 b(\(or,)g(equiv)-5 b(alen)m(tly)d(,)26 +b(the)c(option)g(`)p Fn(-t)p Fs('\))g(is)g(also)630 4902 +y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e (struct)i(m)m(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p -Fs(',)f(not)h(`)p Fn(char)630 4299 y(*)p Fs(',)h(b)s(ecause)f(it)h -(will)c(con)m(tain)k(o\013sets)h(in)m(to)e(the)h(string)e(p)s(o)s(ol)h -(instead)f(of)i(actual)g(strings.)630 4408 y(T)-8 b(o)33 -b(con)m(v)m(ert)h(suc)m(h)f(an)f(o\013set)i(to)f(a)g(string,)g(y)m(ou)g -(can)g(use)f(the)h(expression)e(`)p Fn(stringpool)630 -4518 y(+)f Fo(o)5 b Fs(',)34 b(where)f Fo(o)38 b Fs(is)32 -b(the)h(o\013set.)50 b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s -(e)g(c)m(hanged)g(through)g(the)630 4628 y(`)p Fn(\045define)c -(string-pool-name)p Fs(')d(declaration.)150 4792 y(`)p -Fn(\045define)j(string-pool-name)d Fo(name)5 b Fs(')630 -4902 y(Allo)m(ws)40 b(y)m(ou)h(to)h(sp)s(ecify)e(the)h(name)g(of)g(the) -g(generated)h(string)e(p)s(o)s(ol)g(created)i(b)m(y)f(the)630 -5011 y(declaration)46 b(`)p Fn(\045pic)p Fs(')g(\(or,)51 -b(equiv)-5 b(alen)m(tly)d(,)50 b(the)d(option)e(`)p Fn(-P)p -Fs('\).)90 b(The)46 b(default)f(name)i(is)630 5121 y(`)p -Fn(stringpool)p Fs('.)38 b(This)28 b(declaration)h(p)s(ermits)f(the)i -(use)g(of)g(t)m(w)m(o)h(hash)e(tables)g(in)g(the)h(same)630 -5230 y(\014le,)38 b(with)d(`)p Fn(\045pic)p Fs(')h(and)g(ev)m(en)h -(when)f(the)h(`)p Fn(\045global-table)p Fs(')c(declaration)j(\(or,)j -(equiv)-5 b(a-)630 5340 y(len)m(tly)d(,)30 b(the)h(option)f(`)p -Fn(-G)p Fs('\))g(is)g(giv)m(en.)p eop +Fs(',)f(not)h(`)p Fn(char)630 5011 y(*)p Fs(',)h(b)s(ecause)f(it)i +(will)e(con)m(tain)i(o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h +(instead)f(of)h(actual)h(strings.)630 5121 y(T)-8 b(o)33 +b(con)m(v)m(ert)h(suc)m(h)f(an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f +(can)g(use)f(the)h(expression)f(`)p Fn(stringpool)630 +5230 y(+)e Fo(o)5 b Fs(',)34 b(where)f Fo(o)38 b Fs(is)33 +b(the)g(o\013set.)50 b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s +(e)g(c)m(hanged)g(through)g(the)630 5340 y(`)p Fn(\045define)c +(string-pool-name)p Fs(')d(declaration.)p eop end %%Page: 15 17 -15 16 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(15)150 -299 y(`)p Fn(\045null-strings)p Fs(')630 408 y(Use)39 -b(NULL)g(strings)e(instead)i(of)f(empt)m(y)i(strings)d(for)i(empt)m(y)g -(k)m(eyw)m(ord)g(table)g(en)m(tries.)630 518 y(This)e(reduces)h(the)h -(startup)g(time)f(of)h(programs)g(using)e(a)i(shared)f(library)e(con)m -(taining)630 628 y(the)29 b(generated)g(co)s(de)g(\(but)f(not)g(as)h(m) -m(uc)m(h)g(as)f(the)h(declaration)f(`)p Fn(\045pic)p -Fs('\),)h(at)g(the)f(exp)s(ense)630 737 y(of)j(one)f(more)h -(test-and-branc)m(h)g(instruction)d(at)j(run)e(time.)150 -913 y(`)p Fn(\045define)g(word-array-name)d Fo(name)5 -b Fs(')630 1022 y(Allo)m(ws)39 b(y)m(ou)h(to)h(sp)s(ecify)e(the)h(name) -g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)g(the)g(hash)630 -1132 y(table.)105 b(Default)52 b(name)f(is)g(`)p Fn(wordlist)p -Fs('.)103 b(This)50 b(option)h(p)s(ermits)f(the)i(use)g(of)g(t)m(w)m(o) -630 1241 y(hash)37 b(tables)g(in)g(the)h(same)g(\014le,)h(ev)m(en)f -(when)f(the)h(option)f(`)p Fn(-G)p Fs(')h(\(or,)i(equiv)-5 -b(alen)m(tly)d(,)39 b(the)630 1351 y(`)p Fn(\045global-table)p -Fs(')27 b(declaration\))k(is)e(giv)m(en.)150 1526 y(`)p -Fn(\045switch=)p Fo(coun)m(t)r Fs(')630 1636 y(Causes)35 -b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e(a)h Fn(switch)e -Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 1746 -y(an)j(arra)m(y)g(lo)s(okup)f(table.)63 b(This)36 b(can)i(lead)g(to)g -(a)h(reduction)e(in)f(b)s(oth)h(time)h(and)f(space)630 -1855 y(requiremen)m(ts)42 b(for)i(some)f(input)f(\014les.)79 -b(The)43 b(argumen)m(t)h(to)g(this)e(option)h(determines)630 -1965 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e -(generated.)49 b(A)32 b(v)-5 b(alue)33 b(of)f(1)i(generates)g(1)f -Fn(switch)630 2074 y Fs(con)m(taining)23 b(all)e(the)j(elemen)m(ts,)h -(a)e(v)-5 b(alue)22 b(of)i(2)f(generates)h(2)g(tables)e(with)g(1/2)i -(the)g(elemen)m(ts)630 2184 y(in)37 b(eac)m(h)i Fn(switch)p -Fs(,)g(etc.)65 b(This)36 b(is)h(useful)g(since)g(man)m(y)i(C)e -(compilers)g(cannot)i(correctly)630 2294 y(generate)29 -b(co)s(de)f(for)f(large)g Fn(switch)f Fs(statemen)m(ts.)41 -b(This)26 b(option)h(w)m(as)h(inspired)c(in)i(part)h(b)m(y)630 -2403 y(Keith)j(Bostic's)h(original)d(C)i(program.)150 -2579 y(`)p Fn(\045omit-struct-type)p Fs(')630 2688 y(Prev)m(en)m(ts)f -(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)f(to)i(the)f -(output)f(\014le.)39 b(Use)28 b(this)e(option)630 2798 -y(if)j(the)i(t)m(yp)s(e)f(is)g(already)g(de\014ned)f(elsewhere.)150 -3054 y Fj(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 -3262 y Fs(Using)25 b(a)h(syn)m(tax)h(similar)c(to)k(GNU)f(utilities)e -Fn(flex)h Fs(and)g Fn(bison)p Fs(,)h(it)f(is)g(p)s(ossible)f(to)i -(directly)f(include)150 3372 y(C)k(source)h(text)g(and)f(commen)m(ts)h -(v)m(erbatim)f(in)m(to)h(the)f(generated)i(output)e(\014le.)39 -b(This)28 b(is)g(accomplished)150 3482 y(b)m(y)37 b(enclosing)f(the)i -(region)f(inside)d(left-justi\014ed)i(surrounding)e(`)p -Fn(\045{)p Fs(',)39 b(`)p Fn(\045})p Fs(')e(pairs.)60 -b(Here)38 b(is)e(an)h(input)150 3591 y(fragmen)m(t)31 -b(based)f(on)g(the)h(previous)e(example)h(that)h(illustrates)d(this)i -(feature:)390 3736 y Fn(\045{)390 3840 y(#include)46 -b()390 3944 y(/*)h(This)g(section)f(of)h(code)f(is)i -(inserted)d(directly)h(into)g(the)h(output.)f(*/)390 -4047 y(int)h(return_month_days)c(\(struct)j(months)g(*months,)f(int)i -(is_leap_year\);)390 4151 y(\045})390 4255 y(struct)f(months)g({)i -(char)e(*name;)g(int)h(number;)f(int)h(days;)f(int)h(leap_days;)e(};) -390 4359 y(\045\045)390 4462 y(january,)141 b(1,)47 b(31,)g(31)390 -4566 y(february,)93 b(2,)47 b(28,)g(29)390 4670 y(march,)237 -b(3,)47 b(31,)g(31)390 4774 y(...)150 5022 y Fj(3.1.2)63 -b(F)-10 b(ormat)40 b(for)h(Keyw)m(ord)f(En)m(tries)275 -5230 y Fs(The)33 b(second)i(input)d(\014le)i(format)h(section)f(con)m -(tains)h(lines)d(of)j(k)m(eyw)m(ords)g(and)e(an)m(y)i(asso)s(ciated)g -(at-)150 5340 y(tributes)i(y)m(ou)i(migh)m(t)f(supply)-8 -b(.)63 b(A)39 b(line)d(b)s(eginning)g(with)h(`)p Fn(#)p -Fs(')i(in)e(the)i(\014rst)f(column)f(is)g(considered)h(a)p -eop +TeXDict begin 15 16 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(15)150 299 y(`)p Fn(\045define)29 b(string-pool-name)d +Fo(name)5 b Fs(')630 408 y(Allo)m(ws)42 b(y)m(ou)f(to)h(sp)s(ecify)f +(the)g(name)g(of)g(the)g(generated)h(string)f(p)s(o)s(ol)g(created)h(b) +m(y)f(the)630 518 y(declaration)48 b(`)p Fn(\045pic)p +Fs(')e(\(or,)51 b(equiv)-5 b(alen)m(tly)d(,)53 b(the)47 +b(option)f(`)p Fn(-P)p Fs('\).)90 b(The)46 b(default)g(name)h(is)630 +628 y(`)p Fn(stringpool)p Fs('.)38 b(This)29 b(declaration)i(p)s +(ermits)e(the)h(use)g(of)g(t)m(w)m(o)h(hash)e(tables)h(in)g(the)g(same) +630 737 y(\014le,)39 b(with)d(`)p Fn(\045pic)p Fs(')g(and)g(ev)m(en)h +(when)f(the)h(`)p Fn(\045global-table)p Fs(')c(declaration)38 +b(\(or,)h(equiv)-5 b(a-)630 847 y(len)m(tly)d(,)32 b(the)f(option)g(`)p +Fn(-G)p Fs('\))f(is)h(giv)m(en.)150 1002 y(`)p Fn(\045null-strings)p +Fs(')630 1112 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i +(strings)e(for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 +1221 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f +(a)h(shared)f(library)g(con)m(taining)630 1331 y(the)29 +b(generated)g(co)s(de)g(\(but)f(not)g(as)h(m)m(uc)m(h)g(as)f(the)h +(declaration)h(`)p Fn(\045pic)p Fs('\),)f(at)g(the)f(exp)s(ense)630 +1441 y(of)j(one)f(more)h(test-and-branc)m(h)g(instruction)f(at)h(run)e +(time.)150 1596 y(`)p Fn(\045define)g(word-array-name)d +Fo(name)5 b Fs(')630 1706 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f +(the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e +(hash)630 1815 y(table.)106 b(Default)53 b(name)e(is)h(`)p +Fn(wordlist)p Fs('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g +(of)g(t)m(w)m(o)630 1925 y(hash)37 b(tables)h(in)g(the)g(same)g +(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fn(-G)p +Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 +2034 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 2190 y(`)p Fn(\045switch=)p Fo(coun)m(t)r +Fs(')630 2299 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e +(a)h Fn(switch)e Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 +2409 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 +b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space) +630 2518 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 +b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630 +2628 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e +(generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f +Fn(switch)630 2738 y Fs(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i +(a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h +(the)g(elemen)m(ts)630 2847 y(in)38 b(eac)m(h)h Fn(switch)p +Fs(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e +(compilers)i(cannot)g(correctly)630 2957 y(generate)29 +b(co)s(de)f(for)f(large)h Fn(switch)e Fs(statemen)m(ts.)41 +b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 +3066 y(Keith)k(Bostic's)h(original)f(C)f(program.)150 +3222 y(`)p Fn(\045omit-struct-type)p Fs(')630 3331 y(Prev)m(en)m(ts)f +(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)h(to)g(the)f +(output)f(\014le.)40 b(Use)28 b(this)f(option)630 3441 +y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g(de\014ned)e(elsewhere.)150 +3659 y Fj(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 +3850 y Fs(Using)26 b(a)g(syn)m(tax)h(similar)f(to)h(GNU)f(utilities)i +Fn(flex)d Fs(and)g Fn(bison)p Fs(,)h(it)g(is)g(p)s(ossible)g(to)g +(directly)h(include)150 3959 y(C)i(source)h(text)g(and)f(commen)m(ts)h +(v)m(erbatim)g(in)m(to)h(the)e(generated)i(output)e(\014le.)40 +b(This)29 b(is)g(accomplished)150 4069 y(b)m(y)37 b(enclosing)h(the)g +(region)g(inside)e(left-justi\014ed)i(surrounding)d(`)p +Fn(\045{)p Fs(',)k(`)p Fn(\045})p Fs(')e(pairs.)61 b(Here)38 +b(is)f(an)g(input)150 4178 y(fragmen)m(t)31 b(based)f(on)g(the)h +(previous)f(example)h(that)g(illustrates)g(this)g(feature:)390 +4305 y Fn(\045{)390 4409 y(#include)46 b()390 +4513 y(/*)h(This)g(section)f(of)h(code)f(is)i(inserted)d(directly)h +(into)g(the)h(output.)f(*/)390 4616 y(int)h(return_month_days)c +(\(struct)j(month)g(*months,)g(int)h(is_leap_year\);)390 +4720 y(\045})390 4824 y(struct)f(month)g({)i(char)f(*name;)f(int)h +(number;)e(int)i(days;)g(int)g(leap_days;)e(};)390 4928 +y(\045\045)390 5032 y(january,)141 b(1,)47 b(31,)g(31)390 +5135 y(february,)93 b(2,)47 b(28,)g(29)390 5239 y(march,)237 +b(3,)47 b(31,)g(31)390 5343 y(...)p eop end %%Page: 16 18 -16 17 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(16)150 -299 y(commen)m(t.)53 b(Ev)m(erything)33 b(follo)m(wing)f(the)j(`)p -Fn(#)p Fs(')f(is)f(ignored,)h(up)f(to)i(and)e(including)e(the)j(follo)m -(wing)e(new-)150 408 y(line.)55 b(A)36 b(line)f(b)s(eginning)e(with)h -(`)p Fn(\045)p Fs(')i(in)f(the)h(\014rst)f(column)f(is)h(an)h(option)f -(declaration)h(and)f(m)m(ust)h(not)150 518 y(o)s(ccur)30 -b(within)e(the)j(k)m(eyw)m(ords)f(section.)275 698 y(The)36 -b(\014rst)g(\014eld)f(of)i(eac)m(h)g(non-commen)m(t)h(line)d(is)h(alw)m -(a)m(ys)h(the)g(k)m(eyw)m(ord)g(itself.)58 b(It)37 b(can)g(b)s(e)f(giv) -m(en)150 807 y(in)e(t)m(w)m(o)i(w)m(a)m(ys:)51 b(as)35 -b(a)g(simple)e(name,)k(i.e.,)f(without)e(surrounding)e(string)i -(quotation)h(marks,)h(or)f(as)h(a)150 917 y(string)h(enclosed)g(in)f -(double-quotes,)j(in)d(C)i(syn)m(tax,)i(p)s(ossibly)35 -b(with)h(bac)m(kslash)h(escap)s(es)h(lik)m(e)f Fn(\\")g -Fs(or)150 1027 y Fn(\\234)23 b Fs(or)i Fn(\\xa8)p Fs(.)37 -b(In)24 b(either)g(case,)j(it)d(m)m(ust)g(start)h(righ)m(t)f(at)h(the)g -(b)s(eginning)c(of)k(the)g(line,)f(without)f(leading)150 -1136 y(whitespace.)57 b(In)35 b(this)g(con)m(text,)k(a)e(\\\014eld")e -(is)g(considered)g(to)h(extend)g(up)f(to,)j(but)d(not)h(include,)g(the) -150 1246 y(\014rst)i(blank,)h(comma,)j(or)c(newline.)63 -b(Here)39 b(is)e(a)i(simple)e(example)h(tak)m(en)h(from)f(a)h(partial)f -(list)f(of)h(C)150 1355 y(reserv)m(ed)31 b(w)m(ords:)390 -1529 y Fn(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h -(the)g(c.gperf)f(file)390 1633 y(#)h(for)g(a)h(complete)d(list)i(of)g -(ANSI)g(C)g(reserved)f(words.)390 1737 y(unsigned)390 -1841 y(sizeof)390 1944 y(switch)390 2048 y(signed)390 -2152 y(if)390 2256 y(default)390 2360 y(for)390 2463 -y(while)390 2567 y(return)275 2740 y Fs(Note)38 b(that)f(unlik)m(e)e -Fn(flex)h Fs(or)h Fn(bison)e Fs(the)j(\014rst)e(`)p Fn(\045\045)p -Fs(')g(mark)m(er)i(ma)m(y)f(b)s(e)f(elided)f(if)h(the)h(declaration)150 -2849 y(section)31 b(is)e(empt)m(y)-8 b(.)275 3029 y(Additional)26 -b(\014elds)h(ma)m(y)i(optionally)e(follo)m(w)h(the)h(leading)e(k)m(eyw) -m(ord.)41 b(Fields)27 b(should)f(b)s(e)i(separated)150 -3139 y(b)m(y)g(commas,)i(and)d(terminate)i(at)g(the)f(end)g(of)g(line.) -39 b(What)29 b(these)f(\014elds)f(mean)h(is)g(en)m(tirely)f(up)g(to)i -(y)m(ou;)150 3248 y(they)k(are)h(used)e(to)i(initialize)c(the)k(elemen) -m(ts)f(of)g(the)h(user-de\014ned)d Fn(struct)h Fs(pro)m(vided)f(b)m(y)i -(y)m(ou)h(in)e(the)150 3358 y(declaration)38 b(section.)66 -b(If)39 b(the)g(`)p Fn(-t)p Fs(')f(option)g(\(or,)k(equiv)-5 -b(alen)m(tly)d(,)40 b(the)f(`)p Fn(\045struct-type)p -Fs(')d(declaration\))150 3468 y(is)f Fl(not)45 b Fs(enabled)35 -b(these)h(\014elds)f(are)h(simply)d(ignored.)57 b(All)34 -b(previous)h(examples)g(except)i(the)f(last)g(one)150 -3577 y(con)m(tain)31 b(k)m(eyw)m(ord)g(attributes.)150 -3892 y Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 -b(unctions)275 4130 y Fs(The)30 b(optional)g(third)f(section)i(also)g -(corresp)s(onds)e(closely)h(with)g(con)m(v)m(en)m(tions)i(found)d(in)h -Fn(flex)g Fs(and)150 4239 y Fn(bison)p Fs(.)36 b(All)21 -b(text)i(in)e(this)f(section,)k(starting)e(at)h(the)f(\014nal)e(`)p -Fn(\045\045)p Fs(')i(and)f(extending)h(to)g(the)g(end)g(of)g(the)g -(input)150 4349 y(\014le,)30 b(is)g(included)f(v)m(erbatim)h(in)m(to)h -(the)g(generated)h(output)f(\014le.)41 b(Naturally)-8 -b(,)31 b(it)f(is)g(y)m(our)h(resp)s(onsibilit)m(y)150 -4459 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)f(in)g(this)f -(section)h(is)g(v)-5 b(alid)28 b(C.)150 4773 y Fj(3.1.4)63 -b(Where)41 b(to)g(place)f(directiv)m(es)g(for)h(GNU)h +TeXDict begin 16 17 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(16)150 299 y Fj(3.1.2)63 b(F)-10 b(ormat)41 b(for)h(Keyw)m(ord)e +(En)m(tries)275 495 y Fs(The)33 b(second)i(input)e(\014le)i(format)g +(section)g(con)m(tains)h(lines)e(of)h(k)m(eyw)m(ords)g(and)e(an)m(y)i +(asso)s(ciated)h(at-)150 605 y(tributes)i(y)m(ou)h(migh)m(t)g(supply)-8 +b(.)64 b(A)39 b(line)f(b)s(eginning)g(with)g(`)p Fn(#)p +Fs(')h(in)f(the)h(\014rst)f(column)g(is)g(considered)h(a)150 +714 y(commen)m(t.)53 b(Ev)m(erything)34 b(follo)m(wing)h(the)g(`)p +Fn(#)p Fs(')f(is)g(ignored,)h(up)e(to)i(and)e(including)h(the)g(follo)m +(wing)h(new-)150 824 y(line.)57 b(A)36 b(line)h(b)s(eginning)e(with)g +(`)p Fn(\045)p Fs(')h(in)g(the)g(\014rst)f(column)g(is)h(an)g(option)g +(declaration)i(and)d(m)m(ust)h(not)150 934 y(o)s(ccur)30 +b(within)g(the)h(k)m(eyw)m(ords)f(section.)275 1072 y(The)36 +b(\014rst)g(\014eld)g(of)h(eac)m(h)g(non-commen)m(t)h(line)f(is)g(alw)m +(a)m(ys)h(the)f(k)m(eyw)m(ord)g(itself.)60 b(It)37 b(can)g(b)s(e)f(giv) +m(en)150 1181 y(in)f(t)m(w)m(o)h(w)m(a)m(ys:)51 b(as)35 +b(a)g(simple)g(name,)i(i.e.,)g(without)e(surrounding)e(string)i +(quotation)h(marks,)g(or)f(as)h(a)150 1291 y(string)i(enclosed)g(in)f +(double-quotes,)j(in)d(C)h(syn)m(tax,)i(p)s(ossibly)d(with)g(bac)m +(kslash)h(escap)s(es)g(lik)m(e)h Fn(\\")e Fs(or)150 1401 +y Fn(\\234)23 b Fs(or)i Fn(\\xa8)p Fs(.)37 b(In)24 b(either)h(case,)i +(it)e(m)m(ust)f(start)h(righ)m(t)g(at)g(the)g(b)s(eginning)e(of)i(the)g +(line,)h(without)e(leading)150 1510 y(whitespace.)58 +b(In)35 b(this)h(con)m(text,)j(a)e(\\\014eld")f(is)g(considered)g(to)g +(extend)g(up)f(to,)j(but)d(not)h(include,)i(the)150 1620 +y(\014rst)g(blank,)i(comma,)i(or)c(newline.)65 b(Here)39 +b(is)f(a)h(simple)g(example)g(tak)m(en)g(from)f(a)h(partial)h(list)f +(of)f(C)150 1729 y(reserv)m(ed)31 b(w)m(ords:)390 1862 +y Fn(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h(the)g +(c.gperf)f(file)390 1966 y(#)h(for)g(a)h(complete)d(list)i(of)g(ANSI)g +(C)g(reserved)f(words.)390 2069 y(unsigned)390 2173 y(sizeof)390 +2277 y(switch)390 2381 y(signed)390 2484 y(if)390 2588 +y(default)390 2692 y(for)390 2796 y(while)390 2900 y(return)275 +3031 y Fs(Note)38 b(that)f(unlik)m(e)g Fn(flex)f Fs(or)h +Fn(bison)e Fs(the)j(\014rst)e(`)p Fn(\045\045)p Fs(')g(mark)m(er)i(ma)m +(y)f(b)s(e)f(elided)h(if)g(the)g(declaration)150 3140 +y(section)32 b(is)e(empt)m(y)-8 b(.)275 3279 y(Additional)29 +b(\014elds)f(ma)m(y)h(optionally)h(follo)m(w)g(the)f(leading)g(k)m(eyw) +m(ord.)41 b(Fields)29 b(should)e(b)s(e)h(separated)150 +3388 y(b)m(y)g(commas,)i(and)d(terminate)j(at)f(the)f(end)g(of)g(line.) +41 b(What)29 b(these)f(\014elds)g(mean)g(is)h(en)m(tirely)g(up)e(to)i +(y)m(ou;)150 3498 y(they)k(are)h(used)e(to)i(initialize)h(the)f(elemen) +m(ts)g(of)f(the)h(user-de\014ned)d Fn(struct)h Fs(pro)m(vided)g(b)m(y)h +(y)m(ou)h(in)f(the)150 3607 y(declaration)40 b(section.)67 +b(If)39 b(the)g(`)p Fn(-t)p Fs(')f(option)h(\(or,)j(equiv)-5 +b(alen)m(tly)d(,)43 b(the)c(`)p Fn(\045struct-type)p +Fs(')d(declaration\))150 3717 y(is)g Fl(not)45 b Fs(enabled)36 +b(these)g(\014elds)g(are)g(simply)f(ignored.)58 b(All)36 +b(previous)g(examples)g(except)h(the)f(last)h(one)150 +3826 y(con)m(tain)32 b(k)m(eyw)m(ord)f(attributes.)150 +4058 y Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 +b(unctions)275 4254 y Fs(The)30 b(optional)i(third)e(section)i(also)g +(corresp)s(onds)d(closely)j(with)f(con)m(v)m(en)m(tions)i(found)c(in)i +Fn(flex)f Fs(and)150 4364 y Fn(bison)p Fs(.)36 b(All)23 +b(text)g(in)f(this)f(section,)k(starting)e(at)g(the)f(\014nal)f(`)p +Fn(\045\045)p Fs(')h(and)f(extending)i(to)f(the)g(end)g(of)g(the)g +(input)150 4474 y(\014le,)31 b(is)g(included)g(v)m(erbatim)g(in)m(to)h +(the)f(generated)h(output)f(\014le.)42 b(Naturally)-8 +b(,)33 b(it)e(is)g(y)m(our)g(resp)s(onsibilit)m(y)150 +4583 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)g(in)g(this)f +(section)h(is)g(v)-5 b(alid)30 b(C.)150 4815 y Fj(3.1.4)63 +b(Where)41 b(to)g(place)f(directiv)m(es)g(for)i(GNU)g Fi(indent)p Fj(.)275 5011 y Fs(If)26 b(y)m(ou)i(w)m(an)m(t)g(to)g(in)m -(v)m(ok)m(e)g(GNU)g Fn(indent)e Fs(on)h(a)g Fn(gperf)f -Fs(input)g(\014le,)h(y)m(ou)g(will)e(see)j(that)g(GNU)g +(v)m(ok)m(e)h(GNU)f Fn(indent)e Fs(on)h(a)g Fn(gperf)f +Fs(input)h(\014le,)h(y)m(ou)f(will)h(see)g(that)g(GNU)g Fn(indent)150 5121 y Fs(do)s(esn't)33 b(understand)e(the)i(`)p Fn(\045\045)p Fs(',)h(`)p Fn(\045{)p Fs(')e(and)h(`)p -Fn(\045})p Fs(')g(directiv)m(es)f(that)h(con)m(trol)h -Fn(gperf)p Fs('s)d(in)m(terpretation)i(of)150 5230 y(the)23 -b(input)e(\014le.)37 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g -(insert)e(some)h(directiv)m(es)f(for)h(GNU)h Fn(indent)p -Fs(.)36 b(More)24 b(precisely)-8 b(,)150 5340 y(assuming)29 -b(the)i(most)f(general)h(input)d(\014le)i(structure)p -eop +Fn(\045})p Fs(')g(directiv)m(es)h(that)f(con)m(trol)i +Fn(gperf)p Fs('s)c(in)m(terpretation)k(of)150 5230 y(the)23 +b(input)f(\014le.)38 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g +(insert)f(some)g(directiv)m(es)h(for)f(GNU)h Fn(indent)p +Fs(.)36 b(More)24 b(precisely)-8 b(,)150 5340 y(assuming)30 +b(the)h(most)f(general)i(input)d(\014le)i(structure)p +eop end %%Page: 17 19 -17 18 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(17)390 -299 y Fn(declarations)44 b(part)j(1)390 403 y(\045{)390 -506 y(verbatim)f(code)390 610 y(\045})390 714 y(declarations)e(part)j -(2)390 818 y(\045\045)390 922 y(keywords)390 1025 y(\045\045)390 -1129 y(functions)150 1263 y Fs(y)m(ou)31 b(w)m(ould)e(insert)g(`)p -Fn(*INDENT-OFF*)p Fs(')f(and)h(`)p Fn(*INDENT-ON*)p Fs(')f(commen)m(ts) -k(as)e(follo)m(ws:)390 1397 y Fn(/*)47 b(*INDENT-OFF*)e(*/)390 -1501 y(declarations)f(part)j(1)390 1605 y(\045{)390 1709 -y(/*)g(*INDENT-ON*)e(*/)390 1812 y(verbatim)h(code)390 -1916 y(/*)h(*INDENT-OFF*)e(*/)390 2020 y(\045})390 2124 -y(declarations)f(part)j(2)390 2227 y(\045\045)390 2331 -y(keywords)390 2435 y(\045\045)390 2539 y(/*)g(*INDENT-ON*)e(*/)390 -2643 y(functions)150 2906 y Fr(3.2)68 b(Output)45 b(F)-11 -b(ormat)45 b(for)g(Generated)h(C)f(Co)t(de)g(with)g Fk(gperf)275 -3105 y Fs(Sev)m(eral)27 b(options)g(con)m(trol)h(ho)m(w)f(the)h -(generated)h(C)e(co)s(de)h(app)s(ears)e(on)i(the)g(standard)e(output.) -40 b(Tw)m(o)150 3215 y(C)22 b(function)f(are)h(generated.)39 -b(They)22 b(are)h(called)e Fn(hash)g Fs(and)h Fn(in_word_set)p -Fs(,)f(although)g(y)m(ou)i(ma)m(y)g(mo)s(dify)150 3324 -y(their)31 b(names)h(with)f(a)h(command-line)f(option.)45 -b(Both)33 b(functions)e(require)g(t)m(w)m(o)i(argumen)m(ts,)g(a)g -(string,)150 3434 y Fn(char)c(*)43 b Fo(str)p Fs(,)j(and)d(a)g(length)g -(parameter,)k Fn(int)42 b Fo(len)p Fs(.)78 b(Their)42 -b(default)g(function)g(protot)m(yp)s(es)h(are)h(as)150 -3543 y(follo)m(ws:)3525 3796 y(F)-8 b(unction)-3725 b +TeXDict begin 17 18 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(17)390 299 y Fn(declarations)44 b(part)j(1)390 403 +y(\045{)390 506 y(verbatim)f(code)390 610 y(\045})390 +714 y(declarations)e(part)j(2)390 818 y(\045\045)390 +922 y(keywords)390 1025 y(\045\045)390 1129 y(functions)150 +1263 y Fs(y)m(ou)31 b(w)m(ould)f(insert)g(`)p Fn(*INDENT-OFF*)p +Fs(')e(and)h(`)p Fn(*INDENT-ON*)p Fs(')f(commen)m(ts)k(as)e(follo)m +(ws:)390 1397 y Fn(/*)47 b(*INDENT-OFF*)e(*/)390 1501 +y(declarations)f(part)j(1)390 1605 y(\045{)390 1709 y(/*)g(*INDENT-ON*) +e(*/)390 1812 y(verbatim)h(code)390 1916 y(/*)h(*INDENT-OFF*)e(*/)390 +2020 y(\045})390 2124 y(declarations)f(part)j(2)390 2227 +y(\045\045)390 2331 y(keywords)390 2435 y(\045\045)390 +2539 y(/*)g(*INDENT-ON*)e(*/)390 2643 y(functions)150 +2906 y Fr(3.2)68 b(Output)45 b(F)-11 b(ormat)45 b(for)g(Generated)h(C)f +(Co)t(de)g(with)g Fk(gperf)275 3105 y Fs(Sev)m(eral)28 +b(options)g(con)m(trol)h(ho)m(w)e(the)h(generated)h(C)e(co)s(de)h(app)s +(ears)e(on)i(the)g(standard)e(output.)40 b(Tw)m(o)150 +3215 y(C)22 b(function)g(are)g(generated.)39 b(They)22 +b(are)h(called)g Fn(hash)e Fs(and)h Fn(in_word_set)p +Fs(,)f(although)h(y)m(ou)h(ma)m(y)g(mo)s(dify)150 3324 +y(their)32 b(names)g(with)g(a)g(command-line)h(option.)46 +b(Both)33 b(functions)f(require)g(t)m(w)m(o)h(argumen)m(ts,)g(a)g +(string,)150 3434 y Fn(char)c(*)43 b Fo(str)p Fs(,)j(and)d(a)g(length)h +(parameter,)j Fn(int)42 b Fo(len)p Fs(.)79 b(Their)43 +b(default)g(function)g(protot)m(yp)s(es)g(are)h(as)150 +3543 y(follo)m(ws:)3525 3796 y(F)-8 b(unction)-3724 b Fh(unsigned)41 b(int)e Fg(hash)44 b Ff(\()p Fn(const)30 b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p -Ff(\))390 3905 y Fs(By)35 b(default,)g(the)f(generated)i -Fn(hash)d Fs(function)g(returns)g(an)i(in)m(teger)g(v)-5 -b(alue)33 b(created)j(b)m(y)e(adding)390 4015 y Fo(len)27 -b Fs(to)h(sev)m(eral)g(user-sp)s(eci\014ed)d Fo(str)34 -b Fs(b)m(yte)28 b(p)s(ositions)e(indexed)g(in)m(to)h(an)g -Fo(asso)s(ciated)h(v)-5 b(alues)31 b Fs(table)390 4124 -y(stored)d(in)f(a)h(lo)s(cal)g(static)g(arra)m(y)-8 b(.)41 -b(The)28 b(asso)s(ciated)g(v)-5 b(alues)28 b(table)g(is)f(constructed)h -(in)m(ternally)e(b)m(y)390 4234 y Fn(gperf)34 b Fs(and)g(later)h -(output)f(as)i(a)f(static)h(lo)s(cal)e(C)g(arra)m(y)i(called)e(`)p +Ff(\))390 3905 y Fs(By)35 b(default,)h(the)e(generated)i +Fn(hash)d Fs(function)h(returns)f(an)i(in)m(teger)h(v)-5 +b(alue)34 b(created)i(b)m(y)e(adding)390 4015 y Fo(len)28 +b Fs(to)g(sev)m(eral)h(user-sp)s(eci\014ed)d Fo(str)34 +b Fs(b)m(yte)28 b(p)s(ositions)g(indexed)f(in)m(to)h(an)f +Fo(asso)s(ciated)i(v)-5 b(alues)32 b Fs(table)390 4124 +y(stored)c(in)g(a)g(lo)s(cal)i(static)f(arra)m(y)-8 b(.)41 +b(The)28 b(asso)s(ciated)h(v)-5 b(alues)29 b(table)g(is)f(constructed)g +(in)m(ternally)h(b)m(y)390 4234 y Fn(gperf)34 b Fs(and)g(later)i +(output)e(as)i(a)f(static)i(lo)s(cal)f(C)e(arra)m(y)i(called)g(`)p Fn(hash_table)p Fs('.)52 b(The)35 b(relev)-5 b(an)m(t)390 -4344 y(selected)27 b(p)s(ositions)e(\(i.e.)40 b(indices)25 -b(in)m(to)i Fo(str)7 b Fs(\))26 b(are)h(sp)s(eci\014ed)e(via)i(the)g(`) -p Fn(-k)p Fs(')g(option)f(when)g(running)390 4453 y Fn(gperf)p -Fs(,)j(as)i(detailed)e(in)g(the)i Fl(Options)39 b Fs(section)30 -b(b)s(elo)m(w)g(\(see)h(Chapter)f(4)h([Options],)e(page)i(19\).)3525 -4705 y(F)-8 b(unction)-3725 b Fg(in)p 253 4705 35 5 v +4344 y(selected)28 b(p)s(ositions)f(\(i.e.)41 b(indices)27 +b(in)m(to)h Fo(str)7 b Fs(\))26 b(are)h(sp)s(eci\014ed)f(via)i(the)f(`) +p Fn(-k)p Fs(')g(option)g(when)f(running)390 4453 y Fn(gperf)p +Fs(,)j(as)i(detailed)g(in)f(the)h Fl(Options)39 b Fs(section)31 +b(b)s(elo)m(w)g(\(see)g(Chapter)f(4)h([Options],)f(page)h(19\).)3525 +4705 y(F)-8 b(unction)-3724 b Fg(in)p 253 4705 35 5 v 41 w(w)m(ord)p 542 4705 V 41 w(set)44 b Ff(\()p Fn(const)30 b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p -Ff(\))390 4815 y Fs(If)k Fo(str)41 b Fs(is)32 b(in)h(the)h(k)m(eyw)m -(ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)e(to)h(that)h(k)m(eyw)m(ord.) -51 b(More)35 b(exactly)-8 b(,)36 b(if)d(the)390 4924 -y(option)d(`)p Fn(-t)p Fs(')h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)30 -b(the)h(`)p Fn(\045struct-type)p Fs(')d(declaration\))i(w)m(as)h(giv)m -(en,)g(it)f(returns)g(a)390 5034 y(p)s(oin)m(ter)f(to)i(the)g(matc)m -(hing)g(k)m(eyw)m(ord's)f(structure.)41 b(Otherwise)29 -b(it)h(returns)f Fn(NULL)p Fs(.)275 5230 y(If)39 b(the)i(option)e(`)p -Fn(-c)p Fs(')h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)42 b(the)f(`)p -Fn(\045compare-strncmp)p Fs(')36 b(declaration\))k(is)f(not)h(used,)150 -5340 y Fo(str)k Fs(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)g(string)f -(of)i(exactly)g(length)e Fo(len)p Fs(.)61 b(If)37 b(`)p -Fn(-c)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)39 b(the)p -eop +Ff(\))390 4815 y Fs(If)k Fo(str)41 b Fs(is)33 b(in)h(the)g(k)m(eyw)m +(ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)f(to)g(that)h(k)m(eyw)m(ord.) +51 b(More)35 b(exactly)-8 b(,)37 b(if)d(the)390 4924 +y(option)d(`)p Fn(-t)p Fs(')g(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 +b(the)e(`)p Fn(\045struct-type)p Fs(')d(declaration\))k(w)m(as)f(giv)m +(en,)h(it)f(returns)f(a)390 5034 y(p)s(oin)m(ter)g(to)h(the)g(matc)m +(hing)h(k)m(eyw)m(ord's)e(structure.)41 b(Otherwise)30 +b(it)h(returns)e Fn(NULL)p Fs(.)275 5230 y(If)39 b(the)i(option)f(`)p +Fn(-c)p Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)45 b(the)c(`)p +Fn(\045compare-strncmp)p Fs(')36 b(declaration\))42 b(is)e(not)g(used,) +150 5340 y Fo(str)k Fs(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)h +(string)f(of)h(exactly)h(length)e Fo(len)p Fs(.)62 b(If)37 +b(`)p Fn(-c)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 +b(the)p eop end %%Page: 18 20 -18 19 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(18)150 -299 y(`)p Fn(\045compare-strncmp)p Fs(')22 b(declaration\))k(is)f -(used,)h Fo(str)32 b Fs(m)m(ust)26 b(simply)e(b)s(e)h(an)h(arra)m(y)g -(of)g Fo(len)f Fs(b)m(ytes)i(and)e(do)s(es)150 408 y(not)31 -b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 543 y(The)f(co)s(de)i -(generated)g(for)g(these)f(t)m(w)m(o)i(functions)d(is)g(a\013ected)j(b) -m(y)f(the)f(follo)m(wing)f(options:)150 702 y(`)p Fn(-t)p -Fs(')150 812 y(`)p Fn(--struct-type)p Fs(')630 922 y(Mak)m(e)j(use)e -(of)h(the)f(user-de\014ned)f Fn(struct)p Fs(.)150 1081 -y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m(ts)t Fs(')150 -1191 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m(ts)t -Fs(')630 1300 y(Generate)22 b(1)f(or)g(more)g(C)f Fn(switch)f -Fs(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)i(\(and)d(p)s(oten)m -(tially)630 1410 y(sparse\))j(static)g(arra)m(y)-8 b(.)40 -b(Although)22 b(the)h(exact)h(time)f(and)f(space)i(sa)m(vings)f(of)g -(this)f(approac)m(h)630 1519 y(v)-5 b(ary)32 b(according)f(to)i(y)m -(our)e(C)g(compiler's)g(degree)h(of)g(optimization,)f(this)f(metho)s(d) -i(often)630 1629 y(results)d(in)g(smaller)g(and)h(faster)h(co)s(de.)275 -1788 y(If)c(the)h(`)p Fn(-t)p Fs(')g(and)f(`)p Fn(-S)p -Fs(')g(options)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)28 -b(the)g(`)p Fn(\045struct-type)p Fs(')d(and)i(`)p Fn(\045switch)p -Fs(')g(declara-)150 1898 y(tions\))e(are)g(omitted,)h(the)f(default)f -(action)h(is)f(to)i(generate)g(a)g Fn(char)j(*)24 b Fs(arra)m(y)i(con)m -(taining)e(the)h(k)m(eyw)m(ords,)150 2007 y(together)32 -b(with)d(additional)g(empt)m(y)i(strings)e(used)h(for)g(padding)f(the)h -(arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)f(with)150 -2117 y(the)i(v)-5 b(arious)31 b(input)e(and)h(output)h(options,)g(and)g -(timing)e(the)j(resulting)d(C)i(co)s(de,)h(y)m(ou)f(can)h(determine)150 -2227 y(the)f(b)s(est)f(option)f(c)m(hoices)i(for)g(di\013eren)m(t)e(k)m -(eyw)m(ord)i(set)g(c)m(haracteristics.)150 2484 y Fr(3.3)68 -b(Use)46 b(of)f(NUL)g(b)l(ytes)275 2677 y Fs(By)30 b(default,)g(the)g +TeXDict begin 18 19 bop 150 -116 a Fs(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 +b Fs(18)150 299 y(`)p Fn(\045compare-strncmp)p Fs(')22 +b(declaration\))28 b(is)e(used,)g Fo(str)32 b Fs(m)m(ust)26 +b(simply)g(b)s(e)f(an)h(arra)m(y)g(of)g Fo(len)g Fs(b)m(ytes)h(and)e +(do)s(es)150 408 y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 +543 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m(w)m(o)i(functions)e +(is)g(a\013ected)i(b)m(y)f(the)f(follo)m(wing)i(options:)150 +702 y(`)p Fn(-t)p Fs(')150 812 y(`)p Fn(--struct-type)p +Fs(')630 922 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f +Fn(struct)p Fs(.)150 1081 y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m +(ts)t Fs(')150 1191 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m +(ts)t Fs(')630 1300 y(Generate)22 b(1)f(or)g(more)g(C)f +Fn(switch)f Fs(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)j(\(and) +c(p)s(oten)m(tially)630 1410 y(sparse\))j(static)h(arra)m(y)-8 +b(.)40 b(Although)23 b(the)g(exact)h(time)g(and)e(space)i(sa)m(vings)g +(of)f(this)g(approac)m(h)630 1519 y(v)-5 b(ary)32 b(according)g(to)h(y) +m(our)e(C)g(compiler's)i(degree)f(of)g(optimization,)i(this)d(metho)s +(d)h(often)630 1629 y(results)e(in)g(smaller)h(and)f(faster)h(co)s(de.) +275 1788 y(If)c(the)h(`)p Fn(-t)p Fs(')g(and)f(`)p Fn(-S)p +Fs(')g(options)i(\(or,)f(equiv)-5 b(alen)m(tly)d(,)31 +b(the)d(`)p Fn(\045struct-type)p Fs(')d(and)i(`)p Fn(\045switch)p +Fs(')g(declara-)150 1898 y(tions\))f(are)f(omitted,)i(the)e(default)g +(action)h(is)f(to)h(generate)g(a)g Fn(char)j(*)24 b Fs(arra)m(y)i(con)m +(taining)g(the)f(k)m(eyw)m(ords,)150 2007 y(together)32 +b(with)e(additional)i(empt)m(y)f(strings)f(used)g(for)g(padding)g(the)g +(arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)h(with)150 +2117 y(the)g(v)-5 b(arious)32 b(input)e(and)g(output)h(options,)h(and)f +(timing)g(the)h(resulting)f(C)g(co)s(de,)h(y)m(ou)f(can)h(determine)150 +2227 y(the)f(b)s(est)f(option)g(c)m(hoices)i(for)f(di\013eren)m(t)f(k)m +(eyw)m(ord)h(set)g(c)m(haracteristics.)150 2484 y Fr(3.3)68 +b(Use)46 b(of)f(NUL)g(b)l(ytes)275 2677 y Fs(By)30 b(default,)h(the)f (co)s(de)g(generated)i(b)m(y)e Fn(gperf)e Fs(op)s(erates)j(on)f(zero)h -(terminated)f(strings,)f(the)h(usual)150 2786 y(represen)m(tation)40 -b(of)f(strings)g(in)f(C.)i(This)d(means)j(that)g(the)g(k)m(eyw)m(ords)g -(in)e(the)i(input)e(\014le)g(m)m(ust)i(not)150 2896 y(con)m(tain)c(NUL) -g(b)m(ytes,)i(and)e(the)g Fo(str)42 b Fs(argumen)m(t)36 +(terminated)g(strings,)f(the)g(usual)150 2786 y(represen)m(tation)41 +b(of)e(strings)h(in)f(C.)h(This)e(means)i(that)g(the)g(k)m(eyw)m(ords)g +(in)f(the)h(input)f(\014le)g(m)m(ust)h(not)150 2896 y(con)m(tain)d(NUL) +f(b)m(ytes,)i(and)e(the)g Fo(str)42 b Fs(argumen)m(t)36 b(passed)g(to)g Fn(hash)f Fs(or)h Fn(in_word_set)d Fs(m)m(ust)j(b)s(e)f -(NUL)150 3005 y(terminated)30 b(and)g(ha)m(v)m(e)h(exactly)g(length)f -Fo(len)p Fs(.)275 3140 y(If)35 b(option)h(`)p Fn(-c)p -Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)37 b(the)f(`)p -Fn(\045compare-strncmp)p Fs(')c(declaration\))k(is)f(used,)i(then)f -(the)150 3249 y Fo(str)e Fs(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to) -h(b)s(e)e(NUL)h(terminated.)40 b(The)27 b(co)s(de)h(generated)h(b)m(y)f -Fn(gperf)f Fs(will)e(only)150 3359 y(access)k(the)f(\014rst)g -Fo(len)p Fs(,)f(not)i Fo(len)p Fn(+)p Fo(1)p Fs(,)e(b)m(ytes)i -(starting)f(at)g Fo(str)p Fs(.)40 b(Ho)m(w)m(ev)m(er,)31 -b(the)d(k)m(eyw)m(ords)g(in)f(the)h(input)e(\014le)150 -3469 y(still)i(m)m(ust)j(not)f(con)m(tain)h(NUL)f(b)m(ytes.)275 -3603 y(If)35 b(option)h(`)p Fn(-l)p Fs(')g(\(or,)i(equiv)-5 -b(alen)m(tly)d(,)37 b(the)f(`)p Fn(\045compare-lengths)p -Fs(')c(declaration\))k(is)f(used,)i(then)f(the)150 3713 -y(hash)c(table)h(p)s(erforms)e(binary)g(comparison.)46 -b(The)33 b(k)m(eyw)m(ords)g(in)e(the)i(input)e(\014le)g(ma)m(y)j(con)m -(tain)f(NUL)150 3822 y(b)m(ytes,)46 b(written)40 b(in)h(string)g(syn)m -(tax)h(as)g Fn(\\000)f Fs(or)h Fn(\\x00)p Fs(,)i(and)d(the)h(co)s(de)g +(NUL)150 3005 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f +Fo(len)p Fs(.)275 3140 y(If)k(option)i(`)p Fn(-c)p Fs(')f(\(or,)i +(equiv)-5 b(alen)m(tly)d(,)40 b(the)c(`)p Fn(\045compare-strncmp)p +Fs(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 +3249 y Fo(str)e Fs(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to)h(b)s(e)e +(NUL)h(terminated.)41 b(The)27 b(co)s(de)h(generated)h(b)m(y)f +Fn(gperf)f Fs(will)h(only)150 3359 y(access)h(the)f(\014rst)g +Fo(len)p Fs(,)g(not)h Fo(len)p Fn(+)p Fo(1)p Fs(,)f(b)m(ytes)h +(starting)g(at)f Fo(str)p Fs(.)40 b(Ho)m(w)m(ev)m(er,)31 +b(the)d(k)m(eyw)m(ords)g(in)g(the)g(input)f(\014le)150 +3469 y(still)k(m)m(ust)g(not)f(con)m(tain)i(NUL)e(b)m(ytes.)275 +3603 y(If)35 b(option)i(`)p Fn(-l)p Fs(')f(\(or,)i(equiv)-5 +b(alen)m(tly)d(,)40 b(the)c(`)p Fn(\045compare-lengths)p +Fs(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 +3713 y(hash)c(table)i(p)s(erforms)d(binary)h(comparison.)47 +b(The)33 b(k)m(eyw)m(ords)g(in)f(the)h(input)f(\014le)g(ma)m(y)i(con)m +(tain)g(NUL)150 3822 y(b)m(ytes,)46 b(written)41 b(in)h(string)g(syn)m +(tax)g(as)g Fn(\\000)f Fs(or)h Fn(\\x00)p Fs(,)i(and)d(the)h(co)s(de)g (generated)h(b)m(y)f Fn(gperf)f Fs(will)150 3932 y(treat)i(NUL)e(lik)m -(e)g(an)m(y)h(other)g(b)m(yte.)75 b(Also,)44 b(in)c(this)g(case)j(the)f -(`)p Fn(-c)p Fs(')f(option)g(\(or,)k(equiv)-5 b(alen)m(tly)d(,)44 +(e)i(an)m(y)f(other)g(b)m(yte.)75 b(Also,)45 b(in)c(this)g(case)i(the)f +(`)p Fn(-c)p Fs(')f(option)h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)47 b(the)150 4042 y(`)p Fn(\045compare-strncmp)p Fs(')26 -b(declaration\))31 b(is)e(ignored.)p eop +b(declaration\))33 b(is)d(ignored.)p eop end %%Page: 19 21 -19 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(19)150 299 y Fp(4)80 b(In)l(v)l(oking)53 -b Fm(gperf)275 542 y Fs(There)35 b(are)i Fl(many)46 b -Fs(options)35 b(to)j Fn(gperf)p Fs(.)57 b(They)36 b(w)m(ere)h(added)e -(to)j(mak)m(e)f(the)g(program)f(more)g(con-)150 651 y(v)m(enien)m(t)e -(for)f(use)g(with)f(real)h(applications.)47 b(\\On-line")32 -b(help)g(is)g(readily)g(a)m(v)-5 b(ailable)33 b(via)g(the)g(`)p -Fn(--help)p Fs(')150 761 y(option.)40 b(Here)31 b(is)e(the)i(complete)g -(list)e(of)h(options.)150 1025 y Fr(4.1)68 b(Sp)t(ecifying)45 -b(the)g(Lo)t(cation)h(of)f(the)g(Output)g(File)150 1247 -y Fs(`)p Fn(--output-file=)p Fo(\014le)5 b Fs(')630 1357 -y(Allo)m(ws)29 b(y)m(ou)i(to)g(sp)s(ecify)e(the)i(name)f(of)h(the)f -(\014le)g(to)h(whic)m(h)e(the)i(output)f(is)f(written)g(to.)275 -1521 y(The)g(results)h(are)g(written)g(to)h(standard)e(output)h(if)g -(no)g(output)g(\014le)f(is)h(sp)s(eci\014ed)f(or)h(if)f(it)h(is)g(`)p -Fn(-)p Fs('.)150 1785 y Fr(4.2)68 b(Options)45 b(that)h(a\013ect)g(In)l -(terpretation)h(of)e(the)g(Input)g(File)275 1981 y Fs(These)d(options)g -(are)h(also)f(a)m(v)-5 b(ailable)42 b(as)h(declarations)f(in)f(the)i -(input)e(\014le)g(\(see)j(Section)e(3.1.1.2)150 2090 -y([Gp)s(erf)30 b(Declarations],)h(page)g(12\).)150 2254 -y(`)p Fn(-e)f Fo(k)m(eyw)m(ord-delimiter-list)r Fs(')150 -2364 y(`)p Fn(--delimiters=)p Fo(k)m(eyw)m(ord-delimiter-list)r -Fs(')630 2473 y(Allo)m(ws)e(y)m(ou)h(to)g(pro)m(vide)f(a)h(string)f -(con)m(taining)g(delimiters)f(used)g(to)j(separate)g(k)m(eyw)m(ords)630 -2583 y(from)k(their)g(attributes.)53 b(The)34 b(default)f(is)h -Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)33 b(option)h(is)f(essen)m(tial)i -(if)e(y)m(ou)i(w)m(an)m(t)630 2692 y(to)f(use)e(k)m(eyw)m(ords)h(that)h -(ha)m(v)m(e)g(em)m(b)s(edded)e(commas)h(or)g(newlines.)46 -b(One)33 b(useful)e(tric)m(k)i(is)630 2802 y(to)e(use)f(-e'T)-8 -b(AB',)33 b(where)c(T)-8 b(AB)31 b(is)f(the)g(literal)f(tab)i(c)m +TeXDict begin 19 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(19)150 299 y +Fp(4)80 b(In)l(v)l(oking)52 b Fm(gperf)275 542 y Fs(There)35 +b(are)i Fl(many)46 b Fs(options)36 b(to)i Fn(gperf)p +Fs(.)57 b(They)36 b(w)m(ere)h(added)e(to)j(mak)m(e)f(the)g(program)f +(more)g(con-)150 651 y(v)m(enien)m(t)f(for)e(use)g(with)g(real)h +(applications.)50 b(\\On-line")34 b(help)f(is)g(readily)h(a)m(v)-5 +b(ailable)36 b(via)e(the)f(`)p Fn(--help)p Fs(')150 761 +y(option.)41 b(Here)31 b(is)f(the)h(complete)h(list)f(of)f(options.)150 +1025 y Fr(4.1)68 b(Sp)t(ecifying)45 b(the)g(Lo)t(cation)h(of)f(the)g +(Output)g(File)150 1247 y Fs(`)p Fn(--output-file=)p +Fo(\014le)5 b Fs(')630 1357 y(Allo)m(ws)31 b(y)m(ou)g(to)g(sp)s(ecify)f +(the)h(name)f(of)h(the)f(\014le)h(to)g(whic)m(h)f(the)h(output)f(is)g +(written)g(to.)275 1521 y(The)f(results)i(are)f(written)h(to)g +(standard)e(output)h(if)h(no)f(output)g(\014le)g(is)h(sp)s(eci\014ed)f +(or)g(if)g(it)h(is)g(`)p Fn(-)p Fs('.)150 1785 y Fr(4.2)68 +b(Options)45 b(that)h(a\013ect)g(In)l(terpretation)h(of)e(the)g(Input)g +(File)275 1981 y Fs(These)d(options)h(are)g(also)g(a)m(v)-5 +b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le)g(\(see)i +(Section)f(3.1.1.2)150 2090 y([Gp)s(erf)30 b(Declarations],)j(page)e +(12\).)150 2254 y(`)p Fn(-e)f Fo(k)m(eyw)m(ord-delimiter-list)r +Fs(')150 2364 y(`)p Fn(--delimiters=)p Fo(k)m(eyw)m(ord-delimiter-list) +r Fs(')630 2473 y(Allo)m(ws)g(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g +(con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 +2583 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h +Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j +(if)d(y)m(ou)h(w)m(an)m(t)630 2692 y(to)f(use)e(k)m(eyw)m(ords)h(that)h +(ha)m(v)m(e)g(em)m(b)s(edded)e(commas)h(or)g(newlines.)48 +b(One)33 b(useful)f(tric)m(k)i(is)630 2802 y(to)d(use)f(-e'T)-8 +b(AB',)33 b(where)c(T)-8 b(AB)31 b(is)g(the)f(literal)i(tab)f(c)m (haracter.)150 2964 y(`)p Fn(-t)p Fs(')150 3074 y(`)p -Fn(--struct-type)p Fs(')630 3183 y(Allo)m(ws)f(y)m(ou)i(to)g(include)d -(a)i Fn(struct)f Fs(t)m(yp)s(e)h(declaration)g(for)g(generated)h(co)s -(de.)44 b(An)m(y)31 b(text)630 3293 y(b)s(efore)43 b(a)i(pair)d(of)i -(consecutiv)m(e)h(`)p Fn(\045\045)p Fs(')e(is)g(considered)g(part)g(of) +Fn(--struct-type)p Fs(')630 3183 y(Allo)m(ws)h(y)m(ou)g(to)g(include)f +(a)g Fn(struct)f Fs(t)m(yp)s(e)h(declaration)i(for)e(generated)h(co)s +(de.)44 b(An)m(y)31 b(text)630 3293 y(b)s(efore)43 b(a)i(pair)e(of)h +(consecutiv)m(e)i(`)p Fn(\045\045)p Fs(')d(is)h(considered)g(part)f(of) h(the)g(t)m(yp)s(e)g(declaration.)630 3403 y(Keyw)m(ords)39 -b(and)g(additional)e(\014elds)h(ma)m(y)j(follo)m(w)d(this,)j(one)f -(group)f(of)h(\014elds)e(p)s(er)g(line.)630 3512 y(A)31 -b(set)g(of)g(examples)f(for)g(generating)h(p)s(erfect)f(hash)g(tables)h -(and)f(functions)f(for)h(Ada,)h(C,)630 3622 y(C)p Fn(++)p -Fs(,)24 b(P)m(ascal,)i(Mo)s(dula)c(2,)k(Mo)s(dula)c(3)i(and)f(Ja)m(v)-5 -b(aScript)23 b(reserv)m(ed)g(w)m(ords)g(are)h(distributed)630 -3731 y(with)29 b(this)g(release.)150 3894 y(`)p Fn(--ignore-case)p -Fs(')630 4003 y(Consider)42 b(upp)s(er)g(and)i(lo)m(w)m(er)g(case)h -(ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)81 -b(The)44 b(string)630 4113 y(comparison)27 b(will)f(use)i(a)h(case)g -(insigni\014can)m(t)d(c)m(haracter)k(comparison.)39 b(Note)29 -b(that)g(lo)s(cale)630 4222 y(dep)s(enden)m(t)e(case)i(mappings)e(are)h -(ignored.)39 b(This)27 b(option)g(is)h(therefore)g(not)h(suitable)d(if) -i(a)630 4332 y(prop)s(erly)k(in)m(ternationalized)h(or)h(lo)s(cale)g(a) -m(w)m(are)i(case)f(mapping)e(should)f(b)s(e)i(used.)52 -b(\(F)-8 b(or)630 4442 y(example,)30 b(in)e(a)h(T)-8 -b(urkish)28 b(lo)s(cale,)h(the)h(upp)s(er)d(case)k(equiv)-5 -b(alen)m(t)28 b(of)i(the)g(lo)m(w)m(ercase)g(ASCI)s(I)630 -4551 y(letter)41 b(`)p Fn(i)p Fs(')h(is)e(the)h(non-ASCI)s(I)e(c)m +b(and)g(additional)h(\014elds)f(ma)m(y)i(follo)m(w)f(this,)i(one)e +(group)f(of)h(\014elds)f(p)s(er)f(line.)630 3512 y(A)31 +b(set)g(of)g(examples)g(for)f(generating)i(p)s(erfect)e(hash)g(tables)i +(and)e(functions)g(for)g(Ada,)h(C,)630 3622 y(C)p Fn(++)p +Fs(,)24 b(P)m(ascal,)j(Mo)s(dula)c(2,)j(Mo)s(dula)d(3)h(and)f(Ja)m(v)-5 +b(aScript)24 b(reserv)m(ed)f(w)m(ords)g(are)h(distributed)630 +3731 y(with)30 b(this)g(release.)150 3894 y(`)p Fn(--ignore-case)p +Fs(')630 4003 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g +(ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 +b(The)44 b(string)630 4113 y(comparison)28 b(will)h(use)f(a)h(case)g +(insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29 +b(that)g(lo)s(cale)630 4222 y(dep)s(enden)m(t)e(case)i(mappings)f(are)g +(ignored.)40 b(This)28 b(option)g(is)h(therefore)f(not)h(suitable)f(if) +h(a)630 4332 y(prop)s(erly)k(in)m(ternationalized)k(or)d(lo)s(cale)i(a) +m(w)m(are)g(case)f(mapping)f(should)f(b)s(e)h(used.)52 +b(\(F)-8 b(or)630 4442 y(example,)31 b(in)e(a)g(T)-8 +b(urkish)29 b(lo)s(cale,)i(the)f(upp)s(er)d(case)k(equiv)-5 +b(alen)m(t)30 b(of)g(the)g(lo)m(w)m(ercase)h(ASCI)s(I)630 +4551 y(letter)42 b(`)p Fn(i)p Fs(')g(is)f(the)g(non-ASCI)s(I)e(c)m (haracter)k(`)p Fn(capital)29 b(i)h(with)f(dot)g(above)p -Fs('.\))72 b(F)-8 b(or)42 b(this)630 4661 y(case,)d(it)c(is)g(b)s -(etter)i(to)f(apply)f(an)h(upp)s(ercase)f(or)h(lo)m(w)m(ercase)h(con)m -(v)m(ersion)g(on)f(the)g(string)630 4770 y(b)s(efore)30 -b(passing)f(it)h(to)h(the)g Fn(gperf)e Fs(generated)i(function.)150 +Fs('.\))72 b(F)-8 b(or)42 b(this)630 4661 y(case,)d(it)d(is)g(b)s +(etter)h(to)f(apply)g(an)g(upp)s(ercase)f(or)h(lo)m(w)m(ercase)i(con)m +(v)m(ersion)g(on)e(the)g(string)630 4770 y(b)s(efore)30 +b(passing)g(it)h(to)g(the)g Fn(gperf)e Fs(generated)i(function.)150 5035 y Fr(4.3)68 b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for) -f(the)g(Output)f(Co)t(de)275 5230 y Fs(These)e(options)g(are)h(also)f -(a)m(v)-5 b(ailable)42 b(as)h(declarations)f(in)f(the)i(input)e(\014le) -g(\(see)j(Section)e(3.1.1.2)150 5340 y([Gp)s(erf)30 b(Declarations],)h -(page)g(12\).)p eop +f(the)g(Output)f(Co)t(de)275 5230 y Fs(These)e(options)h(are)g(also)g +(a)m(v)-5 b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le) +g(\(see)i(Section)f(3.1.1.2)150 5340 y([Gp)s(erf)30 b(Declarations],)j +(page)e(12\).)p eop end %%Page: 20 22 -20 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(20)150 299 y(`)p Fn(-L)30 b Fo -(generated-language-name)5 b Fs(')150 408 y(`)p Fn(--language=)p -Fo(generated-language-name)g Fs(')630 518 y(Instructs)33 -b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f(in)e(the)i(language)g(sp)s -(eci\014ed)d(b)m(y)j(the)g(option's)f(ar-)630 628 y(gumen)m(t.)41 -b(Languages)31 b(handled)e(are)i(curren)m(tly:)630 798 -y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)25 b(K&R)h(C.)g(This)e -(language)j(is)f(understo)s(o)s(d)e(b)m(y)i(old-st)m(yle)g(C)g(com-) -1110 907 y(pilers)c(and)i(ANSI)f(C)h(compilers,)g(but)g(ANSI)f(C)h -(compilers)f(ma)m(y)h(\015ag)h(w)m(arn-)1110 1017 y(ings)k(\(or)i(ev)m -(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)g(`)p Fn(const)p -Fs('.)630 1187 y(`)p Fn(C)p Fs(')382 b(Common)23 b(C.)f(This)g -(language)h(is)f(understo)s(o)s(d)f(b)m(y)i(ANSI)g(C)f(compilers,)i -(and)1110 1296 y(also)29 b(b)m(y)f(old-st)m(yle)g(C)h(compilers,)e(pro) -m(vided)g(that)j(y)m(ou)f Fn(#define)f(const)f Fs(to)1110 -1406 y(empt)m(y)k(for)f(compilers)f(whic)m(h)g(don't)h(kno)m(w)h(ab)s -(out)f(this)f(k)m(eyw)m(ord.)630 1576 y(`)p Fn(ANSI-C)p -Fs(')142 b(ANSI)39 b(C.)h(This)d(language)j(is)f(understo)s(o)s(d)f(b)m -(y)h(ANSI)g(C)h(compilers)e(and)1110 1685 y(C)p Fn(++)29 -b Fs(compilers.)630 1855 y(`)p Fn(C++)p Fs(')286 b(C)p -Fn(++)p Fs(.)40 b(This)28 b(language)j(is)f(understo)s(o)s(d)e(b)m(y)i -(C)p Fn(++)g Fs(compilers.)630 2025 y(The)g(default)f(is)h(C.)150 -2195 y(`)p Fn(-a)p Fs(')334 b(This)32 b(option)h(is)f(supp)s(orted)g -(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i(of)g -Fn(gperf)p Fs(.)49 b(It)630 2305 y(do)s(es)30 b(not)h(do)f(an)m -(ything.)150 2475 y(`)p Fn(-g)p Fs(')334 b(This)32 b(option)h(is)f -(supp)s(orted)g(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i -(of)g Fn(gperf)p Fs(.)49 b(It)630 2584 y(do)s(es)30 b(not)h(do)f(an)m +TeXDict begin 20 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(20)150 299 y(`)p +Fn(-L)30 b Fo(generated-language-name)5 b Fs(')150 408 +y(`)p Fn(--language=)p Fo(generated-language-name)g Fs(')630 +518 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f(in)f(the)h +(language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-)630 +628 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m(tly:)630 +798 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f +(language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m(yle)i(C)e(com-) +1110 907 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but)e(ANSI)f(C)h +(compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 1017 y(ings)30 +b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)i(`)p +Fn(const)p Fs('.)630 1187 y(`)p Fn(C)p Fs(')382 b(Common)23 +b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i(ANSI)g(C)f +(compilers,)k(and)1110 1296 y(also)k(b)m(y)e(old-st)m(yle)i(C)f +(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fn(#define)f(const)f +Fs(to)1110 1406 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m +(w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 1576 y(`)p +Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s +(o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 1685 +y(C)p Fn(++)29 b Fs(compilers.)630 1855 y(`)p Fn(C++)p +Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)29 b(language)j(is)f(understo)s +(o)s(d)d(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 2025 y(The)g(default)g +(is)h(C.)150 2195 y(`)p Fn(-a)p Fs(')334 b(This)33 b(option)h(is)f +(supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i +(of)f Fn(gperf)p Fs(.)49 b(It)630 2305 y(do)s(es)30 b(not)h(do)f(an)m +(ything.)150 2475 y(`)p Fn(-g)p Fs(')334 b(This)33 b(option)h(is)f +(supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i +(of)f Fn(gperf)p Fs(.)49 b(It)630 2584 y(do)s(es)30 b(not)h(do)f(an)m (ything.)150 2868 y Fr(4.4)68 b(Options)45 b(for)g(\014ne)g(tuning)g (Details)i(in)e(the)g(Output)f(Co)t(de)275 3071 y Fs(Most)21 -b(of)g(these)g(options)f(are)h(also)g(a)m(v)-5 b(ailable)20 -b(as)h(declarations)f(in)g(the)h(input)d(\014le)i(\(see)i(Section)e -(3.1.1.2)150 3181 y([Gp)s(erf)30 b(Declarations],)h(page)g(12\).)150 +b(of)g(these)g(options)g(are)g(also)h(a)m(v)-5 b(ailable)23 +b(as)e(declarations)h(in)f(the)g(input)e(\014le)i(\(see)h(Section)f +(3.1.1.2)150 3181 y([Gp)s(erf)30 b(Declarations],)j(page)e(12\).)150 3356 y(`)p Fn(-K)f Fo(slot-name)5 b Fs(')150 3466 y(`)p -Fn(--slot-name=)p Fo(slot-name)g Fs(')630 3575 y(This)20 -b(option)h(is)g(only)f(useful)g(when)h(option)g(`)p Fn(-t)p -Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)23 b(the)f(`)p -Fn(\045struct-type)p Fs(')630 3685 y(declaration\))39 -b(has)g(b)s(een)f(giv)m(en.)66 b(By)39 b(default,)i(the)e(program)g +Fn(--slot-name=)p Fo(slot-name)g Fs(')630 3575 y(This)21 +b(option)h(is)g(only)f(useful)g(when)g(option)h(`)p Fn(-t)p +Fs(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 b(the)c(`)p +Fn(\045struct-type)p Fs(')630 3685 y(declaration\))41 +b(has)e(b)s(een)f(giv)m(en.)67 b(By)39 b(default,)j(the)d(program)g (assumes)f(the)h(structure)630 3795 y(comp)s(onen)m(t)28 -b(iden)m(ti\014er)f(for)h(the)g(k)m(eyw)m(ord)g(is)g(`)p -Fn(name)p Fs('.)39 b(This)26 b(option)i(allo)m(ws)f(an)h(arbitrary)630 -3904 y(c)m(hoice)k(of)g(iden)m(ti\014er)e(for)h(this)g(comp)s(onen)m -(t,)h(although)f(it)g(still)e(m)m(ust)j(o)s(ccur)f(as)h(the)g(\014rst) -630 4014 y(\014eld)d(in)g(y)m(our)h(supplied)d Fn(struct)p -Fs(.)150 4184 y(`)p Fn(-F)j Fo(initializers)t Fs(')150 -4293 y(`)p Fn(--initializer-suffix=)p Fo(in)o(iti)o(ali)o(zers)t -Fs(')630 4403 y(This)20 b(option)h(is)g(only)f(useful)g(when)h(option)g -(`)p Fn(-t)p Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)23 -b(the)f(`)p Fn(\045struct-type)p Fs(')630 4512 y(declaration\))32 -b(has)h(b)s(een)e(giv)m(en.)48 b(It)32 b(p)s(ermits)f(to)i(sp)s(ecify)e -(initializers)e(for)k(the)f(structure)630 4622 y(mem)m(b)s(ers)23 -b(follo)m(wing)f Fo(slot-name)29 b Fs(in)22 b(empt)m(y)i(hash)f(table)g -(en)m(tries.)38 b(The)23 b(list)f(of)i(initializers)630 -4732 y(should)36 b(start)j(with)f(a)g(comma.)66 b(By)39 -b(default,)h(the)f(emitted)f(co)s(de)h(will)c(zero-initialize)630 -4841 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)g -Fo(slot-name)p Fs(.)150 5011 y(`)p Fn(-H)h Fo(hash-function-name)5 +b(iden)m(ti\014er)h(for)f(the)g(k)m(eyw)m(ord)g(is)h(`)p +Fn(name)p Fs('.)39 b(This)27 b(option)i(allo)m(ws)g(an)f(arbitrary)630 +3904 y(c)m(hoice)33 b(of)f(iden)m(ti\014er)g(for)f(this)h(comp)s(onen)m +(t,)g(although)g(it)g(still)g(m)m(ust)g(o)s(ccur)f(as)h(the)g(\014rst) +630 4014 y(\014eld)e(in)g(y)m(our)g(supplied)f Fn(struct)p +Fs(.)150 4184 y(`)p Fn(-F)h Fo(initializers)t Fs(')150 +4293 y(`)p Fn(--initializer-suffix=)p Fo(initializers)t +Fs(')630 4403 y(This)21 b(option)h(is)g(only)f(useful)g(when)g(option)h +(`)p Fn(-t)p Fs(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 +b(the)c(`)p Fn(\045struct-type)p Fs(')630 4512 y(declaration\))34 +b(has)f(b)s(een)e(giv)m(en.)49 b(It)32 b(p)s(ermits)g(to)h(sp)s(ecify)f +(initializers)i(for)f(the)f(structure)630 4622 y(mem)m(b)s(ers)23 +b(follo)m(wing)i Fo(slot-name)30 b Fs(in)23 b(empt)m(y)h(hash)f(table)h +(en)m(tries.)39 b(The)23 b(list)h(of)g(initializers)630 +4732 y(should)37 b(start)i(with)g(a)f(comma.)66 b(By)39 +b(default,)i(the)e(emitted)g(co)s(de)g(will)f(zero-initialize)630 +4841 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)j +Fo(slot-name)p Fs(.)150 5011 y(`)p Fn(-H)e Fo(hash-function-name)5 b Fs(')150 5121 y(`)p Fn(--hash-function-name=)p Fo(hash-fu)o -(nction-name)g Fs(')630 5230 y(Allo)m(ws)29 b(y)m(ou)h(to)g(sp)s(ecify) -f(the)h(name)g(for)f(the)h(generated)h(hash)e(function.)39 -b(Default)30 b(name)630 5340 y(is)f(`)p Fn(hash)p Fs('.)40 -b(This)29 b(option)h(p)s(ermits)e(the)j(use)f(of)h(t)m(w)m(o)g(hash)f -(tables)g(in)f(the)i(same)g(\014le.)p eop +(nction-name)g Fs(')630 5230 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify) +g(the)g(name)g(for)f(the)h(generated)h(hash)e(function.)40 +b(Default)31 b(name)630 5340 y(is)f(`)p Fn(hash)p Fs('.)40 +b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h(t)m(w)m(o)g(hash)f +(tables)h(in)f(the)h(same)g(\014le.)p eop end %%Page: 21 23 -21 22 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(21)150 299 y(`)p Fn(-N)30 b Fo(lo)s -(okup-function-name)5 b Fs(')150 408 y(`)p Fn(--lookup-function-name=)p -Fo(l)o(o)s(okup-fu)o(nction-name)g Fs(')630 518 y(Allo)m(ws)41 -b(y)m(ou)h(to)h(sp)s(ecify)d(the)j(name)f(for)f(the)h(generated)h(lo)s -(okup)e(function.)74 b(Default)630 628 y(name)28 b(is)f(`)p -Fn(in_word_set)p Fs('.)37 b(This)26 b(option)h(p)s(ermits)f(m)m -(ultiple)g(generated)i(hash)f(functions)630 737 y(to)k(b)s(e)f(used)f -(in)g(the)i(same)g(application.)150 938 y(`)p Fn(-Z)f -Fo(class-name)5 b Fs(')150 1048 y(`)p Fn(--class-name=)p -Fo(class-name)g Fs(')630 1157 y(This)65 b(option)i(is)f(only)h(useful)e -(when)i(option)f(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 -b(equiv)-5 b(alen)m(tly)d(,)76 b(the)630 1267 y(`)p Fn -(\045language=C++)p Fs(')43 b(declaration\))i(has)h(b)s(een)f(giv)m -(en.)87 b(It)46 b(allo)m(ws)f(y)m(ou)h(to)g(sp)s(ecify)f(the)630 -1377 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)40 -b(Default)31 b(name)f(is)g Fn(Perfect_Hash)p Fs(.)150 -1577 y(`)p Fn(-7)p Fs(')150 1687 y(`)p Fn(--seven-bit)p -Fs(')630 1797 y(This)35 b(option)i(sp)s(eci\014es)f(that)h(all)f -(strings)g(that)i(will)c(b)s(e)j(passed)f(as)i(argumen)m(ts)f(to)h(the) -630 1906 y(generated)e(hash)e(function)f(and)i(the)g(generated)g(lo)s -(okup)f(function)f(will)f(solely)i(consist)630 2016 y(of)f(7-bit)g -(ASCI)s(I)f(c)m(haracters)j(\(b)m(ytes)f(in)e(the)h(range)h(0..127\).) -51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)e -Fn(isalnum)g Fs(and)i Fn(isgraph)e Fs(do)i Fl(not)41 -b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)e(in)f(this)h(range.)630 -2235 y(Only)25 b(an)h(explicit)f(test)j(lik)m(e)d(`)p -Fn(c)31 b(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fs(')25 b(guaran)m(tees)j -(this.\))39 b(This)25 b(w)m(as)i(the)630 2345 y(default)f(in)g(v)m -(ersions)g(of)h Fn(gperf)e Fs(earlier)h(than)g(2.7;)k(no)m(w)d(the)g -(default)f(is)f(to)j(supp)s(ort)d(8-bit)630 2454 y(and)30 -b(m)m(ultib)m(yte)f(c)m(haracters.)150 2655 y(`)p Fn(-l)p +TeXDict begin 21 22 bop 150 -116 a Fs(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(21)150 299 y(`)p +Fn(-N)30 b Fo(lo)s(okup-function-name)5 b Fs(')150 408 +y(`)p Fn(--lookup-function-name=)p Fo(lo)s(okup-fu)o(nction-name)g +Fs(')630 518 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e(the)i(name)f +(for)f(the)h(generated)h(lo)s(okup)f(function.)75 b(Default)630 +628 y(name)28 b(is)g(`)p Fn(in_word_set)p Fs('.)37 b(This)27 +b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f(hash)f(functions)630 +737 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g(application.)150 +938 y(`)p Fn(-Z)f Fo(class-name)5 b Fs(')150 1048 y(`)p +Fn(--class-name=)p Fo(class-name)g Fs(')630 1157 y(This)66 +b(option)i(is)f(only)h(useful)e(when)h(option)g(`)p Fn(-L)30 +b(C++)p Fs(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)79 +b(the)630 1267 y(`)p Fn(\045language=C++)p Fs(')43 b(declaration\))k +(has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s +(ecify)g(the)630 1377 y(name)30 b(of)h(generated)g(C)p +Fn(++)f Fs(class.)41 b(Default)32 b(name)e(is)h Fn(Perfect_Hash)p +Fs(.)150 1577 y(`)p Fn(-7)p Fs(')150 1687 y(`)p Fn(--seven-bit)p +Fs(')630 1797 y(This)36 b(option)i(sp)s(eci\014es)f(that)g(all)h +(strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m(ts)f(to)h(the) +630 1906 y(generated)e(hash)e(function)g(and)h(the)g(generated)g(lo)s +(okup)g(function)f(will)h(solely)h(consist)630 2016 y(of)d(7-bit)h +(ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g(range)h(0..127\).) +51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)f +Fn(isalnum)f Fs(and)i Fn(isgraph)e Fs(do)i Fl(not)41 +b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f(this)h(range.)630 +2235 y(Only)26 b(an)g(explicit)i(test)g(lik)m(e)f(`)p +Fn(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fs(')25 b(guaran)m(tees)j +(this.\))40 b(This)26 b(w)m(as)h(the)630 2345 y(default)g(in)g(v)m +(ersions)g(of)g Fn(gperf)e Fs(earlier)j(than)e(2.7;)k(no)m(w)d(the)g +(default)g(is)f(to)i(supp)s(ort)d(8-bit)630 2454 y(and)30 +b(m)m(ultib)m(yte)h(c)m(haracters.)150 2655 y(`)p Fn(-l)p Fs(')150 2765 y(`)p Fn(--compare-lengths)p Fs(')630 2874 -y(Compare)40 b(k)m(eyw)m(ord)g(lengths)f(b)s(efore)g(trying)g(a)i -(string)d(comparison.)69 b(This)38 b(option)h(is)630 -2984 y(mandatory)32 b(for)h(binary)d(comparisons)i(\(see)h(Section)g -(3.3)g([Binary)f(Strings],)g(page)h(18\).)630 3093 y(It)g(also)g(migh)m -(t)g(cut)g(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)f -(comparisons)g(made)h(during)e(the)630 3203 y(lo)s(okup,)i(since)g(k)m -(eyw)m(ords)g(with)f(di\013eren)m(t)h(lengths)g(are)g(nev)m(er)h -(compared)f(via)g Fn(strcmp)p Fs(.)630 3313 y(Ho)m(w)m(ev)m(er,)k -(using)32 b(`)p Fn(-l)p Fs(')h(migh)m(t)g(greatly)h(increase)g(the)g -(size)f(of)h(the)f(generated)i(C)e(co)s(de)h(if)630 3422 -y(the)k(lo)s(okup)f(table)g(range)i(is)e(large)h(\(whic)m(h)f(implies)e -(that)j(the)g(switc)m(h)g(option)f(`)p Fn(-S)p Fs(')h(or)630 -3532 y(`)p Fn(\045switch)p Fs(')29 b(is)h(not)h(enabled\),)g(since)f -(the)h(length)f(table)h(con)m(tains)g(as)g(man)m(y)g(elemen)m(ts)g(as) -630 3641 y(there)g(are)f(en)m(tries)h(in)e(the)h(lo)s(okup)f(table.)150 +y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h +(string)e(comparison.)70 b(This)39 b(option)h(is)630 +2984 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h +(3.3)f([Binary)g(Strings],)g(page)g(18\).)630 3093 y(It)g(also)h(migh)m +(t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g +(comparisons)g(made)g(during)f(the)630 3203 y(lo)s(okup,)i(since)g(k)m +(eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h +(compared)f(via)h Fn(strcmp)p Fs(.)630 3313 y(Ho)m(w)m(ev)m(er,)j +(using)c(`)p Fn(-l)p Fs(')g(migh)m(t)h(greatly)h(increase)g(the)f(size) +g(of)g(the)f(generated)i(C)e(co)s(de)h(if)630 3422 y(the)k(lo)s(okup)g +(table)g(range)h(is)f(large)h(\(whic)m(h)f(implies)g(that)g(the)g +(switc)m(h)h(option)f(`)p Fn(-S)p Fs(')g(or)630 3532 +y(`)p Fn(\045switch)p Fs(')29 b(is)i(not)g(enabled\),)h(since)f(the)g +(length)g(table)h(con)m(tains)g(as)f(man)m(y)g(elemen)m(ts)h(as)630 +3641 y(there)f(are)f(en)m(tries)i(in)e(the)g(lo)s(okup)g(table.)150 3842 y(`)p Fn(-c)p Fs(')150 3952 y(`)p Fn(--compare-strncmp)p Fs(')630 4061 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i -Fn(strncmp)d Fs(function)g(to)j(p)s(erform)e(string)g(comparisons.)630 -4171 y(The)30 b(default)f(action)i(is)f(to)h(use)f Fn(strcmp)p +Fn(strncmp)d Fs(function)h(to)i(p)s(erform)e(string)h(comparisons.)630 +4171 y(The)30 b(default)g(action)i(is)f(to)g(use)f Fn(strcmp)p Fs(.)150 4372 y(`)p Fn(-C)p Fs(')150 4482 y(`)p Fn(--readonly-tables)p -Fs(')630 4591 y(Mak)m(es)41 b(the)f(con)m(ten)m(ts)h(of)f(all)f -(generated)h(lo)s(okup)e(tables)i(constan)m(t,)j(i.e.,)g(\\readonly".) -630 4701 y(Man)m(y)31 b(compilers)e(can)i(generate)h(more)e(e\016cien)m -(t)h(co)s(de)g(for)f(this)g(b)m(y)g(putting)f(the)i(tables)630 -4810 y(in)e(readonly)h(memory)-8 b(.)150 5011 y(`)p Fn(-E)p +Fs(')630 4591 y(Mak)m(es)41 b(the)f(con)m(ten)m(ts)h(of)f(all)h +(generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,)h(\\readonly".) +630 4701 y(Man)m(y)31 b(compilers)g(can)g(generate)h(more)e(e\016cien)m +(t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h(tables)630 +4810 y(in)f(readonly)h(memory)-8 b(.)150 5011 y(`)p Fn(-E)p Fs(')150 5121 y(`)p Fn(--enum)p Fs(')142 b(De\014ne)31 -b(constan)m(t)g(v)-5 b(alues)30 b(using)f(an)h(en)m(um)g(lo)s(cal)g(to) -h(the)g(lo)s(okup)e(function)g(rather)h(than)630 5230 -y(with)36 b(#de\014nes.)60 b(This)35 b(also)i(means)h(that)f -(di\013eren)m(t)g(lo)s(okup)f(functions)g(can)h(reside)f(in)630 -5340 y(the)31 b(same)f(\014le.)40 b(Thanks)29 b(to)j(James)e(Clark)f -Fn()p Fs(.)p eop +b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to) +f(the)g(lo)s(okup)f(function)g(rather)g(than)630 5230 +y(with)37 b(#de\014nes.)60 b(This)36 b(also)i(means)g(that)f +(di\013eren)m(t)h(lo)s(okup)f(functions)g(can)g(reside)g(in)630 +5340 y(the)31 b(same)f(\014le.)41 b(Thanks)29 b(to)j(James)e(Clark)g +Fn()p Fs(.)p eop end %%Page: 22 24 -22 23 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(22)150 299 y(`)p Fn(-I)p Fs(')150 -408 y(`)p Fn(--includes)p Fs(')630 518 y(Include)29 b(the)i(necessary)h -(system)f(include)e(\014le,)h Fn()p Fs(,)f(at)i(the)g(b)s -(eginning)e(of)i(the)630 628 y(co)s(de.)39 b(By)27 b(default,)f(this)f -(is)g(not)h(done;)i(the)e(user)f(m)m(ust)h(include)e(this)g(header)i -(\014le)f(himself)630 737 y(to)31 b(allo)m(w)f(compilation)f(of)h(the)h -(co)s(de.)150 883 y(`)p Fn(-G)p Fs(')150 993 y(`)p Fn(--global-table)p -Fs(')630 1103 y(Generate)38 b(the)f(static)g(table)f(of)h(k)m(eyw)m -(ords)g(as)g(a)g(static)g(global)f(v)-5 b(ariable,)37 -b(rather)f(than)630 1212 y(hiding)28 b(it)i(inside)e(of)i(the)h(lo)s -(okup)e(function)g(\(whic)m(h)g(is)h(the)g(default)g(b)s(eha)m(vior\).) +TeXDict begin 22 23 bop 150 -116 a Fs(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(22)150 299 y(`)p +Fn(-I)p Fs(')150 408 y(`)p Fn(--includes)p Fs(')630 518 +y(Include)30 b(the)h(necessary)h(system)f(include)g(\014le,)g +Fn()p Fs(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 +628 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e +(user)f(m)m(ust)h(include)g(this)f(header)h(\014le)g(himself)630 +737 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 +883 y(`)p Fn(-G)p Fs(')150 993 y(`)p Fn(--global-table)p +Fs(')630 1103 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m +(ords)g(as)g(a)g(static)h(global)g(v)-5 b(ariable,)39 +b(rather)d(than)630 1212 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s +(okup)f(function)g(\(whic)m(h)g(is)h(the)f(default)h(b)s(eha)m(vior\).) 150 1358 y(`)p Fn(-P)p Fs(')150 1468 y(`)p Fn(--pic)p -Fs(')190 b(Optimize)40 b(the)h(generated)h(table)f(for)g(inclusion)d -(in)i(shared)g(libraries.)70 b(This)39 b(reduces)630 -1577 y(the)c(startup)g(time)g(of)g(programs)g(using)f(a)i(shared)e -(library)f(con)m(taining)i(the)g(generated)630 1687 y(co)s(de.)j(If)21 -b(the)h(option)g(`)p Fn(-t)p Fs(')f(\(or,)k(equiv)-5 -b(alen)m(tly)d(,)22 b(the)g(`)p Fn(\045struct-type)p -Fs(')d(declaration\))j(is)f(also)630 1797 y(giv)m(en,)31 -b(the)g(\014rst)e(\014eld)h(of)g(the)h(user-de\014ned)e(struct)i(m)m +Fs(')190 b(Optimize)42 b(the)f(generated)h(table)g(for)f(inclusion)g +(in)g(shared)f(libraries.)73 b(This)40 b(reduces)630 +1577 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g(a)h(shared)e +(library)h(con)m(taining)i(the)e(generated)630 1687 y(co)s(de.)j(If)21 +b(the)h(option)h(`)p Fn(-t)p Fs(')e(\(or,)k(equiv)-5 +b(alen)m(tly)d(,)25 b(the)d(`)p Fn(\045struct-type)p +Fs(')d(declaration\))24 b(is)e(also)630 1797 y(giv)m(en,)32 +b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e(struct)i(m)m (ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p Fs(',)f(not)h(`)p -Fn(char)630 1906 y(*)p Fs(',)h(b)s(ecause)f(it)h(will)c(con)m(tain)k -(o\013sets)h(in)m(to)e(the)h(string)e(p)s(o)s(ol)h(instead)f(of)i -(actual)g(strings.)630 2016 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f -(an)f(o\013set)i(to)f(a)g(string,)g(y)m(ou)g(can)g(use)f(the)h -(expression)e(`)p Fn(stringpool)630 2125 y(+)f Fo(o)5 -b Fs(',)34 b(where)f Fo(o)38 b Fs(is)32 b(the)h(o\013set.)50 -b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s(e)g(c)m(hanged)g -(through)g(the)630 2235 y(option)d(`)p Fn(--string-pool-name)p -Fs('.)150 2381 y(`)p Fn(-Q)g Fo(string-p)s(o)s(ol-name)5 -b Fs(')150 2491 y(`)p Fn(--string-pool-name=)p Fo(string-p)r(o)s -(ol-name)g Fs(')630 2600 y(Allo)m(ws)30 b(y)m(ou)i(to)g(sp)s(ecify)e -(the)h(name)h(of)f(the)h(generated)g(string)e(p)s(o)s(ol)g(created)i(b) +Fn(char)630 1906 y(*)p Fs(',)h(b)s(ecause)f(it)i(will)e(con)m(tain)i +(o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h(instead)f(of)h +(actual)h(strings.)630 2016 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f +(an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f(can)g(use)f(the)h +(expression)f(`)p Fn(stringpool)630 2125 y(+)e Fo(o)5 +b Fs(',)34 b(where)f Fo(o)38 b Fs(is)33 b(the)g(o\013set.)50 +b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s(e)g(c)m(hanged)g +(through)g(the)630 2235 y(option)e(`)p Fn(--string-pool-name)p +Fs('.)150 2381 y(`)p Fn(-Q)f Fo(string-p)s(o)s(ol-name)5 +b Fs(')150 2491 y(`)p Fn(--string-pool-name=)p Fo(string-p)s(o)s +(ol-name)g Fs(')630 2600 y(Allo)m(ws)32 b(y)m(ou)g(to)g(sp)s(ecify)f +(the)g(name)h(of)f(the)h(generated)g(string)f(p)s(o)s(ol)g(created)h(b) m(y)f(option)630 2710 y(`)p Fn(-P)p Fs('.)38 b(The)21 -b(default)f(name)i(is)e(`)p Fn(stringpool)p Fs('.)36 -b(This)19 b(option)i(p)s(ermits)f(the)h(use)g(of)h(t)m(w)m(o)h(hash)630 -2819 y(tables)h(in)e(the)i(same)g(\014le,)h(with)d(`)p -Fn(-P)p Fs(')i(and)f(ev)m(en)h(when)f(the)h(option)f(`)p -Fn(-G)p Fs(')h(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 -2929 y(the)31 b(`)p Fn(\045global-table)p Fs(')c(declaration\))j(is)g -(giv)m(en.)150 3075 y(`)p Fn(--null-strings)p Fs(')630 -3185 y(Use)39 b(NULL)g(strings)e(instead)i(of)f(empt)m(y)i(strings)d -(for)i(empt)m(y)g(k)m(eyw)m(ord)g(table)g(en)m(tries.)630 -3294 y(This)e(reduces)h(the)h(startup)g(time)f(of)h(programs)g(using)e -(a)i(shared)f(library)e(con)m(taining)630 3404 y(the)41 -b(generated)g(co)s(de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)f -(`)p Fn(-P)p Fs('\),)j(at)e(the)g(exp)s(ense)f(of)h(one)630 -3513 y(more)31 b(test-and-branc)m(h)f(instruction)f(at)i(run)e(time.) +b(default)g(name)h(is)f(`)p Fn(stringpool)p Fs('.)36 +b(This)20 b(option)i(p)s(ermits)f(the)g(use)g(of)h(t)m(w)m(o)h(hash)630 +2819 y(tables)i(in)e(the)h(same)g(\014le,)i(with)d(`)p +Fn(-P)p Fs(')h(and)f(ev)m(en)h(when)f(the)h(option)g(`)p +Fn(-G)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 +2929 y(the)31 b(`)p Fn(\045global-table)p Fs(')c(declaration\))32 +b(is)f(giv)m(en.)150 3075 y(`)p Fn(--null-strings)p Fs(')630 +3185 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i(strings)e +(for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 +3294 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f +(a)h(shared)f(library)g(con)m(taining)630 3404 y(the)j(generated)g(co)s +(de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)g(`)p +Fn(-P)p Fs('\),)i(at)e(the)g(exp)s(ense)f(of)h(one)630 +3513 y(more)31 b(test-and-branc)m(h)f(instruction)h(at)g(run)e(time.) 150 3660 y(`)p Fn(-W)h Fo(hash-table-arra)m(y-name)5 b Fs(')150 3769 y(`)p Fn(--word-array-name=)p Fo(hash-table-arra)m -(y-name)g Fs(')630 3879 y(Allo)m(ws)39 b(y)m(ou)h(to)h(sp)s(ecify)e -(the)h(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)g(the)g -(hash)630 3988 y(table.)105 b(Default)52 b(name)f(is)g(`)p -Fn(wordlist)p Fs('.)103 b(This)50 b(option)h(p)s(ermits)f(the)i(use)g -(of)g(t)m(w)m(o)630 4098 y(hash)37 b(tables)g(in)g(the)h(same)g -(\014le,)h(ev)m(en)f(when)f(the)h(option)f(`)p Fn(-G)p -Fs(')h(\(or,)i(equiv)-5 b(alen)m(tly)d(,)39 b(the)630 -4208 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))k(is)e(giv)m -(en.)150 4354 y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m(ts)t -Fs(')150 4463 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m(ts)t -Fs(')630 4573 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e -(a)h Fn(switch)e Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 -4682 y(an)j(arra)m(y)g(lo)s(okup)f(table.)63 b(This)36 -b(can)i(lead)g(to)g(a)h(reduction)e(in)f(b)s(oth)h(time)h(and)f(space) -630 4792 y(requiremen)m(ts)42 b(for)i(some)f(input)f(\014les.)79 -b(The)43 b(argumen)m(t)h(to)g(this)e(option)h(determines)630 +(y-name)g Fs(')630 3879 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f +(the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e +(hash)630 3988 y(table.)106 b(Default)53 b(name)e(is)h(`)p +Fn(wordlist)p Fs('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g +(of)g(t)m(w)m(o)630 4098 y(hash)37 b(tables)h(in)g(the)g(same)g +(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fn(-G)p +Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 +4208 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 4354 y(`)p Fn(-S)g Fo(total-switc)m(h-statemen)m +(ts)t Fs(')150 4463 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m +(ts)t Fs(')630 4573 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h +(use)e(a)h Fn(switch)e Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 +4682 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 +b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space) +630 4792 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 +b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630 4902 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e -(generated.)49 b(A)32 b(v)-5 b(alue)33 b(of)f(1)i(generates)g(1)f -Fn(switch)630 5011 y Fs(con)m(taining)23 b(all)e(the)j(elemen)m(ts,)h -(a)e(v)-5 b(alue)22 b(of)i(2)f(generates)h(2)g(tables)e(with)g(1/2)i -(the)g(elemen)m(ts)630 5121 y(in)37 b(eac)m(h)i Fn(switch)p -Fs(,)g(etc.)65 b(This)36 b(is)h(useful)g(since)g(man)m(y)i(C)e -(compilers)g(cannot)i(correctly)630 5230 y(generate)29 -b(co)s(de)f(for)f(large)g Fn(switch)f Fs(statemen)m(ts.)41 -b(This)26 b(option)h(w)m(as)h(inspired)c(in)i(part)h(b)m(y)630 -5340 y(Keith)j(Bostic's)h(original)d(C)i(program.)p eop +(generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f +Fn(switch)630 5011 y Fs(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i +(a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h +(the)g(elemen)m(ts)630 5121 y(in)38 b(eac)m(h)h Fn(switch)p +Fs(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e +(compilers)i(cannot)g(correctly)630 5230 y(generate)29 +b(co)s(de)f(for)f(large)h Fn(switch)e Fs(statemen)m(ts.)41 +b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 +5340 y(Keith)k(Bostic's)h(original)f(C)f(program.)p eop +end %%Page: 23 25 -23 24 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(23)150 299 y(`)p Fn(-T)p Fs(')150 -408 y(`)p Fn(--omit-struct-type)p Fs(')630 518 y(Prev)m(en)m(ts)29 -b(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)f(to)i(the)f -(output)f(\014le.)39 b(Use)28 b(this)e(option)630 628 -y(if)j(the)i(t)m(yp)s(e)f(is)g(already)g(de\014ned)f(elsewhere.)150 -795 y(`)p Fn(-p)p Fs(')334 b(This)32 b(option)h(is)f(supp)s(orted)g -(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i(of)g -Fn(gperf)p Fs(.)49 b(It)630 905 y(do)s(es)30 b(not)h(do)f(an)m(ything.) -150 1182 y Fr(4.5)68 b(Options)45 b(for)g(c)l(hanging)h(the)f -(Algorithms)h(emplo)l(y)l(ed)g(b)l(y)f Fk(gperf)150 1412 -y Fs(`)p Fn(-k)30 b Fo(selected-b)m(yte-p)s(ositions)t -Fs(')150 1521 y(`)p Fn(--key-positions=)p Fo(selected-b)m(yte-p)s -(ositions)t Fs(')630 1631 y(Allo)m(ws)c(selection)h(of)g(the)g(b)m(yte) -h(p)s(ositions)d(used)h(in)g(the)h(k)m(eyw)m(ords')h(hash)e(function.) -38 b(The)630 1740 y(allo)m(w)m(able)21 b(c)m(hoices)i(range)f(b)s(et)m -(w)m(een)h(1-255,)j(inclusiv)m(e.)35 b(The)22 b(p)s(ositions)d(are)k +TeXDict begin 23 24 bop 150 -116 a Fs(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(23)150 299 y(`)p +Fn(-T)p Fs(')150 408 y(`)p Fn(--omit-struct-type)p Fs(')630 +518 y(Prev)m(en)m(ts)29 b(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g +(declaration)h(to)g(the)f(output)f(\014le.)40 b(Use)28 +b(this)f(option)630 628 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g +(de\014ned)e(elsewhere.)150 795 y(`)p Fn(-p)p Fs(')334 +b(This)33 b(option)h(is)f(supp)s(orted)f(for)h(compatibilit)m(y)j(with) +d(previous)g(releases)i(of)f Fn(gperf)p Fs(.)49 b(It)630 +905 y(do)s(es)30 b(not)h(do)f(an)m(ything.)150 1182 y +Fr(4.5)68 b(Options)45 b(for)g(c)l(hanging)h(the)f(Algorithms)h(emplo)l +(y)l(ed)g(b)l(y)f Fk(gperf)150 1412 y Fs(`)p Fn(-k)30 +b Fo(selected-b)m(yte-p)s(ositions)t Fs(')150 1521 y(`)p +Fn(--key-positions=)p Fo(selected-b)m(yte-p)s(ositions)t +Fs(')630 1631 y(Allo)m(ws)e(selection)h(of)e(the)g(b)m(yte)h(p)s +(ositions)f(used)f(in)h(the)g(k)m(eyw)m(ords')h(hash)e(function.)39 +b(The)630 1740 y(allo)m(w)m(able)24 b(c)m(hoices)g(range)e(b)s(et)m(w)m +(een)h(1-255,)j(inclusiv)m(e.)38 b(The)22 b(p)s(ositions)f(are)i (separated)f(b)m(y)630 1850 y(commas,)27 b(e.g.,)i(`)p Fn(-k)h(9,4,13,14)p Fs(';)25 b(ranges)h(ma)m(y)g(b)s(e)f(used,)h(e.g.,) i(`)p Fn(-k)i(2-7)p Fs(';)d(and)e(p)s(ositions)630 1960 -y(ma)m(y)c(o)s(ccur)f(in)g(an)m(y)h(order.)37 b(F)-8 -b(urthermore,)22 b(the)f(wildcard)d('*')j(causes)g(the)g(generated)h -(hash)630 2069 y(function)36 b(to)i(consider)f Fe(all)h -Fs(b)m(yte)g(p)s(ositions)d(in)h(eac)m(h)j(k)m(eyw)m(ord,)h(whereas)d -('$')h(instructs)630 2179 y(the)31 b(hash)g(function)e(to)j(use)f(the)g -(\\\014nal)g(b)m(yte")h(of)f(a)h(k)m(eyw)m(ord)f(\(this)f(is)h(the)g -(only)f(w)m(a)m(y)i(to)630 2288 y(use)e(a)h(b)m(yte)g(p)s(osition)d -(greater)k(than)e(255,)i(inciden)m(tally\).)630 2427 -y(F)-8 b(or)37 b(instance,)g(the)f(option)g(`)p Fn(-k)30 -b(1,2,4,6-10,'$')p Fs(')i(generates)38 b(a)e(hash)g(function)e(that)630 -2536 y(considers)g(p)s(ositions)f(1,2,4,6,7,8,9,10,)42 -b(plus)33 b(the)j(last)f(b)m(yte)g(in)f(eac)m(h)i(k)m(eyw)m(ord)g -(\(whic)m(h)630 2646 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)f(p)s -(osition)f(for)h(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)65 -b(Keyw)m(ords)38 b(with)630 2756 y(length)29 b(less)g(than)g(the)g -(indicated)f(b)m(yte)j(p)s(ositions)c(w)m(ork)i(prop)s(erly)-8 -b(,)29 b(since)f(selected)i(b)m(yte)630 2865 y(p)s(ositions)j -(exceeding)i(the)h(k)m(eyw)m(ord)f(length)f(are)i(simply)c(not)k -(referenced)f(in)e(the)j(hash)630 2975 y(function.)630 -3113 y(This)27 b(option)i(is)f(not)h(normally)e(needed)i(since)f(v)m -(ersion)g(2.8)j(of)e Fn(gperf)p Fs(;)f(the)h(default)f(b)m(yte)630 -3223 y(p)s(ositions)34 b(are)i(computed)f(dep)s(ending)e(on)j(the)f(k)m +y(ma)m(y)c(o)s(ccur)f(in)h(an)m(y)g(order.)37 b(F)-8 +b(urthermore,)22 b(the)f(wildcard)f('*')h(causes)g(the)g(generated)h +(hash)630 2069 y(function)37 b(to)h(consider)g Fe(all)g +Fs(b)m(yte)g(p)s(ositions)f(in)g(eac)m(h)i(k)m(eyw)m(ord,)h(whereas)d +('$')h(instructs)630 2179 y(the)31 b(hash)g(function)f(to)i(use)f(the)g +(\\\014nal)h(b)m(yte")g(of)f(a)h(k)m(eyw)m(ord)f(\(this)g(is)h(the)f +(only)g(w)m(a)m(y)h(to)630 2288 y(use)e(a)h(b)m(yte)g(p)s(osition)f +(greater)i(than)e(255,)i(inciden)m(tally\).)630 2427 +y(F)-8 b(or)37 b(instance,)h(the)e(option)h(`)p Fn(-k)30 +b(1,2,4,6-10,'$')p Fs(')i(generates)38 b(a)e(hash)g(function)f(that)630 +2536 y(considers)g(p)s(ositions)g(1,2,4,6,7,8,9,10,)42 +b(plus)34 b(the)i(last)g(b)m(yte)f(in)g(eac)m(h)h(k)m(eyw)m(ord)g +(\(whic)m(h)630 2646 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)g(p)s +(osition)g(for)f(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)67 +b(Keyw)m(ords)38 b(with)630 2756 y(length)30 b(less)g(than)f(the)g +(indicated)h(b)m(yte)h(p)s(ositions)e(w)m(ork)g(prop)s(erly)-8 +b(,)30 b(since)f(selected)i(b)m(yte)630 2865 y(p)s(ositions)k +(exceeding)h(the)g(k)m(eyw)m(ord)f(length)g(are)h(simply)e(not)i +(referenced)f(in)f(the)i(hash)630 2975 y(function.)630 +3113 y(This)28 b(option)i(is)f(not)g(normally)g(needed)g(since)g(v)m +(ersion)g(2.8)i(of)e Fn(gperf)p Fs(;)f(the)h(default)g(b)m(yte)630 +3223 y(p)s(ositions)36 b(are)g(computed)f(dep)s(ending)f(on)i(the)f(k)m (eyw)m(ord)h(set,)i(through)d(a)h(searc)m(h)g(that)630 -3332 y(minimizes)28 b(the)i(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s +3332 y(minimizes)31 b(the)f(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s (ositions.)150 3500 y(`)p Fn(-D)p Fs(')150 3609 y(`)p -Fn(--duplicates)p Fs(')630 3719 y(Handle)g(k)m(eyw)m(ords)i(whose)f -(selected)h(b)m(yte)f(sets)h(hash)e(to)i(duplicate)e(v)-5 -b(alues.)45 b(Duplicate)630 3829 y(hash)33 b(v)-5 b(alues)33 -b(can)i(o)s(ccur)e(if)g(a)h(set)h(of)f(k)m(eyw)m(ords)g(has)g(the)g -(same)g(names,)h(but)e(p)s(ossesses)630 3938 y(di\013eren)m(t)e -(attributes,)g(or)g(if)g(the)g(selected)h(b)m(yte)g(p)s(ositions)d(are) -j(not)f(w)m(ell)f(c)m(hosen.)44 b(With)630 4048 y(the)36 -b(-D)g(option)f Fn(gperf)f Fs(treats)j(all)d(these)j(k)m(eyw)m(ords)e -(as)h(part)g(of)g(an)f(equiv)-5 b(alence)35 b(class)630 -4157 y(and)c(generates)i(a)f(p)s(erfect)g(hash)f(function)f(with)h(m)m -(ultiple)e(comparisons)i(for)g(duplicate)630 4267 y(k)m(eyw)m(ords.)38 -b(It)21 b(is)e(up)h(to)h(y)m(ou)g(to)h(completely)e(disam)m(biguate)g -(the)h(k)m(eyw)m(ords)g(b)m(y)g(mo)s(difying)630 4377 -y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30 -b Fn(gperf)c Fs(helps)g(y)m(ou)h(out)h(b)m(y)f(organizing)g(the)g -(output.)630 4515 y(Using)k(this)g(option)g(usually)f(means)i(that)g -(the)g(generated)h(hash)e(function)g(is)g(no)g(longer)630 -4625 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)f(p)s(ermits)f -Fn(gperf)g Fs(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 -4734 y(otherwise)d(could)f(not)i(handle.)150 4902 y(`)p +Fn(--duplicates)p Fs(')630 3719 y(Handle)h(k)m(eyw)m(ords)h(whose)f +(selected)i(b)m(yte)e(sets)h(hash)e(to)i(duplicate)g(v)-5 +b(alues.)46 b(Duplicate)630 3829 y(hash)33 b(v)-5 b(alues)34 +b(can)h(o)s(ccur)e(if)h(a)g(set)h(of)f(k)m(eyw)m(ords)g(has)g(the)g +(same)g(names,)h(but)e(p)s(ossesses)630 3938 y(di\013eren)m(t)f +(attributes,)g(or)f(if)h(the)f(selected)i(b)m(yte)f(p)s(ositions)f(are) +h(not)f(w)m(ell)h(c)m(hosen.)44 b(With)630 4048 y(the)36 +b(-D)g(option)g Fn(gperf)e Fs(treats)j(all)f(these)h(k)m(eyw)m(ords)e +(as)h(part)g(of)g(an)f(equiv)-5 b(alence)37 b(class)630 +4157 y(and)31 b(generates)i(a)f(p)s(erfect)g(hash)f(function)g(with)h +(m)m(ultiple)g(comparisons)g(for)f(duplicate)630 4267 +y(k)m(eyw)m(ords.)38 b(It)21 b(is)f(up)g(to)h(y)m(ou)g(to)h(completely) +g(disam)m(biguate)g(the)f(k)m(eyw)m(ords)g(b)m(y)g(mo)s(difying)630 +4377 y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30 +b Fn(gperf)c Fs(helps)h(y)m(ou)g(out)h(b)m(y)f(organizing)i(the)e +(output.)630 4515 y(Using)32 b(this)g(option)g(usually)g(means)g(that)g +(the)g(generated)h(hash)e(function)h(is)g(no)f(longer)630 +4625 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)g(p)s(ermits)f +Fn(gperf)f Fs(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 +4734 y(otherwise)e(could)f(not)h(handle.)150 4902 y(`)p Fn(-m)f Fo(iterations)t Fs(')150 5011 y(`)p Fn(--multiple-iterations=)p -Fo(i)o(terations)t Fs(')630 5121 y(P)m(erform)24 b(m)m(ultiple)e(c)m -(hoices)j(of)f(the)h(`)p Fn(-i)p Fs(')f(and)g(`)p Fn(-j)p -Fs(')g(v)-5 b(alues,)25 b(and)e(c)m(ho)s(ose)j(the)e(b)s(est)g -(results.)630 5230 y(This)33 b(increases)i(the)g(running)d(time)i(b)m -(y)h(a)g(factor)h(of)f Fo(iterations)j Fs(but)c(do)s(es)g(a)i(go)s(o)s -(d)e(job)630 5340 y(minimizing)27 b(the)j(generated)i(table)e(size.)p -eop +Fo(iterations)t Fs(')630 5121 y(P)m(erform)24 b(m)m(ultiple)h(c)m +(hoices)h(of)e(the)h(`)p Fn(-i)p Fs(')f(and)g(`)p Fn(-j)p +Fs(')g(v)-5 b(alues,)26 b(and)d(c)m(ho)s(ose)j(the)e(b)s(est)g +(results.)630 5230 y(This)34 b(increases)i(the)f(running)e(time)i(b)m +(y)g(a)g(factor)h(of)f Fo(iterations)40 b Fs(but)34 b(do)s(es)g(a)i(go) +s(o)s(d)e(job)630 5340 y(minimizing)d(the)f(generated)i(table)f(size.)p +eop end %%Page: 24 26 -24 25 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(24)150 299 y(`)p Fn(-i)30 b Fo(initial-v)-5 -b(alue)5 b Fs(')150 408 y(`)p Fn(--initial-asso=)p Fo(initial)o(-v)-5 -b(alue)5 b Fs(')630 518 y(Pro)m(vides)28 b(an)g(initial)d -Fo(v)-5 b(alue)33 b Fs(for)28 b(the)g(asso)s(ciate)h(v)-5 -b(alues)28 b(arra)m(y)-8 b(.)41 b(Default)28 b(is)f(0.)41 -b(Increasing)630 628 y(the)30 b(initial)d(v)-5 b(alue)30 -b(helps)e(in\015ate)h(the)h(\014nal)f(table)h(size,)g(p)s(ossibly)d -(leading)i(to)h(more)g(time)630 737 y(e\016cien)m(t)e(k)m(eyw)m(ord)f -(lo)s(okups.)38 b(Note)29 b(that)e(this)f(option)h(is)f(not)h -(particularly)e(useful)g(when)630 847 y(`)p Fn(-S)p Fs(')j(\(or,)i -(equiv)-5 b(alen)m(tly)d(,)28 b(`)p Fn(\045switch)p Fs('\))f(is)h -(used.)39 b(Also,)29 b(`)p Fn(-i)p Fs(')f(is)f(o)m(v)m(erridden)h(when) -f(the)i(`)p Fn(-r)p Fs(')630 956 y(option)h(is)f(used.)150 -1150 y(`)p Fn(-j)h Fo(jump-v)-5 b(alue)5 b Fs(')150 1260 -y(`)p Fn(--jump=)p Fo(jump-v)-5 b(alue)5 b Fs(')630 1369 -y(A\013ects)41 b(the)f(\\jump)f(v)-5 b(alue",)43 b(i.e.,)g(ho)m(w)d -(far)g(to)g(adv)-5 b(ance)41 b(the)f(asso)s(ciated)h(b)m(yte)f(v)-5 -b(alue)630 1479 y(up)s(on)29 b(collisions.)39 b Fo(Jump-v)-5 -b(alue)34 b Fs(is)29 b(rounded)g(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s -(er,)f(the)i(default)f(is)f(5.)630 1588 y(If)h(the)g -Fo(jump-v)-5 b(alue)34 b Fs(is)c(0)g Fn(gperf)f Fs(jumps)g(b)m(y)h -(random)g(amoun)m(ts.)150 1782 y(`)p Fn(-n)p Fs(')150 -1892 y(`)p Fn(--no-strlen)p Fs(')630 2001 y(Instructs)c(the)i -(generator)g(not)f(to)h(include)d(the)j(length)e(of)h(a)h(k)m(eyw)m -(ord)g(when)e(computing)630 2111 y(its)40 b(hash)g(v)-5 -b(alue.)71 b(This)39 b(ma)m(y)i(sa)m(v)m(e)h(a)f(few)f(assem)m(bly)g -(instructions)f(in)g(the)i(generated)630 2221 y(lo)s(okup)29 -b(table.)150 2414 y(`)p Fn(-r)p Fs(')150 2524 y(`)p Fn(--random)p -Fs(')630 2633 y(Utilizes)37 b(randomness)h(to)h(initialize)c(the)k -(asso)s(ciated)g(v)-5 b(alues)37 b(table.)65 b(This)37 -b(frequen)m(tly)630 2743 y(generates)23 b(solutions)c(faster)j(than)f -(using)f(deterministic)f(initialization)f(\(whic)m(h)i(starts)i(all)630 -2853 y(asso)s(ciated)27 b(v)-5 b(alues)27 b(at)g(0\).)40 -b(F)-8 b(urthermore,)28 b(using)e(the)h(randomization)e(option)i -(generally)630 2962 y(increases)j(the)h(size)f(of)g(the)h(table.)150 +TeXDict begin 24 25 bop 150 -116 a Fs(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(24)150 299 y(`)p +Fn(-i)30 b Fo(initial-v)-5 b(alue)5 b Fs(')150 408 y(`)p +Fn(--initial-asso=)p Fo(initial-v)-5 b(alue)5 b Fs(')630 +518 y(Pro)m(vides)29 b(an)f(initial)h Fo(v)-5 b(alue)34 +b Fs(for)28 b(the)g(asso)s(ciate)i(v)-5 b(alues)29 b(arra)m(y)-8 +b(.)41 b(Default)29 b(is)f(0.)41 b(Increasing)630 628 +y(the)30 b(initial)h(v)-5 b(alue)31 b(helps)e(in\015ate)h(the)g +(\014nal)g(table)h(size,)g(p)s(ossibly)e(leading)i(to)f(more)g(time)630 +737 y(e\016cien)m(t)f(k)m(eyw)m(ord)e(lo)s(okups.)39 +b(Note)29 b(that)e(this)g(option)h(is)f(not)g(particularly)h(useful)e +(when)630 847 y(`)p Fn(-S)p Fs(')i(\(or,)i(equiv)-5 b(alen)m(tly)d(,)31 +b(`)p Fn(\045switch)p Fs('\))c(is)i(used.)39 b(Also,)30 +b(`)p Fn(-i)p Fs(')e(is)g(o)m(v)m(erridden)h(when)e(the)i(`)p +Fn(-r)p Fs(')630 956 y(option)i(is)f(used.)150 1150 y(`)p +Fn(-j)g Fo(jump-v)-5 b(alue)5 b Fs(')150 1260 y(`)p Fn(--jump=)p +Fo(jump-v)-5 b(alue)5 b Fs(')630 1369 y(A\013ects)41 +b(the)f(\\jump)f(v)-5 b(alue",)44 b(i.e.,)g(ho)m(w)c(far)g(to)g(adv)-5 +b(ance)41 b(the)f(asso)s(ciated)i(b)m(yte)e(v)-5 b(alue)630 +1479 y(up)s(on)29 b(collisions.)43 b Fo(Jump-v)-5 b(alue)35 +b Fs(is)30 b(rounded)f(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s(er,)f(the)i +(default)g(is)f(5.)630 1588 y(If)g(the)g Fo(jump-v)-5 +b(alue)35 b Fs(is)c(0)f Fn(gperf)f Fs(jumps)g(b)m(y)h(random)g(amoun)m +(ts.)150 1782 y(`)p Fn(-n)p Fs(')150 1892 y(`)p Fn(--no-strlen)p +Fs(')630 2001 y(Instructs)c(the)i(generator)g(not)f(to)h(include)f(the) +h(length)f(of)g(a)h(k)m(eyw)m(ord)g(when)e(computing)630 +2111 y(its)41 b(hash)f(v)-5 b(alue.)72 b(This)40 b(ma)m(y)h(sa)m(v)m(e) +h(a)f(few)f(assem)m(bly)h(instructions)g(in)f(the)h(generated)630 +2221 y(lo)s(okup)30 b(table.)150 2414 y(`)p Fn(-r)p Fs(')150 +2524 y(`)p Fn(--random)p Fs(')630 2633 y(Utilizes)40 +b(randomness)e(to)h(initialize)h(the)f(asso)s(ciated)h(v)-5 +b(alues)38 b(table.)66 b(This)38 b(frequen)m(tly)630 +2743 y(generates)23 b(solutions)e(faster)h(than)f(using)g +(deterministic)h(initialization)i(\(whic)m(h)d(starts)h(all)630 +2853 y(asso)s(ciated)28 b(v)-5 b(alues)28 b(at)f(0\).)40 +b(F)-8 b(urthermore,)28 b(using)f(the)g(randomization)g(option)h +(generally)630 2962 y(increases)j(the)g(size)g(of)f(the)h(table.)150 3156 y(`)p Fn(-s)f Fo(size-m)m(ultiple)5 b Fs(')150 3266 -y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultipl)o(e)g -Fs(')630 3375 y(A\013ects)40 b(the)e(size)g(of)h(the)f(generated)i -(hash)d(table.)65 b(The)38 b(n)m(umeric)f(argumen)m(t)i(for)f(this)630 -3485 y(option)32 b(indicates)f(\\ho)m(w)i(man)m(y)g(times)f(larger)g -(or)g(smaller")g(the)g(maxim)m(um)f(asso)s(ciated)630 -3594 y(v)-5 b(alue)37 b(range)h(should)d(b)s(e,)k(in)d(relationship)f -(to)j(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eyw)m(ords.)62 -b(It)38 b(can)g(b)s(e)630 3704 y(written)f(as)i(an)f(in)m(teger,)k(a)c -(\015oating-p)s(oin)m(t)g(n)m(um)m(b)s(er)f(or)i(a)f(fraction.)65 -b(F)-8 b(or)39 b(example,)i(a)630 3814 y(v)-5 b(alue)39 -b(of)g(3)h(means)f(\\allo)m(w)g(the)h(maxim)m(um)e(asso)s(ciated)h(v)-5 -b(alue)39 b(to)h(b)s(e)f(ab)s(out)g(3)g(times)630 3923 -y(larger)32 b(than)h(the)g(n)m(um)m(b)s(er)e(of)i(input)e(k)m(eyw)m -(ords".)49 b(Con)m(v)m(ersely)-8 b(,)34 b(a)f(v)-5 b(alue)32 -b(of)h(1/3)h(means)630 4033 y(\\allo)m(w)41 b(the)g(maxim)m(um)e(asso)s -(ciated)j(v)-5 b(alue)40 b(to)i(b)s(e)e(ab)s(out)g(3)h(times)g(smaller) -e(than)i(the)630 4142 y(n)m(um)m(b)s(er)33 b(of)i(input)e(k)m(eyw)m -(ords".)55 b(V)-8 b(alues)34 b(smaller)g(than)g(1)h(are)g(useful)e(for) -i(limiting)d(the)630 4252 y(o)m(v)m(erall)d(size)f(of)h(the)f -(generated)i(hash)e(table,)h(though)f(the)g(option)g(`)p -Fn(-m)p Fs(')h(is)e(b)s(etter)i(at)g(this)630 4361 y(purp)s(ose.)630 -4513 y(If)44 b(`generate)h(switc)m(h')f(option)g(`)p -Fn(-S)p Fs(')g(\(or,)k(equiv)-5 b(alen)m(tly)d(,)46 b(`)p -Fn(\045switch)p Fs('\))d(is)g Fl(not)54 b Fs(enabled,)630 -4623 y(the)45 b(maxim)m(um)g(asso)s(ciated)g(v)-5 b(alue)45 -b(in\015uences)f(the)h(static)h(arra)m(y)g(table)f(size,)k(and)c(a)630 -4732 y(larger)26 b(table)g(should)e(decrease)j(the)f(time)g(required)e -(for)i(an)f(unsuccessful)f(searc)m(h,)k(at)f(the)630 -4842 y(exp)s(ense)j(of)g(extra)i(table)e(space.)630 4994 -y(The)35 b(default)f(v)-5 b(alue)35 b(is)f(1,)j(th)m(us)e(the)h -(default)e(maxim)m(um)g(asso)s(ciated)i(v)-5 b(alue)35 -b(ab)s(out)g(the)630 5103 y(same)h(size)f(as)g(the)h(n)m(um)m(b)s(er)e -(of)h(k)m(eyw)m(ords)h(\(for)g(e\016ciency)-8 b(,)37 -b(the)e(maxim)m(um)f(asso)s(ciated)630 5213 y(v)-5 b(alue)35 -b(is)g(alw)m(a)m(ys)h(rounded)e(up)g(to)i(a)g(p)s(o)m(w)m(er)g(of)f -(2\).)57 b(The)35 b(actual)h(table)g(size)f(ma)m(y)h(v)-5 -b(ary)630 5322 y(somewhat,)31 b(since)f(this)f(tec)m(hnique)h(is)g -(essen)m(tially)f(a)i(heuristic.)p eop +y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultiple)g Fs(')630 +3375 y(A\013ects)40 b(the)e(size)h(of)g(the)f(generated)i(hash)d +(table.)66 b(The)38 b(n)m(umeric)g(argumen)m(t)h(for)f(this)630 +3485 y(option)33 b(indicates)g(\\ho)m(w)g(man)m(y)g(times)g(larger)g +(or)f(smaller")i(the)e(maxim)m(um)g(asso)s(ciated)630 +3594 y(v)-5 b(alue)38 b(range)g(should)e(b)s(e,)j(in)e(relationship)h +(to)g(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eyw)m(ords.)62 +b(It)38 b(can)g(b)s(e)630 3704 y(written)g(as)h(an)f(in)m(teger,)43 +b(a)38 b(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er)d(or)i(a)f(fraction.) +66 b(F)-8 b(or)39 b(example,)j(a)630 3814 y(v)-5 b(alue)40 +b(of)f(3)h(means)f(\\allo)m(w)i(the)f(maxim)m(um)f(asso)s(ciated)h(v)-5 +b(alue)40 b(to)g(b)s(e)f(ab)s(out)g(3)g(times)630 3923 +y(larger)33 b(than)g(the)g(n)m(um)m(b)s(er)e(of)i(input)f(k)m(eyw)m +(ords".)49 b(Con)m(v)m(ersely)-8 b(,)35 b(a)e(v)-5 b(alue)33 +b(of)g(1/3)h(means)630 4033 y(\\allo)m(w)43 b(the)e(maxim)m(um)f(asso)s +(ciated)j(v)-5 b(alue)41 b(to)h(b)s(e)e(ab)s(out)g(3)h(times)h(smaller) +f(than)g(the)630 4142 y(n)m(um)m(b)s(er)33 b(of)i(input)f(k)m(eyw)m +(ords".)55 b(V)-8 b(alues)35 b(smaller)h(than)e(1)h(are)g(useful)f(for) +h(limiting)h(the)630 4252 y(o)m(v)m(erall)31 b(size)e(of)g(the)f +(generated)i(hash)e(table,)i(though)e(the)g(option)h(`)p +Fn(-m)p Fs(')g(is)f(b)s(etter)h(at)g(this)630 4361 y(purp)s(ose.)630 +4513 y(If)44 b(`generate)h(switc)m(h')g(option)g(`)p +Fn(-S)p Fs(')f(\(or,)k(equiv)-5 b(alen)m(tly)d(,)49 b(`)p +Fn(\045switch)p Fs('\))43 b(is)h Fl(not)54 b Fs(enabled,)630 +4623 y(the)45 b(maxim)m(um)h(asso)s(ciated)g(v)-5 b(alue)46 +b(in\015uences)f(the)g(static)i(arra)m(y)f(table)g(size,)k(and)45 +b(a)630 4732 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)h +(required)e(for)h(an)f(unsuccessful)g(searc)m(h,)j(at)f(the)630 +4842 y(exp)s(ense)j(of)g(extra)i(table)f(space.)630 4994 +y(The)k(default)g(v)-5 b(alue)36 b(is)f(1,)i(th)m(us)e(the)h(default)f +(maxim)m(um)g(asso)s(ciated)i(v)-5 b(alue)36 b(ab)s(out)f(the)630 +5103 y(same)h(size)g(as)f(the)h(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m(ords)h +(\(for)g(e\016ciency)-8 b(,)38 b(the)d(maxim)m(um)g(asso)s(ciated)630 +5213 y(v)-5 b(alue)36 b(is)g(alw)m(a)m(ys)h(rounded)d(up)g(to)i(a)g(p)s +(o)m(w)m(er)g(of)f(2\).)57 b(The)35 b(actual)i(table)g(size)f(ma)m(y)g +(v)-5 b(ary)630 5322 y(somewhat,)31 b(since)g(this)f(tec)m(hnique)h(is) +g(essen)m(tially)h(a)f(heuristic.)p eop end %%Page: 25 27 -25 26 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(25)150 299 y Fr(4.6)68 b(Informativ)l(e)47 -b(Output)150 516 y Fs(`)p Fn(-h)p Fs(')150 626 y(`)p -Fn(--help)p Fs(')142 b(Prin)m(ts)23 b(a)h(short)f(summary)g(on)h(the)g -(meaning)f(of)h(eac)m(h)h(program)e(option.)38 b(Ab)s(orts)23 -b(further)630 736 y(program)30 b(execution.)150 895 y(`)p -Fn(-v)p Fs(')150 1005 y(`)p Fn(--version)p Fs(')630 1114 -y(Prin)m(ts)f(out)i(the)f(curren)m(t)h(v)m(ersion)e(n)m(um)m(b)s(er.) -150 1274 y(`)p Fn(-d)p Fs(')150 1383 y(`)p Fn(--debug)p -Fs(')94 b(Enables)27 b(the)i(debugging)e(option.)39 b(This)27 -b(pro)s(duces)g(v)m(erb)s(ose)i(diagnostics)e(to)i(\\standard)630 -1493 y(error")i(when)g Fn(gperf)f Fs(is)g(executing.)44 -b(It)32 b(is)e(useful)g(b)s(oth)h(for)g(main)m(taining)f(the)h(program) -630 1602 y(and)f(for)h(determining)e(whether)h(a)h(giv)m(en)g(set)g(of) -g(options)f(is)g(actually)h(sp)s(eeding)e(up)h(the)630 -1712 y(searc)m(h)41 b(for)e(a)h(solution.)68 b(Some)40 -b(useful)e(information)g(is)h(dump)s(ed)f(at)i(the)g(end)g(of)g(the)630 -1822 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)g(is)g -(enabled.)p eop +TeXDict begin 25 26 bop 150 -116 a Fs(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(25)150 299 y +Fr(4.6)68 b(Informativ)l(e)47 b(Output)150 516 y Fs(`)p +Fn(-h)p Fs(')150 626 y(`)p Fn(--help)p Fs(')142 b(Prin)m(ts)24 +b(a)g(short)f(summary)g(on)h(the)g(meaning)g(of)g(eac)m(h)h(program)e +(option.)39 b(Ab)s(orts)23 b(further)630 736 y(program)30 +b(execution.)150 895 y(`)p Fn(-v)p Fs(')150 1005 y(`)p +Fn(--version)p Fs(')630 1114 y(Prin)m(ts)g(out)h(the)f(curren)m(t)h(v)m +(ersion)f(n)m(um)m(b)s(er.)150 1274 y(`)p Fn(-d)p Fs(')150 +1383 y(`)p Fn(--debug)p Fs(')94 b(Enables)28 b(the)h(debugging)f +(option.)40 b(This)28 b(pro)s(duces)f(v)m(erb)s(ose)i(diagnostics)g(to) +g(\\standard)630 1493 y(error")i(when)g Fn(gperf)f Fs(is)h(executing.) +45 b(It)32 b(is)f(useful)g(b)s(oth)g(for)g(main)m(taining)i(the)e +(program)630 1602 y(and)f(for)h(determining)g(whether)f(a)h(giv)m(en)h +(set)f(of)g(options)g(is)g(actually)i(sp)s(eeding)d(up)g(the)630 +1712 y(searc)m(h)41 b(for)e(a)h(solution.)70 b(Some)40 +b(useful)f(information)h(is)g(dump)s(ed)e(at)i(the)g(end)g(of)g(the)630 +1822 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)h(is)g +(enabled.)p eop end %%Page: 26 28 -26 27 bop 150 -116 a Fs(Chapter)30 b(5:)41 b(Kno)m(wn)30 -b(Bugs)g(and)g(Limitations)e(with)h Fn(gperf)1397 b Fs(26)150 -299 y Fp(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)h(with)e -Fm(gperf)275 533 y Fs(The)29 b(follo)m(wing)g(are)i(some)g(limitations) -d(with)h(the)h(curren)m(t)h(release)f(of)h Fn(gperf)p -Fs(:)225 667 y Fq(\017)60 b Fs(The)31 b Fn(gperf)g Fs(utilit)m(y)f(is)h -(tuned)g(to)h(execute)h(quic)m(kly)-8 b(,)32 b(and)f(w)m(orks)h(quic)m -(kly)e(for)i(small)e(to)j(medium)330 777 y(size)h(data)h(sets)g -(\(around)f(1000)i(k)m(eyw)m(ords\).)54 b(It)34 b(is)g(extremely)h -(useful)d(for)i(main)m(taining)f(p)s(erfect)330 887 y(hash)40 -b(functions)g(for)g(compiler)g(k)m(eyw)m(ord)h(sets.)72 -b(Sev)m(eral)41 b(recen)m(t)h(enhancemen)m(ts)g(no)m(w)e(enable)330 -996 y Fn(gperf)31 b Fs(to)j(w)m(ork)e(e\016cien)m(tly)h(on)f(m)m(uc)m -(h)h(larger)f(k)m(eyw)m(ord)h(sets)g(\(o)m(v)m(er)i(15,000)g(k)m(eyw)m -(ords\).)48 b(When)330 1106 y(pro)s(cessing)29 b(large)i(k)m(eyw)m(ord) -f(sets)h(it)f(helps)f(greatly)i(to)g(ha)m(v)m(e)g(o)m(v)m(er)h(8)f -(megs)g(of)f(RAM.)225 1240 y Fq(\017)60 b Fs(The)43 b(size)h(of)g(the)g -(generate)h(static)g(k)m(eyw)m(ord)f(arra)m(y)g(can)g(get)h -Fl(extr)-5 b(emely)53 b Fs(large)44 b(if)f(the)h(input)330 -1350 y(k)m(eyw)m(ord)d(\014le)e(is)g(large)i(or)f(if)f(the)i(k)m(eyw)m -(ords)f(are)h(quite)f(similar.)67 b(This)39 b(tends)h(to)h(slo)m(w)e -(do)m(wn)330 1460 y(the)c(compilation)e(of)i(the)f(generated)i(C)e(co)s -(de,)i(and)e Fl(gr)-5 b(e)g(atly)44 b Fs(in\015ates)34 -b(the)h(ob)5 b(ject)35 b(co)s(de)g(size.)53 b(If)330 -1569 y(this)39 b(situation)g(o)s(ccurs,)j(consider)d(using)f(the)i(`)p -Fn(-S)p Fs(')g(option)f(to)i(reduce)e(data)i(size,)h(p)s(oten)m(tially) -330 1679 y(increasing)g(k)m(eyw)m(ord)i(recognition)f(time)g(a)h -(negligible)e(amoun)m(t.)80 b(Since)43 b(man)m(y)g(C)h(compilers)330 -1788 y(cannot)37 b(correctly)h(generate)g(co)s(de)f(for)g(large)g -(switc)m(h)f(statemen)m(ts)j(it)d(is)g(imp)s(ortan)m(t)g(to)i(qualify) -330 1898 y(the)i Fo(-S)46 b Fs(option)39 b(with)g(an)h(appropriate)f(n) -m(umerical)g(argumen)m(t)h(that)h(con)m(trols)g(the)f(n)m(um)m(b)s(er)f -(of)330 2007 y(switc)m(h)30 b(statemen)m(ts)i(generated.)225 -2142 y Fq(\017)60 b Fs(The)35 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)i -(selected)g(b)m(yte)g(p)s(ositions)d(has)i(an)h(arbitrary)e(limit)f(of) -j(255.)57 b(This)330 2252 y(restriction)27 b(should)f(b)s(e)h(remo)m(v) -m(ed,)j(and)d(if)g(an)m(y)m(one)i(considers)e(this)g(a)h(problem)e -(write)i(me)g(and)f(let)330 2361 y(me)j(kno)m(w)h(so)f(I)h(can)f(remo)m -(v)m(e)i(the)f(constrain)m(t.)p eop +TeXDict begin 26 27 bop 150 -116 a Fs(Chapter)30 b(5:)41 +b(Kno)m(wn)30 b(Bugs)g(and)g(Limitations)h(with)f Fn(gperf)1397 +b Fs(26)150 299 y Fp(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)f +(with)f Fm(gperf)275 533 y Fs(The)29 b(follo)m(wing)j(are)f(some)g +(limitations)h(with)e(the)g(curren)m(t)h(release)g(of)g +Fn(gperf)p Fs(:)225 667 y Fq(\017)60 b Fs(The)31 b Fn(gperf)g +Fs(utilit)m(y)i(is)f(tuned)f(to)h(execute)h(quic)m(kly)-8 +b(,)34 b(and)d(w)m(orks)h(quic)m(kly)g(for)g(small)g(to)h(medium)330 +777 y(size)i(data)g(sets)g(\(around)f(1000)i(k)m(eyw)m(ords\).)54 +b(It)34 b(is)h(extremely)h(useful)d(for)h(main)m(taining)i(p)s(erfect) +330 887 y(hash)k(functions)h(for)f(compiler)i(k)m(eyw)m(ord)f(sets.)72 +b(Sev)m(eral)42 b(recen)m(t)g(enhancemen)m(ts)g(no)m(w)e(enable)330 +996 y Fn(gperf)31 b Fs(to)j(w)m(ork)e(e\016cien)m(tly)j(on)d(m)m(uc)m +(h)h(larger)g(k)m(eyw)m(ord)g(sets)g(\(o)m(v)m(er)i(15,000)g(k)m(eyw)m +(ords\).)48 b(When)330 1106 y(pro)s(cessing)30 b(large)i(k)m(eyw)m(ord) +e(sets)h(it)g(helps)f(greatly)i(to)f(ha)m(v)m(e)g(o)m(v)m(er)h(8)f +(megs)g(of)f(RAM.)225 1240 y Fq(\017)60 b Fs(The)43 b(size)i(of)f(the)g +(generate)h(static)h(k)m(eyw)m(ord)e(arra)m(y)g(can)g(get)h +Fl(extr)-5 b(emely)53 b Fs(large)45 b(if)f(the)g(input)330 +1350 y(k)m(eyw)m(ord)d(\014le)f(is)g(large)i(or)e(if)g(the)h(k)m(eyw)m +(ords)f(are)h(quite)g(similar.)70 b(This)40 b(tends)g(to)h(slo)m(w)f +(do)m(wn)330 1460 y(the)35 b(compilation)h(of)f(the)f(generated)i(C)e +(co)s(de,)i(and)e Fl(gr)-5 b(e)g(atly)44 b Fs(in\015ates)35 +b(the)g(ob)5 b(ject)35 b(co)s(de)g(size.)54 b(If)330 +1569 y(this)40 b(situation)h(o)s(ccurs,)h(consider)e(using)f(the)h(`)p +Fn(-S)p Fs(')g(option)g(to)h(reduce)e(data)i(size,)i(p)s(oten)m(tially) +330 1679 y(increasing)h(k)m(eyw)m(ord)g(recognition)h(time)f(a)g +(negligible)i(amoun)m(t.)80 b(Since)44 b(man)m(y)f(C)h(compilers)330 +1788 y(cannot)37 b(correctly)i(generate)f(co)s(de)f(for)g(large)h +(switc)m(h)f(statemen)m(ts)i(it)e(is)g(imp)s(ortan)m(t)g(to)h(qualify) +330 1898 y(the)i Fo(-S)46 b Fs(option)40 b(with)g(an)g(appropriate)g(n) +m(umerical)h(argumen)m(t)f(that)h(con)m(trols)h(the)e(n)m(um)m(b)s(er)f +(of)330 2007 y(switc)m(h)31 b(statemen)m(ts)h(generated.)225 +2142 y Fq(\017)60 b Fs(The)35 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(selected)h(b)m(yte)f(p)s(ositions)f(has)g(an)h(arbitrary)f(limit)h(of) +g(255.)57 b(This)330 2252 y(restriction)29 b(should)e(b)s(e)g(remo)m(v) +m(ed,)j(and)d(if)h(an)m(y)m(one)h(considers)f(this)g(a)g(problem)f +(write)i(me)f(and)f(let)330 2361 y(me)j(kno)m(w)h(so)f(I)h(can)f(remo)m +(v)m(e)i(the)f(constrain)m(t.)p eop end %%Page: 27 29 -27 28 bop 150 -116 a Fs(Chapter)30 b(6:)41 b(Things)28 -b(Still)g(Left)j(to)g(Do)2133 b(27)150 299 y Fp(6)80 -b(Things)54 b(Still)i(Left)d(to)g(Do)275 533 y Fs(It)24 -b(should)e(b)s(e)i(\\relativ)m(ely")h(easy)g(to)g(replace)f(the)h -(curren)m(t)f(p)s(erfect)g(hash)g(function)f(algorithm)g(with)150 -643 y(a)35 b(more)f(exhaustiv)m(e)g(approac)m(h;)j(the)d(p)s(erfect)h -(hash)e(mo)s(dule)g(is)g(essen)m(tial)h(indep)s(enden)m(t)e(from)i -(other)150 752 y(program)c(mo)s(dules.)39 b(Additional)28 -b(w)m(orth)m(while)h(impro)m(v)m(emen)m(ts)i(include:)225 -887 y Fq(\017)60 b Fs(Another)34 b(useful)e(extension)h(in)m(v)m(olv)m -(es)h(mo)s(difying)d(the)j(program)f(to)i(generate)g(\\minimal")d(p)s -(er-)330 996 y(fect)42 b(hash)f(functions)e(\(under)i(certain)g -(circumstances,)j(the)d(curren)m(t)g(v)m(ersion)g(can)g(b)s(e)g(rather) -330 1106 y(extra)m(v)-5 b(agan)m(t)39 b(in)c(the)i(generated)g(table)f -(size\).)59 b(This)35 b(is)g(mostly)h(of)h(theoretical)f(in)m(terest,)j -(since)330 1215 y(a)g(sparse)f(table)g(often)h(pro)s(duces)e(faster)i -(lo)s(okups,)g(and)f(use)g(of)h(the)g(`)p Fn(-S)p Fs(')f -Fn(switch)f Fs(option)h(can)330 1325 y(minimize)e(the)j(data)g(size,)i -(at)e(the)g(exp)s(ense)f(of)h(sligh)m(tly)e(longer)h(lo)s(okups)f -(\(note)j(that)f(the)g(gcc)330 1435 y(compiler)c(generally)g(pro)s -(duces)g(go)s(o)s(d)h(co)s(de)g(for)g Fn(switch)f Fs(statemen)m(ts,)k -(reducing)c(the)h(need)g(for)330 1544 y(more)31 b(complex)f(sc)m -(hemes\).)225 1679 y Fq(\017)60 b Fs(In)38 b(addition)f(to)j(impro)m -(ving)d(the)j(algorithm,)g(it)e(w)m(ould)g(also)h(b)s(e)g(useful)e(to)i +TeXDict begin 27 28 bop 150 -116 a Fs(Chapter)30 b(6:)41 +b(Things)29 b(Still)i(Left)g(to)g(Do)2133 b(27)150 299 +y Fp(6)80 b(Things)53 b(Still)g(Left)g(to)g(Do)275 533 +y Fs(It)24 b(should)f(b)s(e)h(\\relativ)m(ely")k(easy)d(to)g(replace)g +(the)g(curren)m(t)f(p)s(erfect)g(hash)g(function)g(algorithm)h(with)150 +643 y(a)35 b(more)f(exhaustiv)m(e)h(approac)m(h;)i(the)d(p)s(erfect)h +(hash)e(mo)s(dule)h(is)g(essen)m(tial)i(indep)s(enden)m(t)d(from)h +(other)150 752 y(program)c(mo)s(dules.)40 b(Additional)31 +b(w)m(orth)m(while)g(impro)m(v)m(emen)m(ts)h(include:)225 +887 y Fq(\017)60 b Fs(Another)34 b(useful)f(extension)h(in)m(v)m(olv)m +(es)i(mo)s(difying)d(the)h(program)f(to)i(generate)g(\\minimal")g(p)s +(er-)330 996 y(fect)42 b(hash)f(functions)f(\(under)h(certain)h +(circumstances,)j(the)c(curren)m(t)g(v)m(ersion)h(can)f(b)s(e)g(rather) +330 1106 y(extra)m(v)-5 b(agan)m(t)39 b(in)d(the)h(generated)g(table)g +(size\).)60 b(This)36 b(is)g(mostly)h(of)g(theoretical)h(in)m(terest,)i +(since)330 1215 y(a)f(sparse)f(table)h(often)g(pro)s(duces)e(faster)i +(lo)s(okups,)h(and)e(use)g(of)h(the)g(`)p Fn(-S)p Fs(')f +Fn(switch)f Fs(option)i(can)330 1325 y(minimize)g(the)g(data)g(size,)j +(at)d(the)g(exp)s(ense)f(of)h(sligh)m(tly)h(longer)f(lo)s(okups)f +(\(note)i(that)f(the)g(gcc)330 1435 y(compiler)e(generally)g(pro)s +(duces)e(go)s(o)s(d)h(co)s(de)g(for)g Fn(switch)f Fs(statemen)m(ts,)k +(reducing)d(the)g(need)g(for)330 1544 y(more)31 b(complex)g(sc)m +(hemes\).)225 1679 y Fq(\017)60 b Fs(In)38 b(addition)h(to)h(impro)m +(ving)f(the)h(algorithm,)i(it)d(w)m(ould)g(also)h(b)s(e)f(useful)f(to)h (generate)i(an)e(Ada)330 1788 y(pac)m(k)-5 b(age)32 b(as)f(the)g(co)s -(de)f(output,)g(in)f(addition)g(to)i(the)g(curren)m(t)f(C)g(and)g(C)p -Fn(++)f Fs(routines.)p eop +(de)f(output,)g(in)g(addition)h(to)g(the)g(curren)m(t)f(C)g(and)g(C)p +Fn(++)f Fs(routines.)p eop end %%Page: 28 30 -28 29 bop 150 -116 a Fs(Chapter)30 b(7:)41 b(Bibliograph)m(y)2533 -b(28)150 299 y Fp(7)80 b(Bibliograph)l(y)275 533 y Fs([1])22 -b(Chang,)h(C.C.:)36 b Fl(A)24 b(Scheme)h(for)g(Constructing)h(Or)-5 -b(der)g(e)g(d)26 b(Minimal)f(Perfe)-5 b(ct)24 b(Hashing)h(F)-7 -b(unctions)150 643 y Fs(Information)29 b(Sciences)h(39\(1986\),)k -(187-195.)275 777 y([2])26 b(Cic)m(helli,)e(Ric)m(hard)h(J.)g -Fl(A)n(uthor's)k(R)-5 b(esp)g(onse)30 b(to)f(\\On)f(Cichel)5 -b(li's)28 b(Minimal)h(Perfe)-5 b(ct)28 b(Hash)g(F)-7 -b(unc-)150 887 y(tions)33 b(Metho)-5 b(d")38 b Fs(Comm)m(unications)29 -b(of)i(the)f(A)m(CM,)h(23,)h(12\(Decem)m(b)s(er)g(1980\),)h(729.)275 -1021 y([3])f(Cic)m(helli,)e(Ric)m(hard)g(J.)i Fl(Minimal)i(Perfe)-5 -b(ct)33 b(Hash)i(F)-7 b(unctions)34 b(Made)g(Simple)39 -b Fs(Comm)m(unications)150 1131 y(of)31 b(the)f(A)m(CM,)h(23,)h(1\(Jan) -m(uary)f(1980\),)h(17-19.)275 1265 y([4])22 b(Co)s(ok,)h(C.)e(R.)g(and) -f(Oldeho)s(eft,)i(R.R.)g Fl(A)h(L)-5 b(etter)25 b(Oriente)-5 -b(d)25 b(Minimal)f(Perfe)-5 b(ct)24 b(Hashing)g(F)-7 -b(unction)150 1375 y Fs(SIGPLAN)30 b(Notices,)h(17,)h(9\(Septem)m(b)s -(er)f(1982\),)h(18-27.)275 1509 y([5])22 b(Cormac)m(k,)j(G.)d(V.)g(and) -g(Horsp)s(o)s(ol,)g(R.)g(N.)g(S.)g(and)f(Kaiserw)m(erth,)i(M.)g -Fl(Pr)-5 b(actic)g(al)26 b(Perfe)-5 b(ct)25 b(Hashing)150 -1619 y Fs(Computer)30 b(Journal,)f(28,)i(1\(Jan)m(uary)g(1985\),)i -(54-58.)275 1753 y([6])28 b(Jaesc)m(hk)m(e,)j(G.)d Fl(R)-5 -b(e)g(cipr)g(o)g(c)g(al)34 b(Hashing:)41 b(A)30 b(Metho)-5 -b(d)31 b(for)g(Gener)-5 b(ating)32 b(Minimal)e(Perfe)-5 -b(ct)31 b(Hashing)150 1863 y(F)-7 b(unctions)39 b Fs(Comm)m(unications) -29 b(of)h(the)h(A)m(CM,)g(24,)g(12\(Decem)m(b)s(er)i(1981\),)g -(829-833.)275 1998 y([7])22 b(Jaesc)m(hk)m(e,)i(G.)e(and)f(Osterburg,)h -(G.)g Fl(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 -b(ct)24 b(Hash)h(F)-7 b(unctions)25 b(Metho)-5 b(d)150 -2107 y Fs(Comm)m(unications)29 b(of)h(the)h(A)m(CM,)g(23,)h(12\(Decem)m -(b)s(er)g(1980\),)h(728-729.)275 2242 y([8])25 b(Sager,)h(Thomas)e(J.)h +TeXDict begin 28 29 bop 150 -116 a Fs(Chapter)30 b(7:)41 +b(Bibliograph)m(y)2536 b(28)150 299 y Fp(7)80 b(Bibliograph)l(y)275 +533 y Fs([1])22 b(Chang,)h(C.C.:)36 b Fl(A)24 b(Scheme)h(for)g +(Constructing)h(Or)-5 b(der)g(e)g(d)26 b(Minimal)f(Perfe)-5 +b(ct)24 b(Hashing)h(F)-7 b(unctions)150 643 y Fs(Information)30 +b(Sciences)h(39\(1986\),)j(187-195.)275 777 y([2])26 +b(Cic)m(helli,)i(Ric)m(hard)e(J.)f Fl(A)n(uthor's)k(R)-5 +b(esp)g(onse)30 b(to)f(\\On)f(Cichel)5 b(li's)28 b(Minimal)h(Perfe)-5 +b(ct)28 b(Hash)g(F)-7 b(unc-)150 887 y(tions)33 b(Metho)-5 +b(d")38 b Fs(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)h(23,)h +(12\(Decem)m(b)s(er)g(1980\),)h(729.)275 1021 y([3])f(Cic)m(helli,)i +(Ric)m(hard)d(J.)h Fl(Minimal)i(Perfe)-5 b(ct)33 b(Hash)i(F)-7 +b(unctions)34 b(Made)g(Simple)39 b Fs(Comm)m(unications)150 +1131 y(of)31 b(the)f(A)m(CM,)h(23,)h(1\(Jan)m(uary)f(1980\),)h(17-19.) +275 1265 y([4])22 b(Co)s(ok,)h(C.)e(R.)g(and)f(Oldeho)s(eft,)j(R.R.)f +Fl(A)h(L)-5 b(etter)25 b(Oriente)-5 b(d)25 b(Minimal)f(Perfe)-5 +b(ct)24 b(Hashing)g(F)-7 b(unction)150 1375 y Fs(SIGPLAN)30 +b(Notices,)i(17,)g(9\(Septem)m(b)s(er)f(1982\),)h(18-27.)275 +1509 y([5])22 b(Cormac)m(k,)j(G.)d(V.)g(and)g(Horsp)s(o)s(ol,)h(R.)f +(N.)g(S.)g(and)f(Kaiserw)m(erth,)j(M.)f Fl(Pr)-5 b(actic)g(al)26 +b(Perfe)-5 b(ct)25 b(Hashing)150 1619 y Fs(Computer)30 +b(Journal,)g(28,)h(1\(Jan)m(uary)g(1985\),)i(54-58.)275 +1753 y([6])28 b(Jaesc)m(hk)m(e,)j(G.)d Fl(R)-5 b(e)g(cipr)g(o)g(c)g(al) +34 b(Hashing:)41 b(A)30 b(Metho)-5 b(d)31 b(for)g(Gener)-5 +b(ating)32 b(Minimal)e(Perfe)-5 b(ct)31 b(Hashing)150 +1863 y(F)-7 b(unctions)39 b Fs(Comm)m(unications)31 b(of)f(the)h(A)m +(CM,)g(24,)g(12\(Decem)m(b)s(er)i(1981\),)g(829-833.)275 +1998 y([7])22 b(Jaesc)m(hk)m(e,)i(G.)e(and)f(Osterburg,)h(G.)g +Fl(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 b(ct)24 +b(Hash)h(F)-7 b(unctions)25 b(Metho)-5 b(d)150 2107 y +Fs(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(23,)h(12\(Decem)m(b)s +(er)g(1980\),)h(728-729.)275 2242 y([8])25 b(Sager,)h(Thomas)e(J.)h Fl(A)h(Polynomial)j(Time)f(Gener)-5 b(ator)29 b(for)f(Minimal)f(Perfe) --5 b(ct)27 b(Hash)h(F)-7 b(unctions)150 2351 y Fs(Comm)m(unications)29 -b(of)h(the)h(A)m(CM,)g(28,)h(5\(Decem)m(b)s(er)g(1985\),)g(523-532)275 -2486 y([9])f(Sc)m(hmidt,)e(Douglas)h(C.)g Fl(GPERF:)i(A)g(Perfe)-5 +-5 b(ct)27 b(Hash)h(F)-7 b(unctions)150 2351 y Fs(Comm)m(unications)31 +b(of)f(the)h(A)m(CM,)g(28,)h(5\(Decem)m(b)s(er)g(1985\),)g(523-532)275 +2486 y([9])f(Sc)m(hmidt,)f(Douglas)h(C.)f Fl(GPERF:)i(A)g(Perfe)-5 b(ct)32 b(Hash)h(F)-7 b(unction)33 b(Gener)-5 b(ator)42 b Fs(Second)30 b(USENIX)150 2595 y(C)p Fn(++)f Fs(Conference)i(Pro)s -(ceedings,)f(April)e(1990.)275 2730 y([10])42 b(Sc)m(hmidt,)h(Douglas)e -(C.)g Fl(GPERF:)i(A)e(Perfe)-5 b(ct)43 b(Hash)g(F)-7 +(ceedings,)g(April)f(1990.)275 2730 y([10])42 b(Sc)m(hmidt,)i(Douglas)e +(C.)f Fl(GPERF:)i(A)e(Perfe)-5 b(ct)43 b(Hash)g(F)-7 b(unction)43 b(Gener)-5 b(ator)53 b Fs(C)p Fn(++)40 b Fs(Rep)s(ort,)150 2839 y(SIGS)29 b(10)j(10)f(\(No)m(v)m(em)m(b)s (er/Decem)m(b)s(er)i(1998\).)275 2974 y([11])24 b(Seb)s(esta,)h(R.W.)e -(and)g(T)-8 b(a)m(ylor,)25 b(M.A.)f Fl(Minimal)i(Perfe)-5 +(and)g(T)-8 b(a)m(ylor,)26 b(M.A.)e Fl(Minimal)i(Perfe)-5 b(ct)26 b(Hash)g(F)-7 b(unctions)27 b(for)g(R)-5 b(eserve)g(d)27 -b(Wor)-5 b(d)150 3083 y(Lists)38 b Fs(SIGPLAN)30 b(Notices,)i(20,)f +b(Wor)-5 b(d)150 3083 y(Lists)38 b Fs(SIGPLAN)30 b(Notices,)j(20,)e (12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 3218 y([12])43 -b(Sprugnoli,)f(R.)g Fl(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 +b(Sprugnoli,)h(R.)e Fl(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 b(unctions:)64 b(A)43 b(Single)g(Pr)-5 b(ob)g(e)44 b(R)-5 b(etrieving)44 b(Metho)-5 b(d)44 b(for)150 3328 y(Static)33 -b(Sets)38 b Fs(Comm)m(unications)29 b(of)i(the)f(A)m(CM,)i(20)f(11\(No) +b(Sets)38 b Fs(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)i(20)f(11\(No) m(v)m(em)m(b)s(er)i(1977\),)f(841-850.)275 3462 y([13])27 -b(Stallman,)f(Ric)m(hard)f(M.)i Fl(Using)h(and)i(Porting)f(GNU)g(CC)39 -b Fs(F)-8 b(ree)28 b(Soft)m(w)m(are)f(F)-8 b(oundation,)27 -b(1988.)275 3597 y([14])k(Stroustrup,)e(Bjarne)i Fl(The)h(C)p +b(Stallman,)h(Ric)m(hard)e(M.)h Fl(Using)h(and)i(Porting)f(GNU)g(CC)39 +b Fs(F)-8 b(ree)28 b(Soft)m(w)m(are)f(F)-8 b(oundation,)28 +b(1988.)275 3597 y([14])j(Stroustrup,)e(Bjarne)i Fl(The)h(C)p Fn(++)g Fl(Pr)-5 b(o)g(gr)g(amming)36 b(L)-5 b(anguage.)40 -b Fs(Addison-W)-8 b(esley)g(,)31 b(1986.)275 3731 y([15])g(Tiemann,)e -(Mic)m(hael)i(D.)g Fl(User's)h(Guide)h(to)g(GNU)f(C)p -Fn(++)e Fs(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)30 -b(1989.)p eop +b Fs(Addison-W)-8 b(esley)g(,)33 b(1986.)275 3731 y([15])e(Tiemann,)f +(Mic)m(hael)j(D.)e Fl(User's)h(Guide)h(to)g(GNU)f(C)p +Fn(++)e Fs(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 +b(1989.)p eop end %%Page: 29 31 -29 30 bop 150 -116 a Fs(Concept)31 b(Index)2927 b(29)150 -299 y Fp(Concept)52 b(Index)150 642 y Fr(\045)150 777 -y Fd(`)p Fc(\045\045)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 +TeXDict begin 29 30 bop 150 -116 a Fs(Concept)31 b(Index)2927 +b(29)150 299 y Fp(Concept)52 b(Index)150 642 y Fr(\045)150 +777 y Fd(`)p Fc(\045\045)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fd(12)150 874 y(`)p Fc(\045{)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 @@ -3798,7 +5229,7 @@ f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fd(15)150 1069 y(`)p Fc(\0457bit)p Fd(')8 b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)33 b Fd(13)150 1167 y(`)p Fc(\045compare-lengths)p +g(.)h(.)33 b Fd(14)150 1167 y(`)p Fc(\045compare-lengths)p Fd(')10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 1264 y(`)p Fc(\045compare-strncmp)p Fd(')10 @@ -3806,7 +5237,7 @@ b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 1361 y(`)p Fc(\045define)28 b(class-name)p Fd(')14 b Fb(.)g(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(13)150 1459 y(`)p +(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(14)150 1459 y(`)p Fc(\045define)28 b(hash-function-name)p Fd(')c Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fd(13)150 1556 y(`)p Fc(\045define)28 b(initializer-suffix)p @@ -3818,12 +5249,12 @@ Fd(')15 b Fb(.)g(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fd(13)150 1849 y(`)p Fc(\045define)28 b(string-pool-name)p Fd(')f Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)49 b Fd(14)150 1946 y(`)p Fc(\045define)28 b(word-array-name)p +(.)49 b Fd(15)150 1946 y(`)p Fc(\045define)28 b(word-array-name)p Fd(')7 b Fb(.)15 b(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)32 b Fd(15)150 2044 y(`)p Fc(\045delimiters)p Fd(')17 b Fb(.)f(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 -b Fd(12)150 2141 y(`)p Fc(\045enum)p Fd(')8 b Fb(.)14 +b Fd(13)150 2141 y(`)p Fc(\045enum)p Fd(')8 b Fb(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)33 b Fd(14)150 2239 y(`)p Fc(\045global-table)p @@ -3852,28 +5283,28 @@ b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 3019 y(`)p Fc(\045struct-type)p Fd(')16 b Fb(.)g(.)c(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)41 b Fd(12)150 3116 y(`)p Fc(\045switch)p +(.)g(.)h(.)f(.)g(.)h(.)41 b Fd(13)150 3116 y(`)p Fc(\045switch)p Fd(')25 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)49 b Fd(15)150 3394 y Fr(A)150 3528 y Fd(Arra)n(y)25 -b(name)18 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f +b(name)19 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) h(.)f(.)44 b Fd(22)150 3819 y Fr(B)150 3953 y Fd(Bugs)9 b Fb(.)k(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)35 b Fd(8)150 4243 y Fr(C)150 -4378 y Fd(Class)27 b(name)10 b Fb(.)i(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f +4378 y Fd(Class)27 b(name)10 b Fb(.)j(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(21)2025 642 y Fr(D)2025 764 y Fd(Declaration)27 b(section)d Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)49 b Fd(11)2025 855 y(Delimiters)9 b Fb(.)j(.)h(.)f(.)g(.)h(.)f(.)g +f(.)49 b Fd(11)2025 855 y(Delimiters)9 b Fb(.)k(.)g(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(19)2025 946 y(Duplicates)23 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)49 b Fd(23)2025 1203 y Fr(F)2025 -1325 y Fd(F)-6 b(ormat)22 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g +1325 y Fd(F)-6 b(ormat)23 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fd(11)2025 1416 y(F)-6 b(unctions)25 b(section)18 b Fb(.)13 b(.)f(.)h(.)f(.)g(.)h @@ -3890,19 +5321,19 @@ f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)46 b Fd(17)2025 2330 y(Initializers)25 b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -49 b Fd(20)2025 2573 y Fr(J)2025 2695 y Fd(Jump)24 b(v)l(alue)6 +49 b Fd(20)2025 2573 y Fr(J)2025 2695 y Fd(Jump)25 b(v)l(alue)6 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) 32 b Fd(24)2025 2952 y Fr(K)2025 3073 y Fd(Keyw)n(ords)25 b(section)16 b Fb(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 -b Fd(11)2025 3330 y Fr(M)2025 3452 y Fd(Minimal)26 b(p)r(erfect)g(hash) +b Fd(11)2025 3330 y Fr(M)2025 3452 y Fd(Minimal)27 b(p)r(erfect)f(hash) g(functions)c Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)48 b Fd(10)2025 3708 y Fr(N)2025 3830 y Fd(NUL)9 b Fb(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)h(.)f(.)35 b Fd(18)2025 4074 y Fr(S)2025 -4195 y Fd(Slot)26 b(name)13 b Fb(.)e(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +4195 y Fd(Slot)26 b(name)13 b Fb(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fd(20)2025 4287 y(Static)26 b(searc)n(h)g(structure)20 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h @@ -3910,12 +5341,12 @@ b(searc)n(h)g(structure)20 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h b Fd(10)2025 4378 y Fc(switch)22 b Fb(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fd(18,)27 b(22)p -eop +eop end %%Page: -1 32 --1 31 bop 3725 -116 a Fs(i)150 299 y Fp(T)-13 b(able)54 -b(of)g(Con)l(ten)l(ts)150 641 y Fr(GNU)45 b(GENERAL)g(PUBLIC)g(LICENSE) -31 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 b -Fr(1)449 778 y Fs(Pream)m(ble)16 b Fl(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g +TeXDict begin -1 31 bop 3725 -116 a Fs(i)150 299 y Fp(T)-13 +b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fr(GNU)45 b(GENERAL)g(PUBLIC) +g(LICENSE)31 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 +b Fr(1)449 778 y Fs(Pream)m(ble)16 b Fl(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fs(1)449 888 @@ -3923,7 +5354,7 @@ y(TERMS)29 b(AND)j(CONDITIONS)d(F)m(OR)h(COPYING,)h(DISTRIBUTION)631 997 y(AND)g(MODIFICA)-8 b(TION)24 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fs(2)449 1107 -y(Ho)m(w)31 b(to)g(Apply)e(These)h(T)-8 b(erms)30 b(to)h(Y)-8 +y(Ho)m(w)31 b(to)g(Apply)f(These)g(T)-8 b(erms)30 b(to)h(Y)-8 b(our)31 b(New)f(Programs)16 b Fl(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)46 b Fs(6)150 1349 y Fr(Con)l(tributors)g(to)f(GNU)g Fk(gperf)e Fr(Utilit)l(y)16 b Fa(.)21 b(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h @@ -3938,24 +5369,24 @@ Fk(gperf)21 b Fa(.)c(.)i(.)h(.)f(.)h(.)65 b Fr(11)449 Fn(gperf)23 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)54 b Fs(11)748 2405 y(3.1.1)93 b(Declarations)9 -b Fl(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +b Fl(.)17 b(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)39 b Fs(11)1047 2515 y(3.1.1.1)93 b(User-supplied)28 +g(.)39 b Fs(11)1047 2515 y(3.1.1.1)93 b(User-supplied)30 b Fn(struct)10 b Fl(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)39 b Fs(12)1047 2624 y(3.1.1.2)93 -b(Gp)s(erf)30 b(Declarations)18 b Fl(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +b(Gp)s(erf)30 b(Declarations)18 b Fl(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fs(12)1047 -2734 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)d Fl(.)15 +2734 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)f Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)59 b Fs(15)748 2844 y(3.1.2)93 b(F)-8 b(ormat)31 -b(for)f(Keyw)m(ord)g(En)m(tries)17 b Fl(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fs(15)748 -2953 y(3.1.3)93 b(Including)27 b(Additional)h(C)i(F)-8 -b(unctions)19 b Fl(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)49 b Fs(16)748 3063 y(3.1.4)93 b(Where)30 b(to)h(place)g -(directiv)m(es)e(for)i(GNU)g Fn(indent)p Fs(.)17 b Fl(.)c(.)i(.)g(.)g +b(for)f(Keyw)m(ord)g(En)m(tries)17 b Fl(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fs(16)748 +2953 y(3.1.3)93 b(Including)29 b(Additional)i(C)f(F)-8 +b(unctions)19 b Fl(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)49 b Fs(16)748 3063 y(3.1.4)93 b(Where)30 b(to)h(place)h +(directiv)m(es)f(for)g(GNU)g Fn(indent)p Fs(.)17 b Fl(.)c(.)i(.)g(.)g (.)g(.)46 b Fs(16)449 3172 y(3.2)92 b(Output)29 b(F)-8 -b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)f Fn(gperf)23 +b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)g Fn(gperf)23 b Fl(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)52 b Fs(17)449 3282 y(3.3)92 b(Use)31 b(of)f(NUL)h(b)m(ytes)22 b Fl(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g @@ -3963,19 +5394,19 @@ b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g f(.)g(.)51 b Fs(18)150 3524 y Fr(4)135 b(In)l(v)l(oking)45 b Fk(gperf)16 b Fa(.)i(.)h(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)61 -b Fr(19)449 3661 y Fs(4.1)92 b(Sp)s(ecifying)28 b(the)i(Lo)s(cation)h -(of)f(the)h(Output)e(File)19 b Fl(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)49 b Fs(19)449 3771 y(4.2)92 b(Options)29 -b(that)i(a\013ect)h(In)m(terpretation)e(of)h(the)f(Input)f(File)e +b Fr(19)449 3661 y Fs(4.1)92 b(Sp)s(ecifying)30 b(the)g(Lo)s(cation)i +(of)e(the)h(Output)e(File)19 b Fl(.)e(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)49 b Fs(19)449 3771 y(4.2)92 b(Options)30 +b(that)h(a\013ect)h(In)m(terpretation)f(of)g(the)f(Input)f(File)g Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fs(19)449 3880 y(4.3)92 -b(Options)29 b(to)i(sp)s(ecify)e(the)i(Language)g(for)f(the)h(Output)e +b(Options)30 b(to)h(sp)s(ecify)f(the)h(Language)g(for)f(the)h(Output)e (Co)s(de)14 b Fl(.)g(.)h(.)g(.)g(.)43 b Fs(19)449 3990 -y(4.4)92 b(Options)29 b(for)h(\014ne)g(tuning)f(Details)h(in)f(the)i +y(4.4)92 b(Options)30 b(for)g(\014ne)g(tuning)g(Details)i(in)e(the)h (Output)e(Co)s(de)23 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)53 -b Fs(20)449 4100 y(4.5)92 b(Options)29 b(for)h(c)m(hanging)g(the)h -(Algorithms)e(emplo)m(y)m(ed)h(b)m(y)h Fn(gperf)21 b -Fl(.)14 b(.)50 b Fs(23)449 4209 y(4.6)92 b(Informativ)m(e)30 -b(Output)d Fl(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +b Fs(20)449 4100 y(4.5)92 b(Options)30 b(for)g(c)m(hanging)h(the)g +(Algorithms)g(emplo)m(y)m(ed)g(b)m(y)g Fn(gperf)21 b +Fl(.)14 b(.)50 b Fs(23)449 4209 y(4.6)92 b(Informativ)m(e)31 +b(Output)c Fl(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)58 b Fs(25)150 4452 y Fr(5)135 b(Kno)l(wn)45 b(Bugs)f(and)h(Limitations)i(with)e Fk(gperf)32 b Fa(.)19 @@ -3986,8 +5417,8 @@ b Fa(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)82 b Fr(28)150 5261 y(Concept)45 b(Index)21 b Fa(.)e(.)g(.)h(.)f(.)h(.)f (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)h(.)65 b Fr(29)p eop +f(.)g(.)h(.)f(.)h(.)f(.)h(.)65 b Fr(29)p eop end %%Trailer -end + userdict /end-hook known{end-hook}if %%EOF diff --git a/doc/gperf_1.html b/doc/gperf_1.html index d5269ce..c937fc8 100644 --- a/doc/gperf_1.html +++ b/doc/gperf_1.html @@ -1,7 +1,6 @@ - + Perfect Hash Function Generator - GNU GENERAL PUBLIC LICENSE @@ -15,7 +14,7 @@ Go to the first, previous, next, How to Apply These Terms to Your New Programs @@ -375,14 +374,14 @@ END OF TERMS AND CONDITIONS possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. -

              +

              To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively 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 program's name and an idea of what it does.
              @@ -406,12 +405,12 @@ 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. -

              +

              If the program is interactive, make it output a short notice like this when it starts in an interactive mode: -

              +
               Gnomovision version 69, Copyright (C) year  name of author
              @@ -428,13 +427,13 @@ commands you use may be called something other than `show w' and
               `show c'; they could even be mouse-clicks or menu items--whatever
               suits your program.
               
              -

              +

              You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: -

              +
               Yoyodyne, Inc., hereby disclaims all copyright
              @@ -453,7 +452,7 @@ consider it more useful to permit linking proprietary applications with the
               library.  If this is what you want to do, use the GNU Library General
               Public License instead of this License.
               
              -

              +


              Go to the first, previous, next, last section, table of contents. diff --git a/doc/gperf_10.html b/doc/gperf_10.html index 0590625..39a2630 100644 --- a/doc/gperf_10.html +++ b/doc/gperf_10.html @@ -1,7 +1,6 @@ - + Perfect Hash Function Generator - Concept Index @@ -13,7 +12,34 @@ Go to the first, previous,

              Concept Index

              -

              %

              +Jump to: +% +- +a +- +b +- +c +- +d +- +f +- +h +- +i +- +j +- +k +- +m +- +n +- +s +

              +

              %

            • `%%'
            • `%7bit' @@ -41,63 +67,63 @@ Go to the first, previous,
            • `%{'
            • `%}'
            • -

              a

              +

              a

            • Array name
            • -

              b

              +

              b

            • Bugs
            • -

              c

              +

              c

            • Class name
            • -

              d

              +

              d

            • Declaration section
            • Delimiters
            • Duplicates
            • -

              f

              +

              f

            • Format
            • Functions section
            • -

              h

              +

              h

            • hash
            • hash table
            • -

              i

              +

              i

            • in_word_set
            • Initializers
            • -

              j

              +

              j

            • Jump value
            • -

              k

              +

              k

            • Keywords section
            • -

              m

              +

              m

            • Minimal perfect hash functions
            • -

              n

              +

              n

            • NUL
            • -

              s

              +

              s

            • Slot name
            • Static search structure
            • switch, switch
            • -

              +


              Go to the first, previous, next, last section, table of contents. diff --git a/doc/gperf_2.html b/doc/gperf_2.html index 3611e41..d416b38 100644 --- a/doc/gperf_2.html +++ b/doc/gperf_2.html @@ -1,7 +1,6 @@ - + Perfect Hash Function Generator - Contributors to GNU gperf Utility diff --git a/doc/gperf_3.html b/doc/gperf_3.html index dda84ab..75c03ad 100644 --- a/doc/gperf_3.html +++ b/doc/gperf_3.html @@ -1,16 +1,15 @@ - + -Perfect Hash Function Generator - 1 Introduction +Perfect Hash Function Generator - 1. Introduction Go to the first, previous, next, last section, table of contents.


              -

              1 Introduction

              +

              1. Introduction

              gperf is a perfect hash function generator written in C++. It @@ -23,7 +22,7 @@ pair of C functions. These functions determine whether a given character string s occurs in W, using at most one probe into the lookup table. -

              +

              gperf currently generates the reserved keyword recognizer for lexical analyzers in several production and research compilers and @@ -34,7 +33,7 @@ A paper describing gperf's design and implementation in greater detail is available in the Second USENIX C++ Conference proceedings or from http://www.cs.wustl.edu/~schmidt/resume.html. -

              +


              Go to the first, previous, next, last section, table of contents. diff --git a/doc/gperf_4.html b/doc/gperf_4.html index cdd063d..2c7bf70 100644 --- a/doc/gperf_4.html +++ b/doc/gperf_4.html @@ -1,22 +1,21 @@ - + -Perfect Hash Function Generator - 2 Static search structures and GNU gperf +Perfect Hash Function Generator - 2. Static search structures and GNU gperf Go to the first, previous, next, last section, table of contents.


              -

              2 Static search structures and GNU gperf

              +

              2. Static search structures and GNU gperf

              -

              +

              -A static search structure is an Abstract Data Type with certain +A static search structure is an Abstract Data Type with certain fundamental operations, e.g., initialize, insert, and retrieve. Conceptually, all insertions occur before any retrievals. In practice, gperf generates a static array @@ -26,11 +25,11 @@ insertions. It is a useful data structure for representing static search sets. Static search sets occur frequently in software system applications. Typical static search sets include compiler reserved words, assembler instruction opcodes, and built-in shell interpreter -commands. Search set members, called keywords, are inserted into +commands. Search set members, called keywords, are inserted into the structure only once, usually during program initialization, and are not generally modified at run-time. -

              +

              Numerous static search structure implementations exist, e.g., arrays, linked lists, binary search trees, digital search tries, and @@ -42,14 +41,14 @@ proportional to log n. Conversely, hash table implementations often locate a table entry in constant time, but typically impose additional memory overhead and exhibit poor worst case performance. -

              +

              Minimal perfect hash functions provide an optimal solution for a particular class of static search sets. A minimal perfect hash function is defined by two properties: -

              +
              • @@ -75,7 +74,7 @@ behavior generates near-minimal perfect hash functions for keyword sets. However, gperf provides many options that permit user control over the degree of minimality and perfection. -

                +

                Static search sets often exhibit relative stability over time. For example, Ada's 63 reserved words have remained constant for nearly a @@ -91,7 +90,7 @@ not yet part of the official GNU distribution. Each compiler utilizes gperf to automatically generate static search structures that efficiently identify their respective reserved keywords. -

                +


                Go to the first, previous, next, last section, table of contents. diff --git a/doc/gperf_5.html b/doc/gperf_5.html index af6dbe9..8b6fd53 100644 --- a/doc/gperf_5.html +++ b/doc/gperf_5.html @@ -1,29 +1,28 @@ - + -Perfect Hash Function Generator - 3 High-Level Description of GNU gperf +Perfect Hash Function Generator - 3. High-Level Description of GNU gperf Go to the first, previous, next, last section, table of contents.


                -

                3 High-Level Description of GNU gperf

                +

                3. High-Level Description of GNU gperf

                The perfect hash function generator gperf reads a set of "keywords" from an input file (or from the standard input by default). It attempts to derive a perfect hashing function that -recognizes a member of the static keyword set with at most a +recognizes a member of the static keyword set with at most a single probe into the lookup table. If gperf succeeds in generating such a function it produces a pair of C source code routines that perform hashing and table lookup recognition. All generated C code is directed to the standard output. Command-line options described below allow you to modify the input and output format to gperf. -

                +

                By default, gperf attempts to produce time-efficient code, with less emphasis on efficient space utilization. However, several options @@ -35,7 +34,7 @@ statement scheme that minimizes data space storage size. Furthermore, using a C switch may actually speed up the keyword retrieval time somewhat. Actual results depend on your C compiler, of course. -

                +

                In general, gperf assigns values to the bytes it is using for hashing until some set of values gives each keyword a unique value. @@ -43,10 +42,10 @@ A helpful heuristic is that the larger the hash value range, the easier it is for gperf to find and generate a perfect hash function. Experimentation is the key to getting the most from gperf. -

                -

                3.1 Input Format to gperf

                + +

                3.1 Input Format to gperf

                @@ -58,7 +57,7 @@ is similar to GNU utilities flex and bison (or UNIX utilities lex and yacc). Here's an outline of the general format: -

                +
                 declarations
                @@ -73,14 +72,13 @@ functions
                 the functions section are optional.  The following sections describe the
                 input format for each section.
                 
                -

                It is possible to omit the declaration section entirely, if the `-t' option is not given. In this case the input file begins directly with the first keyword line, e.g.: -

                +
                 january
                @@ -92,7 +90,7 @@ april
                 
                 
                 
                -

                3.1.1 Declarations

                +

                3.1.1 Declarations

                The keyword input file optionally contains a section for including @@ -100,11 +98,10 @@ arbitrary C declarations and definitions, gperf declarations that act like command-line options, as well as for providing a user-supplied struct. -

                -

                3.1.1.1 User-supplied struct

                +

                3.1.1.1 User-supplied struct

                If the `-t' option (or, equivalently, the `%struct-type' declaration) @@ -117,15 +114,15 @@ This first field must be called `name', although it is possible to its name with the `-K' option (or, equivalently, the `%define slot-name' declaration) described below. -

                +

                Here is a simple example, using months of the year and their attributes as input: -

                +
                -struct months { char *name; int number; int days; int leap_days; };
                +struct month { char *name; int number; int days; int leap_days; };
                 %%
                 january,   1, 31, 31
                 february,  2, 28, 29
                @@ -148,10 +145,23 @@ other fields are a pair of consecutive percent signs, `%%',
                 appearing left justified in the first column, as in the UNIX utility
                 lex.
                 
                -

                + +

                +If the struct has already been declared in an include file, it can +be mentioned in an abbreviated form, like this: + -

                3.1.1.2 Gperf Declarations

                +
                +struct month;
                +%%
                +january,   1, 31, 31
                +...
                +
                + + + +

                3.1.1.2 Gperf Declarations

                The declaration section can contain gperf declarations. They @@ -159,7 +169,7 @@ influence the way gperf works, like command line options do. In fact, every such declaration is equivalent to a command line option. There are three forms of declarations: -

                +
                1. @@ -180,11 +190,11 @@ Declarations of names of entities in the output file, like When a declaration is given both in the input file and as a command line option, the command-line option's value prevails. -

                  +

                  The following gperf declarations are available. -

                  +
                  `%delimiters=delimiter-list' @@ -295,7 +305,7 @@ test like `c >= 'A' && c <= 'Z'' guarantees this.)
                  Compare keyword lengths before trying a string comparison. This option -is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might +is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. However, using `%compare-lengths' might greatly increase the size of the @@ -398,7 +408,7 @@ this option if the type is already defined elsewhere. -

                  3.1.1.3 C Code Inclusion

                  +

                  3.1.1.3 C Code Inclusion

                  @@ -410,15 +420,15 @@ inside left-justified surrounding `%{', `%}' pairs. H an input fragment based on the previous example that illustrates this feature: -

                  +
                   %{
                   #include <assert.h>
                   /* This section of code is inserted directly into the output. */
                  -int return_month_days (struct months *months, int is_leap_year);
                  +int return_month_days (struct month *months, int is_leap_year);
                   %}
                  -struct months { char *name; int number; int days; int leap_days; };
                  +struct month { char *name; int number; int days; int leap_days; };
                   %%
                   january,   1, 31, 31
                   february,  2, 28, 29
                  @@ -428,7 +438,7 @@ march,     3, 31, 31
                   
                   
                   
                  -

                  3.1.2 Format for Keyword Entries

                  +

                  3.1.2 Format for Keyword Entries

                  The second input file format section contains lines of keywords and any @@ -438,7 +448,7 @@ in the first column is considered a comment. Everything following the beginning with `%' in the first column is an option declaration and must not occur within the keywords section. -

                  +

                  The first field of each non-comment line is always the keyword itself. It can be given in two ways: as a simple name, i.e., without surrounding @@ -450,7 +460,7 @@ In this context, a "field" is considered to extend up to, but not include, the first blank, comma, or newline. Here is a simple example taken from a partial list of C reserved words: -

                  +
                   # These are a few C reserved words, see the c.gperf file 
                  @@ -470,7 +480,7 @@ return
                   Note that unlike flex or bison the first `%%' marker
                   may be elided if the declaration section is empty.
                   
                  -

                  +

                  Additional fields may optionally follow the leading keyword. Fields should be separated by commas, and terminate at the end of line. What @@ -481,10 +491,10 @@ declaration section. If the `-t' option (or, equivalently, the these fields are simply ignored. All previous examples except the last one contain keyword attributes. -

                  -

                  3.1.3 Including Additional C Functions

                  + +

                  3.1.3 Including Additional C Functions

                  The optional third section also corresponds closely with conventions @@ -494,10 +504,10 @@ file, is included verbatim into the generated output file. Naturally, it is your responsibility to ensure that the code contained in this section is valid C. -

                  -

                  3.1.4 Where to place directives for GNU indent.

                  + +

                  3.1.4 Where to place directives for GNU indent.

                  If you want to invoke GNU indent on a gperf input file, @@ -507,7 +517,7 @@ interpretation of the input file. Therefore you have to insert some directives for GNU indent. More precisely, assuming the most general input file structure -

                  +
                   declarations part 1
                  @@ -525,7 +535,7 @@ functions
                   you would insert `*INDENT-OFF*' and `*INDENT-ON*' comments
                   as follows:
                   
                  -

                  +
                   /* *INDENT-OFF* */
                  @@ -545,11 +555,11 @@ functions
                   
                   
                   
                  -

                  3.2 Output Format for Generated C Code with gperf

                  +

                  3.2 Output Format for Generated C Code with gperf

                  -

                  +

                  Several options control how the generated C code appears on the standard output. Two C function are generated. They are called hash and @@ -558,22 +568,22 @@ option. Both functions require two arguments, a string, char * str, and a length parameter, int len. Their default function prototypes are as follows: -

                  +

                  Function: unsigned int hash (const char * str, unsigned int len)
                  By default, the generated hash function returns an integer value created by adding len to several user-specified str byte -positions indexed into an associated values table stored in a +positions indexed into an associated values table stored in a local static array. The associated values table is constructed internally by gperf and later output as a static local C array called `hash_table'. The relevant selected positions (i.e. indices into str) are specified via the `-k' option when running -gperf, as detailed in the Options section below (see section 4 Invoking gperf). +gperf, as detailed in the Options section below (see section 4. Invoking gperf).
                  -

                  +

                  Function: in_word_set (const char * str, unsigned int len) @@ -585,7 +595,7 @@ a pointer to the matching keyword's structure. Otherwise it returns NULL.
                  -

                  +

                  If the option `-c' (or, equivalently, the `%compare-strncmp' declaration) is not used, str must be a NUL terminated @@ -594,12 +604,12 @@ string of exactly length len. If `-c' (or, equivalently simply be an array of len bytes and does not need to be NUL terminated. -

                  +

                  The code generated for these two functions is affected by the following options: -

                  +
                  `-t' @@ -630,14 +640,14 @@ with the various input and output options, and timing the resulting C code, you can determine the best option choices for different keyword set characteristics. -

                  -

                  3.3 Use of NUL bytes

                  + +

                  3.3 Use of NUL bytes

                  -

                  +

                  By default, the code generated by gperf operates on zero terminated strings, the usual representation of strings in C. This means @@ -645,7 +655,7 @@ that the keywords in the input file must not contain NUL bytes, and the str argument passed to hash or in_word_set must be NUL terminated and have exactly length len. -

                  +

                  If option `-c' (or, equivalently, the `%compare-strncmp' declaration) is used, then the str argument does not need @@ -654,7 +664,7 @@ access the first len, not len+1, bytes starting at st However, the keywords in the input file still must not contain NUL bytes. -

                  +

                  If option `-l' (or, equivalently, the `%compare-lengths' declaration) is used, then the hash table performs binary @@ -664,7 +674,7 @@ generated by gperf will treat NUL like any other byte. Also, in this case the `-c' option (or, equivalently, the `%compare-strncmp' declaration) is ignored. -

                  +


                  Go to the first, previous, next, last section, table of contents. diff --git a/doc/gperf_6.html b/doc/gperf_6.html index 599910d..05b48cd 100644 --- a/doc/gperf_6.html +++ b/doc/gperf_6.html @@ -1,16 +1,15 @@ - + -Perfect Hash Function Generator - 4 Invoking gperf +Perfect Hash Function Generator - 4. Invoking gperf Go to the first, previous, next, last section, table of contents.


                  -

                  4 Invoking gperf

                  +

                  4. Invoking gperf

                  There are many options to gperf. They were added to make @@ -18,11 +17,10 @@ the program more convenient for use with real applications. "On-line" help is readily available via the `--help' option. Here is the complete list of options. -

                  -

                  4.1 Specifying the Location of the Output File

                  +

                  4.1 Specifying the Location of the Output File

                  @@ -35,16 +33,16 @@ Allows you to specify the name of the file to which the output is written to. The results are written to standard output if no output file is specified or if it is `-'. -

                  -

                  4.2 Options that affect Interpretation of the Input File

                  + +

                  4.2 Options that affect Interpretation of the Input File

                  These options are also available as declarations in the input file -(see section 3.1.1.2 Gperf Declarations). +(see section 3.1.1.2 Gperf Declarations). + -

                  `-e keyword-delimiter-list' @@ -84,13 +82,13 @@ the gperf generated function. -

                  4.3 Options to specify the Language for the Output Code

                  +

                  4.3 Options to specify the Language for the Output Code

                  These options are also available as declarations in the input file -(see section 3.1.1.2 Gperf Declarations). +(see section 3.1.1.2 Gperf Declarations). + -

                  `-L generated-language-name' @@ -138,13 +136,13 @@ This option is supported for compatibility with previous releases of -

                  4.4 Options for fine tuning Details in the Output Code

                  +

                  4.4 Options for fine tuning Details in the Output Code

                  Most of these options are also available as declarations in the input file -(see section 3.1.1.2 Gperf Declarations). +(see section 3.1.1.2 Gperf Declarations). + -

                  `-K slot-name' @@ -215,7 +213,7 @@ to support 8-bit and multibyte characters.
                  `--compare-lengths'
                  Compare keyword lengths before trying a string comparison. This option -is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might +is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. However, using `-l' might greatly increase the size of the @@ -333,7 +331,7 @@ This option is supported for compatibility with previous releases of -

                  4.5 Options for changing the Algorithms employed by gperf

                  +

                  4.5 Options for changing the Algorithms employed by gperf

                  @@ -458,7 +456,7 @@ heuristic. -

                  4.6 Informative Output

                  +

                  4.6 Informative Output

                  diff --git a/doc/gperf_7.html b/doc/gperf_7.html index 084f646..0f470e5 100644 --- a/doc/gperf_7.html +++ b/doc/gperf_7.html @@ -1,22 +1,21 @@ - + -Perfect Hash Function Generator - 5 Known Bugs and Limitations with gperf +Perfect Hash Function Generator - 5. Known Bugs and Limitations with gperf Go to the first, previous, next, last section, table of contents.


                  -

                  5 Known Bugs and Limitations with gperf

                  +

                  5. Known Bugs and Limitations with gperf

                  The following are some limitations with the current release of gperf: -

                  +


                  -This document was generated on 7 May 2003 using the -texi2html -translator version 1.51.

                  +This document was generated on 12 June 2003 using +texi2html 1.56k. -- cgit v1.2.1